5.1可维护性的度量与构造原则
1.软件维护和软件演化
什么是软件维护?
软件工程中的软件维护是指在软件产品交付后对其进行修改,以纠正错误,提高性能或其他属性。
运维工程师
运维是软件开发中最困难的工作之一,涉及到其他所有环节
处理来自用户报告的故障/问题
运维工程师必须有高超的调试技巧
修复代码之后
更多步骤:
测试所做的修改
回归测试
记录变化
除了修复问题,修改中不能引入新的故障
最大的问题:修改后没有足够的文档记录和测试
软件维护的类型
25% 纠错性:对交付后执行的软件产品进行反应性修改,以纠正发现的问题
21% 适应性:在交付后对软件产品进行的修改,以使软件产品在变更或变化的环境中保持可用
50% 完善性:改进交付后的软件产品,以提高性能或可维护性
4% 预防性:在交付后对软件产品进行修改,以便在软件产品中潜在的故障成为有效故障之前检测并纠正它们
软件演化
软件进化是软件维护中的一个术语,指的是最初开发软件,然后由于各种原因对其进行反复更新的过程。
软件的大部分成本来自于维护阶段
雷曼关于软件进化的八条定律
▪反馈系统
▪持续改变
▪持续增长
▪质量下降
▪增加复杂性
▪自我调节
-保持组织的稳定性
-熟悉性守恒
软件维护不仅仅是运维工程师的工作,而是从设计和开发阶段就开始了
在设计与开发阶段就要考虑将来的可维护性
设计方案的“easy to change”
这就是所谓的“可维护性”、“可扩展性”
软件构建的“灵活性”。
面向可维护性的构造的例子
▪模块化设计和实现
-低耦合和高内聚
▪OO设计原则
-坚实,把握
▪OO设计模式
-工厂方法模式,生成器模式
-桥梁模式,代理模式
-记忆模式&#x