【文档说明】软件工程第9章-软件维护课件.ppt,共(18)页,342.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45002.html
以下为本文档部分文字说明:
第9章软件维护本章主要内容软件维护的类型软件维护的特点维护过程与组织如何提高软件的可维护性1第9章软件维护本章结构:9.1软件维护的类型和策略9.2软件维护的特点9.3软件维护过程与组织9.4软件软件的可维护性9.5软件维护的副作用9.6软件逆向工程与再生
工程29.1软件维护的类型与策略9.1.1软件维护的类型(1)改正性维护改正性维护是为了识别和纠正开发和测试中未发现的软件错误,修正软件性能上的缺陷、排除实施中的误使用而进行的诊断和改正错误的过程。(2)适应性维护为使应用软件适应
计算机硬、软件环境变化而修改软件的过程称适应性维护。(3)完善性维护在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为增加软件功能、增强软件性能,提高软件运行效率而进行的维护活动称完善性维护。(4)预防性维护为提高软件的可维护性和可靠性而对软件进行的修改称预防性维护
。39.1软件维护的类型与策略据有关资料统计,各类维护的工作量占总的维护工作量的百分比大致如图9.1所示。图9.1各种维护的比重49.1软件维护的类型与策略9.1.2软件维护的策略根据影响软件维护工作量的
各种因素,针对三种主要类型的维护,JamesMartin等提出了一些维护策略,以控制维护成本。1.改正性维护使用新技术可产生更可靠的代码,从而大大提高软件的可靠性,并减少改正性维护的需要。2.适应性维护这一类维护不可避免,但可以控制。3.完善性维护利用前两类维护中列举的方法,也可
以减少这一类维护。特别是使用数据库管理系统、程序生成器、应用软件包等可以减少维护工作量。59.2软件维护的特点1.非结构化维护和结构化维护(1)非结构化维护因为只有源程序,没有文档或文档很少,维护活动只能从阅读、理解和分析源程序代码开始,而这是相当
困难的。非结构化维护不仅会浪费大量的人力和物力,还会使维护人员的积极性受到打击。这是没有使用软件工程方法开发软件的后果。69.2软件维护的特点(2)结构化维护运用软件工程思想开发的软件具有各个阶段的文档,这对
于理解、掌握软件功能、性能、软件结构、数据结构、系统接口和设计约束有很大作用。使用软件工程方法开发的软件,虽然不能保证维护工作一切顺利,但由于软件文档对理解软件结构和设计思路有很大帮助,可以缩短维护时间,减少维护工作量,并提高维护质量。79.2软
件维护的特点2.软件维护的困难性(1)难以读懂他人的程序。(2)文档不一致。(3)软件开发和软件维护在人员和时间上的差异。(4)维护工作毫无吸引力,缺乏成就感。(5)难以追踪软件的建立过程。(6)通过多种版本的发行,难以追踪软件版本的演化过程。(7)绝大多数软件在设计时未考虑以后可能要修改。8
9.3软件维护过程与组织1.维护机构维护组织如图9.2所示。图9.2维护的组织99.3软件维护过程与组织2.制定维护文档所有软件维护申请都应按规定的方式提出。软件维护组织通常提供维护申请报告(MaintenanceRequestReport,MRR
)或称软件问题报告,由申请维护的用户填写。在软件维护组织内部还要制定相应的软件修改报告(SoftwareChangeReport,SCR)。109.3软件维护过程与组织3.维护流程当一个维护申请提出,并经过评审确定需要维护时,则按图9.3所示的过程实施维护。图9.3
维护的流程119.3软件维护过程与组织4.维护记录其内容包括程序标识、源程序语句条数、机器指令条数、使用的程序设计语言、安装程序的日期、安装以来程序的运行次数、安装以来程序的失效次数、程序变动的层次标识、因变动程序而增加的源程序语句数、因变动
程序而删除的源程序语句数、每次改动所花费的“人时”数、程序改动的日期、软件维护人员的姓名、维护申请报告的标识、维护类型、维护开始和完成的日期、累计用于维护的“人时”数、维护工作的净收益等。129.3软件维护过程与组织5.维护评价可从以下7个方面评价维护工作:⑴每次程
序运行的平均失效次数。⑵用于每一类维护活动的总的“人时”数。⑶平均每个程序、每种语言、每种维护类型所做的程序变动次数。⑷增加或删除每一条源程序语句平均花费的“人时”数。⑸每种语言所花费的平均“人时”数。⑹维护申请报告的平均周转时间。⑺不同维护类型所占的百分比。13
9.3软件维护过程与组织5.维护评价可从以下7个方面评价维护工作:⑴每次程序运行的平均失效次数。⑵用于每一类维护活动的总的“人时”数。⑶平均每个程序、每种语言、每种维护类型所做的程序变动次数。⑷增加或删除每
一条源程序语句平均花费的“人时”数。⑸每种语言所花费的平均“人时”数。⑹维护申请报告的平均周转时间。⑺不同维护类型所占的百分比。149.4软件的可维护性9.4.1影响软件可维护性的因素通常用下面7个质量特性来衡量软件可维护性。1.可理解性。2.可测试性。3.可修改性。4.可靠性。5.可移植性。
6.可使用性。7.效率。159.4软件的可维护性9.4.2提高可维护性的方法1.建立明确的软件质量目标2.使用先进的软件开发技术和工具3.进行明确的质量保证审查4.选择可维护的程序设计语言5.改进程序的
文档169.5软件维护的副作用什么是维护的副作用?因修改软件而造成的错误或其他不希望出现的情况称为维护的副作用。1.代码副作用2.数据副作用3.文档副作用179.6软件逆向工程与再生工程逆向工程与再生工程是目前预防性维护采用的主要技术。所谓软件的逆向工程就是对已有的程
序,寻求比源代码更高级的抽象表达形式。一般认为,凡是在软件生存周期内,将软件某种形式的描述转换为更抽象形式的活动都可称为逆向工程。与之相关的概念是重构、设计恢复和再生工程。重构,指在同一抽象级别上转换系统描述形式。设
计恢复,指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计的信息。再生工程,也称修复和改造工程,它是在逆向工程所获信息的基础上修改或再生已有的系统,产生系统的一个新版本。18