软件工程第八章

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

20
二、软件维护工作流程 必要的技术工作 修改软件需求说明 修改软件设计 设计评审 对源程序做必要修改 单元测试 集成测试(回归测 试) 确认测试 软件配置评审等。
21
§8.4 软件的可维护性
衡量软件质量的几个主要质量特性:

可维护性 可使用性 可靠性
一、软件可维护性的定义 指纠正软件系统出现的错误和缺陷, 以及为满足新的要求进行修改、扩充或 压缩的容易程度。
32
起源
• 软件工程进入再工程时代的呼声起于20世纪90 年代初,当时更多的提法是软件重用(Reuse)。 实际上可以说是用“重用”的旗帜为再工程开 道。这样引出再工程,是软件工程理论先导的 远见卓识,因为重用是软件工程的最高境界。
33
再工程(Reengineering):也称再加工 (Renovation)
12
三、软件维护的困难
由于软件维护工作通常并不由软件的设计 和开发人员来完成,维护人员首先要对软件各 阶段的文档和代码进行分析、理解。因而出现 了理解别人的程序困难、文档不齐等问题,尤 其是对大型、复杂系统的维护,更加困难和复 杂,甚至是不可能的!
13
1、结构化维护与非结构化维护 非结构化维护 — 缺乏必要的文档说明,文 档缺少或者不一制,难于确定数据结构、系统 接口等特性,这样的维护工作令人生畏,事倍 功半。
一、逆向工程(reverse engineering) 软件的逆向工程是分析程序,力图 在比源代码更高的抽象层次上建立程序 表示的过程,是 一个设计恢复的过程, 逆向工程工具可以从已有的程序中抽取 数据结构、体系结构和程序设计信息。
28
二、重构工程 在逆向工程所获得信息的基础上修改 或者重构已有的系统,产生系统一个新版 本的过程。 逆向工程和重构工程是预防性维护采 用的主要技术。
Baidu Nhomakorabea
29
正向工程(Forward Engineering)
由抽象的、逻辑性的、不依存代码 的设计逐步展开,直至具体代码实现的 开发活动,即从需求规格设计到产品初 次发布的过程或子过程。
30
逆向工程和重构工程示意图
需求规范 重构 软件设计 1 正向工程 设计恢复
逆向工程
软件设计 2
程序
31
二、软件再工程(Re-engineering)
17
§8.2.3 维护的问题很多




(1)难以跟踪软件版本的进化过程, 软件的 变化未在文档中反映出来. (2)难以跟踪软件的创建过程. (3)难以读懂他人程序. (4)无文档或不全. (5)软件人员流动性大. (6)设计时未考虑修改需要,修改困难. (7)维护工作无吸引力,缺乏成就感.
4
③ 扩充与完善性维护(Perfective Maintenance) 原因:在软件系统运行期间,用户可能要求增
加新的功能、建议修改已有功能或提出其他改 进意见。
在软件的使用过程中,用户往往会 对软件提出新的功能与性能要求。为了 满足这些要求,需要修改或再开发软件, 以扩充软件功能、增强软件性能、改进 加工效率、提高软件的可维护性。这种 情况下进行的维护活动叫做完善性维护。
是对既存软件系统进行调查,并将其重构 为新形式代码的开发过程。逆向过程从源代码 出发,旨在取得高一级抽象成果,再工程根据 对对象系统更深层次的理解将其重构为另一种 形式的软件产品。 即:再工程=逆向工程+正向工程。再工程 这一用语也常用于业务过程再工程(BPR), 有时为了与BPR相区分,通常将这里的再工程 称为软件再工程(Software Reengineering)。 再工程处于软件生存期的维护期。所以要 研究再工程首先要研究软件维护(Software Maintenance)。 34
18
§8.3 软件维护过程
一、维护组识
所有软件维护申 请应按规定的方式提 出。 维护机构通常提 供“维护申请报告”, 或称“软件问题报 告” ,由申请维护的 用户填写。 维护机构内部要 写“软件修改报告”
19
用户的维护请求
研读设计
软件
苦读代码
规划方案

修改设计
重新编写代码
重新编写代码
复审
复审
测试并交付用户使用
37
完善性维护的再工程
增加或修改功能,以提高系统的安 全性、处理能力等性能。
38
预防性维护的再工程
为了提高可维护性而对系统进行优化(再 结构化、再标准化等),对文档进行重构,对 数据进行重组。
39
软件维护工具
辅助软件维护过程中的活动的软件称 为“软件维护工具”,它辅助维护人员 对软件代码及其文档进行各种维护活动。 软件维护工具主要有: 1、版本控制工具; 2、文档分析工具; 3、开发信息库工具; 4、逆向工程工具; 5、再工程工具
14
太累了!受不了啦! 几万行程序怎么改 哦???
结构化维护 — 指软件开发过程是按照
软件工程方法进行的,开发各阶段的文 档齐全,软件的维护过程,有一整套完 整的方案、技术、审定过程及文档。 可以看到,维护工作的难度及工作 量的大小,明显与前期的开发工作密切 相关。
15
二、影响维护工作量的因素
1)系统大小 2)程序设计语言 3)系统年龄 4)数据库技术的应用 5)先进的软件开发技术 6)其他。例如,应用的类型、数学模型、 任务的难度、开关与标记、IF 嵌套深度、 索引或下标数等。
软件工程
Software Engineering
1
第八章
软件维护
§8.1 软件维护的定义
一、软件维护的定义和分类
软件维护是指在软件运行或维护阶段 对软件产品所进行的修改。分为四类:
2
① 改正性维护(Corrective Maintenance)
原因:用户在使用软件过程中一旦发现错误, 他们会向开发人员提出纠正性维护的请求。 在软件交付使用后,由于开发时测试得不 彻底或不完全,在运行阶段会暴露一些开发时 未能测试出来的错误。为了识别和纠正软件错 误,改正软件性能上的缺陷,避免实施中的错 误使用,应当进行的诊断和改正错误的过程, 这就是改正性维护。
可移植性:表明程序转移到一个新的计 算环境的可能性的大小。 效率:一个程序能执行预定功能而又不 浪费机器资源的程度。 可使用性:从用户观点出发,把可使用 性定义为程序方便、实用、及 易于使用的程度。
24
7个特性在各类维护中的侧重点
25
提高可维护性的方法
建立明确的软件质量目标和优先级
相互促进的特性:可理解性和可测试性 可理解性和可修改性; 相互抵触的特性:效率和可移植性 效率和可修改性 各特性的相对重要性应随着程序的用途不 同、 计算环境的不同而不同。
再工程的类型
严格地说,再工程的潜在需求尽管大得不 可估量,但目前只能说是进入了再工程时代。 其理由众所周知:一是资金不足——再工程需 要大量投资;二是软件开发人员不足。所以除 了应付尚未实施的一次软件工程外,可以有计 划地投入再工程的资源很有限。目前的再工程 主要为三类:
35
适应性维护的再工程
1. 伴随硬件和操作系统更新换代的软件维护。像小 型机换成PC机、PC机换成Unix工作站、Win95换成 WinXP所带来的软件维护。 2. 业务环境变化带来的软件维护。譬如由于企业业 务的发展和系统使用年限的增加,既存系统的存 储媒体和数据管理系统满足不了数据量及其种类 剧增的要求,需要更新数据库系统;随外部条件 变化而必须修改部分数据变量定义或算法,例如 征收消费税的法律修订、邮政编码位数改变、 2000年问题等。
16
§8.2.2 维护的代价高昂
维护活动分为生产性活动和非生产性活动。 生产性活动:分析评价、修改设计和编写程序代码等; 非生产性活动:理解程序代码功能、数据结构 、接口 特点和设计约束等。
说明: M:维护工作总工作量 P:生产性工作量 K:经验常数 c:复杂度 d:对该软件熟悉程度的度量
40
22
二、可维护性的度量(1)
可理解性:人们通过阅读源代码和相关文档,了解 程序功能及其如何运行的容易程度。 可靠性:表明一个程序按照用户的要求和设计目 标,在给定的一段时间内正确执行的概 率。 可测试性:表明论证程序正确性的容易程度。 可修改性:表明程序容易修改的程度。
23
二、可维护性的度量(2)
5
④ 预防性维护(Preventive Maintenance)
原因:为进一步改善软件系统的可维护 性和可靠性,为以后的软件改进奠定基 础的维护活动。 采用先进的软件工程方法,对需要维 护的软件或软件中的某一部分重新进行设 计、编制和测试。
6
7
软件维护策略
针对以上几种类型的维护,可采取 相应的维护策略,以提高维护效率,降 低维护成本。 1、改正性维护策略 • 开发过程中采用新技术,利用应用 软件包,提高系统结构化程度,进行周 期性维护审查等。
软件再工程是一个工程过程,它将逆向工程、 重构和正向工程组合起来,旨在对现存的大量软 件系统进行挖掘、整理,重新获得设计信息,用 这些信息改建或重构现有的系统,以改进它的综 合质量; 或者得到有用的软件构件,对已有软件构件 进行维护以延长其生存期。 再工程的基础是系统理解,包括对运行系统、 源代码、设计、分析、文档等的全面理解。但在 很多情况下,由于各类文档的丢失,只能对源代 码进行理解, 即程序理解。
10
软件维护的特性
一、时间长、工作量大、成本高 维护阶段是软件生存期中最长的一 个阶段,软件维护的工作量占整个软件 生存期的70%以上,而且还在逐年增加。 因此,如何减少软件维护的工作量,降 低软件维护的成本,就成为提高软件维 护效率和质量的关键。
其余 29% 维护 71%
维护工作比例 11
二、软件维护的副作用
改动--> 新的错误 维护的副作用是指由于维护或者在维护过程中其他 一些不期望的行为引入的错误
• 代码副作用: 如修改或者删除程序、修改或者删除语 句标号、修改逻辑符号等等。慎重,可通过回归测试 发现 • 数据副作用: 因修改信息结构而带来的不良后果,如 局部和全局数据的再定义,记录或者文件格式的再定 义等 • 文档副作用: 由于在设计文档中未能准确反映软件修 改情况而带来的不良后果
8
2、适应性维护策略 对可能变化的因素进行配置管理,将 因环境变化而必须修改的部分局部化, 即局限于某些程序模块等。 3、完善性维护策略 除了可以使用前面两类维护的策略 外,还有使用功能强、使用方便的工具, 采用原型化方法开发等,也可提高可维 护性。
9
4、预防性维护策略 常采用提前实现、软件重用等技术。
3
② 适应性维护(Adaptive Maintenance)
原因:软件运行于一定的环境(硬件、OS、 网络等)之上,运行环境发展很快。 随着计算机技术的飞速发展和更新 换代,软件系统所需的外部环境或数据 环境可能会更新和升级。为了使软件系 统适应这种变化,需要对软件进行相应 的修改,这种维护活动称为适应性维护。
使用提高软件质量的技术和工具 如:模块化、详细的设计文档、结构化设 计、 程序内部的文档和良好的高级程序设计语言
26
进行明确的质量保证审查 检查点复审、验收检查、周期性地维护 审查、对软件包进行检查。 选择可维护的程序设计语言 改进程序的文档 开发软件时考虑到维护
27
§8.6 软件再工程过程
36
3. 系统运行环境变化带来的软件修正。如由主 机方式变为客户/服务器方式,由客户/服务器 方式变为Web方式,这时的系统体系结构必须 做相应的改变。 4. 适应系统开发环境变化的软件维护。有一些 软件,主要是定制软件,如ERP软件等,其软 件再工程常伴随企业的BPR发生,所以开发环 境也需随经常性的系统完善性再工程而更新, 譬如PowerBuilder等开发环境的升级换代如同 操作系统一样频繁发生。
相关文档
最新文档