[理学]第8章-软件维护.ppt
《[理学]第8章-软件维护.ppt》由会员分享,可在线阅读,更多相关《[理学]第8章-软件维护.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1章章 软件工程学概述软件工程学概述第第2章章 可行性研究可行性研究第第3章章 需求分析需求分析第第4章章 形式化说明技术形式化说明技术第第5章章 总体设计总体设计第第6章章 详细设计详细设计第第7章章 实现实现第第8章章 维护维护第第9章章 面向对象方法学引论面向对象方法学引论第第10章章 面向对象分析面向对象分析第第11章章 面向对象设计面向对象设计第第12章章 面向对象实现面向对象实现第第13章章 软件项目管理软件项目管理v软件在交付用户使用后,就进入了其生软件在交付用户使用后,就进入了其生命周期的最后一个阶段命周期的最后一个阶段维护,维护维护,维护阶段的基本任务是保证软件在一个相当
2、阶段的基本任务是保证软件在一个相当长的时期能够正常运行。长的时期能够正常运行。v维护也是软件生命周期中持续时间最长维护也是软件生命周期中持续时间最长代价最大的一个阶段。软件工程学的主代价最大的一个阶段。软件工程学的主要目的就是提高软件的可维护性,降低要目的就是提高软件的可维护性,降低维护的代价。维护的代价。教学内容教学内容8.1 软件维护的定义软件维护的定义 8.2 软件维护的特点软件维护的特点8.3 软件维护过程软件维护过程8.4 软件的可维护性软件的可维护性8.5 预防性维护预防性维护8.6 软件再工程过程软件再工程过程v软件维护:指在软件已经交付使用之后,为了软件维护:指在软件已经交付使
3、用之后,为了改正错误或满足新的需要而修改软件的过程。改正错误或满足新的需要而修改软件的过程。v软件维护通常包括软件维护通常包括4 4类活动:改正性维护、适类活动:改正性维护、适应性维护、完善性维护、预防性维护。应性维护、完善性维护、预防性维护。v注意,注意,4 4类维护活动都必须应用于整个软件配类维护活动都必须应用于整个软件配置,维护软件文档和维护软件的可执行代码同置,维护软件文档和维护软件的可执行代码同样重要。样重要。v改正性维护:改正性维护:为了纠正在使用过程中暴露出来的为了纠正在使用过程中暴露出来的程序错误而进行的维护活动。改正性维护的工作程序错误而进行的维护活动。改正性维护的工作量大约
4、占软件维护总工作量的量大约占软件维护总工作量的17%-21%17%-21%。v适应性维护:适应性维护:为了适应外部环境的变化而进行的为了适应外部环境的变化而进行的维护活动。适应性维护的工作量大约占软件维护维护活动。适应性维护的工作量大约占软件维护总工作量的总工作量的18%-25%18%-25%。v完善性维护:完善性维护:为了根据用户需要改进原有软件而为了根据用户需要改进原有软件而进行的维护活动。完善性维护的工作量大约占软进行的维护活动。完善性维护的工作量大约占软件维护总工作量的件维护总工作量的50%-66%50%-66%。v预防性维护:预防性维护:为了改进软件将来的可维护性和可为了改进软件将来
5、的可维护性和可靠性而进行的维护活动。预防性维护的工作量大靠性而进行的维护活动。预防性维护的工作量大约占软件维护总工作量的约占软件维护总工作量的4%4%。纠错性维护纠错性维护适应性维护适应性维护完善性维护完善性维护预防性维护预防性维护v软件维护的三个特点:软件维护的三个特点:v结构化维护与非结构化维护差别巨大结构化维护与非结构化维护差别巨大v维护的代价高昂维护的代价高昂v维护的问题很多维护的问题很多1. 1. 结构化维护与非结构化维护差别巨大结构化维护与非结构化维护差别巨大维护要求维护要求配置配置评价设计文档评价设计文档计划实施途径计划实施途径修改设计修改设计重新编码重新编码交付使用交付使用评价
6、程序代码评价程序代码复查复查复查复查?修改程序修改程序2. 2. 维护的代价高昂维护的代价高昂v有形代价:软件维护的费用,占软件总预算的有形代价:软件维护的费用,占软件总预算的80%-90%80%-90%v无形代价:无形代价:v可用资源必须供维护任务使用,以致耽误甚至丧失了开发可用资源必须供维护任务使用,以致耽误甚至丧失了开发良机;良机;当看来合理的修改要求不能及时满足时将引起用户不满;当看来合理的修改要求不能及时满足时将引起用户不满;由于维护时的改动,在软件中引入了潜伏的错误,从而降由于维护时的改动,在软件中引入了潜伏的错误,从而降低了软件的质量;低了软件的质量;当必须把软件工程师调去从事维
7、护工作时,将在开发过程当必须把软件工程师调去从事维护工作时,将在开发过程中造成混乱。中造成混乱。v生产率的大幅度下降生产率的大幅度下降v用于维护工作的劳动可以分成生产性活用于维护工作的劳动可以分成生产性活动和非生产性活动。下述表达式给出维动和非生产性活动。下述表达式给出维护工作量的一个模型:护工作量的一个模型:M=P+Kexp(c-d) 其中:其中: lM是维护用的总工作量;是维护用的总工作量;lP是生产性工作量;是生产性工作量;lK是经验常数;是经验常数;lc是复杂程度是复杂程度(非结构化设计和缺少文档非结构化设计和缺少文档都会增加软件的复杂程度都会增加软件的复杂程度);ld是维护人员对软件
8、的熟悉程度。是维护人员对软件的熟悉程度。3. 3. 维护的问题很多维护的问题很多 与软件维护有关的绝大多数问题,都可归因于与软件维护有关的绝大多数问题,都可归因于软件定义和软件开发的方法有缺点,下面列出和软件定义和软件开发的方法有缺点,下面列出和软件维护有关的部分问题:软件维护有关的部分问题:(1) 理解别人写的程序通常非常困难,而且困难程理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。度随着软件配置成分的减少而迅速增加。(2) 需要维护的软件往往没有合格的文档,或者文需要维护的软件往往没有合格的文档,或者文档资料显著不足。容易理解的并且和程序代码完档资料显著不足。
9、容易理解的并且和程序代码完全一致的文档才真正有价值。全一致的文档才真正有价值。(3) 当要求对软件进行维护时,不能指当要求对软件进行维护时,不能指望由开发人员给我们仔细说明软件。望由开发人员给我们仔细说明软件。(4) 绝大多数软件在设计时没有考虑将绝大多数软件在设计时没有考虑将来的修改。除非使用强调模块独立原理来的修改。除非使用强调模块独立原理的设计方法学,否则修改软件既困难又的设计方法学,否则修改软件既困难又容易发生差错。容易发生差错。(5) 软件维护不是一项吸引人的工作。软件维护不是一项吸引人的工作。形成这种观念很大程度上是因为维护工形成这种观念很大程度上是因为维护工作经常遭受挫折。作经常
10、遭受挫折。v维护过程本质上是修改和压缩了的软件维护过程本质上是修改和压缩了的软件定义和开发过程:首先必须建立一个维定义和开发过程:首先必须建立一个维护组织,随后必须确定报告和评价的过护组织,随后必须确定报告和评价的过程,而且必须为每个维护要求规定一个程,而且必须为每个维护要求规定一个标准化的事件序列。此外,还应该建立标准化的事件序列。此外,还应该建立一个适用于维护活动的记录保管过程,一个适用于维护活动的记录保管过程,并且规定复审标准。并且规定复审标准。1. 1. 维护组织维护组织2. 2. 维护报告维护报告v软件维护报告应由用户提交的维护要求表和软件组软件维护报告应由用户提交的维护要求表和软件
11、组织制定的软件修改报告两部分构成。织制定的软件修改报告两部分构成。v对于改正性维护,用户需在维护要求表中完整描述对于改正性维护,用户需在维护要求表中完整描述导致出现错误的环境;对于适应性或完善性维护,导致出现错误的环境;对于适应性或完善性维护,则应在维护要求表中提出简短需求说明书。由维护则应在维护要求表中提出简短需求说明书。由维护管理员和系统管理员评价用户提交的维护要求表。管理员和系统管理员评价用户提交的维护要求表。v软件修改报告给出下述信息:软件修改报告给出下述信息:(1) (1) 满足维护要求表中提出的要求所需要的工作量;满足维护要求表中提出的要求所需要的工作量;(2) (2) 维护要求的
12、性质;维护要求的性质;(3) (3) 这项要求的优先次序;这项要求的优先次序;(4) (4) 与修改有关的事后数据。与修改有关的事后数据。3. 3. 维护的事件流维护的事件流4. 4. 保存维护记录保存维护记录需要记录的内容:需要记录的内容:(1) (1) 程序标识;程序标识; (2) (2) 源语句数;源语句数;(3) (3) 机器指令条数;机器指令条数;(4) (4) 使用的程序设计语言;使用的程序设计语言; (5) (5) 程序安装的日期;程序安装的日期; (6) (6) 自从安装以来程序运行的次数;自从安装以来程序运行的次数; (7) (7) 自从安装以来程序失效的次数;自从安装以来程
13、序失效的次数; (8) (8) 程序变动的层次和标识;程序变动的层次和标识;(9) (9) 因程序变动而增加的源语句数;因程序变动而增加的源语句数; (10) (10) 因程序变动而删除的源语句数;因程序变动而删除的源语句数;(11) (11) 每个改动耗费的人时数;每个改动耗费的人时数; (12) (12) 程序改动的日期;程序改动的日期; (13) (13) 软件工程师的名字;软件工程师的名字; (14) (14) 维护要求表的标识;维护要求表的标识; (15) (15) 维护类型;维护类型; (16) (16) 维护开始和完成的日期;维护开始和完成的日期; (17) (17) 累计用于维
14、护的人时数;累计用于维护的人时数; (18) (18) 与完成的维护相联系的纯效益。与完成的维护相联系的纯效益。5. 5. 评价维护活动评价维护活动可以从下述可以从下述7 7个方面定量度量维护工作:个方面定量度量维护工作:(1) (1) 每次程序运行平均失效的次数;每次程序运行平均失效的次数;(2) (2) 用于每一类维护活动的总人时数;用于每一类维护活动的总人时数;(3) (3) 平均每个程序、每种语言、每种维护类型所做平均每个程序、每种语言、每种维护类型所做的程序变动数;的程序变动数;(4) (4) 维护过程中增加或删除一个源语句平均花费的维护过程中增加或删除一个源语句平均花费的人时数;人
15、时数;(5) (5) 维护每种语言平均花费的人时数;维护每种语言平均花费的人时数;(6) (6) 一张维护要求表的平均周转时间;一张维护要求表的平均周转时间;(7) (7) 不同维护类型所占的百分比。不同维护类型所占的百分比。v可以把软件的可维护性定性地定义为:可以把软件的可维护性定性地定义为: 维护人员理解、改正、改动或改进这个维护人员理解、改正、改动或改进这个软件的难易程度。软件的难易程度。v提高可维护性是支配软件工程方法学所提高可维护性是支配软件工程方法学所有步骤的关键目标。有步骤的关键目标。决定软件可维护性的因素主要有下述决定软件可维护性的因素主要有下述5 5个:个:可理解性可理解性v
16、软件可理解性表现为外来读者理解软件的结软件可理解性表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。构、功能、接口和内部处理过程的难易程度。v模块化(模块结构良好,高内聚,松耦合)、模块化(模块结构良好,高内聚,松耦合)、详细的设计文档、结构化设计、程序内部的详细的设计文档、结构化设计、程序内部的文档和良好的高级程序设计语言等等,都有文档和良好的高级程序设计语言等等,都有助于提高软件的可理解性。助于提高软件的可理解性。2. 2. 可测试性可测试性v诊断和测试的容易程度取决于软件容易理解诊断和测试的容易程度取决于软件容易理解的程度。的程度。v规范的文档、良好的软件结构、可用的测试
17、规范的文档、良好的软件结构、可用的测试工具和调试工具,以及保存完好的测试报告工具和调试工具,以及保存完好的测试报告对于诊断和测试工作是十分重要的。对于诊断和测试工作是十分重要的。v对于程序模块来说,可以用程序复杂度来度对于程序模块来说,可以用程序复杂度来度量它的可测试性。模块的环形复杂度越大,量它的可测试性。模块的环形复杂度越大,全面测试它的难度就越高。全面测试它的难度就越高。3. 3. 可修改性可修改性v软件容易修改的程度与总体设计中讲过的设软件容易修改的程度与总体设计中讲过的设计原理和启发规则直接有关。耦合、内聚、计原理和启发规则直接有关。耦合、内聚、信息隐藏、局部化、控制域与作用域的关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理学 软件 维护
限制150内