第8章 软件维护(new)
软件工程导论PPT课件-第8章-维护
![软件工程导论PPT课件-第8章-维护](https://img.taocdn.com/s3/m/3bce6f9a0d22590102020740be1e650e53eacf79.png)
分析评价,修改设计,编写代码等
理解代码功能、解释数据结构、接口特点和性能限度等
8.3 软件维护的特性
8.3.3 软件维护的副作用
-结构化维护
结构化维护是指软件开发过程是按照软件工程方法进 行的、各开发阶段文档齐全的软件的维护过程。
-非结构化维护
非结构化维护是指在只有源程序,缺乏必要的文档说 明,难于确定数据结构、系统接口等特性的情况下,进行 的软件维高昂
明显代价:高昂的维护费用,已上升达80%左右; 无形代价:
的工作环境,或适应已变动的数据或文件; (4)为预防软件系统的失效而对软件系统实施修改。
8.2 软件维护的分类
- 改正性维护
对在测试阶段未能发现的、在软件投入使用后才逐渐暴露出来的 错误的测试、诊断、定位、纠错,以及验证、修改的回归测试过程, 称为改正性维护。
- 完善性维护
为了满足用户在使用过程中对软件提出的新的功能与性能要求, 需要对原来的软件的功能进行修改或扩充。
- 适应性维护
使软件适应外部新的软硬件环境或者数据环境发生的变化, 而进行修改软件的过程。
- 预防性维护
为了提高软件未来的可维护性、可靠性等,或为了给未来 的改进奠定更好的基础而修改软件的过程。
8.2 软件维护的分类 预防性维护 4% 适应性维护 21% 完善性维护 50%
改正性维护 25%
四类维护占总维护的比例
修改软件设计、 复查、必要的代 码修改、单元测 试和集成测试、 验收测试和复审
软件工程课件之第8章维护第6版张海潘编著
![软件工程课件之第8章维护第6版张海潘编著](https://img.taocdn.com/s3/m/ffa645f79f3143323968011ca300a6c30c22f189.png)
用户文档
用户文档至少应该包括下述5方面的内容:
功能描述,说明系统能做什么; 安装文档,说明怎样安装这个系统以及怎样使系统
软件维护过程
维护报告
维护要求表或称软件问题报告表,由申请维 护的用户填写。
软件修改报告,由软件组织内部制定,指明:
满足某个维护要求表中提出的要求所需要的工 作量;
维护要求的性质; 这项要求的优先级; 与修改有关的事后数据;
维护的事件流
维护的事件流
尽管维护申请的类型不同,但都要进行同样 的技术工作:
系统文档
所谓系统文档指从问题定义、需求说明到验收 测试计划这样一系列和系统实现有关的文档。
描述系统设计、实现和测试的文档对于理解程 序和维护程序极端重要
从概貌到每个方面每个特点,从抽象到具体, 有逻辑地介绍系统
可维护性复审
在需求分析阶段的复审过程中,应该对将来要 改进的部分和可能会修改的部分加以注意并指 明;应该讨论软件的可移植性问题,并且考虑 可能影响软件维护的系统界面。
维护的问题
与软件维护有关的绝大多数问题,都可归 因于软件定义和软件开发的方法有缺点:
① 理解别人写的程序通常非常困难,而且困难程 度随着软件配置成分的减少而迅速增加。
② 需要维护的软件往往没有合格的文档,或者文 档资料显著不足。
③ 当要求对软件进行维护时,不能指望由开发人 员给我们仔细说明软件。
的。
软件维护工作量
各类维护工作量 所占比例
维护工作量在软件生 命周期所占比例
软件工第八章软件维护
![软件工第八章软件维护](https://img.taocdn.com/s3/m/32b8ca86284ac850ad0242a2.png)
• 情况复审的目的在于促进未来的维护工作,同时 也为有效管理软件组织提供重要的反馈信息。
软件维护记录的保存
• 有效的保存维护记录是极端重要的。 • 保存维护记录的第一个问题就是那些数据值得保存? – Swanson为我们指出了下述内容:程序标识、源语 句数、机器指令数、使用的程序设计语言、软件安 装的日期、自安装以来软件运行的次数、自安装以 来软件失败的次数、程序变动的层次和标识、因程 序变动而增加的源语句数、因程序变动而删除的源 语句数、每个改动消耗的人时数、程序改动的日期、 软件工程师的名称、维护要求的标识、维护类型、 维护开始和完成的时间、用于维护的累计人时数、 与完成的维护相关联的纯收益。 – 应该为每项维护工作都收集上述数据。可以利用这 些数据构成一个维护数据库。
– – – – 可用的资源被软件维护所占用。 未能及时满足用户的维护要求时引起用户不满。 维护时改动软件,引入了潜在故障,降低了软件质量。 抽调人员从事维护工作,对新的开发过程造成混乱。
– 导致生产率的大幅下降。
软件维护的代价高昂
• 用于维护工作的劳动可以划分成:
– 生产性活动(如,分析评价、修改设计、编写程序 代码等) – 非生产性活动(例如,理解程序代码功能、解释数 据结构、接口特点、性能限度等)
非结构化维护
结构化维护VS非结构化维护
维护要求
结构化维护
y
n
非结构化维护
文件有吗
苦读代码
分析设计 制定计划 修改计划 编码 n n
n
找到问题 y 编码 复审通过 y 交付使用
第8章 软件维护
![第8章 软件维护](https://img.taocdn.com/s3/m/22cd4006eff9aef8941e06ff.png)
系统年龄: – 老系统随着不断的修改,结构越来越乱; – 维护人员经常更换,程序又变得越来越难于理解 – 许多老系统在当初并未按照软件工程的要求进行 开发,因而没有文档,或文档太少。 – 在长期的维护过程中文档在许多地方与程序实现 变得不一致,在维护时就会遇到很大困难。 数据库技术的应用:使用数据库,可以简单而有效 地管理和存储用户程序中的数据,还可以减少生成 用户报表应用软件的维护工作量。
24
8.4
软件的可维护性
许多软件的维护十分困难,原因在于这些软件 的文档不全、质量差、开发过程不注意采用好 的方法,忽视程序设计风格等。 许多维护要求并不是因为程序中出错而提出的, 而是为适应环境变化或需求变化而提出的。 为了使得软件能够易于维护,必须考虑使软件 具有可维护性。 软件可维护性是指纠正软件系统出现的错误和
14
1、维护机构 除了较大的软件开发公司外, 通常在软件维护工作方面,并 不保持一个正式的组织机构。 虽然不要求建立一个正式的维 护机构,但是在开发部门确立 一个非正式的维护机构则是非 常必要的。
15
每个维护要求都通过维护管理员转交给相应的系 统管理员去评价(系统管理员是被指定去熟悉一 小部分产品程序的技术人员)。 系统管理员对维护任务做出评价之后,由变化授 权人决定应该进行的活动。 16
缺陷,以及为满足新的要求进行修改、扩充或 压缩的难易程度。
25
8.4.1 决定软件可维护性的因素
1. 可理解性 2. 可测试性 3. 可修改性 4. 可移植性 5. 可重用性
26
1. 可理解性 软件可理解性表现为外来读者理解软件的结构、 功能、接口和内部处理过程的难易程度。模块化 (模块结构良好,高内聚,松耦合)、详细的设 计文档、结构化设计、程序内部的文档和良好的 高级程序设计语言等等,都对提高软件的可理解 性有重要贡献。 2. 可测试性 诊断和测试的容易程度取决于软件容易理解的程 度。良好的文档对诊断和测试是至关重要的,此 外,软件结构、可用的测试工具和调试工具,以 及以前设计的测试过程也都是非常重要的。维护 人员应该能够得到在开发阶段用过的测试方案, 以便进行回归测试。在设计阶段应该尽力把软件 设计成容易测试和容易诊断的。 对于程序模块来说,可以用程序复杂度来度量它 的可测试性。模块的环形复杂度越大,可执行的 路径就越多,因此,全面测试它的难度就越高。
第8章_软件维护(徐东升)
![第8章_软件维护(徐东升)](https://img.taocdn.com/s3/m/fa0d95ab0029bd64783e2cec.png)
西安文理学院
软件学院
8.2 软件维护的特点 8.2.1 结构化维护与非结构化维护差别巨大
1. 非结构化维护 如果软件配置的惟一成分是程序代码,那么维护 活动从艰苦地评价程序代码开始,对软件结构、数据 结构、系统接口、设计约束等常产生误解,不能进行 回归测试,维护代价大。 非结构化维护需要付出很大代价,这种维护方式 是没有使用良好定义的方法学开发出来的软件的必然 结果。也就是就说在设计时未采用结构化程序设计方 法。
最后,把修改后的软件再次交付使用。
西安文理学院
软件学院
8.2.2 软件维护的代价
1. 有形代价与无形代价
软件维护的代价表现为有形代价和无形代价。 有形代价指软件维护的费用开支。在过去的几十年中,软
件维护的费用稳步上升。
70年代,用于软件维护的费用只占软件总预算的30%~ 40%,80年代上升到60%左右,90年代许多软件项目的维护 经费预算达到了80%。
西安文理学院
软件学院
该模型描述了影响维护的诸多因素中重要的
关系。如果一个系统开发没有遵循软件工程原 则,软件结构不好,c的值就会很高,再加上 维护人员对软件的不熟悉,原来参加开发的人 员或小组不能参加维护,d的值很低。结果是, 维护的工作量和成本将呈指数级增加。
西安文理学院
软件学院
8.2.3 程序修改的步骤及修改的副作用
西安文理学院
软件学院
实际应用中,常常是混合以上几种方法。对 系统不重要的部分采用直接方式,对系统重要部 分采用并行方式,使系统平稳交付使用。
西安文理学院
软件学院
8.1 软件维护的定义
8.1.1 软件维护的基本内容 所谓软件维护就是在软件已经交付使用 之后,为了改正错误或满足新的需要而修改 软件的过程。
软件工程第八章维护
![软件工程第八章维护](https://img.taocdn.com/s3/m/0de7e296a0c7aa00b52acfc789eb172ded6399a3.png)
软件工程第八章维护第一点:软件维护的定义和重要性软件维护是指在软件发布后对其进行的一系列操作和活动,旨在确保软件系统的持续可用性、可靠性和性能。
软件维护是软件开发生命周期中的一个重要环节,它涉及到对软件进行修正、优化和升级。
软件维护的重要性体现在以下几个方面:1.保障软件质量:软件在实际运行过程中可能会出现各种问题,维护可以帮助及时修复这些问题,保证软件的正常运行。
2.提高用户满意度:通过维护,可以对软件进行功能优化和界面调整,使其更加符合用户的需求,提高用户的使用体验。
3.降低风险:软件维护可以帮助提前发现并解决潜在的风险,避免因软件问题导致的损失。
4.延长软件寿命:通过不断的维护和升级,可以使软件适应不断变化的环境和需求,延长其使用寿命。
5.提高开发效率:良好的维护可以避免因软件问题导致的重复开发,提高开发团队的效率。
第二点:软件维护的类型和策略软件维护可以分为以下几种类型:1.改正性维护:这种维护类型主要是针对软件中存在的问题和错误进行修复,保证软件的正常运行。
2.适应性维护:随着环境的变化和用户需求的变化,软件需要进行相应的调整和优化,以适应新的环境和工作需求。
3.完善性维护:这种维护类型主要是针对软件的功能进行增强和扩展,以满足用户的新需求。
4.预防性维护:预防性维护是为了避免软件出现潜在的问题和风险,提前对软件进行调整和优化。
在进行软件维护时,可以采取以下策略:1.计划维护:制定详细的维护计划,包括维护的时间、内容、责任人等,确保维护工作的有序进行。
2.变更管理:对于软件的修改和更新,需要进行严格的变更管理,确保每次变更都是经过审核和评估的。
3.版本控制:通过版本控制工具,对软件的不同版本进行管理,确保软件的每个版本都是可追踪和可恢复的。
4.文档管理:对软件的维护过程和结果进行详细的文档记录,方便对软件进行管理和维护。
5.持续集成:将软件的维护工作与开发工作结合起来,通过持续集成的方式,确保软件的质量和稳定性。
第8章软件维护
![第8章软件维护](https://img.taocdn.com/s3/m/4a17e0fd941ea76e58fa04f6.png)
软件维护步骤
4、修改程序的副作用
副作用是指因修改软件而造成的错误或其它不希望发生的情况。 1)编码副作用:在使用程序设计语言修改源代码时可能引起的错误, 如删除或修改一个标号、标识符、一个子程序,改变程序代码的时序关系, 改变逻辑运算符,改进程序的执行效率,改变程序占用存储的大小等,都 很容易引入错误,应特别小心。 2)数据副作用:在修改数据结构时,有可能造成软件设计和数据结构 的不一致,而导致软件错误。数据副作用是修改软件信息结构引起的,如 重新定义全局或局部常量,重新初始化控制标志或指针等,都容易产生设 计与数据不相容的错误,可通过详细设计文档对数据副作用加以控制。 3)文档副作用:对数据流、软件结构、逻辑模块等进行修改时,必须 对相关技术文档进行修改,否则会导致 文档与程序功能不匹配,使文档不 能反映软件当前的状态。
软件维护步骤
5、重新验证程序:
1)静态确认; 2)计算机确认; 3)维护后的验收。
软件维护步骤
第三步:维护文档整理
记录一些与维护工作有关的数据信息,这些信息 可作为估计软件维护的有效程度,确定软件产品的 质量,确定维护的实际开销等工作的原始数据。
软件维护步骤
第四步:维护活动评价
具体的评价工作可从以下几个方面考虑: (1)每次程序运行时的平均出错次数; (2)花费在每类维护活动上的总的“人时”数; (3)每个程序、每种语言、每种维护类型程序的平均修改次数; (4)维护工作中增加或删除每个源程序语句所花费的平均“人 时”数; (5)用于每种语言的平均“人时”数; (6)维护申请报告的平均处理时间; (7)各类维护申请的百分比。 一方面,可判定此次维护活动开展是否顺利、成功;另一方面, 为今面的维护工作积累经验。
2、结构化维护:进行维护 活动时,首先从评价需求开始,搞清楚 功能、性能上的改变,然后对设计说明文档进行评价、修改和复查; 根据设计的修改,再进行程序的变动;然后根据测试文档中的测试 用例进行回归测试;最后将修改后的软件再次交付使用。
软件工程 第8章 软件维护 ppt
![软件工程 第8章 软件维护 ppt](https://img.taocdn.com/s3/m/2d5ae46a0b1c59eef8c7b485.png)
3. 维护的事件流
图8.2 维护阶段的事件流
4. 保存维护记录 ◆ 哪些数据是值得记录的? Swanson 提出了下述内容: ① 程序标识; ② 源语句数; ③ 机器指令条数; ④ 使用的程序设计语言; ⑤ 程序安装的日期; ⑥ 自从安装以来程序运行的次数; ⑦ 自从安装以来程序失效的次数; ⑧ 程序变动的层次和标识; ⑨ 因程序变动而增加的源语句数; 因程序变动而删除 的源语句数; 每个改动耗费的人时数; 程序改动的 日期; 软件工程师的名字; 维护要求表的标识; 维 护类型; 维护开始和完成的日期; 累计用于维护的 人时数; 与完成的维护相联系的纯效益。
2. 文档重构
◆ 老程序固有的特点是缺乏文档。具体情况不同,处理这
个问题的方法也不同: 1)如果一个程序是相对稳定的,正在走向其有用生命的终 点,而且可能不会再经历什么变化,那么,让它保持现 状。 2)为了便于今后的维护,必须更新文档,不是一下子把某 应用系统的文档全部都重建起来,而是只针对系统中当 前正在修改的那些部分建立完整文档。随着时间流逝, 将得到一组有用的和相关的文档。 3)如果某应用系统是完成业务工作的关键,而且必须重构 全部文档,则仍然应该设法把文档工作减少到必需的最 小量。
5. 评价维护活动 ◆根据保存的维护记录,至少可以从下述7个方面 度量维护工作:
(1) 每次程序运行平均失效的次数; (2) 用于每一类维护活动的总人时数; (3) 平均每个程序、每种语言、每种维护类型所做的程序 变动数; (4) 维护过程中增加或删除一个源语句平均花费的人时数; (5) 维护每种语言平均花费的人时数; (6) 一张维护要求表的平均周转时间; (7) 不同维护类型所占的百分比。
5. 数据重构 ◆ 与代码重构不同,数据重构发生在相当低的抽象 层次上,它是一种全范围的再工程活动。 ◆ 在大多数情况下,数据重构始于逆向工程活动, 分解当前使用的数据体系结构,必要时定义数据 模型,标识数据对象和属性,并从软件质量的角 度复审现存的数据结构。 ◆ 当数据结构较差时,应该对数据进行再工程。 ◆ 由于数据体系结构对程序体系结构及程序中的算 法有很大影响,对数据的修改必然会导致体系结 构或代码层的改变。
第8章软件维护
![第8章软件维护](https://img.taocdn.com/s3/m/baa2578c011ca300a7c39070.png)
8Байду номын сангаас3 软件维护过程
一般过程:建立一个维护组织;提供维护报告(用户);制定软件修 改报告(维护组织);标准化维护工作流程(事件序列)控制;收集 与保存维护活动记录;评价复审维护等。
1. 维护组织 通常,软件维护并不需要维持一个正式的组织机构,但委托一个非专门的 维护管理员负责维护是绝对必要的。每个维护要求都通过维护管理员转交 给相应的系统管理员去评价。系统管理员是被指定去熟悉一小部分产品程 序的技术人员。系统管理员对维护任务做出评价之后,由变化授权人决定 应该进行的活动。下图是一种典型的维护组织方式。
维护工作必须进行的技术工作:包括修改软件设计、复查、必要的代码修改、单 元测试与集成测试、回归测试、验收测试与复审。
图8.2 维护阶段的事件流
在完成软件维护任务之后,需要对本次维护工作进行评审,试图回答下 述问题: 在当前处境下设计、编码或测试的哪些方面能用不同方法进行? 哪些维护资源是应该有而事实上却没有的? 对于这项维护工作什么是主要的(以及次要的)障碍? 要求的维护类型中有预防性维护吗? 维护工作(处境复查)评审对将来维护工作的进行有重要影响,而且所 提供的反馈信息对有效地管理软件组织十分重要。
维护综述:在软件产品被开发出来并交付用户使用之后,就进入了软 件的运行维护阶段。这个阶段是软件生命周期的最后一个阶段,其基 本任务是保证软件在一个相当长的时期能够正常运行。
软件维护需要的工作量很大,平均说来,大型软件的维护成本高达开 发成本的4倍左右。目前国外许多软件开发组织把60%以上的人力用于 维护已有的软件,而且随着软件数量增多与使用寿命延长,这个百分 比还在持续上升。将来维护工作甚至可能会束缚住软件开发组织的手 脚,使他们没有余力开发新的软件。
i第8章 软件维护
![i第8章 软件维护](https://img.taocdn.com/s3/m/f89b9603a5e9856a561260cc.png)
得客户不满意; 变更的结果引入新的故障,使得软件整体质量 下降; 把软件人员抽调到维护工作中,干扰了软件开 发工作。
8.3 软件维护任务的实施
为了有效地进行软件维护,应事先就开始做组织 工作。
首先建立维护的组织 申明提出维护申请报告的过程及评价的过程 为每一个维护申请规定标准的处理步骤 建立维护活动的登记制度以及规定评价和评审
3.完善性维护
ቤተ መጻሕፍቲ ባይዱ
在软件的使用过程中,用户往往会对软件提出 新的功能与性能要求。 为了满足这些要求,需要修改或再开发软件, 以扩充软件功能、增强软件性能、改进加工效 率、提高软件的可维护性。 这种情况下进行的维护活动叫做完善性维护。 例如,完善性维护可能是修改一个计算工资的 程序,使其增加新的扣除项目;缩短系统的应 答时间,使其达到特定的要求等。
三类维护占 总维护比例
维护在软件生存期 所占比例
8.2 维护的特点
8.2.1 非结构化维护和结构化维护 1. 非结构化维护 只有源程序,没有文档,维护活动只能从阅读、理 解分析源程序开始,来了解系统功能、软件结构、 数据结构、系统接口、设计约束等。
维护工作非常困难,要花费大量的人力、物力,最 终对源程序修改的后果是难以估量的。
8.2.2 维护的困难性 1. 读懂别人的程序是困难的 修改别人的程序不如自己重新编写程序 2. 文档的不一致性 各种文档之间不一致 文档与程序之间不一致 主要是开发过程中文档管理不严造成: 修改程序忘了修改与其相关的文档 某一文档改了,没有修改与其相关的另一文档
3. 软件开发和软件维护在人员和时间上的差异 软件维护工作由软件开发人员来进行,维护工作就 变得容易 通常开发人员和维护人员不同,导致维护的困难。 维护阶段持续时间很长,正在运行的软件可能是十 几、二十几年前开发的,开发工具、方法、技术与 当前的工具、方法、技术差异很大,导致维护困难。 3. 软件维护不是一项吸引人的工作。
软件工程第8章软件维护
![软件工程第8章软件维护](https://img.taocdn.com/s3/m/b039680876232f60ddccda38376baf1ffc4fe3fb.png)
8.1 软件维护的种类
1. 校正性维护(Corrective maintenance) 为了识别和纠正软件错误、改正软件性能上的缺陷、排
除实施中的误使用,应当进行的诊断和改正错误的过 程,就叫做校正性维护。
8.1 软件维护的种类
2. 适应性维护(Adaptive maintenance)
随着计算机的飞速发展,外部环境(新的硬、软件配置)或数据环 境(数据库、数据格式、数据输入/输出方式、数据存储介质)可 能发生变化,为了使软件适应这种变化,而去修改软件的过程就 叫做适应性维护。
8.4.1 影响可维护性的因素
除了与开发方法有关的因素之外,以下因素会对可维 护性有重要影响:
(1)软件设计人员是否受到严格的规范化工作培训; (2)是否采用主流的编程语言; (3)是否采用主流的操作系统; (4)是否采用标准化的文档资料结构和文档形成机制; (5)是否保存规范化的测试资料。
8.4.2 软件可维护性的度量
8.3 软件维护的实施
为了有效地进行软件维护,应事先就开始做组织工作。 首先需要建立维护的机构,申明提出维护申请报告的 过程及评价的过程;为每一个维护申请规定标准的处 理步骤;还必须建立维护活动的登记制度以及规定评 价和评审的标准。
8.3.2 软件维护申请报告
软件维护申请应按规定的方式提出。软件维护组织通 常提供维护申请报告(MRR, Maintenance Request Report),或称软件问题报告,由申请维护的用户填写。
8.1 软件维护的种类
完善性维护 50%
预防性维护5%
改正性维护 20%
适应性维护 25%
图11.1 各类维护的比重
8.2 软件维护的特点
8.2.1 软件维护面临的困难 统计资料表明,有代表性的软件开发组织用于校正性
第八章 软件维护
![第八章 软件维护](https://img.taocdn.com/s3/m/fbb7561c866fb84ae45c8dcb.png)
软件维护的机构10软件维 的事件流1112
软件维护工作流程
必要的技术工作 修改软件需求说明 修改软件设计 设计评审 对源程序做必要修改 单元测试 集成测试(回归测试) 确认测试 软件配置评审等。
13
8 .4 软件的可维护性
衡量软件质量的几个主要质量特性: 可维护性 可使用性 可靠性 一、软件可维护性的定义 指纠正软件系统出现的错误和缺陷,以及为 满足新的要求进行修改、扩充或压缩的容 易程度。
22
进行明确的质量保证审查
检查点复审、验收检查、周期性地维护审查、 对软件包进行检查。
选择可维护的程序设计语言 改进程序的文档 开发软件时考虑到维护
23
相关习题 1.某些软件工程师不同意“目前国外许多 软件开发组织把60%以上的人力用于维护已 有的软件”的说法,他们争论说:“我并没 有花费我的60%的时间去改正我所开发的程 序中的错误”。 请问,你对上述争论有何看法? 2.为什么大型软件的维护成本高达开发成 本的4倍左右?
7
8.2.3 维护的问题很多 ( 1 )理解别人写的程序通常非常困难. ( 2 )需要维护的软件无文档或不全. ( 3 )软件人员流动性大. ( 4 )设计时未考虑将来修改需要,修改困难. ( 5 )维护工作无吸引力,缺乏成就感.
8
8. 3 软件维护过程
首先建立维护组织,确定报告和评价过程, 为每个维护要求规定一个标准化的事件序 列,并记录维护活动和规定复审标准。 一、维护组识 所有软件维护申请应按规定的方式提出 维护机构通常提供“维护申请报告”或称 “软件问题报告”由申请维护的用户填写。 维护机构内部要写“软件修改报告”
26
4.假设你的任务是对一个已有的软件做重 大修改,而且只允许你从下述文档中选取两 份:(a)程序的规格说明;(b)程序的详细设 计结果(自然语言描述加上某种设计工具表 示);(c)源程序清单(其中有适当数量的注 解)。 你将选取哪两份文档?为什么这样选取?
第8章 软件维护
![第8章 软件维护](https://img.taocdn.com/s3/m/c3eaeaf9ba0d4a7302763a16.png)
08 软件维护一、选择题(1)一般来说,在软件生命周期中成本最高的阶段是( D )。
A.详细设计B.软件编码C.软件测试D.软件维护(2)为软件的运行增加监控设施以应对将来可能出现的问题,这种维护的维护类型是( D )。
A.改正性维护 B.适应性维护 C.完善性维护 D.预防性维护(3)在整个软件维护阶段所花费的全部工作中,哪种维护所占比例最大?( C )A.改正性维护 B.适应性维护 C.完善性维护 D.预防性维护(4)产生软件维护的副作用,是指 ( C )A.开发时的错误 B.隐含的错误C.因修改软件而造成了新的错误 D.运行时误操作(5)维护的副作用可分三类,不包括(D )。
A. 代码副作用B. 数据副作用C. 文档副作用D.人员副作用(6)下列属于维护阶段的文档是 ( C )。
A.软件规格说明B.用户操作手册C.软件问题报告D.软件测试分析报告(7)维护活动必须应用于( B )A.软件文档 B.整个软件配置 C.可执行代码 D.数据(8)为了提高软件的可维护性,在编码阶段应注意( D )。
A.保存测试用例和数据B.提高模块的独立性C.文档的副作用D.养成好的程序设计风格(9)为了提高软件的可维护性,在总体设计阶段应注意( B )。
A.保存测试用例和数据B.提高模块的独立性C.文档的副作用D.养成好的程序设计风格(10)以下哪些问题是维护人员经常面对的问题?( D )。
A.理解别人的程序非常困难 B.文档不合格C.设计时没考虑未来的修改维护 D.以上都是(11)决定软件可维护性的因素包括( B )。
A.可理解性,可测试性,可修改性,可移植性,可用性B.可理解性,可测试性,可修改性,可移植性,可重用性C.可理解性,可靠性,可测试性,可修改性,可移植性D.可理解性,可扩展性,可测试性,可修改性,可升级性(12)软件维护是保证软件正常、有效的重要手段,软件的下述特性中,( D )有利软件的维护。
《软件工程实用教程》第8_章_软件维护技术
![《软件工程实用教程》第8_章_软件维护技术](https://img.taocdn.com/s3/m/1a46c06358fafab069dc0260.png)
第8 章 軟體維Βιβλιοθήκη 技術8.2 軟體維護類型8.2.1 改正性維護 1. 利用應用軟體包,可開發出比由用戶完全 自己開發的系統可靠性更高的軟體。 2. 結構化技術,用它開發的軟體易於理解和 測試。 3. 防錯性程式設計。把自檢能力引入程式, 通過非正常狀態的檢查,提供審查跟蹤。 4. 通過週期性維護審查,在形成維護問題之 前就可確定品質缺陷。可理解性
第8 章 軟體維護技術
8.2.2 完善性維護 為了滿足日益增長的新要求,需要修改或再 開發軟體,以擴充軟體功能,增強軟體性能, 改進加工效率,提高軟體的可維護性,這些 維護活動稱為完善性維護。 8.2.3 適應性維護 為了使軟體適應新的變化而去修改軟體的維 護活動稱為適應性維護。 8.2.4 預防性維護 為以後進一步使用軟體打下良好基礎的維護 活動稱為預防性維護活動。
第8 章 軟體維護技術
8.4.2 軟體維護的副作用 1.修改代碼的副作用 2.修改數據的副作用 3.修改文檔的副作用
(1)確認維護類型 (2)實施維護 (3)維護評審
第8 章 軟體維護技術
4.整理軟體維護文檔 程式名稱; 使用的程式設計語言; 根源程式語句條數,機器代碼指令條數; 程式安裝的日期; 程式安裝後的運行次數; 與程式安裝後運行次數有關的處理故障次數; 程式改變的層次,名稱和日期; 修改程式所增加的根源程式語句條數; 修改程式所減少的根源程式語句條數;
第8 章 軟體維護技術
8.3 軟體維護技術
8.3.1 軟體維護過程 1.建立維護機構
第8 章 軟體維護技術
2.編寫軟體維護申請報告 軟體變更報告包括的內容: 所需修改變動的性質; 申請修改的優先順序; 為滿足該維護申請報告,所需的工作量(人 員數,時間數); 預計修改後的結果。 3.確定軟體維護工作流程
第八章软件维护
![第八章软件维护](https://img.taocdn.com/s3/m/7f0d97af534de518964bcf84b9d528ea80c72f74.png)
软件项目的规模越大,所需要
的管理支持工作量越大。统计资料
表明在软件项目的规模达到一定程
工 作
度时,所需的软件管理工作量将达 量
到总工作量的一半。如图所示:
软件项目的规模,决定了采用怎样 的管理水平、开发工具和开发方法。
技术工作
100% 50%
管理工作 软件规模
12
9.1 软件项目特点和管理的职能(2)
件的工程化生产。最终目标是以合理的费用和进度,圆满完成计划
所规定的软件项目。
15
9.2 成本估算(1)
一.成本估算的方法自顶 向下 估计
首先估算出项目总的开发成本,然后在 一般对开发中的某些局部问题 项目内部进行成本分配。由少数专家参与, 或特殊困难容易低估,甚至没有 依靠他们过去的经验,将要开发的软件与 考虑到。如果所开发的软件缺乏 过去开发过的软件进行“类比”,以估计 可以借鉴的经验,在估计时就可 新的软件开发所需要的工作量和成本。 能出现较大的误差。
14
9.1 软件项目特点和管理的职能(4)
三.软件管理的职能
1.管理的目的:按照工程预定的时间和费用,成功地完成软件的计划、开
发和维护任务。管理贯穿整个软件生存周期。
2.管理的内容
(1)费用管理:对软件开发进行成本核算,使软件生产按照商品生产的规
律办事。包括:以简单、科学方法估算软件开发费用,作为签定开发
利用任务分解技术例子
任务
需求分析 设计 编码与 单元测试
人力 (人月)
5.0 15.0
8.0
$/人 月
3400 3200 2650
综合测试 16.5 2900 总 计 44.5
3.算法模型(略)
成本($)
第8章软件维护
![第8章软件维护](https://img.taocdn.com/s3/m/642f35718762caaedc33d49a.png)
第二页,编辑于星期二:二十点 三十六分。
第三页,编辑于星期二:二十点 三十六分。
第四页,编辑于星期二:二十点 三十六分。
第五页,编辑于星期二:二十点 三十六分。
第六页,编辑于星期二:二十点 三十六分。
第七页,编辑于星期二:二十点 三十六分。
第八页,编辑于星期二:二十点 三十六分。
第三十页,编辑于星期二:二十点 三十六分。
第三十一页,编辑于星期二:二十点 三十六分。
第三十二页,编辑于星期二:二十点 三十六分。
第三十三页,编辑于星期二:二十点 三十六分。
第三十四页,编辑于星期二:二十点 三十六分。
第三十五页,编辑于星期二:二十点 三十六分。
第三十六页,编辑于星期二:二十点 三十六分。
第四十四页,编辑于星期二:二十点 三十六分。
第四十五页,编辑于星期二:二十点 三十六分。
第四十六页,编辑于星期二:二十点 三十六分。
第九页,编辑于星期二:二十点 三十六分。
第十页,编辑于星期二:二十点 三十六分。
第十一页,编辑于星期二:二十点 三十六分。
第十二页,编辑于星期二:二十点 三十六分。
第十三页,编辑于星期二:二十点 三十六分。
第十四页,编辑于星期二:二十点 三十六分。
第十五页,编辑于星期二:二十点 三十六分。
第三十七页,编辑于星期二:二十点 三十六分。
第三十八页,编辑于星期二:二十点 三十六分。
第三十九页,编辑于星期二:二十点 三十六分。
第四十页,编辑于星期二:二十点 三十编辑于星期二:二十点 三十六分。
第四十三页,编辑于星期二:二十点 三十六分。
第十六页,编辑于星期二:二十点 三十六分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件维护的过程-维护过程
对于非纠错性维护,则首先判断维护类型,对适 应性维护,按照评估后得到的优先级放入队列 对于改善性维护,则还要考虑是否采取行动,如 果接受申请,则同样按照评估后得到的优先级放 入队列,如果拒绝申请,则通知请求者,并说明 原因 对于工作安排队列中的任务,由修改负责人依次 从队列中取出任务,按照软件工程方法学规划、 组织、实施工程。
说明性文档不可缺少!
•别人的程序很难读懂 •文档与代码不一致 •开发人员往往不参加维护 •大多数软件在设计时没有考虑将来的修改
软件维护策略
1. 降低改正性维护成本的策略 显然,软件中包含的错误越少,改正性维护的 成本也就越低,但是,要生成100%可靠的软件通常 成本太高,并不一定合算。然而通过使用先进技术 仍然可以大大提高软件的可靠性,从而减少改正性 维护的需求。这些技术包括:数据库管理系统、软 件开发环境、程序自动生成系统、较高级(第四代) 的语言。以及新的开发方法、软件复用、防错程序 设计及周期性维护审查等
4.可维护性的度量
⑸ 可移植性(Portability) 是指程序被移到一个新环境的容易程度。 好程序的特征:结构好,不特别依赖于某一具体 的计算机或操作系统。 ⑹ 可使用性 用户观点出发,可使用性定义为程序方便、实 用、及易于使用的程度。一个可使用的程序应是 易于使用的、能允许用户出错和改变,并尽可能 不使用户陷入混乱状态的程序。
各种维护类型和维护工作量的比例
改正性 适应性 维 护 维护17% 18-25% -21%
其它 维护 4%
维护占 70.8%
完善性维护 50%-66%
一般维护的工作量占生存周期70%以上,维护成本约为开 发成本的4倍(80 - 20 Rule); 改正性维护占全部维护工作量的比率已大幅度下降
3、维护的问题
4.可维护性的度量
—— 软件度量学(Software Measurement)
软件可维护性可定性地定义为:维护人员理 解、改正、改动和改进这个软件的难易程度。 1、用于衡量可维护性的软件特性(7种): 可理解性、可使用性、可测试性、可移植性、可 修改性、效率、可靠性 2、对于不同类型的维护,这七种特性的侧重点 也不相同。
(3)使用内部程序列表、外部文件及例行处理程序 包,可以为维护时修改程序提供方便。
软件维护策略
3. 降低完善性维护成本的策略 上述的减少前两类维护成本的策略,通常也能降 低完善性维护的成本。特别是数据库管理系统、程序 自动生成系统、软件开发环境、第四代语言和应用软 件包,可明显减少维护工作量。 此外,在需求分析过程中准确地预测用户将来可 能提出的需求,并且在设计时为将来可能提出的需求 预先做准备,显然是降低完善性维护成本的有力措施 。 在实际开发软件之前,建立软件的原型并让用户 试用,以进一步完善他们对软件的功能需求,也能显 著减少软件交付使用之后的完善性维护需求。
问题说明:(数据输入、错误 现象)不同类型的人员可以进行交 叉测评。 维护安排 按需求:各类人员只进行自身 类型的测评,如管理人员只能对管 理人员进行测评,教师只能测评教 维护类型 师。
维护要求及优先级: 维护时间 在测评之前必须修正,否则会造成 测评结果的不准确
环境
申请人:****** 申请评价结果:修正错误
软件的缺陷需要修复 软件在使用过程中,新的需求不断出现 商业环境在不断地变化 计算机软件、硬件环境升级,需要更新现有系统 软件的性能和可靠性需要改进
编程大师曾说过:“哪怕程序只 有三行长,总有一天你也不得不 对它进行维护。”
软件演化的处理策略
软件维护
—为了修改软件缺陷或增加新的功能而对软件的 组件进行变更 —不对软件的体系结构做重大改变
软件维护的概念-维护成本
维护工作量的模型
cd
M p Ke M:维护的总工作量 ; P:生产性工作量; K:经验常数; c:复杂程度; d:维护人员对软件的熟悉程度 上述模型表明,如果软件开发没有运用软件工程 方法学,而且原来的开发人员未能够参与到维护工 作之中,则维护工作量和费用将指数增加。
2、维护报告
维护人员对程序进行修改前要着重做好两个记录 维护申请报告 软件修改报告
⑴ 维护申请报告(Maintenance Request Form) 由用户填写的外部文件,对于改正性维护提供错误 情况说明(输入数据,错误清单等),或对适应性 或完善性维护提供修改需求说明书等。 一个维护申请被核准后,维护请求表就成为外 部文档,视作规划本次维护任务的依据。
n 资源用于开发新的软件。
3.维护过程
本质上是修改和压缩了的软件定义和开发过程。
1、建立维护组织(maintenance team):
在维护活动开始之前就明确维护责任是十分必要
的,这样可以大大减少维护过程中可能出现的混乱。
变 化 授 权 人
任务评价
要 求 维 护
任务评价 客户要求
维护管理员
系 统 管 理 员
维护请求 其他 适应性 类型 完善性
类型
改正性 非常严重
严重性
并不严重
软 件 维 护 的 工 作 流
评估后按优先 级在队列排队 拒绝
评估后分类
采取的行动
“救火行动”,当 排在队列之首 接受
评估后按优先 级在队列排队
通知请求者 并说明原因
按优先级在 队列中排队
从维护请求队列之首取出一任务 按SE方法学规划、组织、实施工程 队列中还有维护请求吗? y
√ 批准 评价负责人:***
⑵ 软件修改报告
与维护申请报告相应的内部文件,要求说明: ①所需修改变动的性质; ②申请修改的优先级; ③为满足某个维护申请报告,所需的工作量; ④预计修改后的状况。
软件修改报告(SCR)
软件名称
源程序名称 备份程序名称
相关文档列表
维护描述: 日期 修改内容 修改原因 特别说明
完善性维护(Perfective Maintenance)
扩充原有系统的功能,提高原有系统的性能,或 满足用户的实际需要。 例如: 在储蓄系统交付银行使用之后,增加扣除利息税 的功能; 缩短系统的响应时间,使之达到新的要求; 改变现有程序输出数据的格式,以方便用户; 在正在运行的软件中增加联机求助功能等,都是 完善性维护。
软件维护的分类
适应性维护(Adaptive Maintenance) 要使运行的软件能适应运行环境的变动而修改软 件的过程。 外部环境(新的硬、软件配臵) 数据环境(数据库、数据格式、数据输入/输出 方式、数据存储介质)
预防性维护(Preventive Maintenance ) 为了进一步改善软件的可靠性和易维护性,或 者为将来的维护奠定更好的基础而对软件进行修改。
软件维护请求报告
项目名称 网络测评系统
项目编号
预计维护的结果: 修正程序中的人员权限,使得每种类 型的人员只能进行自身类型的测评。 远程维护 √ 现场维护 软件: 纠错维护 √ 适应维护 完善维护 硬件: 系统设备 外部设备 自 ****年**月**日 至 *****年**月**日 共计 0.5 人月 拒绝
无论是哪一种类型的维护,都要进行以下工作: (1)修改软件设计; (2)设计复审; (3)对源代码的必要修改; (4)单元测试; (5)集成测试,包括回归测试; (6)验收测试; (7)软件配臵复审。
维护总结
在每次软件维护任务完成后进行情况评审,对以 下问题做一总结: (1) 在目前情况下,设计、编码、测试中的哪一 方面可以改进? (2) 哪些维护资源应该有但没有? (3) 工作中主要的或次要的障碍是什么? (4) 从维护申请的类型来看是否应当有预防性维 护? 情况评审对将来的维护工作如何进行会产生重要 的影响。
应该为每项维护工作都收集上述数据。可以利用这 些数据构成一个维护数据库。
软件维护记录
记录编号:eval_wh_012 计划编号:eval_wh_012 日期:****年**月**日 项目名称:网络测评系统 初始状态描述:不同类型的人员可以进行交叉测评。按需求:各类人员只进行自身 类型的测测评,如管理人员只能对管理人员进行测评,教师只能测评教师。 模块名称:测评控制管理 源程序行数:210 编程语言:PHP 失效次数:3 日期 **月**日 维护内容 查错,确定错误位臵 编号:evalobject_01 机器指令长度:25Kb 程序安装日期:****年**月**日 程序运行时间: 增/删/改 修改部分源程序 工作量 0.2个人月 维护人员 ****
增加代码行数 注释修改 修改开始日期
删除代码行数 相关文档修改 修改完成日期
修改代码行数
维护人
软件维护记录的保存
有效的保存维护记录是极端重要的。 保存维护记录的第一个问题就是那些数据值得保存?
程序标识、源语句数、机器指令数、使用的程序设 计语言、软件安装的日期、自安装以来软件运行的次 数、自安装以来软件失败的次数、程序变动的层次和 标识、因程序变动而增加的源语句数、因程序变动而 删除的源语句数、每个改动消耗的人时数、程序改动 的日期、软件工程师的名称、维护要求的标识、维护 类型、维护开始和完成的时间、用于维护的累计人时 数、与完成的维护相关联的纯收益。
软件再工程方法
—为了避免软件退化而对软件的一部分、甚至全 部重新设计、编码和测试,提高软件的可维护性、 可靠性等
软件维护的分类
纠错性维护(Corrective Maintenance ) 对在测试阶段未能发现的,在软件投入使用 所逐渐暴露出来的错误的测试、诊断、定位、纠错 以及验证、修改的回归测试过程。
第8章 软件维护
1
教学目标
理解:软件维护的基本概念 了解:软件维护过程 理解:软件可维护性、逆向工程和再生工程