Chapter2 为什么软件架构重要
原创大约 3 分钟
抑制或促进系统的质量属性
- 系统能否展现其所期望(或要求的)质量属性,在很大程度上取决于其架构。
- 性能
- 可修改性
- 安全性
- 可扩展性
- 可重用性
推理和管理变更
- 典型软件系统的总成本中,大约 80%发生在初始部署之后:
- 适应新功能
- 适应新环境
- 修复错误等等。
- 每个架构将可能的变更划分为三个类别:
- 本地变更可以通过修改单个元素来完成。
- 非本地变更需要对多个元素进行修改,但保持底层架构方法不变。
- 架构变更会影响元素彼此交互的基本方式,并且将需要进行更大范围的更改。
- 显然,本地变更是最理想的。
- 一个好的架构是指最常见的变更是本地变更,因此更容易进行。
预测系统质量
- 当我们审查一个架构时,我们可以自信地预测该架构将展现出相关的质量。
- 发现设计问题越早,修复起来就越便宜、容易且不会造成太大的中断。
增强利益相关方之间的沟通
- 架构(或至少其中的一部分)足够抽象,以至于大部分非技术人员都能理解它。
- 系统的大多数利益相关方可以将其作为创建共同理解、协商、形成共识和相互沟通的基础。
- 软件系统的每个利益相关方关注系统的不同特征
- 用户、客户、经理、架构师
最早的设计决策
- 软件架构是关于系统最早的设计决策的体现。
- 这些早期决策会影响系统的后续开发、部署和维护周期。
- 这些早期设计决策包括:
- 系统是在一个处理器上运行还是分布在多个处理器上?
- 软件是否采用分层结构?如果是,会有多少层?每一层的功能是什么?
- 组件之间是同步通信还是异步通信?
- 我们将选择哪种通信协议?
- 系统是否依赖于操作系统或硬件的特定功能?
- 信息在系统中的流动是否加密?
//TODO 中间几点暂略
总结
- 架构将抑制或促进系统的关键质量属性。
- 架构中的决策使您能够推理和管理系统在演化过程中的变化。
- 对架构的分析能够提前预测系统的质量。
- 文档化的架构增强了利益相关方之间的沟通。
- 架构是最早、最基础且最难改变的设计决策的载体。
- 架构对后续实现施加了一系列约束。
- 架构决定了组织的结构,或者反之亦然。
- 架构可以为演化原型提供基础。
- 架构使架构师和项目经理能够推理成本和进度。
- 架构可以作为可转移、可重用模型的创建,成为产品线的核心。
- 基于架构的开发关注组件的组装,而不仅仅是它们的创建。
- 通过限制设计选择,架构引导开发人员的创造力,减少设计和系统的复杂性。
- 架构可以成为培训新团队成员的基础。