系统的可维护性是衡量一个系统的可修复(恢复)性和可改进性的难易程度。所谓可修复性是指在系统发生故障后能够排除(或抑制)故障予以修复,并返回到原来正常运行状态的可能性。而可改进性则是系统具有接受对现有功能的改进,增加新功能的可能性。
可维护性是所有软件都应该具备的基本特点。在软件设计的每个阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和
复审中.应着重对可维护性进行复审。
(1)在需求分析阶段的复审中,应对将来要扩充和修改的部分加以说明。在讨论
软件可移植性问题时.要考虑可能影响软件维护的系统界面。
(2)在软件设计的复审中.应从便于修改、
模块化和功能独立的目标出发.评价软件的结构和过程.从软件质量的角度全面评审数据没计、总体结构设汁、过程设引‘和界面设计。还应对将来可能修改的部分预先做准备。
(3)在软件代码复审中,应强调编码风格和内部说明文档这两个影响可维护性的冈素。最后.每一阶段性测试部应指出软件正式交付之前.应该进行的
预防性维护。在完成每项维护工作后,都应陔对软件维护本身进行仔细认真的复审。为了从根本上提高软件系统的可维护性。人们正试图通过直接维护软件规格说明来维护软件.同时也在大力发展软件重用技术。
这个指数用一个公式计算,考虑到了圈复杂性、
代码行以及Halstead量,Halstead量也是一个度量,考虑操作符和操作数的总数。该指数的范围是0~100,数值越高就越容易维护。
大多数可维护性参数是可测量的,例如模块化、
测试性、
灵活性和
可移植性。测试必须从用户需求中引出,因为在这个领域几乎没有发表现成的参考资料。
(1)建立明确的软件质量目标。如果要程序完全满足可维护性的7种质量特性,肯定是很难实现的。实际上,某些质量特性是相互促进的,如可理解性和可测试性,可理解性和可修改性;某些质量特性是相互抵触的,如效率和可移植性,效率和可修改性。因此,为保证
程序的可维护性,应该在一定程度上满足可维护的各个特性,但各个特性的重要性又是随着程序的用途或计算机环境的不同而改变的。对
编译程序来说,效率和可移植性是主要的;对信息管理系统来说,可使用性和可修改性可能是主要的。通过实验证明,强调效率的程序包含的错误比强调简明性的程序所包含错误要高出10倍。显然,在提出目标的同时,还必须规定它们的优先级,这样有助于提高软件的质量。
(2)使用先进的
软件开发技术和工具。利用先进的软件开发技术和工具是软件开发过程中提高软件质量、降低成本的有效方法之一,也是提高可维护性的有效技术。常用的技术:采用模块化、结构化程序设计,结构化设计技术能提高软件的可维护性;设计文档中使用标准的表达工具来描述算法、数据结构、接口等,能帮助维护人员更好地理解软件。
(3)进行明确的质量保证审查。在软件开发每个阶段结束前的技术审查和管理复审中,应该着重对可维护性进行审查。如在需求分析阶段的审查中,应该对将来要改进的部分和可能会修改的部分加以注意并指明;如在设计阶段的审查中,应从容易修改、模块化和功能独立的目标出发来评价软件的结构和过程;在代码审查中应强调编码风格和内部说明文档对
软件可维护性的影响;在测试阶段的审查中,应对软件的配置复审进行重视;在维护阶段完成每项维护工作后,都应对维护工作本身进行仔细认真的复审,如
源代码的修改与文档的修改是否一致。
(4)选择可维护的程序设计语言。程序设计语言的选择对维护的影响比较大。低级语言一般很难理解,很难掌握,因而很难维护。一般来说,高级语言比低级语言更容易理解,在高级语言中,一些语言可能比另一些语言更容易理解。
(5)改进程序文档。文档是影响
软件可维护性的重要因素,文档有时比程序代码更重要。程序文档是对程序的总目标、程序各组成部分之间的关系、程序设计策略、程序实现过程的历史数据等的说明和补充。程序文档对提高程序的可理解性有着重要作用。即使是一个十分简单的程序,要想有效地、高效率地维护它,需要编制文档来解释其目的及任务。对于程序维护人员来说,要想对程序编制人员的意图重新改造,并对今后变化的可能性进行估计,缺了文档也是不行的。可见,为了维护程序,人们必须阅读和理解文档。