《《软件维护》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件维护》PPT课件.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9章章 软件维护软件维护Chapter 9 Software Maintenance 1软件工程大、中型软件产品的开发周期一般为大、中型软件产品的开发周期一般为1 1至至3 3年,年,运行周期可达运行周期可达5 5至至1010年。在这么年。在这么长的时间内,长的时间内,除了要改正软件中的残留错误外,还可能要多除了要改正软件中的残留错误外,还可能要多次更新软件的版本,以适应改善运行环境(包次更新软件的版本,以适应改善运行环境(包括硬件和软件的改进)和加强产品性能等需要。括硬件和软件的改进)和加强产品性能等需要。因此,软件维护是不可避免的。因此,软件维护是不可避免的。维护阶段是软件生存周期中花
2、费最多、时维护阶段是软件生存周期中花费最多、时间最长的一个阶段间最长的一个阶段。通常,软件维护费用与开。通常,软件维护费用与开发费用的比例为发费用的比例为2 2:1 1。2软件工程Development Time VS.Maintenance Time Typical development project takes between 1 and 2 years.Requires an additional 5 to 6 years of maintenance time!80-20 Rule:Twenty percent of the effort is in evelopment and
3、eighty percent is in maintenance.3软件工程9 9.1 .1 软件维护的种类软件维护的种类 1.1.完善性维护完善性维护(Perfective Maintenance):为满足用户日益增长的需要,不断为满足用户日益增长的需要,不断完善完善和加和加强软件的功能与性能而进行的维护。强软件的功能与性能而进行的维护。完善性维护约占整个维护工作量的完善性维护约占整个维护工作量的50%50%。4软件工程 2.2.适应性维护适应性维护(Adaptive Maintenance):为使软件适应运行环境的改变而进行的维护。为使软件适应运行环境的改变而进行的维护。运行环境的改变包括
4、运行环境的改变包括:硬件和支撑软件硬件和支撑软件(如操作系统改版、增加如操作系统改版、增加数据库等)的变化。数据库等)的变化。将软件移植到新的机种上运行。将软件移植到新的机种上运行。软件使用对象的变更,等等。软件使用对象的变更,等等。适应性维护约占整个维护工作量的适应性维护约占整个维护工作量的25%25%。5软件工程 3.3.纠错性维护纠错性维护(Corrective Maintenance):纠正软件在开发期间未能发现的遗留错误。纠正软件在开发期间未能发现的遗留错误。纠错性维护约占整个维护工作量的纠错性维护约占整个维护工作量的21%21%。4.4.预防性维护预防性维护(Preventive
5、Maintenance):为了提高软件的可维护性,减少今后对它为了提高软件的可维护性,减少今后对它们维护时所需要的工作量而进行的维护。们维护时所需要的工作量而进行的维护。预防性维护约占整个维护工作量的预防性维护约占整个维护工作量的4%4%。6软件工程Use of Maintenance TimePerfective Maintenance:50%Adaptive Maintenance:25%Corrective Maintenance:21%Preventive Maintenance:4%7软件工程9.2 软件可维护性软件可维护性(Software Maintainnability)1.可
6、维护性的含义可维护性的含义可维护性是衡量维护难易程度的一种软件属可维护性是衡量维护难易程度的一种软件属性。性。可维护性取决于下列属性:可理解性、可修改可维护性取决于下列属性:可理解性、可修改性和可测试性。性和可测试性。(1)可理解性可理解性(Understandability)读懂别人的程序是困难的读懂别人的程序是困难的,若文档不全若文档不全,或仅或仅有程序而无文档,则难度更大。有程序而无文档,则难度更大。要使程序达到良好的可理解性,必须坚持模要使程序达到良好的可理解性,必须坚持模块化设计,编写准确的文档,并使源程序文档块化设计,编写准确的文档,并使源程序文档化。化。8软件工程(2)(2)可修
7、改性可修改性(Modifiability)模块设计时的高内聚、低耦合、面向对模块设计时的高内聚、低耦合、面向对象技术、复用技术等,可提高软件的可修改性。象技术、复用技术等,可提高软件的可修改性。(3)(3)可测试性可测试性(Testability)要求程序有良好的可理解性和较低的结要求程序有良好的可理解性和较低的结构复杂度,同时要求有齐全的测试文档,包括构复杂度,同时要求有齐全的测试文档,包括开发时期用过的测试用例与结果。开发时期用过的测试用例与结果。9软件工程 1979 1979年,年,T.GilbT.Gilb建议把维护过程中的建议把维护过程中的 10 10 种活动种活动的耗费时间记录下来,
8、并用它们度量软件的可维护的耗费时间记录下来,并用它们度量软件的可维护性性:(1)(1)问题识别时间问题识别时间;(2);(2)管理延迟时间管理延迟时间;(3)(3)收集维护工具时间收集维护工具时间;(4);(4)问题分析时间问题分析时间;(5)(5)修改规格说明书时间修改规格说明书时间;(6);(6)改正改正(或修改或修改)时间时间;(7)(7)局部测试时间局部测试时间;(8);(8)整体测试时间整体测试时间;(9)(9)维护复审时间维护复审时间;(10);(10)分发与恢复时间分发与恢复时间;10软件工程2.2.提高提高可维护性的途径可维护性的途径(1)(1)提供完整和一致的文档提供完整和一
9、致的文档 文档的第一个作用是帮助维护人员读懂文档的第一个作用是帮助维护人员读懂程序。程序。有完整的文档,对理解系统的功能、性能、有完整的文档,对理解系统的功能、性能、系统结构、模块算法等有很大的作用,容易系统结构、模块算法等有很大的作用,容易进行维护工作。若只有源程序没有文档,维进行维护工作。若只有源程序没有文档,维护活动只能通过阅读源程序来理解系统的功护活动只能通过阅读源程序来理解系统的功能、性能、系统结构、模块算法等,这是非能、性能、系统结构、模块算法等,这是非常困难的。常困难的。11软件工程文档的第二个作用是方便被维护软件的测试。文档的第二个作用是方便被维护软件的测试。在测试阶段的在测试
10、阶段的“测试用例文件测试用例文件”(”(测试用例测试用例说明书和测试总结报告说明书和测试总结报告)中,记录了对软件进中,记录了对软件进行测试的测试用例和测试结果。当软件在维护行测试的测试用例和测试结果。当软件在维护中被修改后,可以先把原有的测试用例全部重中被修改后,可以先把原有的测试用例全部重测一遍,再增加一些测试用例来检验被修改的测一遍,再增加一些测试用例来检验被修改的代码。代码。12软件工程(2)(2)使用现代化的开发方法使用现代化的开发方法 尽可能采用面向对象技术和复用技术;尽可能采用面向对象技术和复用技术;对数据量大的应用软件,可以采用数据库对数据量大的应用软件,可以采用数据库技术来管
11、理软件中的数据。技术来管理软件中的数据。13软件工程1111.3 .3 软件维护的实施软件维护的实施1.1.软件维护的工作流程软件维护的工作流程区分区分类型类型严重性严重性评价评价错误错误分析分析优先度优先度评价评价问题问题分析分析维护维护过程过程配置配置复审复审维护维护申请申请纠错性纠错性适应性适应性完善性完善性开发项目表开发项目表低低高高纠错项目表纠错项目表严严重重不严重不严重已修改已修改的配置的配置已修改已修改的软件的软件批准交付批准交付的配置的配置图图11.3 维护的步骤维护的步骤14软件工程2.2.维护申请单和修改报告单维护申请单和修改报告单(1)(1)维护申请单:又称软件问题报告单
12、,由申请维护申请单:又称软件问题报告单,由申请维护的用户填写。维护的用户填写。纠错性维护的申请单应说明导致错误发生的纠错性维护的申请单应说明导致错误发生的环境,包括输入数据、输出数据和其他有关材料。环境,包括输入数据、输出数据和其他有关材料。适应性或适应性或完善性维护完善性维护的申请,只需提出一个的申请,只需提出一个简要的需求说明。简要的需求说明。(2)(2)软件修改报告单:用于记录在维护时期对软软件修改报告单:用于记录在维护时期对软件所作的每一次修改,包括问题来源、错误类型、件所作的每一次修改,包括问题来源、错误类型、修改内容以及批准修改的负责人等。修改报告单修改内容以及批准修改的负责人等。
13、修改报告单由直接进行修改和负责文档管理的人员共同填写。由直接进行修改和负责文档管理的人员共同填写。15软件工程3.3.维护的副作用维护的副作用 因修改软件而引入的错误称为维护的副作用。因修改软件而引入的错误称为维护的副作用。修改软件可能产生的副作用有以下修改软件可能产生的副作用有以下3 3类类:(1)(1)修改编码的副作用修改编码的副作用 例如修改变量标识符、修改子程序、修改逻辑例如修改变量标识符、修改子程序、修改逻辑运算符、修改打开或关闭文件的语句等。运算符、修改打开或关闭文件的语句等。16软件工程(2)(2)修改数据的副作用修改数据的副作用 例如修改数据结构或其中的数据项、重新定义例如修改
14、数据结构或其中的数据项、重新定义局部或全局变量、改变子程序的形式参数的个数或局部或全局变量、改变子程序的形式参数的个数或顺序等。顺序等。(3)(3)修改文档的副作用修改文档的副作用 任何对程序的修改,都应该及时反映到有关的任何对程序的修改,都应该及时反映到有关的文档上。如果只改程序,未改有关的文档,必将在文档上。如果只改程序,未改有关的文档,必将在今后的使用和维护中造成混乱。今后的使用和维护中造成混乱。17软件工程1111.4 .4 软件维护的管理软件维护的管理 1.1.维护的机构和人员维护的机构和人员 (1)(1)修改控制组修改控制组:由高级管理人员和专业人员组成。其职责是:由高级管理人员和
15、专业人员组成。其职责是:对维护申请的审查和批准、维护活动的计划和安排、对维护申请的审查和批准、维护活动的计划和安排、人力和资源的分配、维护工作的评价和分析等。人力和资源的分配、维护工作的评价和分析等。(2)(2)维护小组维护小组:可以由原开发小组承担,也可以指定专门的维可以由原开发小组承担,也可以指定专门的维护小组进行。其职责是:进行具体的维护工作。护小组进行。其职责是:进行具体的维护工作。18软件工程 2.2.维护时期的配置管理维护时期的配置管理 软件配置:一个软件在生存周期内,它的各种软件配置:一个软件在生存周期内,它的各种形式、各种版本的文档与程序的总称。形式、各种版本的文档与程序的总称
16、。对软件配置进行科学的管理,是保证软件质量对软件配置进行科学的管理,是保证软件质量的重要手段。的重要手段。常用的配置管理工具有:常用的配置管理工具有:(1)(1)配置管理数据库配置管理数据库 (2)(2)版本控制库版本控制库19软件工程 3.3.维护管理文档维护管理文档 维护阶段的文档除了维护申请单和软件修改维护阶段的文档除了维护申请单和软件修改报告单外报告单外,还有以下几种还有以下几种:(1)(1)维护日记维护日记 维护日记在每次维护完成后填写,包括以下内维护日记在每次维护完成后填写,包括以下内容容:维护前程序的情况。维护前程序的情况。维护中对程序修改的情况。维护中对程序修改的情况。其他的重
17、要数据,如维护的类型、维护起止其他的重要数据,如维护的类型、维护起止日期等。日期等。20软件工程(2)(2)维护申请摘要报告和维护趋势图维护申请摘要报告和维护趋势图 维护申请摘要报告是一种定期报告,可以每周或维护申请摘要报告是一种定期报告,可以每周或每月统计一次。内容包括上次报告以来已经处理了、每月统计一次。内容包括上次报告以来已经处理了、正在处理和新接到的维护申请项数及其处理情况。正在处理和新接到的维护申请项数及其处理情况。维护趋势图是在维护申请摘要报告的基础上绘制维护趋势图是在维护申请摘要报告的基础上绘制而成的。而成的。21软件工程4.4.维护费用的估算维护费用的估算:M=P+K:M=P+K(c-d)(c-d)其中:其中:M=M=维护所需总工作量维护所需总工作量;P=P=为生产性工作量为生产性工作量,包括修改设计与包括修改设计与编码等编码等;K K(c-d)(c-d)为非生产性工作量为非生产性工作量,包括理解代包括理解代码功能码功能,解释数据结构等;解释数据结构等;K=K=经验常数;经验常数;c=c=软件复杂度;软件复杂度;d=d=维护人员对软件的熟悉程度。维护人员对软件的熟悉程度。22软件工程
限制150内