软件工程教案--第八章 维护XXXX
软件工程 第8章:维护

(2)并行方式
关系重大的软件一般采用同时运行新系统和 旧系统,这就是并行方式。
优点: 旧系统
① 能对系统进行全面测试,减少了新系统风险; ② 给用户熟悉新系统的时间。
缺点:
新系统 双系统要投入更多的人力财力。
工学二部计算机教研室
(3)逐步方式
分期,分部分地交付使用 克服了上面两种方式的缺点,既能防止直接转换 产生的危险性,又能减少并行方式的费用 必须考虑好新旧系统的配合问题和接口问题
工学二部计算机教研室在没有使用就解决一个 重要问题时的样子工学二部计算机教研室
向服务器上传文件时的样子
工学二部计算机教研室
当你发现上周五还非常好用, 到了周一却不能运行时的样子
工学二部计算机教研室
当所有人都在办公室挥汗如雨的加班 而你却能安然的回家度周末时的样子
工学二部计算机教研室
当听到老板说项目如果能如期完工 将会有一笔奖金时的样子
工学二部计算机教研室
文档 重构
代码 重构
逆向 工程
六、软件再工程过程
正向 工程 数据 重构 库存 目录 分析
恢复设计结果的过
文档 重构
程,从程序代码中
抽取数据结构、体
代码 重构
逆向 工程
系结构和处理过程
的设计信息。
工学二部计算机教研室
六、软件再工程过程
正向 工程 数据 分析源代码,标注 重构 库存 目录 分析
工学二部计算机教研室
(3)可修改性
与设计时采用的原则和策略相关。(耦合、内聚、
控制域和作用域、局部化程度)
(4)可移植性
(5)可重用性 决定软件可维护性的最终因素是软件设计阶段所采用
软件工程第八章(维护)

8.1.1 软件维护定义 所谓软件维护就是在软件已经交付使用之后,为 了改正错误或满足新的需要而修改软件的过程。 软件维护包括下述4项活动。
诊断和改正错误的过程:改正性维护 为了和变化了的环境适当地配合而进行的修改软件的 活动:适应性维护 为了满足在使用软件的过程中用户的建议和改进意见 而作的维护:完善性维护 为了给未来的改进奠定更好的基础而修改软件:预防 性维护
8.2 维护的特点
一.结构化维护与非结构化维护的差别巨大 1.非结构化维护 如果软件配臵的唯一成分是程序代码,那 么维护活动从艰苦地评价程序代码开始,而且 常常由于程序内部文档不足而使评价更困难。 而且对程序代码所做的改动的后果是难于估量 的:因为没有测试方面的文档,所以不可能进 行回归测试。 非结构化维护付出代价高昂。
(4)与修改有关的事后数据。
在拟定进一步的维护计划之前,把软件修改报 告提交给变化授权人审查批准。
8.3 软件维护过程
3. 维护的事件流
8.3 软件维护过程
4.
保存维护记录
应该为每项维护工作都收集下述数据:
(2)源语句数; (4)使用的程序设计语言; (6)自从安装以来程序运行的次数;
(1)程序标识; (3)机器指令条数; (5)程序安装的日期;
8.2 维护的特点
2.结构化维护 如果有一个完整的软件配臵存在,那么维护工 作从评价设计文档开始,确定软件重要的结构特 点、性能特点以及接口特点;估量要求的改动将 带来的影响,并且计划实施途径。然后首先修改 设计并且对所做的修改进行仔细复查。接下来编 写相应的源程序代码;使用在测试说明书中包含 的信息进行回归测试;最后,把修改后的软件再 次交付使用。
关于可靠性,度量的标准主要有:
软件工程第八章维护

软件工程第八章维护第一点:软件维护的定义和重要性软件维护是指在软件发布后对其进行的一系列操作和活动,旨在确保软件系统的持续可用性、可靠性和性能。
软件维护是软件开发生命周期中的一个重要环节,它涉及到对软件进行修正、优化和升级。
软件维护的重要性体现在以下几个方面:1.保障软件质量:软件在实际运行过程中可能会出现各种问题,维护可以帮助及时修复这些问题,保证软件的正常运行。
2.提高用户满意度:通过维护,可以对软件进行功能优化和界面调整,使其更加符合用户的需求,提高用户的使用体验。
3.降低风险:软件维护可以帮助提前发现并解决潜在的风险,避免因软件问题导致的损失。
4.延长软件寿命:通过不断的维护和升级,可以使软件适应不断变化的环境和需求,延长其使用寿命。
5.提高开发效率:良好的维护可以避免因软件问题导致的重复开发,提高开发团队的效率。
第二点:软件维护的类型和策略软件维护可以分为以下几种类型:1.改正性维护:这种维护类型主要是针对软件中存在的问题和错误进行修复,保证软件的正常运行。
2.适应性维护:随着环境的变化和用户需求的变化,软件需要进行相应的调整和优化,以适应新的环境和工作需求。
3.完善性维护:这种维护类型主要是针对软件的功能进行增强和扩展,以满足用户的新需求。
4.预防性维护:预防性维护是为了避免软件出现潜在的问题和风险,提前对软件进行调整和优化。
在进行软件维护时,可以采取以下策略:1.计划维护:制定详细的维护计划,包括维护的时间、内容、责任人等,确保维护工作的有序进行。
2.变更管理:对于软件的修改和更新,需要进行严格的变更管理,确保每次变更都是经过审核和评估的。
3.版本控制:通过版本控制工具,对软件的不同版本进行管理,确保软件的每个版本都是可追踪和可恢复的。
4.文档管理:对软件的维护过程和结果进行详细的文档记录,方便对软件进行管理和维护。
5.持续集成:将软件的维护工作与开发工作结合起来,通过持续集成的方式,确保软件的质量和稳定性。
软件工程第8章维护—总结

软件工程第8章维护—总结第一篇:软件工程第8章维护—总结第8章维护周四上午2#211的34节,下午在1#202的78节在软件产品被开发出来并交付用户使用之后,就进入了软件的运行维护阶段。
这个阶段是软件生命周期的最后一个阶段。
大型软件的维护成本高达开发成本的4倍左右。
8.1软件维护的定义在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
四项活动:改正性维护,适应性维护,完善性维护(一半以上),预防性维护。
8.2软件维护的特点8.2.1结构化维护与非结构化维护差别巨大1.非结构化维护2.结构化维护8.2.2维护的代价高昂维护工作量的一个模型:M=P+K*exp(c-d)M是维护用的总工作量,P是生产性工作量,K是经验系数,c是复杂程度(非结构化设计和缺少文档都会增加软件的复杂程度),d 是维护人员对软件的熟悉程度。
8.2.3维护的问题很多1.2.3.4.5.理解别人写的程序通常非常困难;没有文档或文档资料显著不足;不能指望开发人员详细说明软件;设计时未考虑将来的修改;维护不是一项吸引人的工作。
8.3软件维护过程1.维护组织未必建立正式的维护组织,但是非正式的委托责任是绝对必要的。
在维护活动开始之前就明确维护责任是十分必要的,可以大大减少维护过程中可能出现的混乱。
2.维护报告即软件修改报告。
3.维护的事件流4.保存维护记录5.评价维护活动8.4软件的可维护性定义:维护人员理解、改正、改动或改进这个软件的难易程度。
8.4.1决定软件可维护性的因素1.可理解性定义:外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。
2.可测试性可以用程序复杂度来度量它的可测试性。
3.可修改性耦合、内聚、信息隐藏、局部化、控制域与作用域的关系等,都影响软件的可修改性。
4.可移植性定义:把程序从一种计算环境(硬件配置和操作系统)转移到另一种计算环境的难易程度。
5.可重用性定义:同一事物不做修改或稍加改动就在不同环境中多次重复使用。
软件工程ch8 软件维护

2 可维护性的度量 续) 可维护性的度量(续
可修改性 程序修改的难易程度。
修改练习, 计算修改的难度
可移植性 程序转移到一个新的计算机环境的 可能性的大小。
可使用性 程序方便、实用及易于使用的程度。
效率
一个程序能执行预定功能而又不浪费 及其资源的程度。
26
三、提高可维护性的方法
1 建立明确的质量目标和优先级 2 使用提高软件质量的技术和工具 3 进行明确的质量保证审查 1)在检查点进行检查 2)验收检查 3)周期性的维护审查 4 选择可维护的程序设计语言 5 改进程序的文档
22
改正性维护 可理解性
适应性维护
完善性维护
○
可测试性 可修改性 可靠性 可移植性 可使用性 效率
○ ○ ○
○
○ ○
○ ○
在各类维护中的侧重点
23
二、可维护性的度量
软件可维护性较难定量度量,在这方面的研究 —软件度量 学。 1 常用的软件可维护性度量方法有: 质量检查表 质量测试 质量标准
24
2 可维护性的度量
19
二、修改程序的副作用
副作用
是指因修改软件而造成的错误或其它 不希望发生的情况。 种副作用: 有3种副作用: 种副作用 1 修改代码的副作用 2 修改数据的副作用 3 文档的副作用
20
三、控制因修改引起的副作用
按模块把修改分组。 自顶向下地安排被修改模块的顺序。 每次只修改一个模块。 对于每一个修改了的模块,在安排修改下一个 模块之前,确定这个修改的副作用。
21
§8.4 软件可维护性
一、软件可维护性的定义
软件可维护性是指纠正软件系统出现的错误和缺 陷,以及为满足新的要求进行修改、扩充或压缩的 容易程度。 提高可维护性是支配软件工程方法学所有步骤的 关键目标。 衡量软件可维护性的7个特性: 衡量软件可维护性的7个特性: 可理解性、可测试性、可修改性、可靠性 可移植性、可使用性、效率
《软件工程实用教程》第8_章_软件维护技术

第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.確定軟體維護工作流程
软件工程08维护共30页
软件的可维护性
2、文档 —— 影响可维护性的决定因素, 比代码更重要。
⑴ 用户文档: ①功能描述 —— 说明系统能做什么;
②安装文档 —— 说明安装系统的方法及适应特定 的硬件配置的方法;
③使用手册 —— 说明使用方法以及错误挽救方法;
④参考手册 —— 详尽描述用户可使用的所有系统设 施以及它们的使用方法;给出错误 信息注解表;
•开发人员往往不参加维护
•大多数软件在设计时没有考虑将来的修改
软件工程的思想至少部分地解决了与维护有 关的每一个问题。
个人成果,妥善保存,请勿传播
课程内容提纲
第8章:“维护”
– 软件维护的定义 – 软件维护的特点 – 软件维护过程 – 软件的可维护行 – 预防性维护
个人成果,妥善保存,请勿传播
⑵可测试性(Testability) 是指论证程序正确性的容易程度。 好程序的特征:可理解、可靠、简单。 度量方法:程序复杂度
个人成果,妥善保存,请勿传播
软件的可维护性
⑶ 可修改性(Reparability) 是指程序容易修改的程度。
好程序的特征:可理解、简单、通用。
度量方法:
D
A C
其中:D = 修改难度; A = 要修改模块的复杂度
大型软件的维护成本高达开发成本的4倍左右 目前国外许多软件开发组织把60%以上的人力用于维
护已有的软件 而且随着软件数量增多和使用寿命延长,这个百分比
还在持续上升
个人成果,妥善保存,请勿传播
课程内容提纲
第8章:“维护”
– 软件维护的定义 – 软件维护的特点 – 软件维护过程 – 软件的可维护性 – 预防性维护
效率
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.1 软件维护的定义
•软件维护活动所花费的工作占整个生存期工作量的70%以 上,这是由于在漫长的软件运行过程中需要不断对软件进行 修改,以改正新发现的错误、适应新的环境和用户新的要求, 这些修改需要花费很多精力和时间,而且有时会引入新的错 误。
6
8.2 软件维护的特点
1. 影响维护工作量的因素 •在软件的维护过程中,需要花费大量的工作量,从而直接 影响了软件维护的成本。 •系统大小:系统越大,理解掌握起来越困难,所执行功能 越复杂。因而需要更多的维护工作量。 •程序设计语言:语言的功能越强,程序的模块化和结构化 程度越高,程序的可读性越好。 •系统年龄: •数据库技术的应用程度 •先进的软件开发技术 •其它: 应用的类型、 数学模型、任务的难度、开关与标 记、IF嵌套深度、索引或下标数等对维护工作量都有影响。
✓ 绝大多数软件在设计时没有考虑将来的修改。 ➢ 除非是强调模块独立原理的设计方法学,否则修改 软件既困难又容易发生差错。
✓ 软件维护不是一项吸引人的工作。 ➢ 形成这种观念很发程度上是因为维护工作经常遭受 挫折。
8
8.2 软件维护的特点
3、维护成本(维护的代价高昂) •有形的软件维护成本是花费了多少钱,无形的维护成本有 更大的影响。
✓不能及时安排,使得客户不满意; ✓ 变更的结果引入新的故障,使软件整体质量下降 ✓ 把软件人员抽调到维护工作中,干扰了软件开发 •软件维护的代价是降低了生产率,在做老程序的维护时非 常明显。 •例如,开发每一行源代码耗资25美元,维护每一行源代 码需要耗资1000美元。 •维护工作量包括生产性活动(如分析和评价、设计修改和 实现)和“轮转”活动(如力图理解代码在做什么、试图 判明数据结构、接口特性、性能界限等)。
10
8.2 软件维护的特点
4. 维护的问题很多 与软件维护有关的绝大部分问题,都可归因于软件开发的方 法有缺点。 在软件生命周期的头两个时期没有严格而又科学的管理和规 划,几乎必然会导致在最后阶段出现问题。 和软件维护有关的部分问题:
✓理解别人写的程序通常非常困难,而且困难程度随着配 置成分的减少而迅速增加。
➢如果仅有程序代码没有文档,则会出现严重的问题 ✓需要维护的软件往往没有合格的文档,或者文档资料显 著不足。
➢认识到软件必须有文档仅仅是第一步,容易理解的并 且和程序代码完全一致的文档才真正有价值。
11
8.2 软件维护的特点
✓ 当要求对软件进行维护时,不能指望由开发人员给我 们仔细说明软件。 ➢ 由于维护阶段持续的时间很长,因此,当需要理解 软件时,往往原来写程序的人已经不在附近了。
3
8.1 软件维护的定义
1. 软件维护的定义:在软件运行/维护阶段对软件产品进 行的修改就是所谓的维护。 2. 改正性维护: 在软件交付使用后,因开发时测试的不彻底、不完全,必 然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的 错误在某些特定的使用环境下就会暴露出来。 •为了识别和纠正软件错误、改正软件性能上的缺陷、排除 实施中的误使用,应当进行的诊断和改正错误的过程就叫 做改正性维护。 3. 适应性维护 : 在使用过程中,外部环境(新的硬、软件 配置)和数据环境(数据库、数据格式、数据输入/输出方 式、数据存储介质)可能发生变化。为使软件适应这种变 化,而去修改软件的过程。
4
8.1 软件维护的定义
4.完善性维护:软件的使用过程中,用户往往会对软件提出新 的功能与性能要求。进而需要修改或再开发软件,以扩充软件 功能、增强软件性能、改进加工效率、提高软件的可维护性的 维护活动 •实践表明,完善性维护所占的比重最大。即大部分维护工作 是改变和加强软件,而不是纠错。完善性维护占了几乎一半的 工作量。 •完善性维护不一定是救火式的紧急维修,而可以是有计划、 有预谋的一种再开发活动。 •事实证明,来自用户要求扩充、加强软件功能、性能的维护 活动约占整个维护工作的50%。 5.预防性维护:采用先进的软件工程方法对需要维护的软件或 软件中的某一部分(重新)进行设计、编制和测试。是为了提 高软件的可维护性、可靠性等,为以后进一步改进软件打下良 好基础。
软件工程 第八章 维护
1
第八章 维护
8.1 软件维护的定义 8.2 软件维护的特点 8.3 软件维护过程 8.4 软件的可维护性(自学) 8.5 提高可维护性的方法(补充自学) 8.6 预防性维护(自学) 8.7 软件再工程过程(自学)
2
8.1 软件维护的定义
在软件产品被开发出来并交付用户使用之后,就进入了软件 的运行维护阶段:
9
8.2 软件维护的特点
维护工作量的•p是上面描述的生产性工作量 •K是一个经验常数 •c是因缺乏好的设计和文档而导致复杂性的度量 •d是对软件熟悉程度的度量。 •模型指明,如果使用了不好的软件开发方法(未按软件工 程要求做),原来参加开发的人员或小组不能参加维护, 则工作量(及成本)将按指数级增加。
7
8.2 软件维护的特点
2. 结构化维护与非结构化维护差别巨大 非结构化维护的代价很高(浪费精力并且遭受挫折), 这种维护方式是没有使用软件工程方法学出来的软件的必 然结果。 以完整的软件配置为基础的结构化维护,是在软件开发 过程中应用软件过程方法学的结果。 虽然有了软件的完整配置并不能保证维护时没有问题, 但是确实能减少精力的浪费并且可以提高维护的总体质量 在过去的几十年中,软件维护的费用稳步上升。 1970年用于维护已有软件的费用只占软件总预算的35% ~40%,1980年上升为40%~60%,1990年上升为70%~ 80%。
这个阶段是软件生命周期的最后一个阶段,其基本任务是 保证软件在一个相当长的时期能够正常运行。
软件维护需要的工作量非常大,平均说来,大型软件的维 护成本高达开发的4倍左右。
目前国外许多软件开发组织把60%以上的人力用于维护已 有的软件,而且随着软件产品数量增多和使用寿命延长, 这个百分比还在持续上升。 软件工程的主要目标就是提高软件的可维护性,减少软件 维护所需要的工作量,降低软件系统的总成本。