在软件的整个生命周期当中,软件维护占有大的一部分。基本上可以分成四个类别:
- 适应性维护:处理变更和适应环境变化
- 增强性维护:功能增强
- 矫正性维护:错误处理
- 预防性维护:提高可维护性,防止后续出现问题
有调查表明,有75%的维护时间花在一两种类别上,而有21%的时间花在错误修正的维护上。那么怎么样来提高软件的可维护性呢,以下是利于增强维护的几个方面:
维护因子(Maintenance Factors) 所占比重(PlusRange)
维护专家(Maintenance specialists) 35% 职员经难丰富(High staff experience) 34% 基于表格的变量和数据(Table-driven variables and data) 33% 基准代码低复杂度(Low complexity of base code) 32% 专业搜索引擎(Y2K and special search engines ) 30% 代码重构工具(Code restructuring tools ) 29% 再工程工具(Re-engineering tools ) 27% 高级语言(High level programming languages ) 25% 逆向工具(Reverse engineering tools) 23% 复杂分析工具(Complexity analysis tools) 20% 错误跟踪工具(Defect tracking tools) 20% 块更新(Y2K “mass update” specialists) 20% 自动化变更控制工具(Automated change control tools ) 18% 无偿加班(Unpaid overtime) 18% 质量度量(Quality measurements ) 16% 正式的基准代码检查(Formal base code inspections ) 15% 回归测试组件(Regression test libraries) 15% 优秀的响应时间(Excellent response time) 12% 大于10天的年度培训(Annual training of > 10 days ) 12% 较高的管理经验(High management experience ) 12% 自动化的帮助(HELP desk automation ) 12% 无错误的模块(No error prone modules ) 10% 在线错误报告(On-line defect reporting ) 10% 生产力度量(Productivity measurements) 8% 易用(Excellent ease of use) 7% 用户满意度(User satisfaction measurements ) 5% 高团队士气(High team morale ) 5%----------------------------------------------------------------------------------------
合计(Sum) 503%
而不利于系统维护性的因素如下:
Maintenance Factors | Minus Range |
---|---|
Error prone modules | -50% |
Embedded variables and data | -45% |
Staff inexperience | -40% |
High code complexity | -30% |
No Y2K of special search engines | -28% |
Manual change control methods | -27% |
Low level programming languages | -25% |
No defect tracking tools | -24% |
No Y2K “mass update” specialists | -22% |
Poor ease of use | -18% |
No quality measurements | -18% |
No maintenance specialists | -18% |
Poor response time | -16% |
No code inspections | -15% |
No regression test libraries | -15% |
No help desk automation | -15% |
No on-line defect reporting | -12% |
Management inexperience | -15% |
No code restructuring tools | -10% |
No annual training | -10% |
No reengineering tools | -10% |
No reverse-engineering tools | -10% |
No complexity analysis tools | -10% |
No productivity measurements | -7% |
Poor team morale | -6% |
No user satisfaction measurements | -4% |
No unpaid overtime | 0% |
Sum | -500% |
原文见:
http://en.wikipedia.org/wiki/Software_maintenance