欢迎来到天天文库
浏览记录
ID:43533687
大小:227.50 KB
页数:18页
时间:2019-10-10
《软件工程第七章软件维护与再工程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件工程第七讲软件维护与再工程第七讲软件维护与再工程7.1软件维护的类型与策略7.2软件可维护性的概念7.3软件维护的实施过程和管理7.4软件再工程7.1软件维护的类型与策略(1)软件维护的基本概念在软件运行/维护阶段对软件所进行的修改称为软件维护。修改可能包括代码、文档、数据等多方面。软件维护比软件开发更困难,需要更多的创造性工作。需要理解别人的程序对程序的修改不能影响该程序的正确性和完整性必须在较短的时间内完成包括大量的需求分析、设计、测试等工作软件维护的特点维护活动限定在已有系统的框架内完成。一般系统越老,维护越困难。通常维护时间比开发时间长。但一项具体的维护工作比该软件的开发时间
2、短。软件开发从无到有产生所有的测试数据,而维护通常可以使用现有的测试数据进行回归测试。有时需要产生新的测试数据,对软件修改及修改后的影响进行必要的测试。(2)软件维护的种类纠错(改正)性维护(约占维护工作量的21%)改正软件中的错误。适应性维护(约占维护工作量的25%)适应外部环境变化的修改。如硬件配置、软件配置、数据环境(DB、存储方式等)。完善性维护(约占维护工作量的50%)在使用过程中,针对用户提出的新的功能与性能要求,而修改和再开发软件,以扩充功能、增强性能、改进处理效率、提高软件的可维护性。预防性维护(约占维护工作量的4%)为了提高软件的可维护性、可靠性,对软件和软件中的某一部
3、分重新进行设计、编制和测试。7.2软件可维护性的概念(1)软件可维护性指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。(2)影响可维护性的主要软件属性可理解性可测试性可修改性可靠性可移植性可使用性效率7.3软件维护的实施过程和管理(1)软件维护的工作流程(2)软件维护的主要任务第一、分析和理解现有系统第二、修改系统第三、重新验证、确认修改部分第二、修改系统——最重要的维护工作①设计程序的修改计划设计如何改变程序的计划在理解的基础上,从总体和全局的观点出发,提出修改计划的方针与策略;逐步把要改变的软件部分(如模块)分离出来;仔细地研究每个要改变的和受影响的
4、部分的内部细节。②按计划改变程序正确、有效地编写改变部分的代码;消除任何不期望的副作用;所谓副作用是指因修改软件而造成的错误或其它不希望发生的情况。有三种副作用:修改代码的副作用修改数据的副作用修改文档的副作用控制程序改变的波动效应。所谓波动效应是指当改变程序地一部分而影响程序地其他部分时,就出现了波动效应。③估计修改的影响ABCWX公共子程序X内含有:全局变量Y,全局数据结构ZABC…W共同使用Y,Z注:修改X,则改变Y和Z;因此要改变A、B、C…W。此时,波动效应就大。第三、重新验证、确认修改部分修改少数代码和修改多数代码都应该重新验证和确认。注意:对于改变部分和未改变部分都要进行;
5、重新确认应该邀请用户参加;重新验证和确认过程中发现的错误和错误类别,应该同从前的测试结果进行比较,估计被损害的程度;利用自动工具帮助重新确认过程。(3)软件维护的管理软件维护管理的重要性软件维护管理的职能①控制程序的改变:有效性、合理性、经济性要进行监督和控制②程序的质量检查按设计标准进行改变③安排维护计划④建立维护机构软件维护的管理流程软件维护申请报告一般地,维护申请报告通常由申请维护的用户填写,是维护工作的基础。维护申请报告一般包括:遇到的错误及其描述(可从运行日志来);当时的环境(输入、程序、其他条件)等。软件修改报告软件开发组织根据维护申请报告相应地做出软件修改报告。软件修改报告
6、应提交修改负责人,经批准后才能进一步安排维护工作。软件修改报告用于记录在维护期间对软件所作的每一次修改。由直接进行修改和负责文档管理的人员共同填写。软件修改报告一般包括:为满足维护申请表的要求所需要的工作量要求修改的性质和范围请求的优先次序修改有关的数据7.4软件再工程Re-Engineering(1)软件再工程的定义将新技术和新工具应用于老的软件的一种较彻底的预防性维护。软件再工程的目的:在商业上要提高产品的竞争力;在技术上要提高产品的质量。但这种愿望无法靠软件的维护来实现,因为:(1)软件的可维护性可能极差,实在不值得去做;(2)即使软件的可维护性比较好,但也只是治表不治本。软件再工
7、程干脆对已有软件进行全部或部分的改造,赋予软件新的活力。(2)软件再工程过程模型信息库分析:软件公司维护的所有应用软件的基本信息,包括应用软件的设计、开发及维护方面的数据。文档重构:重新构建原本缺乏文档的应用系统的文档。逆向工程:软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序表示的过程;是一个设计恢复(提取数据结构、体系结构和程序设计结构)的过程。信息库分析文档重构逆向工程代码重构数据重构正向工程代码重构:从代码中导
此文档下载收益归作者所有