软件维护与再工程

上传人:飞*** 文档编号:52248116 上传时间:2018-08-19 格式:PPT 页数:40 大小:206.50KB
返回 下载 相关 举报
软件维护与再工程_第1页
第1页 / 共40页
软件维护与再工程_第2页
第2页 / 共40页
软件维护与再工程_第3页
第3页 / 共40页
软件维护与再工程_第4页
第4页 / 共40页
软件维护与再工程_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《软件维护与再工程》由会员分享,可在线阅读,更多相关《软件维护与再工程(40页珍藏版)》请在金锄头文库上搜索。

1、第12章 软件维护与再工程1复旦大学计算机科学与工程系 软件工程课程下页末页上页首页目录第12章 软件维护与再工程2/40第12章 软件维护与再工程12.1 软件维护12.2 再工程技术下页末页上页首页目录第12章 软件维护与再工程3/40教学目的与要求 掌握软件维护的基本概念、类型及其特性 掌握软件维护过程 掌握软件可维护性的概念及提高软件可维护 性的方法 理解软件再工程的概念和逆向工程定义 了解软件再工程过程教学学时 2学时下页末页上页首页目录第12章 软件维护与再工程4/40教学难点 软件维护的特性; 软件维护的过程; 再工程过程。 教学重点 软件维护的概念、类型; 软件维护的过程; 软

2、件可维护性的概念及提高软件可维护性的方 法; 4.再工程的概念。 下页末页上页首页目录第12章 软件维护与再工程5/40教学方法 采用多媒体课件+讲授法+启发式相结合教学教学参考文献 软件工程导论(第五版),张海藩,清华大学出版社 软件工程 (第二版),齐治昌,高等教育出版社 软件质量保证和管理 ,朱少民,清华大学出版社 计算机软件工程国家标准汇编:软件开发与维护卷,中国标准出版社软件再造:面向对象的软件再工程模式,迪 迈耶(Demeyer,S.) 等著,莫倩 等译 ,机械工业出版社下页末页上页首页目录第12章 软件维护与再工程6/4012.1.1 软件维护的概念 什么是软件维护是指软件系统交

3、付使用以后,为了改 正错误或满足新的需要而修改软件的过程 。 国标GB/T 11457-95给出如下定义 在一软件产品交付使用后对其进行修 改,以纠正故障、改进其性能和其它属性 ,或使产品适应改变了的环境12.1 软件维护下页末页上页首页目录第12章 软件维护与再工程7/40软件维护的概念 两种错误认识 软件维护是一次新的开发活动; 软件维护就是改错; 新开发活动强调要在一定的约束条件下从 头开始实施; 软件维护强调必须在现有系统的限定和约 束条件下实施。下页末页上页首页目录第12章 软件维护与再工程8/4012.1.2 软件维护分类 纠错性维护:为了改正软件系统中的错误,使软 件能够满足预期

4、的正常运行的要求而进行的维护 。 适应性维护:为了使软件适应内部或外部环境变 化,而去修改软件的过程。 改善性维护:满足使用过程中用户提出增加新功 能或修改已有功能的建议维护。 预防性维护:为了提高软件的可维护性、可靠性 等,为以后进一步改进软件打下良好基础而修改 软件的活动。根据起因不同,软件维护可以分为以下四类: 下页末页上页首页目录第12章 软件维护与再工程9/40 在实践中,软件维护各种活动常常交织在一起,尽 管这些维护在性质上有些重叠,但还是有充分的理 由区分这些维护活动,只有这样才能够更有效地确 定维护需求的优先级。四 类 软 件 维 护 的 比 例纠错性 维护 25%适应性 维护

5、21%完善性 维护 50%预防性预防性 维护维护4%4%下页末页上页首页目录第12章 软件维护与再工程10/4012.1.3 软件维护的特性 结构化维护:采用软件工程的方法进行软件开发,保证 每个阶段都有完整且详细的文档。 非结构化维护:不采用软件工程方法开发软件,软件只 有程序而欠缺文档,维护工作十分困难。 维护时,开发人员从分析需求规格说明开始,明白软件 功能和性能上的改变,对设计说明文档进行修改和复查 ,再根据设计修改进行程序变动,并用测试文档中的测 试用例进行回归测试,最后将修改后的软件再次交付使 用。一、结构化维护与非结构化维护下页末页上页首页目录第12章 软件维护与再工程11/40

6、 二、软件维护的代价维护费用高达开发费用的55% 70%,而且逐年上 涨。维护中还可能引入新的潜在错误。Belady 和 Lehman 提出软件维护工作模型:其中:M维护总工作量P生产性活动K经验常数C程序复杂度(由非结构化维护引起的)D对维护软件熟悉程度的度量。下页末页上页首页目录第12章 软件维护与再工程12/40理解别人的代码通常是非常困难的,而且难 度随着软件配置成分的缺失而迅速增加需要维护的软件往往没有文档、或文档资料 严重不足、或软件的变化未在相应的文档中反映出 来绝大多数软件在设计时没有考虑到将来的修 改问题当软件要求维护时,不能指望由原来的开发 人员来完成或提供软件的解释。软件

7、维护这项工作毫无吸引力。因为软件维 护,看不到什么“成果”,且工作量很大,更重要 的是维护工作难度大,软件维护人员经常遭受挫折 。三、和软件维护有关的部分问题下页末页上页首页目录第12章 软件维护与再工程13/40软件维护除费用外的无形代价包括: 维护活动占用了其他软件开发可 用的资源 一些修复或修改请求得不到及时 安排,使得客户满意率下降 维护的结果把一些新的潜在的错 误引入软件,降低了软件质量 将软件人员抽调到维护工作中, 使得其它软件开发过程受到干扰。四、维护成本下页末页上页首页目录第12章 软件维护与再工程14/40 维护成本 影响维护工作量的主要因素有:系统的规模 程序设计语言语言的

8、功能越强,生成程序的模块化和结 构化程度越高,所需的指令数就越少,程序的可读 性也越好。 系统年龄 数据库技术的应用使用数据库,可以简单而有效地管理和存 储用户程序中的数据。 先进的软件开发技术采用先进的分析设计技术和程序设计技术 ,如面向对象技术、复用技术等,可减少大量的维 护工作量下页末页上页首页目录第12章 软件维护与再工程15/4012.1.4 软件维护的过程维护组织结构图 维护活动包括:建立维护组织、确定维护过程 、保管维护记录、进行维护评价。 一、维护组织一、维护组织下页末页上页首页目录第12章 软件维护与再工程16/40 维护组织 系统监督员一般都是对程序(某一部分)特别熟悉 的

9、技术人员。 在维护人员对程序进行修改的过程中,由配置管 理员严格把关,控制修改的范围,对软件配置进 行审计 。 维护管理员、系统监督员、修改控制决策机构等 ,均代表维护工作的某个职责范围。 修改控制决策机构、维护管理员可以是指定的某 个人,也可以是一个包括管理人员、高级技术人 员在内的小组。 下页末页上页首页目录第12章 软件维护与再工程17/40二、维 护过程维护请求类型类型严重性评估后按优先 级在队列排队救火行动,当 排在队列之首评估后分类评估后按优先 级在队列排队采取的行动通知请求者 并说明原因按优先级在 队列中排队从维护请求队列之首取出一任务按SE方法学规划、组织、实施工程队列中还有维

10、护请求吗?资源用于开发新的软件。yn纠错性维护其他改善性维护适应性维护拒绝接受并不严重非常严重维护过程图下页末页上页首页目录第12章 软件维护与再工程18/40 维护工作最后一步是复审主要审查修改过的软件配置,以验证软件结构中的所有成分的功能,保证满足维护请求表中的要求。 依照当前状态,在设计、编码和测试的 哪些方面还能用其他方法进行?哪些维护资源可用但未用?这次维护活动中主要(或次要)的障碍有 哪些?在维护请求中有预防性维护吗?下页末页上页首页目录第12章 软件维护与再工程19/40 三、维护记录 维护人员对程序进行修改前要着重做好两个记录维护申请报告软件修改报告 维护请求表(报告)即软件问

11、题报告,该报告(表)由 要求一项维护活动的用户填写。对改正性维护, 用户需要将错误出现的现场信息详细描述出来, 包括输入数据、错误清单以及其它有关材料。对 适应性维护或改善性维护,应该给出一个简短的 需求规格说明书。维护申请被批准后,维护申请 报告就成为外部文档,作为本次维护的依据。 下页末页上页首页目录第12章 软件维护与再工程20/40维护记录 软件修改报告指明:为满足维护申请报告提出的 需求所需的工作量、本次维护活动的类别、本次 维护请求的优先级、本次修改的背景数据。在拟 定进一步维护计划前,软件修改报告要提交给修 改决策机构,供进一步规划维护活动使用。 保存维护记录的第一个问题就是哪些

12、数据值得保 存?下页末页上页首页目录第12章 软件维护与再工程21/40四、维护评价 如果已经开始保存维护记录,可以对维护工作做 一些定量度量,至少可以从如下7方面进行评价:每次程序运行平均失败的次数;用于每一类维护活动的总人时数;平均每个程序、每种语言、每种维护类型所 必需的程序变动数;维护过程中增加或删除源语句平均花费的人 时数;维护每种语言平均花费的人时数;一张维护请求表的平均周转时间;不同维护类型所占的比例;下页末页上页首页目录第12章 软件维护与再工程22/40 12.1.5 软件可维护性 可维护性(maintainability)指理解、改正、调整和改进软件的 难易程度。对软件可维

13、护性影响的主要 因素有:可理解性(understandability)可测试性(testability)可修改性(modifiability)可移植性(portability) 下页末页上页首页目录第12章 软件维护与再工程23/40一、软件可维护性主要影响因素 可理解性:指理解软件的结构、接口、功能和 内部过程的难易程度。 提高软件可理解性的措施有:采用模块化的程 序结构;书写详细正确的文档;采用结构化程 序设计;书写源程序的内部文档;使用良好的 编程语言;具有良好的程序设计风格等 下页末页上页首页目录第12章 软件维护与再工程24/40 可测试性:指测试和诊断软件(主要指程序)中 错误的难

14、易程度。 提高软件可测试性的措施有:采用良好的程序结 构;书写详细正确的文档;使用测试工具和调试 工具;保存以前的测试过程和测试用例等 可修改性:指修改软件的难易程度。 在修改软件时经常会发生这样的情况:修改了程 序中某个错误的同时又产生新的错误;或者在程 序中增加了某个功能后,导致原先的某些功能不 能正常执行。下页末页上页首页目录第12章 软件维护与再工程25/40 可移植性:指程序转移到一个新的计算环境的 难易程度。 影响软件可移植性的因素有:信息隐蔽原则; 模块独立;模块化;高内聚低耦合;良好的程 序结构;不用标准文本以外的语句等。 一个可移植的程序应具有结构良好、灵活、不 依赖于某一具

15、体计算机或操作系统的性能。 下页末页上页首页目录第12章 软件维护与再工程26/40 通常对于软件可移植性的度量考虑如下因素 是否是用高级的独立于机器的语言来 编写程序?是否采用广泛使用的标准化的程序设 计语言来编写程序? 是否仅使用了这种语言 的标准版本和特性?程序中是否使用了标准的普遍使用的 库功能和子程序?程序中是否极少使用或根本不使用操 作系统的功能?下页末页上页首页目录第12章 软件维护与再工程27/40程序在执行之前是否初始化内存?程序在执行之前是否测定当前的输入输 出设备?程序是否把与机器相关的语句分离了出来 ,集中放在了一些单独的程序模块中,并有说 明文件?程序是否结构化? 并

16、允许在小一些的计算 机上分段(覆盖)运行?程序中是否避免了依赖于字母数字或特殊 字符的内部位表示?下页末页上页首页目录第12章 软件维护与再工程28/40 二、提高可维护性的方 法确定质量管理目标和优先级使用提高软件质量的技术与工具规范化程序设计风格选择可维护性高的程序设计语言改进程序文档进行质量保证审查 下页末页上页首页目录第12章 软件维护与再工程29/40一、再工程的概念 逆向工程(reverse engineering):指在软件生存周期 中,将软件的某种形式描述转换成更抽象形式的活 动。 重构(restructuring):指在同一抽象级别上转换系 统的描述形式。如把C+ 程序转换成Java程序。 设计恢复(desig

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号