【软件工程】软件维护(4种类型:改正性/适应性/完善性/预防性)

📅 2026/7/21 17:49:36
【软件工程】软件维护(4种类型:改正性/适应性/完善性/预防性)
考点频率★★★★★选择题必考四种类型的辨析是高频考点难度⭐建议重点掌握四种类型的核心区别尤其是“完善性”和“预防性”的辨析1️⃣ 什么是软件维护软件交付使用后并不意味着开发工作的结束。相反软件维护是软件生命周期中时间最长、成本最高的阶段——通常占总成本的60%~70%。简单说软件上线才是真正的开始。软件维护是指在软件交付后为了修正错误、适应环境变化、增加新功能或改善性能而对软件进行修改的过程。打个比方买一辆车提车只是开始。后面的定期保养、换轮胎、修刮蹭、升级导航地图……这些加起来花的钱和时间可能比买车本身还多。2️⃣ 四种软件维护类型根据维护的目的不同软件维护分为四种类型类型核心目的一句话概括改正性维护修复Bug“出了错得修”适应性维护应对环境变化“环境变了得改”完善性维护增加/改进功能“想要新功能得加”预防性维护预防未来问题“提前改防出事”2.1 改正性维护Corrective Maintenance定义为了识别和纠正软件中存在的错误、缺陷和故障而进行的维护。这是最基础、最常见的维护类型占维护工作总量的约20%~25%。典型场景用户反馈某个功能报错开发人员定位并修复Bug系统崩溃后分析日志修复导致崩溃的代码漏洞修复数组越界、空指针等运行时错误关键特征维护的触发条件是已经发生了错误被动响应。系统已经出了问题才需要去修。示例某电商系统在用户提交订单时偶尔出现“支付超时”错误 → 开发人员修复该Bug报表导出功能在数据量较大时出现内存溢出 → 修复内存泄漏问题2.2 适应性维护Adaptive Maintenance定义为了适应外部环境的变化而进行的维护。当软件运行环境硬件、操作系统、第三方软件、政策法规等发生变化时需要对软件进行相应的修改以保持其正常运行。典型场景操作系统升级如Windows 10→Windows 11数据库版本升级如MySQL 5.7→8.0硬件设备更换如更换新型号的打印机法规政策变更如新的数据隐私法规要求修改数据处理流程关键特征软件本身没有错而是外部环境变了被动响应。示例某系统原运行在Windows 7上公司统一升级到Windows 10后需要对软件进行适配修改第三方支付接口升级了API版本需要修改调用代码2.3 完善性维护Perfective Maintenance定义为了增加新功能、改进已有功能或提升性能而进行的维护。这是为了满足用户“想要更好用”的需求是四种维护中占比最大的一种通常占维护工作总量的50%以上。典型场景用户提出新的功能需求如“增加导出Excel功能”优化系统性能如页面加载时间从3秒优化到1秒改进用户界面如重新设计操作流程让用户操作更顺手增强系统功能如原有报表只有表格现在增加图表展示关键特征软件本身运行正常但用户想要更好主动改进。示例某CRM系统新增“客户画像分析”功能将原有手动输入改为扫码录入提升录入效率增加一键导出全部报表的功能2.4 预防性维护Preventive Maintenance定义为了预防未来可能发生的问题而进行的维护。通过修改软件的可维护性、可靠性或结构防止未来出现故障或降低维护成本。这是四种维护中唯一主动、未雨绸缪的类型但占比最小约5%~10%。典型场景重构代码提高可读性和可维护性改目前不坏、但将来可能成为问题的代码结构升级过时的第三方库当前还能用但已不再维护存在安全风险优化文档让后续维护人员更容易理解代码消除“坏味道”代码技术债务关键特征问题还未发生但“提前动手防范未然”主动预防。示例某老模块代码耦合严重虽当前运行正常但为了后续功能扩展主动进行重构将已停止维护的旧版本第三方库升级到稳定新版本补充和完善系统的技术文档3️⃣ 四种维护类型对比表重点对比维度改正性适应性完善性预防性触发原因发生错误环境变化用户需求改进预防未来问题主动性被动被动主动主动修改目的修复Bug保持运行提升功能和性能提高可维护性占比~20%-25%~20%-25%~50%~5%-10%是否改变功能不改变恢复正确功能不改变保持原有功能改变增加/改进功能不改变结构优化典型场景修复报错适配新系统加新功能代码重构4️⃣ 容易混淆的几组辨析必看1. 改正性 vs 适应性改正性软件自己有问题→ 修Bug适应性软件没问题外部环境变了→ 改代码适配新环境2. 完善性 vs 预防性完善性用户想要新的/更好的→ 加功能、改界面、提性能预防性怕将来出问题→ 重构、升级依赖库、整理文档3. 改正性 vs 完善性改正性功能原本应该这样但做错了→ 修复完善性功能原本没有或做得不够好用户想要更好→ 改进5️⃣ 经典例题例题1某银行系统因央行发布了新的利率计算规则需要对系统中的利息计算模块进行修改。这种维护属于 。A. 改正性维护B. 适应性维护C. 完善性维护D. 预防性维护解析软件本身没有错误是因为外部法规央行新规则变了而进行的修改 → 适应性维护。选B。例题2某电商平台在“双十一”大促后根据用户反馈对下单流程进行了优化减少了用户操作步骤。这种维护属于 。A. 改正性维护B. 适应性维护C. 完善性维护D. 预防性维护解析软件运行正常用户想要更好用的流程→ 完善性维护改进已有功能。选C。例题3某开发团队发现系统中的核心模块代码耦合度极高虽然目前运行正常但为了后续功能扩展和降低维护成本决定对该模块进行重构。这种维护属于 。A. 改正性维护B. 适应性维护C. 完善性维护D. 预防性维护解析当前没有问题但为了预防未来维护困难而进行重构 → 预防性维护。选D。6️⃣ 记忆口诀改正性出了Bug赶紧修。适应性环境变了跟着走。完善性用户想要加功能。预防性未雨绸缪早动手。占比口诀完善最多占五成改正适应各两成预防最少别忘记。