乐于分享
好东西不私藏

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

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

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 方法 = 用架构作为主线,把需求、设计、实现和演化串联起来,使软件系统既能满足功能目标,又能确保质量和商业目标。