软件维护与软件再工程概述(PPT 51页).ppt_第1页
软件维护与软件再工程概述(PPT 51页).ppt_第2页
软件维护与软件再工程概述(PPT 51页).ppt_第3页
软件维护与软件再工程概述(PPT 51页).ppt_第4页
软件维护与软件再工程概述(PPT 51页).ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 软件维护与软件再工程,7.1 软件维护的概念 四类维护活动: 改正性维护 适应性维护 扩充与完善性维护 预防性维护,三类维护所占比例:,其它维护 5 %,适应性 维 护 25%,改正性 维 护 20%,扩充与完 善性维护 50%,改正性维护占全部维护量的比率已从80年代初 的20%大幅度下降, 90年代初一些公司的产品 差错率已接近于零,各类维护活动的根本目的是延长软件生存期,其它维护 4 %,软件 生存 周期,软件诞生,计 划,分 析,设 计,编 码,测 试,运行和维护(简称维护),改善期 稳定期 陈旧期,1年-10年,2个月-2年,重构,软件工程周期,7.2 软件维护的特点,M,P

2、+K,e,=,(c-d ),M : 维护工作总工作量 P : 生产性工作量 K : 经验常数 c : 复杂度 d : 对该软件熟悉程度的度量,7.2.1 维护的成本,7.2.2 维护中的典型问题,(1)难以跟踪软件版本的进化过程, 软件的变化未在文档中反映出来. (2)难以跟踪软件的创建过程. (3)难以读懂他人程序. (4)无文档或不全. (5)软件人员流动性大. (6)设计时未考虑修改需要,修改困难. (7)维护工作无吸引力,缺乏成就感.,7.3 软件的维护任务,7.3.1 维护组织,7.3.2 维护报告,维护要求表 软件维护人员提供给用户的空白的维护要求表,也称为软件问题报告表,这个表格

3、由要求一项维护活动的用户填写。 软件维修报告 满足维护要求表中的要求所需要的工作量; 维护要求的性质; 这项要求的优先次序; 与修改有关的事后数据。,维护阶段的事件流,不管维护类型如何,都需要进行同样的技术工作。这些工作包括修改软件设计、复查、必要的代码修改、单元测试和集成测试(包括使用以前的测试方案的回归测试)、验收测试和复审。不同类型的维护强调的重点不同,但是基本路径是相同的。维护事件流中最后一个事件是复审,它再次检验软件配置的所有成分的有效性,并且保证事实上满足了维护要求表中的要求。,软件过程的输出信息可以分为3类: 计算机程序(源代码和可执行程序); 描述计算机程序的文档(供技术人员或

4、用户使用); 数据(程序内包含的或在程序外的)。 上述这些项组成了在软件过程中产生的全部信息,我们把它们统称为软件配置,而这些项就是软件配置项。,7.3.4 保存维护记录,维护过程中作应记录的数据 程序标识 源程序语句数目 机器代码指令条数 . . 以收集的数据为基础构造维护数据库, 供维护评价使用.,7.3.5 评价维护活动,从七个方面度量(评价)维护工作: (1)每次程序运行平均失效的次数; (2)用于每一类维护活动的总人时数; (3)平均每个程序、每种语言、每种维护类型所做的程序变动数; (4)维护过程中增加或者删除一个源语句平均花费的人时数; (5)维护每种语言花费的平均人时数; (6

5、)一张维护要求表的平均周转时间; (7)不同维护类型所占的百分比。,7.4软件可维护性7.4.1 软件可维护性的定义,软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的难易程度。 或者: 维护人员理解、改正、改动或者改进这个软件的难易程度。,7.4.2 可维护性的度量,度量程序可维护性的7个特性在各类维护 中的侧重点 改正性维护 适应性维护 完善性维护 可理解性 可测试性 可修改性 可靠性 可移植性 可重用性 效率 ,7.5 提高可维护性的方法,建立明确的软件质量目标和优先级 使用提高软件质量的技术和工具 进行明确的质量保证审查 选择可维护的程序设计语言 改

6、进程序的文档 维护老化代码,7.6 预防性维护,维护老程序的方法: (1)反复多次的做修改程序的尝试; (2)仔细分析程序尽可能多得掌握程序的内部工作细节,以便更加有效的修改它; (3)在深入理解原有设计的基础上,用软件工程方法重新设计、重新编码和测试那些需要变更的软件部分; (4)以软件工程方法学为指导,对程序全部重新设计、编码和测试,为此可以使用逆向工程和再工程工具来帮助理解原有的设计。 预防性维护:把今天的方法学应用到昨天的系统上,以支持明天的需求。,7.7 软件再工程,7.7.1 软件再工程 在软件复用中,有问题是与现有系统密切相关的 例如: 现有软件系统如何适应当前技术的发展及需求的

7、变化,采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件? 现存大量的遗产软件系统(Legacy Software)由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件? 已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命期,充分利用这些可复用构件?,软件再工程(Software Reengineering)正是解决上述问题的主要技术手段。 软件再工程是一类软件工程活动, 是一个工程过程,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。再工程的基础是系统理解,包括对运行系统、源代码、设计、分析

8、、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解。 它能够使我们: 增进对软件的理解; 提高软件自身的可维护性、复用性或演化性.,软件再工程过程模型,代码重构,数据重构,正向工程,库存目录分析,文档重构,逆向工程,软件再工程相关术语间关系,信 息 库,1类视图: 非过程性描述、元描述 例:规格说明,再工程,3类视图: 过程性描述 例:源程序,再工程,2类视图: 伪过程性描述、结构性描述 例:DFD、PDL,A2类视图: 分析,再工程,逆向工程 设计恢复 再工程,逆向工程 设计恢复 再工程,A1类视图: 分析,A3类视图: 分析,分解,综合生 成视图,软件

9、视图 Software view 有关软件的一种表达形式或报告; 视图分类: 1类视图: 2类视图: 3类视图: A类视图:伴随上述各类的分析视图; A1类视图是对1类视图的分析信息; A2类视图是有关2类视图的分析信息; A3类视图是由3类视图得到。,软件视图示例,信息库,视图编辑器,DFD,视图编辑器,Petri网,视图编辑器,ERA图,视图编辑器,跟踪矩阵,Req1 Req2,Prog1 Prog2 Prog3,视图编辑器,程序结构图,视图编辑器,流程图,视图编辑器,规格说明,再工程信息库及其产品,软件文档,分析结果,信息库,设计成果,规格说明,各种图,度量值,分析、分解器,源程序或其模

10、板,(进入点),源程序,自动进行再工程的过程,软件,软件的 新视图,语法分析器 语义分析器,视图合成器,信息库,其他 产品,经过再工程 过程可获得 的信息,格式 图形 文档 度量值 逻辑 报告,7.7.2 库存目录分析,仔细分析库存目录,按照业务重要程度、寿命、当前可维护性、预期的修改次数等标准,把库中的应用系统排序,从中选出再工程的候选者,然后明智地分配再工程所需要的资源。,开发和维护者不应等待用户的维护申请, 可先选择以下类型程序作为预防性维护对象: (1)预计若干年内将继续使用的程序 (2)当今正成功使用的程序 (3)最近的将来要进行大修改和完善的 程序,7.7.3 文档重构,(1)保持

11、现状 (2)针对系统中当前正在修改的那些部分建立完整文档 (3)如果某应用系统是完成业务工作的关键,而且必须重构全部文档,则仍然应该设法把文档工作减少到必需的最小量。,7.7.4 逆向工程 逆向工程(反推工程reverse engineering) 从现有软件恢复设计信息(有用的维护信息),非结构化、无文档 的源代码或目标代码,逆向工程恢复信息的级别:,(1)实现级:程序的抽象语法 树、符号表等信息 (2)结构级:反映程序分量之间 相互依赖关系的信 息,如调用图、结 构图等. (3)功能级:反映程序段功能和 段间关系的信息 (4)领域级:反映程序分量与应 用领域概念间对应 关系的信息,抽 象

12、级 别,低,高,信息的抽象级别越高, 它与代码距 离越远, 通 过逆向工程 恢复的难度 越大, 自动 工具支持的 可能性变小,逆向工程,源程序,目标代码,反汇编、反编译 程序分析技术:程序结构分析工具 程序功能分析工具,源程序,概要设计 详细设计,概要设计,需求分析,7.7.5 正向工程,正向工程也称为革新或者改造,这项活动不仅从现有程序中恢复设计信息,而且使用该信息去改变或者重构现有系统,以提高整体质量。 正向工程应用软件工程原理、概念、技术和方法来重新开发某个现有的应用系统。在大多数情况下,被再工程的软件不仅能构重新实现现有系统的功能,而且加入了新功能和提高了整体性能。,7.7.6 代码重

13、构,重构可疑模块的代码 首先,用重构工具分析源代码,标注出需要重构的代码 然后,自动重构有问题的代码; 最后,复审和测试生成的重构代码。,7.7.7 数据重构,发生在较低抽象层次上,是一种全范围内的再工程活动。在大多数情况下,数据重构始于逆向工程活动,分解当前使用的数据体系结构,必要时定义数据模型,标识数据对象和属性,并且从软件质量的角度复审现存的数据结构。,7.7.3 为什么要实施软件再工程 再工程可帮助降低软件演化风险 再工程可帮助补偿软件投资 再工程可使得软件易于进一步变更 再工程有广阔市场 再工程扩大了CASE工具集 再工程是推动自动软件维护的动力,第八章 软件项目管理,估算软件规模

14、工作量估算 进度计划 人员组织 质量保证 软件配置管理 能力成熟度模型,8.1 估算软件规模,1、代码行技术 L=,6,a + 4m +b,由多名有经验的软件工程师分别作出估计。每个人都估计程序的最小规模a,最大规模b和最可能的规模m。 LOC KLOC,2、功能点技术 (1)信息域特性 输入项数:用户向软件输入的项数,这些输入给软件提供面向应用的数据; 输出项数:软件向用户输出的项数,它们向用户提供面向应用的信息; 查询数:查询就是一次联机输入,它导致软件以联机输出方式产生某种即时响应; 主文件数:逻辑主文件的数目; 外部接口数:机器可读的全部接口的数量,用这些接口把信息传送给另一个系统。,

15、(2)估算功能点的步骤 A、 计算未调整的功能点数UFP B 、计算技术复杂性因子TCP TCF = 0.65+0.01DI 其中,DI是14种技术因素对软件规模的综合影响程度。 C、 计算功能点数FP FP = UFPTCF,8.2 工作量估算,静态单变量模型 动态多变量模型 COCOMO2模型,8.3 进度计划,估算开发时间 Gantt图 工程网络 估算工程进度 关键路径 机动时间,8.4 人员组织,民主制程序员组 主程序员组 现代程序员组,8.5 质量保证,软件质量 软件与明确地和隐含地定义的需求相一致的程序。 定义强调了三个要点: (1)软件需求是度量软件质量的基础,与需求不一致就是质

16、量不高 (2)指定的开发标准定义了一组指导软件开发的准则,如果没有遵守这些准则,几乎肯定会导致软件质量不高 (3)通常,有一组没有显式描述的需求,如果软件满足明确描述的需求,却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。,产品运行,产品 转移,产品修改,可理解性 可维修性 灵活性 可测试性,可移植性 可再用性 互运行性,正确性 完整性 健壮性 可用性 效率 风险,软件质量因素与产品活动的关系,软件质量保证措施 SQA的措施主要有: 基于非执行的测试(复审或者评审) 基于执行的测试 程序正确性证明,8.6 软件配置管理,软件配置管理是在软件的整个生命期内管理变化的一组活动。 具体地说,这组

17、活动用来: 标识变化 控制变化 确保适当地实现了变化 向需要知道这类信息的人报告变化,软件配置 软件配置项:计算机程序、描述计算机程序的文档、数据。 基线:通过了正式复审的软件配置项。,软件配置管理过程 软件配置管理可以看作是应用于整个软件过程的软件质量保证活动,是专门用来管理变化的软件质量保证活动。 软件配置管理的五项任务: 标识、版本控制、变化控制、 配置审计、报告。,8.7 能力成熟度模型,能力成熟度模型的主要思想 因为问题是管理软件过程的方法不恰当造成的,所以采用新技术并不会自动提高软件生产率和软件质量,应该下大力气改进对软件过程的管理。 能力成熟度模型的五个成熟度等级 初始级、可重复级、已定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论