软件生存周期的最后一个阶段系统投入生产性运行以后的时期_第1页
软件生存周期的最后一个阶段系统投入生产性运行以后的时期_第2页
软件生存周期的最后一个阶段系统投入生产性运行以后的时期_第3页
软件生存周期的最后一个阶段系统投入生产性运行以后的时期_第4页
软件生存周期的最后一个阶段系统投入生产性运行以后的时期_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、软件生存周期的最后一个阶段系统投入生产性运行以后的时期需要的工作量非常大:开发成本的四倍左右60以上的人力有资料表明,在数据处理方面,预算的30%-80%往往需用于软件的维护工作软件开发必须有利于提高软件可维护性 软件维护 2022/8/201 软件维护的定义 改正性维护 对使用中发现的程 序错误进行修改适应性维护 为配合环境的变化而进行的修改完善性维护 增加新功能或修改已有功能预防性维护 给未来的改进奠定 更好的基础而修改在软件交付使用后,为了改正错误或满足新的需要而修改软件的过程2022/8/202一直是软件生存周期中被忽视的阶段 关于维护的文献很少 几乎没有提出什么有效的技术途径和“方法

2、”软件可维护性维护人员理解、改正、改动和改进某软件的难易程度 如何提高软件的可维护性 2022/8/203一、维护的特点 从三个不同的方面考虑:1. 为了完成维护任务需要进行的活动,以及软件工程方法学对这类活动的功效的影响; 如何提高软件的可维护性 结构化维护非结构化维护文档齐全源程序2022/8/204最明显的,软件维护的费用随时间稳步上升:1970年-35%-40%1980年-40%-60%1990年-70%-80%无形的代价:因为维护现有软件占用了资源,使开发新软件错失良机;当看来合理的维护要求未得到及时满足将引起用户不满;考虑欠周到的维护使软件引入新故障质量降低;为了应急,临时抽人,使

3、正在进行的开发工作打断或混乱;软件生产率大幅度下降 用于维护工作的劳动:生产性活动(分析评价、修改设计、编写程序代码等)非生产性活动(理解程序、解释数据结构、接口特点、 性能限度等)2. 维护的代价 如何提高软件的可维护性 2022/8/205维护工作量的一个模型: M P K exp ( c d )其中 M维护用的总工作量P生产性工作量K经验常数c复杂程度d维护人员对软件的熟悉程度 模型表明:如果软件的开发途径不好(即,没有使用软件工程方法论),而且原的开发人员不能参加维护工作,那么维护工作量(和费用)将指数地增加 如何提高软件的可维护性 2022/8/206起因:软件定义和开发的方法有缺点

4、 无严格、科学的管理与规划3. 维护的问题例子:某公园有一游船码头,负责人请一位软件开发人员实现 计算机辅助游船管理系统。要求如下: 当游客向租船处查问是否有可以租用的船只,如果租船处有空船,管理员就准备好船只,帮助游客上船,并在联机终端上打入一信息“S”表示租船周期开始。计算机自动把当时时钟值送入信息域。当游客还船时,管理员打入另一信息“E”表示租船周期结束。由管理员向游客结算租船时间和费用。一天结束时,管理员要用一些管理信息总结每天工作状况,要求系统打印出:租船次数平均租船时间 如何提高软件的可维护性 2022/8/207显然,该系统的功能包括两部分:对输入流的信息进行汇总计算;打印输出.

5、 因为 平均租船的时间 = 总的时间 / 租船次数 总时间 = ( 第一条租船结束时间 - 第一条租船开始时间) + (第二条租船结束时间 - 第二条租船开始时间) +或者 总时间 =(第一条租船结束时间 + 第二条租船结束时间 + ) -(第一条租船开始时间 + 第二条租船开始时间 + ) 如何提高软件的可维护性 2022/8/208BEGINOPEN MESSAGE-STREAMNUMBER=0TOTALTIME=0GET MESSAGEDO WHILE NOT END-OF-STREAM IF CODE=STHEN NUMBER=NUMBER+1TOTALTIME=TOTALTIME-S

6、TARTIMEELSE TOTALTIME=TOTALTIME+ENDTIME ENDIFPRINT NUMBER OF SESSION=NUMBERIF NUMBER=0 THEN PRINT AVERAGE SESSION TIME=TOTALTIME/NUMBERENDIFCLOSE MESSAGE-STREAMEND;可以写出如下伪码程序: 如何提高软件的可维护性 2022/8/209如此简单的算法完成了全部的功能要求,当然这只是多种实现方案之一。可后来,一系列的麻烦接踵而至:不久,负责人希望软件增加一项新功能:找出一天中最长租用时间LongestSessionTime开发人员仔细考虑

7、后,认为需重新设计算法,可是时间与经费都不允许,所以借口推辞(技术原因-OS不允许把新要求扩充近来)-作罢! 如何提高软件的可维护性 2022/8/2010几天后,负责人又提出:把每天的报告分成上午情况、下午情况两份报告开发人员再次推托(磁盘原因无法达此目标), -负责人甚不满!接下来,负责人要求修改系统:从报告中删除一切不完整的信息因为通信线路的故障造成了部分信息丢失,不改不行 ! 此紧急状况下,开发人员无充足的时间让从头另做, -负责人再也无耐心听其找理由了! 如何提高软件的可维护性 2022/8/2011结论:按某种要求改动软件并非易事!反思:此例最初的软件方案中,忽略了每个游客 的租船

8、时间概念,制约了开发人员对负责 人后来一系列新要求的满足。经验教训:在系统设计中应抓住问题的基本量! -提高软件的可维护性! 如何提高软件的可维护性 2022/8/2012二、 决定软件可维护性的因素可理解性 读者理解软件的结构、接口、功能和内部过程的难易程度模块化、详细的设计文档、结构化设计、源代码内部的文档和良好的高级程序设计语言等等,都对改进软件的可理解性有重要贡献可测试性诊断和测试的容易程度良好的文档、软件结构、可用的测试工具和调试工具,及以前设计的测试过程也都是非常重要的维护人员应该能够得到在开发阶段用过的测试方案,以便进行回归测试 如何提高软件的可维护性 2022/8/2013 可

9、修改性软件容易修改的程度设计原理和规则直接有关。耦合、内聚、局部化、控制域与作用域的关系等等,都影响软件的可修改性 如何提高软件的可维护性 2022/8/2014三、定量度量可维护性Gilb建议的可维护性度量指标: 1. 识别问题的时间 2. 管理延迟时间 3. 维护工具的收集时间 4. 分析、诊断问题的时间 5. 修改说明书的时间 6. 改正(或修改)的时间 7. 局部测试时间 8. 复查时间 9. 全程测试和回归测试的时间 10. 恢复时间 事实上,上述每个度量都不难做到。记录这些数据可以给管理人员提供新技术和新工具效能指示。 如何提高软件的可维护性 2022/8/20151. 建立维护组

10、织,明确维护责任 软件维护过程 2022/8/20162. 维护报告用标准化的格式表达所有软件维护要求软件组织内部应该制定出一个软件修改报告,它给出下述信息:(1) 满足维护要求表中提出的要求所需要的工作量; (2) 维护要求的性质; (3) 这项要求的优先次序; (4) 与修改有关的事后数据 在拟定进一步的维护计划之前,把软件修改报告提交变化授权人审查批准 软件维护过程 2022/8/20173. 维护的事件流 软件维护过程 1 2022/8/2018复查试图回答下述问题:在当前处境下设计、编码或测试的哪些方面能用不同方法进行?哪些维护资源是应该有而事实上却没有的?对于这项维护工作什么是主要

11、的(以及次要的)障碍?要求的维护类型中有预防性维护吗?处境复查对将来维护工作的进行有重要影响,而且所提供的反馈信息对有效地管理软件组织十分重要软件维护过程 2022/8/20194. 保存维护记录-哪些数据是值得记录的? Swanson提出了下述内容: (1) 程序标识 (2)自从安装以来程序运行的次数 (3) 机器指令条数 (4) 使用的程序设计语言 (5) 程序安装的日期 (6)自从安装以来程序失效的次数 (7)源语句数 (8) 程序变动的层次和标识 (9) 因程序变动而增加的源语句数 (10) 因程序变动而删除的源语句数 (11) 每个改动耗费的人时数 (12) 程序改动的日期 (13)

12、 软件工程师的名字 (14) 维护要求表的标识 (15) 维护类型 (16) 维护开始和完成的日期 (17) 累计用于维护的人时 (18) 与完成的维护相联系的纯效益l应该为每项维护工作都收集上述数据,构成一个维护数据库软件维护过程 2022/8/20205. 评价维护活动 定量度量维护工作: (1) 每次程序运行平均失效的次数 (2) 用于每一类维护活动的总人时数 (3) 平均每个程序、每种语言、每种维护类型所做的程序变 动数 (4) 维护过程中增加或删除一个源语句平均花费的人时数 (5) 维护每种语言平均花费的人时数 (6) 一张维护要求表的平均周转时间 (7) 不同维护类型所占的百分比软

13、件维护过程 根据对维护工作定量度量的结果,可以做出关于开发技术、语言选择、维护工作量规划、资源分配及其他许多方面的决定,而且可以利用这样的数据去分析评价维护任务2022/8/2021修改软件冒险每当往复杂的软件系统中引进一个变动,发生错误的可能性也就增加一分 副作用在软件维护的范畴中,所谓副作用是指因为修改软件而出现的错误或其他不符合需要的行为 维护的副作用 2022/8/2022三种主要的副作用: 1. 编码的副作用一个逗号错写成句号,复查时又没有发现,使一次阿波罗外层空间飞行的控制软件失效,产生了近乎悲剧性的后果下列一些变动更容易引入故障: (1) 删掉或修改一个子程序; (2) 删掉或修

14、改一个语句标号; (3) 删掉或修改一个标识符; (4) 为改进性能而做的变动; (5) 修改打开和关闭文件的语句; (6) 修改逻辑运算符。 维护的副作用 2022/8/2023维护的副作用 2. 数据的副作用在数据中做下述变动容易产生副作用: (1) 重新定义局部的或全程的常数; (2) 重新定义记录或文件的格式; (3) 增加(或减少)数组或高阶数据结构的长度; (4) 修改全程数据; (5) 重新初始化控制标记或指针; (6) 重新安排输入/输出或子程序的变元。 完善的设计文档能够减少数据的副作用。这种设计文档不仅描述数据结构,而且提供数据与模块之间的交叉参照 2022/8/2024维

15、护的副作用 3. 文档的副作用维护应该针对整个软件配置,不应该只修改源程序代码。当对源程序代码的修改没有反映在设计文档或用户手册中时,就会产生文档的副作用准确反映软件当前状态的设计文档的错误2022/8/2025文档 影响软件可维护性的决定因素 1. 软件文档的组成l 分用户文档和系统文档两类主要描述系统功能和使用方法描述系统设计、实现和测试等各方面的内容2022/8/2026文档 用户文档至少应该包括下述五方面的内容: (1) 功能描述,说明系统能做什么; (2) 安装文档,说明怎样安装这个系统以及怎样使系统适应特定的硬件配置; (3) 使用手册,简要说明如何着手使用这个系统(应该通过丰富例

16、子说明怎样使用常用的系统功能,还应该说明用户操作错误时怎样恢复和重新启动); (4) 参考手册,详尽描述用户可以使用的所有系统设施以及它们的使用方法,还应该解释系统可能产生的各种出错信息的含义(对参考手册最主要的要求是完整,因此通常使用形式化的描述技术); (5) 操作员指南(如果需要有系统操作员的话),说明操作员应该如何处理使用中出现的各种情况。系统文档指从问题定义、要求说明到验收测试计划这样一系列系统实现有关的文档2022/8/2027文档 2. 文档工具使用软件工具开发和维护文档比起手工方式有下述一些优点: (1) 需要的文档可以随时显式在终端上,不需要费力地在手册中查找; (2) 存储在计算机中的文档容易修改和维护,因此保持文档和程序代码完全一致的可能性更大; (

温馨提示

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

最新文档

评论

0/150

提交评论