软件工程中的软件维护是软件生命周期中的一个重要阶段,它涉及到对已部署软件的持续改进和更新,以满足用户的新需求、修复错误、适应环境变化或提升性能。软件维护不可避免,因为随着时间推移,软件的缺陷会暴露,用户需求会演变,商业环境会调整,以及技术环境的升级。
软件演化的处理策略主要包括软件维护和软件再工程。软件维护是对软件进行局部修改,以修复错误或添加新功能,而不涉及整体架构的大幅改动。而软件再工程则更为彻底,它可能涉及软件的部分或全部重新设计、编码和测试,目的是提高软件的可维护性、可靠性等质量属性。
软件维护分为四种类型:完善性维护,旨在增强功能和性能;纠错性维护,主要处理软件运行时发现的错误;适应性维护,确保软件能适应运行环境的变化;预防性维护,提前进行修改以提升未来维护的便利性。据统计,通常纠错性维护占25%,适应性维护占21%,完善性维护占50%,预防性维护占4%。
软件维护的特点包括高昂的成本和复杂性。由于理解他人代码的难度、缺乏完整文档、人员变动、模块依赖性问题以及维护工作的吸引力不足,都增加了维护的挑战。为了有效管理,通常会设立变更控制管理机构,包括维护请求者、维护管理员、配置管理员、维护负责人和维护人员等角色。
维护的过程一般包括维护申请、维护分类、影响分析、版本规划、错误修正、环境适应、新功能开发、变更实施和软件发布等步骤。其中,错误修正分为紧急的“救火式”改正和一般性的改正,适应性修改需要确定优先级并与开发任务同步规划,完善性修改则需评估请求并规划实施。
软件再工程是针对遗留系统的一种维护方法,通过反向工程和正向工程,对旧系统进行重构,以提高其质量和适应性。这个过程可能包括文档重构、代码重构和数据重构等步骤,目标是降低风险,降低成本,并确保系统能够稳定运行。
软件维护和再工程是软件生命周期中不可或缺的部分,它们确保软件能够随着时间和需求的变迁持续提供价值。通过有效的策略和管理,可以降低维护的复杂性和成本,同时提高软件的可靠性和用户满意度。