软考高级架构-7.2-基于架构的软件开发方法-超详细讲解+精简总结
7.2 - 基于架构的软件开发方法
7.2.1 概述
ABSD:基于体系结构的软件设计 (Architecture-Based Software Design,ABSD) 方法。
ABSD方法 是架构驱动的,即商业、质量和功能需求的组合驱动的。
设计先行:在需求分析未完成时,ABSD 就可以开始设计工作,特别适合需求不明确的系统。
ABSD 方法基于三个关键原则:
-
功能分解:将系统分解为模块,基于模块的内聚和耦合技术。
-
选择架构风格:来实现质量和商业需求。
-
使用软件模板:利用已有的软件系统结构模板,帮助加速设计和开发。
7.2.2 概念与术语
1、架构设计元素
2、视图与视角:需要从不同视角观察架构,所以有不同的视图。
3、用例与质量场景:
用例是系统给用户的一个功能点,用来捕获功能需求。
质量场景用来捕获质量需求,需要考虑变更场景、性能场景、可靠性场景和交互性场景的预期的和非预期的情况。
7.2.3基于体系结构的开发模型
1、体系结构需求
- 需求获取:用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。如果以前有类似的需求,我们可以从需求库中取出,加以利用和修改。
- 标识构件:系统的初始逻辑结构,分为生成类图->对类进行分组->把类打包成构件三步。
- 架构需求评审:获取的需求是否真实地反映了用户的要求、 类的分组是否合理,构件合并是否合理等。
2、体系结构设计
- 提出架构模型:选定合适的架构风格,建立初步模型。
- 映射构件:将已标识的构件放入架构模型中,生成中间结构。
- 分析构件相互作用:分析构件之间的关系,确保协同工作。
- 产生软件体系结构:根据中间结构进行精细化、完善,生成完整的软件架构。
- 设计评审:邀请外部人员评审架构,确保合理性。
3、体系结构文档化
体系结构文档化是为了将抽象的架构转换为程序员实现的具体内容。
文档是团队沟通的桥梁,也是用户和开发者之间的协议,它的完整性和准确性对体系结构的成功至关重要。必须以使用者的角度编写,并定期更新,确保所有开发人员都能获取最新版本。
主要文档输出:
- 体系结构规格说明:提供架构的详细说明,定义系统的构件和关系。
- 质量设计说明书:描述如何测试和验证体系结构需求,确保架构满足质量要求。
4、体系结构复审
体系结构设计、文档化和复审 是一个不断迭代的过程。
为了评估体系结构设计是否满足需求,通常会根据设计搭建一个可运行的最小化系统,用于测试和识别技术和协作风险,参与者包括用户代表和领域专家。
复审目的是早期识别潜在的风险,发现架构中的缺陷,确保:
- 体系结构是否满足用户需求、质量需求、层次是否清晰;
- 构件划分是否合理、构件设计是否满足功能和性能要求。
- 文档表达是否明确;
5、体系结构实现
实现软件体系结构 是将抽象的架构转换为具体的系统,实现过程遵循架构设计的决策,将系统分解为构件,并确保构件按照规定的方式交互。实现过程是基于复审后的体系结构说明书。
- 查找或开发构件:根据体系结构中定义的接口约束,从构件库中查找符合要求的构件,必要时开发新的构件。
- 组装构件:通过工具将符合接口要求的构件组装起来,完成整个系统的连接与集成。
- 测试:进行单个构件的功能测试,以及整个系统的功能和性能测试,确保系统按预期工作。
6、体系结构的演化
体系结构演化 是为了适应用户需求的变化或系统环境的迁移,对软件架构进行调整的过程。体系结构演化过程包括以下6个步骤:
- 需求变化归类:分类需求变化,标记无法匹配的构件。
- 制定演化计划:制定计划,指导后续修改。
- 修改或新增构件:修改、删除或新增构件,并进行测试。
- 更新构件关系:调整构件间的交互关系。
- 组装与测试:组装系统,测试整体功能和性能。
- 技术评审:评审架构,确保满足新需求,不符合时迭代修改。