软件维护
2015-11-02 10:21
183 查看
各个工程领域都会在将产品交付给用户之后进行维护工作主要是为了保证产品的正常运转而进行使用帮助、故障解决和磨损处理等工作。
在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。
![](https://img-blog.csdn.net/20151102101301010)
适应性维护(Adaptive maintenance):为了使软件能适应新的环境而进行的软件修改活动。
随着计算机技术的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而修改软件的过程就叫做适应性维护
适应性维护不可避免,但可以控制。
(1)配置管理适应性维护时就考虑到硬件变化,以及操作系统和其他相关环境因素的可能变化,可以减少某些适应性维护的工作量。
(2)将与硬件、操作系统,以及其他外围设备有关的程序归到特定的程序模块中,也可以减少某些适应性维护的工作量。
(3)使用内部程序列表、外部文件以及处理的例行程序包,可为维护时修改程序提供参考。
![](https://img-blog.csdn.net/20151102101324510)
![](https://img-blog.csdn.net/20151102101411468)
改正性维护(Corrective maintenance):为了排除软件产品中遗留缺陷而进行的软件修改活动。
在软件交付使用后,由于开发时测试的不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段来。这些隐藏的错误在某些特定的使用环境中就会暴露。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用而进行的诊断和改正错误的过程,就叫做改正性维护。
在软件开发过程中,可以通过使用新技术大大提高软件的可靠性,并减少改正性维护。这些技术包括数据库管理系统、软件开发环境、程序自动生成系统、较高级(第四代)语言,应用这些技术可产生更加可靠的代码。此外,还可利用以下方法提高软件的可靠性:
(1)利用应用软件包。利用应用软件包可开发出比完全由用户自己开发的系统可靠性更高的软件。
(2)结构化技术。用结构化技术开发的软件易于理解和测试。
(3)防错性程序设计。把自检能力引入程序,通过非正常状态的检查提供审查跟踪。
(4)周期性维护审查。通过周期性维护审查,在形成维护问题之前就可确定质量缺陷。
![](https://img-blog.csdn.net/20151102101433525)
预防性维护(Preventive maintenance):为了让软件产品在将来可维护,提升可维护性的软件修改活动。
这种维护活动为了提高软件的可维护性、可靠性,为以后进一步改进软件打下良好基础。
![](https://img-blog.csdn.net/20151102101447539)
![](https://img-blog.csdn.net/20151102101530244)
![](https://img-blog.csdn.net/20151102101512996)
![](https://img-blog.csdn.net/20151102101637049)
![](https://img-blog.csdn.net/20151102101558049)
定义:
IEEE就定义软件维护为[IEEE610.12-1990]:软件维护是在交付之后修改软件系统或其部件的活动过程,以修正缺陷、提高性能或其他属性、适应变化的环境。软件维护策略
完善性维护(Perfective maintenance):为了满足用户新的需求、增加软件功能而进行的软件修改活动。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。
适应性维护(Adaptive maintenance):为了使软件能适应新的环境而进行的软件修改活动。
随着计算机技术的飞速发展,外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而修改软件的过程就叫做适应性维护
适应性维护不可避免,但可以控制。
(1)配置管理适应性维护时就考虑到硬件变化,以及操作系统和其他相关环境因素的可能变化,可以减少某些适应性维护的工作量。
(2)将与硬件、操作系统,以及其他外围设备有关的程序归到特定的程序模块中,也可以减少某些适应性维护的工作量。
(3)使用内部程序列表、外部文件以及处理的例行程序包,可为维护时修改程序提供参考。
改正性维护(Corrective maintenance):为了排除软件产品中遗留缺陷而进行的软件修改活动。
在软件交付使用后,由于开发时测试的不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段来。这些隐藏的错误在某些特定的使用环境中就会暴露。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用而进行的诊断和改正错误的过程,就叫做改正性维护。
在软件开发过程中,可以通过使用新技术大大提高软件的可靠性,并减少改正性维护。这些技术包括数据库管理系统、软件开发环境、程序自动生成系统、较高级(第四代)语言,应用这些技术可产生更加可靠的代码。此外,还可利用以下方法提高软件的可靠性:
(1)利用应用软件包。利用应用软件包可开发出比完全由用户自己开发的系统可靠性更高的软件。
(2)结构化技术。用结构化技术开发的软件易于理解和测试。
(3)防错性程序设计。把自检能力引入程序,通过非正常状态的检查提供审查跟踪。
(4)周期性维护审查。通过周期性维护审查,在形成维护问题之前就可确定质量缺陷。
预防性维护(Preventive maintenance):为了让软件产品在将来可维护,提升可维护性的软件修改活动。
这种维护活动为了提高软件的可维护性、可靠性,为以后进一步改进软件打下良好基础。
维护所占比例和维护在然间生存期所占比例
软件维护过程
各类维护中侧重点
开发期间的检查重点
总结
软件维护重要性不言而喻,现在先把理论写在这里,以后经过实践肯定会更加清楚。相关文章推荐
- 现代软件工程开发体验:结对编程
- 最牛B的编码套路
- 软件开发的组织和角色分工
- 软件工程中的模型
- jsp股票K线图控件
- 计算机专业
- 架构师之路(1)---面向过程和面向对象 王泽宾
- 架构师之路(5)---面向对象的设计原则
- 四个月,我看到了一个不一样的自己
- 对软件测试的认识你了解多少
- 如何成为一名优秀的软件测试工程师
- 怎么成为一个优秀的程序员,而不是一个优秀的码农?
- 现代软件工程讲义 2 开发技术 - 效能分析
- python 新手入门+概括 小技巧整理
- 软件工程院校排名
- 211、985高校招收软件工程硕士,自主命题考试,无学位也可报考
- 《软件工程里面的大学十年》(转载上半部分)
- 《软件工程里面的大学十年》(转载下半部分)
- Facebook 没有QA 如何发布代码 (How Facebook Ships Code 译文)
- 软件工程管理