【大学课件】软件维护工程.ppt

上传人:sccc 文档编号:5695093 上传时间:2023-08-10 格式:PPT 页数:38 大小:430.51KB
返回 下载 相关 举报
【大学课件】软件维护工程.ppt_第1页
第1页 / 共38页
【大学课件】软件维护工程.ppt_第2页
第2页 / 共38页
【大学课件】软件维护工程.ppt_第3页
第3页 / 共38页
【大学课件】软件维护工程.ppt_第4页
第4页 / 共38页
【大学课件】软件维护工程.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《【大学课件】软件维护工程.ppt》由会员分享,可在线阅读,更多相关《【大学课件】软件维护工程.ppt(38页珍藏版)》请在三一办公上搜索。

1、第六章 软件维护工程,软件维护的概念软件维护是在软件已交付给用户使用后,为了改正错误,或者满足用户新的需求而修改软件的过程。软件维护一般不包括重大体系结构的修改。软件维护的原因:修改软件中的错误;软件运行环境发生了变化;用户要求增加软件新的功能或提高软件的性能。,http:/,软件维护分类,纠错性维护适应性维护完善性维护预防性维护,三类维护所占比例:,其它维护 5%,适应性维 护 25%,改正性维 护 20%,扩充与完善性维护 50%,改正性维护占全部维护量的比率已从80年代初的20%大幅度下降,90年代初一些公司的产品差错率已接近于零,各类维护活动的根本目的是延长软件生存期,其它维护 4%,

2、软件生存周期,软件诞生,计划,分析,设计,编码,测试,运行和维护(简称维护),改善期 稳定期 陈旧期,1年-10年,2个月-2年,重构,软件工程周期,软件维护过程,影响软件维护工作量的因素:系统的大小。程序设计语言。系统的年龄。数据库技术的应用。先进的软件开发技术。其他因素。例如,在程序中使用的数学模型、任务的难度、IF嵌套的深度开关和标记等等,都会对维护工作有影响。,M,P+K,e,=,(c-d),M:维护工作总工作量P:生产性工作量K:经验常数c:复杂度d:对该软件熟悉程度的度量,维护的成本,该模型说明,如果没有一个好的软件开发途径,原来的开发人员不能参加维护工作,则维护工作量将按指数级增

3、加。,修改负责人,维护申请,系统监督员,配置管理员,维护组织,维护人员,维护管理员,维护申请报告,内容:(1)所需要修改的性质;(2)申请修改的优先级;(3)为满足某一项维护申请所需要的工作量;(4)预计修改后的状况。,软件维护流程,见教材图,维护记录,维护过程中作应记录的数据程序标识源程序语句数目机器代码指令条数.以收集的数据为基础构造维护数据库,供维护评价使用.,软件维护评价,可供参考的度量值是:(1)程序每次运行的平均失效的次数;(2)各类维护活动所花费的总“人时”数;(3)每个程序、每种语言、每种维护类型所做的程序变动平均数;(4)因为维护而增加或删除一个源程序语句,平均花费的“人时”

4、数;(5)维护每一种语言的程序所花费的“人时”数;(6)维护申请报告的平均处理时间;(7)各类维护申请的百分比。,修改程序的副作用,修改代码的副作用修改数据的副作用修改文档的副作用,重新验证程序,静态确认。在软件修改时,可能会产生新的错误,为此,要进行必要的检查。计算机确认。通过计算机对修改的程序进行确认测试。例如,要确认测试的顺序,首先测试经过修改的部分,再测试没有修改的部分,然后,把它们集成起来测试;准备好标准的和有效的测试用例;充分利用软件工具帮助测试;在确认测试过程中,邀请用户参加。文档验收。经过修改的软件交付给用户前,维护主管部门要检查文档。例如,所有的文档是否完备,是否更新,文档与

5、程序是否一致;全部的测试用例和测试结果是否都正确记载;软件配置是否都有了副本;维护的工序和责任是否已经确定。,维护中的典型问题,(1)难以跟踪软件版本的进化过程,软件的变化未在文档中反映出来.(2)难以跟踪软件的创建过程.(3)难以读懂他人程序.(4)无文档或不全.(5)软件人员流动性大.(6)设计时未考虑修改需要,修改困难.(7)维护工作无吸引力,缺乏成就感.,软件可维护性软件可维护性的定义,软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。,软件的可维护性度量,(1)可理解性可理解性表明人们通过阅读源代码和相关的文档,了解程序功能以及如何运行的

6、容易程度。例如,模块化、程序设计风格,程序结构化、完整性等。(2)可靠性可靠性表明一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行的概率。可靠性是度量软件整体质量的一个重要指标之一,(3)可测试性可测试性表明论证程序正确性的容易程度。一个可测试程序应当是可理解的、可靠的、简单的。因为程序越简单,要证明它的正确性就越容易;要设计有效的和合适的测试用例,重要的是要理解程序。,(4)可修改性软件可修改性表明程序容易修改的程度。一个可修改的程序,应该具有可理解性、通用性、灵活性等等。通用性是指程序适用于各种功能变化而无须修改;灵活性是指能够容易地对程序进行修改。(5)可移植性软件可移植性表

7、明程序能转移到另一个新环境的可能性大小,或者表明程序可以容易地、有效地在各种各样的计算环境中运行的容易程度。一个可移植的程序应具有良好的结构和灵活性,即不依赖具体的硬件环境或操作系统。(6)效率软件的效率表明了一个程序能完成预定的功能,但又不浪费资源的程度。这些资源可以包括机器的内存容量、外存容量、通道容量等,以及执行时间。(7)可用性软件的可用性定义为程序方便、实用、易使用的程度。例如,界面友好、具有在线帮助功能、容错性好等,不因为用户的误操作而陷入混乱状态。,可维护性的度量,度量程序可维护性的7个特性在各类维护中的侧重点 改正性维护 适应性维护 完善性维护可理解性 可测试性 可修改性 可靠

8、性 可移植性 可使用性 效率,提高可维护性的方法,建立明确的软件质量目标和优先级 使用提高软件质量的技术和工具 进行明确的质量保证审查 选择可维护的程序设计语言 改进程序的文档 开发软件时考虑到维护,软件再工程,什么是软件再工程在软件复用中,有问题是与现有系统密切相关的例如:现有软件系统如何适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件?现存大量的遗产软件系统(Legacy Software)由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件?已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行

9、维护,以延长其生命期,充分利用这些可复用构件?,软件再工程(Software Reengineering)正是解决上述问题的主要技术手段。软件再工程是一类软件工程活动,是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解。它能够使我们:增进对软件的理解;提高软件自身的可维护性、复用性或演化性.,软件再工程过程模型,代码重构,数据重构,正向工程,库存目录分析,文档重构,逆向工程,逆向工程,逆向工程(反推工程reverse

10、 engineering)从现有软件恢复设计信息(有用的维护信息),设计的恢复过程,非结构化、无文档的源代码或目标代码,软件的全部文档,软件再工程相关术语间关系,信息库,1类视图:非过程性描述、元描述例:规格说明,再工程,3类视图:过程性描述例:源程序,再工程,2类视图:伪过程性描述、结构性描述例:DFD、PDL,A2类视图:分析,再工程,逆向工程设计恢复再工程,逆向工程设计恢复再工程,A1类视图:分析,A3类视图:分析,分解,综合生成视图,软件视图 Software view有关软件的一种表达形式或报告;视图分类:1类视图:2类视图:3类视图:A类视图:伴随上述各类的分析视图;A1类视图是对

11、1类视图的分析信息;A2类视图是有关2类视图的分析信息;A3类视图是由3类视图得到。,软件视图示例,信息库,视图编辑器,DFD,视图编辑器,Petri网,视图编辑器,ERA图,视图编辑器,跟踪矩阵,Req1 Req2,Prog1Prog2Prog3,视图编辑器,程序结构图,视图编辑器,流程图,视图编辑器,规格说明,再工程信息库及其产品,软件文档,分析结果,信息库,设计成果,规格说明,各种图,度量值,分析、分解器,源程序或其模板,(进入点),源程序,自动进行再工程的过程,软件,软件的新视图,语法分析器语义分析器,视图合成器,信息库,其他产品,经过再工程过程可获得的信息,格式图形文档度量值逻辑报告

12、,软件再工程技术再工程课题 相关技术,重构文档重写、加注释、更新文档复用工程重新划分模块数据再工程业务过程再工程可维护性分析、业务量分析、经济分析,理解软件,改进软件,获取、保存及扩充软件的知识,分解逆向工程、恢复设计对象恢复程序理解知识库及变换,浏览分析、度量逆向工程、恢复设计,1.改进软件,(1)软件重构 对软件进行改造,使其易于理解或易于维护。重构是实现软件再工程全面自动化的第一步,源程序,重构的源程序,逻辑格式图形文档度量报告,再构器,可获得的信息,Restructurer,软件重构示意图,1.改进软件,(2)文档重写、加注释、更新文档,信息源:源程序设计资料规格说明变更记录管理人员程

13、序人员,文档:嵌入式注释设计资料规格说明测试数据层次图,检查:再测试插入注释生成图形生成报告,文档重写示意图,1.改进软件,(3)复用工程:目的是修改软件,使其更易于复用,再说明再生成分类证明附加查找描述信息,查找,利用再工程实现软件复用的过程,应用问题,部件,可复用部件,可复用库:可复用源程序,复用,再工程器,析取,2.理解软件,(1)浏览(2)分析与度量 理解程序特性(如复杂性)的重要方法.与再工程相关的技术:程序分片 控制流复杂性度量 耦合性度量(3)逆向工程与设计恢复,逆向工程恢复信息的级别:,(1)实现级:程序的抽象语法 树、符号表等信息(2)结构级:反映程序分量之间 相互依赖关系的

14、信 息,如调用图、结 构图等.(3)功能级:反映程序段功能和 段间关系的信息(4)领域级:反映程序分量与应 用领域概念间对应 关系的信息,抽象级别,低,高,信息的抽象级别越高,它与代码距离越远,通过逆向工程恢复的难度越大,自动工具支持的可能性变小,逆向工程,源程序,目标代码,反汇编、反编译程序分析技术:程序结构分析工具 程序功能分析工具,源程序,概要设计详细设计,概要设计,需求分析,3.获取、保存和扩充软件的知识,(1)分解 从程序中找出对象和关系,存入信息库.分解器举例:UNIX中的lex和yacc(2)对象恢复 从源程序中取得对象,将非面向对象程序转 换为面向对象程序.(3)程序理解(4)知识库和程序变换,软件再工程的风险,(1)过程风险(2)人员风险(3)应用问题风险(4)技术风险(5)工具风险(6)策略风险,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号