软件维护
软件维护是指在软件产品交付后,为纠正错误、使其适应变化的环境以及改进其功能、性能或可维护性而进行的修改。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
软件维护是指在交付后为软件提供经济高效支持所需的全部活动,包括纠正缺陷、适应新环境以及在保持完整性的同时增强功能。
Scope
本主题涵盖四种维护类别(纠正性、适应性、完善性、预防性);从变更请求到影响分析、修改、测试和发布的维护过程;程序理解和修改不熟悉代码的挑战;可维护性作为一种质量属性;以及规范维护工作的标准和度量。
Core questions
- 维护变更如何分类和确定优先级?
- 从变更请求到发布的修改,需要哪些过程步骤?
- 在进行拟议变更之前,如何分析其影响?
- 是什么使软件可维护,以及如何衡量可维护性?
Key theories
- 维护类别
- 纠正性维护修复故障,适应性维护适应环境变化,完善性维护改进或扩展功能和性能,预防性维护提高未来的可维护性;非纠正性类别在工作量中占主导地位。
- 影响分析
- 在实施变更之前,影响分析利用依赖信息和可追溯性来识别受影响的组件、接口和测试,以估计工作量和连锁反应,并限制风险。
Clinical relevance
由于维护在软件总成本中占主导地位,且大部分是适应性和完善性维护而非纠正性维护,因此为可维护性进行设计并遵循规范的维护过程直接决定了系统的长期经济效益。
Evidence & guidelines
ISO/IEC 14764 定义了维护过程及其活动,ISO/IEC 25010 规定了可维护性子特性,如模块化、可修改性和可测试性。
History
20世纪70年代和80年代的调查显示,维护消耗了大部分软件预算,并且适应性和完善性工作超过了纠正性修复;这使得维护从一个事后考虑的环节转变为一个核心的、由过程管理的阶段,后来在ISO/IEC 14764中进行了标准化。
Key figures
- Meir M. Lehman
- Bennet Lientz
- Ian Sommerville
Related topics
Seminal works
- iso14764
- swebok2014
- sommerville2015
Frequently asked questions
- 哪种维护类型消耗的工作量最大?
- 研究一致发现,适应性维护和完善性维护——即使软件适应新环境和增强软件功能——合计占维护工作量的大部分,远超纠正性错误修复。
- 为什么修改旧代码如此困难?
- 维护人员必须首先理解他们通常没有编写的代码,而原始原理和文档可能缺失;理解现有系统和变更的连锁反应所花费的成本往往高于进行变更本身的成本。