本文仅做技术交流,转载请注明来源,切勿商用。
参考:系统架构师考纲及教材
1、系统架构的概念
架构是一种表达,而非可运行的软件。
1)分析设计在满足所规定的需求方面的有效性
2)在设计变更相对容易的阶段,考虑架构可能选择的方案
3)降低与软件构造相关的风险
架构设计的两个层次:数据设计 和 体系结构设计
软件架构设计与生命周期
1、需求分析阶段
需求分析和SA 面临两个对象:问题空间和解空间
需求模型向SA模型转换主要关注两个问题:
1、如何根据需求模型构建SA模型
2、如何保证模型转换的可追踪性
2、设计阶段
SA模型描述的研究分为三个层次:
1、SA基本概念(构建和连接子)
2、 架构描述语言ADL
3、SA模型的多视图表示
3、实现阶段
4、构建组装阶段
以SA设计模型为指导蓝图
研究内容:
(1)、如何支持复用构件的互联(即对SA设计模型中规约的连接子的实现提供支持)
(2)、组装过程中如何检测并消除体系结构失配问题
5、部署阶段
1)提供高层的体系结构视图来描述部署阶段的软硬件模型
2)基于SA模型可以分析 部署方案的质量属性,从而选中何理的部署方案。
6、后开发阶段
维护、演化、复用 SA
1)动态软件体系结构
2)体系结构的恢复与重建
架构设计概述
处于需求分析 到 软件设计之间。
架构就是需求分配,将满足需求的职责分配到组件上。
SA为软件系统提供了一个【结构 行为 属性的高级抽象】
由构件的描述、构件间的相互作用,指导构件集成的模式以及这些模式的约束 组成
SA指定了系统的 【组织结构】和 【拓扑结构】,显示了系统需求和构件之间的对应关系
研究SA的根本目的:
解决好软件的复用、质量和维护问题,是研究软件架构的根本目的
SA架构设计包括提出架构模型,产生架构设计、进行架构评审等活动,是一个迭代的过程。
架构设计关注的是 软件 组件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构。
架构设计的作用
软件架构能在设计变更相对容易的阶段,考虑系统结构的可选方案,便于技术人员与非技术人员就软件设计进行交互
能够展现软件的结构、属性、内部交互关系
构件
1)独立部署单元
2)作为第三方的自组装单元
3)没有外部可见的状态
一个构件包含多个类,一个类只能属于一个构件。
对象的特性:
1)一个实力单元,具有唯一标致
2)可能具有状态,因此外部状态可见
3)封装了自己的状态和行为
构件接口
接口中消息格式、模式、协议的标准化
面向构件编程COP
---多态性
---模块封装性
---后期绑定和装在
---安全性
2、基于架构的软件开发方法ABSD
基础概念
强调 视角 和 视图 来描述架构,采用 用例 和 质量属性 常见来描述需求。
用例描述的是功能需求,质量属性场景描述的是质量需求(非功能需求)。
三个基础:
1、功能分解 (使用基于模块的内聚和耦合技术)
2、选择架构风格来实现质量和业务需求(数据流,调用/返回,虚拟机,独立构件,仓库 过程控制,C2)
3、软件模板利用
开发过程:
架构设计是在需求分析之后,概要设计之前。
架构需求过程:
标识构件三步
架构设计过程
将需求阶段的标识构件映射成构件,再分析构件间的相互作用,产生构件
架构文档化:
两种文档:1、架构规格说明,2、架构需求的质量设计说明
架构复审
外部人员参加(开发组之外的人)
架构实现:
用实体来显示架构,实现构件,构件组装成系统。
架构演化
对架构进行改变,按照需求增删构件,使架构可复用