一、软件架构定义
软件架构为软件系统提供了一个结构、行为和属性的高级抽象
软件架构是一种表达,使软件工程师能够:
(1)分析设计在满足所规定的需求方面的有效性
(2)在设计变更相对容易的阶段,考虑体系结构可能的选择方案
(3)降低与软件构造相关的风险
软件体系结构的设计通常涉及数据设计和体系结构设计
二、软件架构设计与生命周期
软件架构设计的一个核心目标是重复的体系结构模式,即达到体系结构级的软件重用。
1. 需求分析阶段:软件架构设计的起步阶段,主要解决如何根据需求模型构建SA模型,如何保证模型转换的可追踪行。
2. 设计阶段:
架构描述语言(ADL):是一种形式化的语言,基本元素:构建、连接件、架构配置
架构的“4+1”视图:
3. 实现阶段
4. 构建组装阶段
主要研究方面:
(1)如何支持可复用构件的互联
(2)在组装的过程中,如何检测并消除体系结构失配问题
引起构建失配的原因:
(1)由构件引起的失配
(2)由链接子引起的失配
(3)由于系统成分对全局体系结构的假设存在冲突引起的失配
5. 部署阶段
6. 后开发阶段:主要围绕维护、演化、复用等方便进行
三、软件架构的重要性
软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。软件架构是项目干系人进行交流的手段;软件架构是可传递和可复用的模型;软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计。
1. 架构设计能够满足系统的品质
2. 架构设计使受益人达成一致的目标
3. 架构设计能够支持计划编制过程
4. 架构设计对系统1开发具有指导性
5. 架构设计能够有效地管理复杂性
6. 架构设计为复用奠定了基础
7. 架构设计能够降低维护费用
8. 架构设计能够支持冲突分析
四、基于架构的软件开发方法(ABSD)
定义:ABSD方法是由架构驱动的,即指由构成系统的商业、质量、功能需求的组合驱动的。
ABSD的三个基础:1. 功能的分解;2. 通过选择体系结构风格来实现质量和商业需求;3. 软件模版的使用。
ABSD能够很好的支持软件复用,ABSD方法是一个自顶向下,递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生构件和类
视角与视图:从不同的视角来观察对架构的描述
用例和质量场景:用例用来捕获功能需求;质量场景用来捕获质量需求
ABSD的软件过程规划:
1. 需求获取:
需求是指用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。
架构需求的来源:系统的质量目标、系统的商业目标、系统开发人员的商业目标
2. 架构设计:
3. 架构文档话:
主要输出结果:体系结构规格说明书和测试体系结构需求的质量设计说明书
文档的要求:
1. 文档要从使用者的角度进行编写;
2. 必须分发给所有与系统有关的开发人员
3. 必须保证开发者手上的文档是最新的
4. 架构复审:
复审的目的是标识潜在的风险,及早发现体系结构这种的缺陷
5. 架构实现:
6. 架构演化: