21软件架构-软件架构设计(温昱)

lizhuxin lizhuxin     2023-03-15     666

关键词:

 1软件架构概念

Architecture架构,每个人的理解都不同。

分为组成派和决策派。

组成派:软件系统的架构将系统描述为计算组件以及组件之间的交互(The architecture of a software system defines that system in term of computational components and interactions among those components. )。更多地关注软件,分析软件组成。

决策派:某个软件或计算机系统的架构是该系统的一个或多个结构,每个结构均由软件元素、这些元素的外部可见属性、这些元素之间的关系组成(The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. )。更关注人,归纳了架构决策的类型。

系统、子系统、框架都可以有架构,只是粒度不同。

架构不仅仅是接口的问题,还有并发、部署、性能、安全等因素需要考虑设计方案,而分层很重要,迭代地细化设计,并且灵活应用设计模式。

 

2架构设计视图

架构设计需要面向:用户、客户、开发人员、管理人员等,为项目相关不同人员而设计。

物理视图+逻辑视图。

使用分而治之和迭代式设计(而非瀑布式)。

经历设计在前,成为架构师在后。

尽量找机会看看别人的设计成果、多体会别人的设计过程、多试着自己来设计设计。

 

3架构设计过程

程序员向架构师转型难在哪里?难在必须要能开始“试着做起来”,并慢慢积累感觉,进而积累经验。

洞察节奏3个原则:1、看透需求(基础);2、架构大方向正确(确定正确的概念架构);3、设计好架构的各个方面(通过多视图方法“细化架构”,通过“架构原型”验证架构)。

看透需求:需求要全(功能需求、质量需求、约束需求),矛盾关系,追溯关系(如追溯系统目标)。

架构大方向正确:概念架构,是策略,如架构模式、集成技术选型。(重要!!!直指系统设计目标的设计思想和重大选择,是关乎任何复杂系统成败的最关键的指向性的设计。对比分析几种可能的概念架构)

设计好架构的各个方面:架构师必须具备“忘却”的能力,避免设计太多具体的技术细节,5视图。

有经验的架构师不会一上来就关注如何定义“接口”,他们在大型系统架构设计的早期比较注重识别:重大需求;特色需求;高风险需求;据此来决定如何划分顶级子系统,采用什么架构风格和开发技术,集成是否要支持,二次开发是否要支持(1个决定4个选型)。

掌握过程6个步骤:(1)需求分析(2)领域建模(3)确定关键需求(4)概念架构设计(5)细化架构设计(模块+接口)(6)架构验证(对后续工作产生重大影响返工代价很高的任何工作都应该进行验证,包括需求和架构设计方案)。

领域建模:以提炼领域概念,建立领域模型为目的的活动。精髓是“业务决定功能,功能决定模型”。领域建模活动的输入:功能和可扩展性具体要求。

 

4需求分析

愿景分析:要解决项目、产品或解决方案的起源问题。所谓明确愿景,就是针对系统目标、主要特性、功能范围、成功要素等进行构思并达成一致。(需求分析,得到需求文档)

愿景=业务目标+规范+Feature+上下文图。

《软件需求规格说明书》(Software Requirements Specification, SRS)需求分层次,需求分不同方面。

ADMEMS矩阵(需求层次-需求方面矩阵)

软件质量:运行期质量属性和开发期质量属性。(性能,安全性,易用性,持续可用性,可伸缩性,互操作性,可靠性,鲁棒性,易理解性,可扩展性,可重用性,可测试性,可维护性,可移植性)

约束需求=业务环境因素+使用环境因素+构建环境因素+技术环境因素

需求=功能+质量+约束

6细化架构设计

5个视图。15个设计任务。

逻辑架构(模块划分、接口定义、领域模型)。

开发架构(技术选型、文件划分、编译关系)。

运行架构(技术选型、控制流划分、同步关系)。

物理架构(硬件分布、软件部署、方案优化)。

数据架构(技术选型、存储格式、数据分布)。

系统架构设计师第七章软件架构设计

第七章软件架构设计考试大纲: 软件架构的概念软件架构风格特定领域软件架构基于架构的软件开发方法软件架构评估软件产品线软件架构设计就是软件系统的“布局谋篇”,  软件架构的研究内容主要涉及:    软... 查看详情

软件架构软件架构

  本文主要阐述什么是软件架构、软件架构的重要性、什么时候软件架构尤其重要、什么是推定架构以及软件架构的三种使用方式。1.什么是软件架构?架构与详细设计  软件系统的设计由开发者的决策与意图组成。设计可... 查看详情

软考系统架构设计师软件架构设计①软件架构的概念

>>回到总目录<<文章目录架构的本质软件架构软件架构风格架构的作用练习题架构发展历程架构4+1视图模型练习题架构的本质软件架构软件架构为软件系统提供了一个结构、行为和属性的高级抽象。软件架构和软件体系... 查看详情

[架构之路-88]:《程序员必读之软件架构》-3-软件需求与架构设计的关系

前言这部分是关于设计软件的整个流程,特别是开始编码前真正需要思考的事情。第21章 架构的驱动力:业务领域的需求不管你采用哪种流程(传统和计划驱动,或者轻量和可适配的),都有一套常见的... 查看详情

(软考笔记)——系统架构设计师-软件架构设计笔记

文章目录软件架构设计软件架构的概念架构的定义软件架构设计与生命周期软件架构的重要性基于架构的软件开发方法体系结构的设计方法概述概念和术语基于体系结构的开发模型体系结构需求体系结构设计体系结构文档化体系... 查看详情

软考系统架构设计师软件架构设计⑤软件架构评估

...风险点练习题架构评估方法基于场景的架构评估方法场景软件架构分析法(SAAM)架构权衡分析法(ATAM)质 查看详情

软考系统架构设计师软件架构设计④基于架构的软件开发方法

...化架构复审架构实现架构演化练习题基本概念基于架构的软件设计(Architecture-BasedSoftwareDesign,ABSD)方法是架构驱动的,即强调由业务、质量和功能需求的组合驱动架构设。ABSD方法有以下三个基础:功能的分解,ABSD方法使用已... 查看详情

软考系统架构设计师软件架构设计②软件架构风格

>>回到总目录<<文章目录软件架构风格数据流风格批处理序列管道过滤器调用返回风格主程序子程序面向对象分层架构独立构件风格进程通信事件驱动(隐式调用)虚拟机风格解释器规则系统以数据为中心数据库系统黑... 查看详情

软考之软件架构设计

这里写目录标题架构的本质架构的作用软件架构的概念以下叙述,(D)不是软件架构的主要作用。架构的发展历程架构的"4+1"视图UML的“4+1”视图软件架构风格软件架构风格——数据流风格【数据驱动】批处理和管... 查看详情

软件架构设计-软件架构风格分层架构

一、软件架构设计软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构由软件元素、元素的外部可见属性及它们之间的关系组成。软件系统架构是关于软件系统的结构、行为和属性的高级抽象。指定... 查看详情

小议软件架构设计要点

参考技术A  如何更好地进行软件架构设计这是软件工程领域中一个永恒的重点话题过去几十年来国际软件工程界在软件架构设计方面已经获得了长足发展大量图书文章和文献记载了这方面的成熟经验与成果软件架构设计往往... 查看详情

软考系统架构设计师软件架构设计③特定领域软件架构(dssa)

...人员建立过程三层次模型练习题DSSA的基本概念特定领域软件架构(DomainSpecificSoftwareArchitecture,DSSA)以一个特定问题领域为对象,形成由领域参考模型、参考需求、参考架构等组成的开发基础架构,支持一个特 查看详情

软件架构软件框架设计模式

...架构:框架比架构更具体,更偏重技术,一旦框架确定,软件架构也随之确定。五.设计模式与框架:框架是软件,模式是软件的知识体,提升框架的设计水平。六.常见设计模式:推荐书籍《设计模式— 查看详情

[架构之路-114]-《软考-系统架构设计师》-软件架构设计-7-软件架构评估

前言第7节软件架构评估7.1什么是架构评估/为什么要软件架构评估在软硬件系统总体架构设计完成之后,为保证架构设计的合理性、完整性和针对性,从根本上保证系统质量,降低成本及投资风险,需要对总体架... 查看详情

架构学习分享:软件架构设计的三大原则

...员,需要不断的学习、成长,丰富自己,提升自身价值。软件架构学习不一定是想成为架构师才去学习,哪怕是一个普通的程序员,也应该学习软件架构相关知识,这样可以增加对开发的理解。我之前有看过李运华老师的《从零... 查看详情

软件设计要素初探:架构模式

在“软件设计要素初探”一文,尝试从软件设计的整体角度,综合讨论了软件设计的各种要素。本文探讨系统组件交互的架构模式。架构模式是系统组件及组件交互的模式,决定了处理数据和领域对象的全局控制结构。组件化是... 查看详情

什么是软件架构

#什么是软件架构 软件构件提供的服务、性能、特性、错误处理、共享资源使用等。 对于复杂系统和大型系统的开发而言,设计好软件架构是保证软件质量的根本措施。 *软件架构是项目干系人进行交流的手段。*软件架构是早期... 查看详情

软件架构设计常用方法-软件架构设计学习第五天(非原创)发布成功,点击查看文章

文章大纲一、需考虑问题二、前端架构三、应用层架构四、服务层架构五、存储层架构六、后台架构七、数据采集与监控八、安全架构九、数据中心机房架构十、自动化运维十一、参考文章 一、需考虑问题1.研发过程管理困... 查看详情