软件质量属性---可修改性
软件质量的属性---可修改性
可修改性:软件质量属性中的可修改性是指容易修改的能力,其包括修正,改进和用户需求的变化。包括易分析,易修改,易测试性,稳定性。
什么可以改变?
系统任何部分:功能、平台、环境、质量、容量
可修改性战术:其目标是控制实现、测试和部署变更的时间和成本。即为根据相关战术在时间和成本允许的范围内完成系统的相关变更。
1.局部化变更:战术旨在把变更可选择的范围限制在可控范围之内,在设计程序时为功能模块分配职责,把预期变更限制在可控范围之内。防止选择了不可控的变更,导致软件质量下降。
- 语义一致性:语义指的是模块内各责任间的关系
确保各责任能够协调一致的工作,且一个模块不能够过多的依赖其他功能模块
根据是否支持预期的变更来判断一致性程度
- 设想可能的变更:尽可能的多考虑未来预期的变更,但很难能够预期所有重要的变更
- 泛化模块:设计程序时要使模块能够根据输入计算更广泛的功能
可把输入看作是该模块定义解释的语言
D.限制选项:在程序使用时可能可选范围很大,会影响很多模块,这时应该限制用户可选的功能模块范围。
2.防止连锁反应:防止连锁反应,旨在减少各模块之间的调用、接口访问,尽量减少各模块间的依赖,防止当修改其中一个模块时引起其他模块的变更,导致连锁反应.
防止连锁反应:一个模块对另一个模块的依赖性:
一. 由A产生并由B使用的数据,必须要与B所假定的数据类型一致.
二. 由A产生并由B使用的数据的语义,必须与B假定的一致
三. 要使B正确运行,必须要以一个固定的顺序接收A产生的数据
四. A有多个接口,要使B正确运行,该接口必须与B的假定一致
五. 要是B正确运行,A运行时的位置必须与B的假定一致
六. 要使B正确运行,A提供的服务/数据的质量必须与B的假定保持一致
七. 要使B正确运行,A必须存在
八. 要是B正确运行,A的资源行为必须与B的假定一致
A.隐藏信息:把某个实体的责任分解为更小的部分,并选择使用哪些信息成为共有/私有的,其可以使变更被隔离在某一个模块内部。
B.维持现有的接口:创建抽象接口,与具体接口隔离,实现接口隔离的设计模式原则。
添加接口:提供最新的服务或者是数据,添加适配器即给A添加适配器,把A包装起来,提供原始A的信息。
C.限制通信路径:限制与给定模块A共享数据的模块,减少两类模块的数量
- 使用仲裁者:对非语义型的依赖,可以在A\B间插入一个仲裁者,管理与该以来相关的活动。
3.推迟绑定时间:
运行时注册:即插即用
配置文件:再开机启动时,根据其设置参数
多态:允许方法调用的后期绑定
组件转换::允许载入时绑定
遵守已定义的协议:允许各个独立进程在运行时绑定
为了实现软件质量中的可修改性,我们应该采取像软件设计模式的核心思想“高内聚,低耦合”,用单一职责原则来设计模块功能,实现局部化变更,当变更发生时,只有局部化模块发生变化,而大局模块不会受到局部的变化而产生变化.
用接口隔离原则来实现定义抽象类,为未来的变更提供可实现的接口,通过接口来规范其发生变更的范围.
根据迪米特法则来实现与直接朋友进行交流,减少不必要的调用,减少模块间的依赖性.
参考连接:https://max.book118.com/html/2019/0223/7110163160002010.shtm