创建可演化的架构
1. 理解软件项目面临的挑战
在软件项目中,需求的多变性,也就是客户需求的不断变化,是一个不可避免的挑战。随着时间推移,产品需求和环境都会发生改变,应用程序也必须随之改变。然而,需求的变化可能会导致软件的不稳定,甚至使开发进程脱轨。
2. 应对需求变化的策略
为了应对需求的多变性,管理者通常会采用迭代开发流程,如敏捷开发。而开发者可以通过构建可演化的架构来适应需求的变化。可演化的架构应避免复杂性,因为复杂性是可演化性的大敌。
3. 理解复杂性
复杂性指的是与系统结构相关的、使系统难以理解和修改的因素。复杂系统通常具有高依赖性、高模糊性和高惯性这三个特征:
| 特征 | 描述 | 影响 | 解决办法 |
| — | — | — | — |
| 高依赖性 | 软件依赖其他代码的 API 或行为,每增加一个新连接和假设都会使代码更难更改 | 导致模块之间紧密耦合,一个小的更改可能需要对依赖项进行大量修改 | 进行深思熟虑的 API 设计,谨慎使用抽象 |
| 高模糊性 | 程序员难以预测更改的副作用、代码的行为以及需要进行更改的位置 | 增加学习成本,开发者更容易无意中破坏代码 | 使用具有清晰契约和标准模式的 API |
| 高惯性 | 软件持续使用的倾向,例如为关键业务应用提供支持的服务具有高惯性 | 复杂性成本会随时间累积 | 对于高惯性、高变化的系统进行简化,低惯性或低变化的系统可保持复杂 |
复杂性并非总能消除,但可以选择将其放置的位置。例如,向后兼容的更改可能会使代码使用起来更简单,但实现起来更复杂;使用间接层解耦子系统可以减少依赖性,但会
超级会员免费看
订阅专栏 解锁全文
1099

被折叠的 条评论
为什么被折叠?



