软件维护就是在软件交付使用之后直至软件被淘汰的整个时期内为了改造错误或满足新的需求而修改软件的活动。
软件维护的代价是很大的,据1994年Sofware Engineering Encyclopedia记载,20世纪80年代末用于软件维护的花费约为整个软件生命周期总花费的70%,而且还在逐年上升。
1.软件维护类型
根据引起软件维护的原因,软件维护通常可以分为以下4种类型:
(1)改正性维护:改正性维护是指在使用过程中发现了隐蔽的错误后,为了诊断和改正这些隐蔽错误而修改软件的活动,该类维护一般占总维护工作量的25%。
(2)适应性维护适应性维护是指为了适应变化了的环境而修改软件的活动。该类维护一般占总维护工作量的20%。
(3)完善性维护完善性维护是指为了扩充或完善原有软件的功能或性能而修改的软件活动。该类维护一般占总维护工作量的5%。
(4)预防性维护 为了提高软件可维护性和可靠性、为未来的进一步改进打下基础而修改软件的活动。该类维护一般占维护工作量的50%。
2.软件的可维护性
软件的可维护性是指理解、改正、改动、改进软件的难易程度。根据Boehm质量模型,通常影响软件可维护性的因素有可理解性、可测试性和可修改性。
(1)可理解性维护人员理解软件结构、接口、功能和内部过程的难易程度;(www.xing528.com)
(2)可测试性测试和诊断软件错误的难易程度;
(3)可修改性修改软件的难易程度。
为了提高软件的可维护性,在软件生命周期的各个阶段都必须充分考虑维护问题。先进的软件工程方法是软件可维护的基础保证。
面向对象方法学的对象封闭机制、消息通信机制、继承机制和多态机制从根本上提高了软件的可理解性、可测试性和可修改性。
结构化设计的几条主要原则,如模块化、信息隐蔽、高内聚、低耦合等,对于提高软件的可理解性、可测试性和可修改性也都有重要的作用。
另外,书写详细正确的文档、书写源文件的内部注解、使用良好的编程语音、具有良好的程序设计风格,也有助于提高软件的可理解性。使用先进的测试工具、保持以前的测试过程和测试用例,则有助于提高软件的可测试性。
3.软件维护管理
软件维护管理是指为保证维护质量、提高维护效率、控制维护成本而进行的维护过程管理,它要求对软件的每次“修改”均需经过申请、评估、批准、实施及验证等步骤。
软件维护管理的核心是维护评估和维护验证。维护评估的主要工作包括:判定维护申请的合理性与轻重缓急、确定维护的可行性与时间及费用、制定维护策略与维护计划等。维护验证主要审查修改后的软件是否实现了维护目标以及软件文档是否做了相应修改等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。