知识卡片

软件架构可持续演化的十八项原则

普通读书笔记卡

内容

书中给出18种软件架构可持续演化原则,每条原则都配有可操作的度量方案,而不只是停留在”应该怎样”的空泛倡导。这18条原则可以按关注点归为四类。管理可控类关注演化本身的执行代价:演化成本控制原则要求演化成本CoE明显小于重新开发成本CoRD;进度可控原则要求实际完成时间与预期时间差ttask尽量小;风险可控原则要求经济/时间/人力/技术/环境五类风险分别可控。稳定性类关注演化不能破坏系统原有的平稳运行:主体维持原则(又称对称稳定增长AIG原则)要求软件演化的平均增量增长保持平稳,主体行为不失稳;平滑演化原则(IWR原则)要求演化速率趋于稳定,相邻版本更新率相对固定;目标一致原则要求阶段目标与最终目标一致,偏差otask越小越好。结构质量类是数量最多的一组,关注演化后的架构本身质量:系统总体结构优化原则通过检查整体可靠性和性能指标判断结构是否更合理;模块独立演化原则(修改局部化原则)要求各模块自身演化相互独立、影响范围小;影响可控原则要求一个模块的变更给其他模块带来的影响范围可预测;复杂性可控原则要求圈复杂度等指标增长控制在阈值内;有利于重构原则和有利于重用原则分别用系统复杂度指标、模块内聚度/耦合度来度量;设计原则遵从性原则用”冲突的设计原则数/总设计原则数”这一比值衡量演化是否破坏了既有的架构设计原则。环境与结果类关注演化后系统与外部世界及质量目标的关系:适应新技术原则(TI原则)用”依赖的技术集合/用到的技术集合”衡量技术独立程度;环境适应性原则关注硬件软件兼容性;标准依从性原则需要人工判定是否符合国际/国家/行业/企业标准;质量向好原则要求演化后质量EQI优于演化前SQ;适应新需求原则用”适应的新需求集合/实际新需求集合”衡量架构演化是否提升或至少不降低对新需求的适应能力。这套原则体系的价值在于:它把”演化得好不好”这个原本高度主观的判断,拆成了18个各自可以独立检验的维度,绝大多数子原则可以直接量化(如用COCOMO II模型算演化成本、用圈复杂度算复杂性可控),少数难以量化的(如标准依从性)则退而求其次采用技术评审或专家评审,但书中也明确指出没必要、也不现实追求所有子原则都做量化处理。

参考来源

- 位置:《软件架构理论与实践》第9章《软件架构的演化和维护》"9.3 软件架构演化原则"节(源文件:_epub-src/OEBPS/text00074.html) - 结论依据:原文逐条列出18项原则的名称、解释、用途和度量方案(如"演化成本控制(Evolution Cost Control,ECC)原则……度量方案:CoE<<CoRD"),并在结尾说明"绝大多数子原则的可达性度量是可以量化的……对于那些很难(甚至不能)直接量化的子原则,可以采用技术评审或专家评审的方式进行度量……本项目并不追求所有子原则都要进行量化处理,那样并不现实",直接支撑本卡片结论。 - 原始内容:演化成本要控制在预期的范围之内,也就是演化成本要明显小于重新开发成本……度量方案:CoE<<CoRD……绝大多数子原则的可达性度量是可以量化的,需要利用到架构层次中的各种基本信息、变更信息和度量信息。