欢迎来到天天文库
浏览记录
ID:42925314
大小:668.50 KB
页数:21页
时间:2019-09-25
《第9章 软件维护3》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第9章软件维护9.1软件维护的基本概念9.2软件维护的特点9.3软件维护过程9.4提高可维护性的方法9.5软件再工程3第9章软件维护9.1软件维护的基本概念软件维护(SoftwareMaintenance)是指软件系统交付使用以后,为了改正软件运行错误,或者因满足新的需求而加入新功能的修改软件的过程。软件维护是软件工程的一项重要任务,其主要工作就是在软件运行和维护阶段对软件产品进行必要的调整和修改。9.1.1软件维护的定义4第9章软件维护9.1软件维护的基本概念完善性维护9.1.2软件维护的分类
2、及策略为了扩充软件功能、增强软件性能、提高软件运行效率和可维护性而进行的维护活动称为完善性维护。适应性维护为了使软件适应外部新的硬件和软件环境或者数据环境发生的变化,而进行修改软件的过程。5第9章软件维护9.1软件维护的基本概念校正性维护有些错误是测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的,为了识别和纠正这些错误,修改软件性能上的缺陷,而进行确定和修改错误的过程称为校正性维护。预防性维护为了提高软件的可维护性和可靠性而对软件进行修改的过程。6软件维护9.2软件维护的特点软件维护时间
3、长、成本高、工作量大1软件维护的副作用2软件维护的困难性3代码副作用数据副作用文档副作用结构化维护和非结构化维护维护的困难7第9章软件维护9.3软件维护过程9.3.1软件维护组织维护申请提交给一个维护管理员,管理员把申请交给某个系统监督员去评价。系统监督员是一位技术人员,他必须熟悉产品程序的某一部分。一旦做出评价,由维护负责人确定如何进行修改。维护人员对程序进行修改的过程中,由配置管理员严格把关,控制修改的范围,对软件配置进行审计。8第9章软件维护9.3软件维护过程9.3.2软件维护工作的流程1.
4、制定维护申请报告2.审查申请报告并批准3.进行维护并作详细记录4.复审9第9章软件维护9.3软件维护过程9.3.3软件维护技术面向维护技术在软件开发阶段用来减少错误、提高软件可维护性的技术软件维护技术维护支援技术在软件维护阶段用来提高维护工作的效率和质量的技术10第9章软件维护9.4提高可维护性的方法建立明确的软件质量目标使用先进的软件开发工具进行明确的质量保证审查提高可维护性的方法验收检查选择可维护的程序设计语言健全的程序文档周期性的维护检查健全程序的文档11第9章软件维护9.5软件再工程软件再
5、工程是一类软件工程活动,是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。1.软件再工程过程模型12第9章软件维护9.5软件再工程软件再工程过程模型库存目录分析包含关于每个应用系统的基本信息(例如,应用系统的名字,最初构建它的日期,已做过的实质性修改次数,过去18个月报告的错误,用户数量,安装它的机器数量,它的复杂程度,文档质量,整体可维护性等级,预期寿命,在未来36个月内的预期修改次数,业务重要程度等)。13第9章软件维护9.5软件再工程软件再工程过程模型
6、文档重构是重新构建原本缺乏文档的应用系统的文档逆向工程是一个恢复原设计的过程代码重构是在保持系统完整的体系结构基础上,对应用系统中难于理解、测试和维护的模块重新进行编码,同时更新文档数据重构是一种全范围的再工程活动,重构系统的数据结构。正向工程也称革新或改造,它根据现存软件的设计信息,改变或重构现存系统,以达到改善其整体质量的目的正向工程过程应用软件工程的原理、概念、技术和方法来重新开发某个现有的应用系统。。软件再工程过程示意图需求新需求设计设计代码代码正向工程逆向工程(重构)(重构)(重构)15
7、第9章软件维护9.5软件再工程2.逆向工程逆向工程是分析已有的程序,寻求比源代码更高级的抽象表现形式。把软件源程序还原为软件文档或软件设计的过程。通过逆向工程,可以从更高的抽象度来观察软件。抽象度的多少可由抽象的层次,文档的完整性,工具等因素决定。16第9章软件维护9.5软件再工程2.逆向工程17第9章软件维护9.5软件再工程3.软件重构软件重构又可分为代码重构和数据重构,目的是应用最新的设计和实现技术对老系统的源代码和数据进行修改,以达到提高可维护性、适应未来变化的目的。重构不改变系统的整
8、体体系结构,一般仅局限在单个模块的设计细节和模块内部的局部数据结构。如果超出了模块的边界并涉及软件的体系结构,这时的重构就变成“正向工程”了。重构例子(ExtractMethod)voidprintOwing(doubleamount){printBanner();printDetails(amount);}voidprintDetails(doubleamount){System.out.println(“name:“+_name);System.out.println(“amo
此文档下载收益归作者所有