【软件系统架构】系列十三:系统架构设计——基于架构的软件开发方法

1.方法概述
ABSD(Architecture-Based Software Development)方法是一种 由架构驱动的软件开发方法。
-
驱动力:功能需求(用例)、质量需求(质量属性场景)、商业需求。 -
核心思想:通过视角(Perspective)和视图(View)描述架构;用功能分解、架构风格和软件模板来支撑设计。 -
特点: -
自顶向下、递归细化:从顶层系统到子系统,再到构件。 -
并行性:在需求分析尚未完全结束时,即可开始架构设计。 -
质量驱动:通过选择合适的架构风格与模板满足性能、可靠性、安全性等非功能目标。
2.三个基础
2.1 功能分解
-
采用模块化、内聚和耦合技术,将系统拆解成子系统和构件。 -
保证功能单元的独立性与合理性。
2.2 架构风格选择
-
通过风格(如分层、管道-过滤器、微服务、事件驱动等)满足质量目标(如性能、可扩展性、安全性)。 -
风格映射需求 → 架构方案。
2.3 软件模板
-
利用已有系统结构(如三层架构、MVC 模板)来加速开发。 -
模板提供成熟的可复用架构结构。
3.方法论过程(自顶向下,递归细化)
第 1 层(顶层)
-
系统 → 拆解为 概念子系统 + 软件模板。 -
例:电商系统 → [用户管理、订单管理、支付系统] + MVC 模板。
第 2 层
-
概念子系统 → 拆解为 概念构件 + 附加软件模板。 -
例:订单管理 → [订单处理、库存更新、物流调度] + 分层模板。
递归细化
-
每一层的拆解,继续遵循功能分解 + 风格选择 + 模板复用的原则。
4.工程过程(ABSD 模型流程)
(1)架构需求
-
来源: -
质量目标(性能、可靠性、可扩展性…) -
商业目标(成本、交付周期、竞争力…) -
开发目标(技术栈、可维护性、复用性…) -
产物:构件清单、质量属性场景。
(2)架构设计
-
活动: -
构建架构模型(分解系统 → 概念子系统 → 概念构件)。 -
选择合适的 架构风格 和 模板。 -
建立多视图(逻辑视图、开发视图、进程视图、部署视图)。 -
目标:在功能和质量约束下形成可行架构。
(3)架构文档化
-
架构规格说明书:记录构件、接口、交互方式、设计约束。 -
质量设计说明书:描述架构对性能、安全性、可扩展性的支持。 -
作用:作为团队内外沟通的 唯一权威文档。
(4)架构复审
-
参与者:开发组织外部的独立人员(如用户代表、领域专家)。 -
内容:检查架构是否满足需求,构件划分合理性,质量风险。 -
结果: -
通过 → 进入实现阶段; -
不通过 → 返回架构设计阶段修改。
(5)架构实现
-
实现构件:把架构模型映射到编程语言、框架、数据库、服务。 -
组装系统:通过接口与中间件完成组件集成。 -
原型/成品交付:验证架构有效性。
(6)架构演化
-
原因:需求变化、技术更新、业务环境调整。 -
方法: -
增删构件 -
替换或升级构件 -
调整架构风格或部署方式 -
目标:提高架构的复用性、适应性与长期可维护性。
(7)ABSD 方法生命周期图

5.ABSD 的价值
-
在 设计变更早期 发现问题,降低成本和风险。 -
保证 质量属性(如性能、安全性、可维护性)。 -
通过 复用模板和风格,提升开发效率。 -
架构文档和复审使得开发过程更可控、更透明。
总结
ABSD 方法 = 用架构作为主线,把需求、设计、实现和演化串联起来,使软件系统既能满足功能目标,又能确保质量和商业目标。
夜雨聆风