软件可维护性
1.什么是软件可维护性
软件可维护性是指软件产品被修改的能力,修改包括纠正、改进或软件对环境、需求和功能规格说明变化的适应。
在软件维护中往往会出现一系列的问题,例如,是否可能开发出易于维护的软件系统;在进行软件维护时,能否仍然保持软件的完整性;如何才能够提高软件维护的效率等。这些问题实际上涉及软件的可维护性方面。
2.软件可维护性的特征
软件可维护性的五个子特性:
(1)易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
(2)易改变性。软件产品使指定的修改可以被实现的能力,实现包括编码、设计和文档的更改。如果软件由最终用户修改,那么易改变性可能会影响易操作性。
(3)稳定性。软件产品避免由于软件修改而造成意外结果的能力。
(4)易测试性。软件产品使已修改软件能被确认的能力。
(5)维护性的依从性。软件产品遵循与维护性相关的标准或约定的能力。
3.软件可维护性的度量
对软件可维护性的度量可以从以下几个方面进行。
1.可理解性
可理解性描述了通过阅读源代码和相关文档来了解系统功能及其如何运行情况的难易程度。一个可理解性高的软件系统一般应具备以下的特征:模块化(系统各个模块结构良好、功能完整),程序代码清晰,编程风格具有一致性(代码风格及设计风格的一致性),完整性(对输人数据进行完整性检查),使用有意义的数据名和函数名等。
2.可靠性
可靠性表明一个软件系统在给定的一段时间内正确执行的概率。度量可靠性的方法,主要有两类:第一类是根据程序错误的统计数字来进行可靠性预测。比如用一些可靠性模型,根据程序测试中发现并排除的错误数来预测平均失效间隔时间(Mean Time To Failure,MTTF)。第二类是当系统的可靠性与复杂性有关时,可以根据程序的复杂性来预测软件的可靠性。
3.可测试性
可测试性表明能够用测试的方法来验证程序正确性的难易程度。软件系统的可测试性取决于系统的可理解性、复杂性、设计合理的测试用例的难易程度等方面的内容。
4.可修改性
可修改性描述了程序能够被正确修改的难易程度。一个可修改的程序应当是可理解的、通用的、简单的、灵活的。通用性是指程序适用于各种功能变化而无需修改。灵活性是指能够容易地对程序进行修改。
5.可移植性
可移植性表明程序从一个运行环境移植到另一个新的运行环境的可能性的大小。一个可移植性好的程序应具有结构良好、灵活、不依赖于某一具体计算机或操作系统的特性。
可维护性不但与开发人员采用的分析设计方法和技术熟练程度有关,更与软件项目的管理技术有密切关系。除了与开发方法有关的因素之外,以下因素也会对系统的可维护性产生重要影响:
(1)开发人员是否受过严格的规范化培训。
(2)是否采用标准化的文档资料结构和文档形成机制。
(3)是否采用可维护的程序设计语言。
(4)是否有健全程序的文档。
(5)是否保存规范化的测试资料等。