第八章软件维护
软件工程课件之第8章维护第6版张海潘编著
![软件工程课件之第8章维护第6版张海潘编著](https://img.taocdn.com/s3/m/ffa645f79f3143323968011ca300a6c30c22f189.png)
用户文档
用户文档至少应该包括下述5方面的内容:
功能描述,说明系统能做什么; 安装文档,说明怎样安装这个系统以及怎样使系统
软件维护过程
维护报告
维护要求表或称软件问题报告表,由申请维 护的用户填写。
软件修改报告,由软件组织内部制定,指明:
满足某个维护要求表中提出的要求所需要的工 作量;
维护要求的性质; 这项要求的优先级; 与修改有关的事后数据;
维护的事件流
维护的事件流
尽管维护申请的类型不同,但都要进行同样 的技术工作:
系统文档
所谓系统文档指从问题定义、需求说明到验收 测试计划这样一系列和系统实现有关的文档。
描述系统设计、实现和测试的文档对于理解程 序和维护程序极端重要
从概貌到每个方面每个特点,从抽象到具体, 有逻辑地介绍系统
可维护性复审
在需求分析阶段的复审过程中,应该对将来要 改进的部分和可能会修改的部分加以注意并指 明;应该讨论软件的可移植性问题,并且考虑 可能影响软件维护的系统界面。
维护的问题
与软件维护有关的绝大多数问题,都可归 因于软件定义和软件开发的方法有缺点:
① 理解别人写的程序通常非常困难,而且困难程 度随着软件配置成分的减少而迅速增加。
② 需要维护的软件往往没有合格的文档,或者文 档资料显著不足。
③ 当要求对软件进行维护时,不能指望由开发人 员给我们仔细说明软件。
的。
软件维护工作量
各类维护工作量 所占比例
维护工作量在软件生 命周期所占比例
第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. 可测试性 诊断和测试的容易程度取决于软件容易理解的程 度。良好的文档对诊断和测试是至关重要的,此 外,软件结构、可用的测试工具和调试工具,以 及以前设计的测试过程也都是非常重要的。维护 人员应该能够得到在开发阶段用过的测试方案, 以便进行回归测试。在设计阶段应该尽力把软件 设计成容易测试和容易诊断的。 对于程序模块来说,可以用程序复杂度来度量它 的可测试性。模块的环形复杂度越大,可执行的 路径就越多,因此,全面测试它的难度就越高。
软件工程实用教程第三版-郭宁主编-课后习题及答案
![软件工程实用教程第三版-郭宁主编-课后习题及答案](https://img.taocdn.com/s3/m/b8081650a21614791711287d.png)
软件工程实用教程第三版-郭宁主编-课后习题及答案第一章软件工程引论1.在下列选项中,(D)不是软件的特征。
A.系统性与复制性 B. 可靠性与一致性 C.抽象性与智能型 D.有形性与可控性2.软件是一种(B)产品。
A.有形 B. 逻辑 C. 物质 D. 消耗3.软件工程是一种(A)分阶段实现的软件程序开发方法。
A.自顶向下B. 自底向上C. 逐步求精D. 面向数据流4.与计算机科学的理论研究不同,软件工程是一门(B)学科。
A.理论性 B. 工程性 C. 原理性 D. 心理性5.软件工程与计算机科学性质不同,软件工程着重于(C)。
A.原理探讨 B. 理论研究 C. 建造软件系统D. 原理性的理论6.下列说法正确的是(B)A.软件工程的概念于20世纪50年代提出B.软件工程的概念于20世纪60年代提出C.20世纪70年代出现了客户机/服务器技术D.20世纪80年代软件工程学科达到成熟7.软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工程经济学,它要达到的目标是(D)A.管理开发人员,以开发良好的软件B.采用先进的软件开发工具,开发优秀的软件C.消除软件危机,达到软件生产的规模效益D.以基本的社会效益为基础,工程化生产软件第二章软件生命周期及开发模型1.软件生命周期包括可行性分析和项目开发计划、需求分析、总体设计、详细分析、编码、(B)、维护等活动。
A.应用 B. 测试 C. 检测 D. 以上答案都不正确2.软件生命周期模型有多中,下列项目中,(C)不是软件生命周期模型。
A.螺旋模型 B. 增量模型 C. 功能模型 D.瀑布模型3.软件生命周期中时间最长的阶段时(D)A.需求分析阶段 B. 总体设计阶段 C. 测试阶段 D. 维护阶段4.瀑布模型是一种(D)A.软件开发方法B. 软件生存周期C. 程序设计方法学 D. 软件生存周期模型5.软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A)A.瀑布模型B. 对象模型C. 螺旋模型D. 层次模型6.在结构化的瀑布模型中,(D)阶段定义的标准将成为软件测试中系统测试阶段的目标A.详细设计阶段B. 总体设计阶段C. 可行性研究阶段 D. 需求分析7.增量模型是一种(B)的模型A.整体开发B. 非整体开发C. 灵活性差D.较晚产生工作软件8.(C)是指模拟某种产品的原始模型A.模型B. 最初模型C. 原型D. 进化模型9.建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B)A.用于验证软件需求的原型B. 垂直原型C.用于验证设计方案的原型 D.用于演化出目标系统的原型10.原型化方法是一种(A)型的设计过程。
第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/61920866e518964bcf847c9e.png)
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
第8章 软件维护
![第8章 软件维护](https://img.taocdn.com/s3/m/3a618aed5ef7ba0d4a733bf1.png)
第8章例题分析与解答作者:不详来源:2006年9月4日发表评论进入社区一、填空题1.为了识别和纠正运行中产生的错误而进行的维护称为_________维护。
2.采用软件工程方法开发软件,各阶段均有文档,容易维护,这种维护是________。
3.为提高可维护性,要使用的先进的、强有力的、实用的软件开发方法是________。
4.在软件维护中,因修改软件而导致出现的错误或其他情况称为__________。
二、选择题1.为增加软件功能和性能而进行的软件修改维护过程是( )。
A.校正性维护B.适应性维护C.完善性维护D.预防性维护2.维护中用来指出修改的工作量、工作性质、优先权、修改的事后性质的文档是( )。
A.软件需求说明B.软件修改报告C.软件问题报告D.测试分析报告3.维护中,因修改全局或公用数据而引起的错误是( )。
A.文档副作用B.数据副作用C.编码副作用D.设计副作用4.生产性维护活动是( )。
A.修改设计B.理解设计C.解释数据结构D.理解功能答案:一、填空题1.校正性2.结构化维护3.面向对象方法4.维护的副作用二、选择题1.C2.B3.B4.A第8章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.校正性维护2.适应性维护3.完善性维护4.预防性维护5.软件可维护性 6.软件维护的副作用二、填空题1.维护阶段是软件生存周期中时间最长的阶段,也是花费精力和费用________的阶段。
2.在软件交付使用后,由于在软件开发过程中产生的错误没有完全彻底在开发阶段发现,必然有一部分隐含错误带到_________阶段。
3.采用手工方法开发软件只有程序而无文档,维护困难,这是一种___________维护。
4.软件维护费用增加的主要原因是维护的_________非常低。
5.软件维护工作的活动分为生产性活动和__________活动。
6.所有软件维护申请报告要按规定方式提出,该报告也称_________报告。
软件工程 第8章 软件维护
![软件工程 第8章 软件维护](https://img.taocdn.com/s3/m/0b85984a336c1eb91a375dfb.png)
8.4.2 软件可维护性的度量
3. 可测试性 4. 可修改性 5. 可移植性 6. 效率 7. 可使用性 8. 间接度量可维护性的方法
8.4.2 软件可维护性的度量
8. 间接度量可维护性的方法
(1) 了解问题的时间; (2) 行政管理拖延的时间; (3) 收集维护工具的时间; (4) 分析问题的时间; (5) 改变规格说明的时间; (6) 具体的改错或修改的时间; (7) 局部测试时间; (8) 整体测试时间; (9) 维护重审时间; (10) 总体恢复时间。
8.4 软件的可维护性
8.4.1 影响可维护性的因素 软件的可维护性可以简单定义为:纠正软件系统出现 的错误和缺陷,以满足新的要求, 能够被理解、被校正、 被修改或被改善的难易程度。可维护性不但与采用的 分析设计方法和开发人员的技术熟练程度有关,更重 要的是与软件项目的管理技术关系密切。软件的可维 护性成为软件开发阶段各个时期的关键目标。
8.1 软件维护的种类
完善性维护 50%
预防性维护5%
改正性维护 20%
适应性维护 25%
图11.1 各类维护的比重
8.2 软件维护的特点
8.2.1 软件维护面临的困难 统计资料表明,有代表性的软件开发组织用于校正性 维护、适应性维护、完善性维护及预防性维护的费用 占其开发总金额的70%至80%。 很多软件机构被束缚在维护工作上,这是软件维护所 带来的无形支出。
8.2.3 非结构化维护
无说明或者文档资料太少由于没有采用定义良好的软 件项目管理过程来开发软件,软件项目管理的缺陷导 致的叫“非结构化维护”,这会使软件维护付出较高的 代价.
8.2.4 结构化维护
存在完整的软件系列文档,那么维护任务就从分析设 计文件开始,确定软件的重要结构特性、功能特性和 接口特性,确定所要求的修改或校正可能产生的影响, 并且计划采用何种维护处理方法,修改设计并进行复 审,编制出新的源程序,利用文档中的信息进行回归 测试,然后重新交付软件。这种维护过程就叫做“结 构化维护”
软件工程第八章维护
![软件工程第八章维护](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、结构化维护:进行维护 活动时,首先从评价需求开始,搞清楚 功能、性能上的改变,然后对设计说明文档进行评价、修改和复查; 根据设计的修改,再进行程序的变动;然后根据测试文档中的测试 用例进行回归测试;最后将修改后的软件再次交付使用。
软件维护ppt课件-PPT文档资料
![软件维护ppt课件-PPT文档资料](https://img.taocdn.com/s3/m/3154dc49b7360b4c2e3f64f2.png)
一、计算机病毒 二、硬盘的整理 三 虚拟机的使用
计算机病毒的特征
非授权可执行性 隐蔽性 传染性 潜伏性 表现性或破坏性 可触发性
计算机病毒的分类
病毒存在的媒体
病毒可以划分为网络病毒,文件病毒,引导型病毒。
病毒破坏的能力
根据病毒破坏的能力可划分为以下几种: 无害型: 除了传染时减少磁盘的可用空间外,对系统没有其它
影响。 无危险型: 这类病毒仅仅是减少内存、显示图像、发出声音 危险型: 这类病毒在计算机系统操作中造成严重的错误。 非常危险型:这类病毒删除程序、破坏数据、清除系统内存区和
操作系统中重要的信息。
计算机病毒的预防
不打开来历不明邮件的附件 首次安装防病毒软件时,一定要对计算机做一
最新病毒介绍
AV杀手病毒名称: Trojan/KillAV.ak“AV杀手”变种ak是“AV杀手”木马家族的最新 成员之一,采用Delphi语言编写,并经过加壳处理。“AV杀手”变种ak运 行后,自我修改文件属性为“隐藏”。强行篡改注册表相关键值,致使文件 夹选项中的“显示隐藏文件”功能失效。利用Windows映像劫持技术 (IFEO),修改注册表,致使许多与安全相关的软件无法启动运行。在被 感染计算机的后台调用系统“spoolsv.exe”进程,将恶意代码注入其中并 调用运行,隐藏自我,防止被查杀。在后台连接骇客指定远程服务器站点, 下载恶意程序并在被感染计算机上自动调用运行。在所有盘根目录下生成 “autorun.inf”文件(磁盘映像劫持文件)和病毒体文件,实现用户一双 击盘符就启动“AV杀手”变种ak运行的功能。
次彻底的病毒扫描 不要从任何不可靠的渠道下载任何软件 不要用共享的软盘安装软件,或者更为糟糕的
《软件工程》第八章 软件维护与再工程
![《软件工程》第八章 软件维护与再工程](https://img.taocdn.com/s3/m/87378efffab069dc5022015b.png)
软件可维护性-主要影响因素
可移植性:指程序转移到一个新的计算环境的难易 程度。
影响软件可移植性的因素有:信息隐蔽原则;模块 独立;模块化;高内聚低耦合;良好的程序结构; 不用标准文本以外的语句等
一个可移植的程序应具有结构良好、灵活、不依赖 于某பைடு நூலகம்具体计算机或操作系统的性能
软件可维护性-主要影响因素
软件维护的概念-维护成本
其它一些因素:如应用的类型、数学模型、 任务的难度、IF嵌套深度、索引或下标数等, 对维护工作量也有影响
软件维护的过程-维护组织
维护组织结构图
软件维护的过程-维护组织
系统监督员一般都是对程序(某一部分)特别熟 悉的技术人员。 在维护人员对程序进行修改的过程中,由配 置管理员严格把关,控制修改的范围,对软 件配置进行审计 。 维护管理员、系统监督员、修改控制决策机 构等,均代表维护工作的某个职责范围 。
如果已经开始保存维护记录,可以对维护工作做 一些定量度量,至少可以从如下7方面进行评价:
每次程序运行平均失败的次数; 用于每一类维护活动的总人时数; 平均每个程序、每种语言、每种维护类型所必需的程序 变动数; 维护过程中增加或删除源语句平均花费的人时数; 维护每种语言平均花费的人时数; 一张维护请求表的平均周转时间; 不同维护类型所占的比例;
软件维护的过程-维护记录
软件修改报告指明:为满足维护申请报告提 出的需求所需的工作量、本次维护活动的类 别、本次维护请求的优先级、本次修改的背 景数据。在拟定进一步维护计划前,软件修 改报告要提交给修改决策机构,供进一步规 划维护活动使用 保存维护记录的第一个问题就是哪些数据值 得保存?
软件维护的过程-维护评价
软件维护的概念-维护问题
计算机文化基础 第8章常用工具软件 第三节使用系统维护工具Windows优化大师
![计算机文化基础 第8章常用工具软件 第三节使用系统维护工具Windows优化大师](https://img.taocdn.com/s3/m/429413234b7302768e9951e79b89680203d86bc0.png)
8.3.1 Windows优化大师界面
Windows优化大师适用于Windows的各个操作系统平台,为用户 提供了详尽准确的系统信息检测、全面的系统优化、强大的清理功 能和有效的系统维护,使用户的操作系统始终保持在最佳状态。
8.3.3 系统优化
Windows优化大师可以对磁盘缓存、桌面菜单、文件系统、网 络系统、开机速度和系统安全等方面进行优化。
下面介绍使用Windows优化大师进行开机速度优化的具体方法 (1) 启动优化大师,单击【系统优化】按钮,进入系统优化模 块。 (2) 在【系统优化】选项列表中选择【开机速度优化】选项, 如图8-35所示。
的学习,要求读者了解各软件的功能特点,掌握各软件的 基本操作,从而提高工作和学习的成效。
第8章 常用工具软件
8.1 文件压缩工具 8.2 ACDSee看图工具 8.3 使用系统维护工具-Windows优化大师 8.4 使用其他常用软件 8.5 上 机 实 训
8.3 使用系统维护工具—— Windows优化大师
图8-35 开机速度优化
8.3.3 系统优化
(闭时,下次启动会自动运行磁盘错误检查工具,在自动运行 前,Windows会等待一段时间便于用户确认是否要运行磁盘错误检查 。默认等待时间为10秒,用户可以调整此等待时间。
(4) 在【启动项】列表中勾选开机时不自动运行的项目,单击【优化】 按钮,系统开始优化。
(1) 双击桌面上的Windows优化大师图标或选择【开始】→【程序】→ 【Windows优化大师】命令,启动Windows优化大师。
(2) 单击【系统检测】按钮,进入如图8-34所示的系统检测模块。
软件工程导论第八章-软件质量与质量保证
![软件工程导论第八章-软件质量与质量保证](https://img.taocdn.com/s3/m/2c9fda990408763231126edb6f1aff00bed5702e.png)
8.7 结构化程序的测试 8.7.5 软件测试技术
1. 静态分析技术 (3)符号执行是一种符号化定义数据,并
为程序每条路径给出符号表达式,对 特定路径输入符号,经处理输出符号, 从而判断程序行为是否错误,达到分 析错误的目的。
8.7 结构化程序的测试
8.7.1 软件测试的目的 8.7.2 软件测试的原则 8.7.3 软件测试的对象 8.7.4 软件测试的基本过程
8.7 结构化程序的测试 8.7.1 软件测试的目的
1. 软件测试的目的 (1)软件测试是确认软件的质量,其
一方面是确认软件做了所期望的事 情,另一方面是确认软件以正确的 方式来做了这个事件。 (2)软件测试是提供信息,比如提供 给开发人员或项目经理的反馈信息, 为风险评估所准备的信息。
8.6 软件质量保证的标准
2.ISO 9001标准 (8)产品标识和可跟踪性 (9)过程控制 (10)审查和测试 (11)审查、度量和测试设备的控制 (12)审查和测试状态 (13)对不符合标准产品的控制 (14)改正和预防行动
8.6 软件质量保证的标准
2.ISO 9001标准 (15)处理、存储、包装、保存和交付 (16)质量记录的控制 (17)内部质量审计 (18)培训 (19)服务 (20)统计技术
测试过程中产生的基本文档如下: (1)测试计划: 通常包括单元测试和集成测试,
确定测试范围、方法和需要的资源等。 (2)测试过程: 详细描述和每个测试方案有关
的测试步骤和数据,包括测试数据及预期 的结果。 (3)测试结果: 把每次测试运行的结果归入文 档,如果运行出错,则应产生问题报告, 并且通过调试解决所发现的问题。
第八章 软件维护
![第八章 软件维护](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)源程序清单(其中有适当数量的注 解)。 你将选取哪两份文档?为什么这样选取?
软件工程实用教程第三版_郭宁主编_课后习题与答案
![软件工程实用教程第三版_郭宁主编_课后习题与答案](https://img.taocdn.com/s3/m/6bd0c357192e45361166f568.png)
第一章软件工程引论1.在下列选项中,(D)不是软件的特征。
A.系统性与复制性B. 可靠性与一致性C. 抽象性与智能型D.有形性与可控性2.软件是一种(B)产品。
A.有形B. 逻辑C. 物质D. 消耗3.软件工程是一种(A)分阶段实现的软件程序开发方法。
A.自顶向下B. 自底向上C. 逐步求精D. 面向数据流4.与计算机科学的理论研究不同,软件工程是一门(B)学科。
A.理论性B. 工程性C. 原理性D. 心理性5.软件工程与计算机科学性质不同,软件工程着重于(C)。
A.原理探讨B. 理论研究C. 建造软件系统D. 原理性的理论6.下列说法正确的是(B)A.软件工程的概念于20世纪50年代提出B.软件工程的概念于20世纪60年代提出C.20世纪70年代出现了客户机/服务器技术D.20世纪80年代软件工程学科达到成熟7.软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工程经济学,它要达到的目标是(D)A.管理开发人员,以开发良好的软件B.采用先进的软件开发工具,开发优秀的软件C.消除软件危机,达到软件生产的规模效益D.以基本的社会效益为基础,工程化生产软件第二章软件生命周期及开发模型1.软件生命周期包括可行性分析和项目开发计划、需求分析、总体设计、详细分析、编码、(B)、维护等活动。
A.应用B. 测试C. 检测D. 以上答案都不正确2.软件生命周期模型有多中,下列项目中,(C)不是软件生命周期模型。
A.螺旋模型B. 增量模型C. 功能模型D. 瀑布模型3.软件生命周期中时间最长的阶段时(D)A.需求分析阶段B. 总体设计阶段C. 测试阶段D. 维护阶段4.瀑布模型是一种(D)A.软件开发方法B. 软件生存周期C. 程序设计方法学D. 软件生存周期模型5.软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A)A.瀑布模型B. 对象模型C. 螺旋模型D. 层次模型6.在结构化的瀑布模型中,(D)阶段定义的标准将成为软件测试中系统测试阶段的目标A.详细设计阶段B. 总体设计阶段C. 可行性研究阶段D. 需求分析7.增量模型是一种(B)的模型A.整体开发B. 非整体开发C. 灵活性差D. 较晚产生工作软件8.(C)是指模拟某种产品的原始模型A.模型B. 最初模型C. 原型D. 进化模型9.建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B)A.用于验证软件需求的原型B. 垂直原型C. 用于验证设计方案的原型D.用于演化出目标系统的原型10.原型化方法是一种(A)型的设计过程。
软件工程 第八章维护
![软件工程 第八章维护](https://img.taocdn.com/s3/m/f3a7c1070740be1e650e9aa9.png)
8.1软件维护的定义 8.1软件维护的定义
所谓软件维护就是在软件已经交付使用之 后,为了改正错误或满足新的需要而修改软 件的过程。 件的过程。 维护的类型有四种: 维护的类型有四种: 改正性维护 适应性维护 完善性维护 预防性维护
改正性维护
在软件交付使用后, 在软件交付使用后,因开发时测试 不彻底、不完全, 的不彻底、不完全,必然会有部分 隐藏的错误遗留到运行阶段。 隐藏的错误遗留到运行阶段。 这些隐藏下来的错误在某些特定的 这些隐藏下来的错误在某些特定的 使用环境下就会暴露出来。 使用环境下就会暴露出来。 为了识别和纠正软件错误 识别和纠正软件错误、 为了识别和纠正软件错误、改正软 件性能上的缺陷, 件性能上的缺陷,而进行诊断和改 正错误的过程就叫做改正性维护。 正错误的过程就叫做改正性维护。
维护工作量的模型
M = p + Ke
c −d
M是维护中消耗的总工作量 p是上面描述的生产性工作量 K是一个经验常数 c是因缺乏好的设计和文档而
导致复杂性的度量 是对软件熟悉程度的度量。 d是对软件熟悉程度的度量。
模型指明, 模型指明,如果使用了不好的软件 开发方法(未按软件工程要求做), 开发方法(未按软件工程要求做), 原来参加开发的人员或小组不能参 加维护,则工作量(及成本) 加维护,则工作量(及成本)将按 指数级增加。 指数级增加。
结构化维护 — 指软件开发过程是按照软 件工程方法进行的, 件工程方法进行的 , 开发各阶段的文档齐 软件的维护过程, 全 , 软件的维护过程 , 有一整套完整的方 技术、 审定过程及文档。 案 、 技术 、 审定过程及文档 。 因此易于维 护。
8.2.2 维护的代价高昂 维护的代价高昂 维护阶段是软件生存期中最长的一个阶 段 ,软件维护的工作量占整个软件生存期的 70%以上,而且还在逐年增加。 1970年用于 70%以上,而且还在逐年增加。 1970年用于 维护已有软件的费用只占软件总预算的35 35% 维护已有软件的费用只占软件总预算的35%~ 40% 1980年上升为 40% 60% 1990年上升 年上升为40 40% , 1980 年上升为 40% ~ 60% , 1990 年上升 70% 80% 为70%~80%。 因此,如 降低软 件维护的成本, 件维护的成本, 就成为提高软件维护效率和 质量的关键。 质量的关键。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
④ 软件维护工作是一项难出成果,大家都不愿意干的工作。
8.1.4 软件维护的代价
1.软件维护的工作量大 软件维护的费用在整个软件开发费用的 55%-70%,并且所占比例在逐年上升。而且维 护中还可能产生新的潜在错误。例如 1970 年维护费用约占软件开发费用的 40%,到 1990 年维护费用所占比例就超过了 70%。另外维护还包含了无形的资源占用,包括大量的使用 很多硬件、软件和软件工程师等资源。 在软件维护时,直接影响维护成本和工作量的因素很多,主要如下: (1)系统规模大小 系统规模大小直接影响维护工作量,系统规模越大,仅仅看懂理解就很困难,维护的 工作量就更多。系统规模主要由源代码行数、程序模块数、数据接口文件数、使用数据库 规模大小等因素衡量。 (2)程序设计语言 参与软件开发的人员都知道,解决相同的问题选择不同的程序设计语言,得到的程序 的规模可能不同,由此应选择功能强且适合解决问题的程序设计语言,这样可以使生成程 序的指令数更小。 (3)系统使用年限 使用年限长的老系统维护比新系统所需要的工作量更多。老系统因已经进行多次维 护,参与维护的人员也不断变化,因此这样的系统结构更乱,如果没有系统说明和设计文 档,维护就更加困难。 (4)软件开发新技术的应用 软件开发过程中,使用先进的分析和设计技术,以及程序设计技术,如:面向对象的技术、 构件技术、可视化程序设计技术等,可以减少维护工作量。 (5)设计过程中的技术 在具体对软件进行维护时,影响维护工作量的其他因素还有很多,例如设计过程中应 用的类型、数学模型、任务的难度、开关与标记、IF 嵌套深度、索引或下标数等。 2.软件维护工作量模型 维护活动分为生产性活动和非生产性活动。生产性活动包括分析评价、修改设计和编 写程序代码等。非生产性活动包括理解程序代码,解释数据结构,接口特点和设计约束等。 Belady 和 Lehman 提出软件维护工作模型:
软件维护的管理流程如图 8.5 所示:
5
用户
维护人员
修改过 的软件
更改要求
纠错性
维护 要求
完 美 性
或
严重
或
不严重
安排改正 性维护
将改正错误列入计划
低
将安排好的工 作量列入计划
评价优 先级 或
高 进行问 题分析
8.4 软件维护的工作流程图
进行问
题分析 人 员 安 排
系统管理员
维护人员
配置管理员
软件系统
图8.3 软件维护组织
维护管理员可以是某个人,也可以是一个包括管理人员、高级技术人员等在内的小组。 维护管理员将提交的维护申请交给系统管理员进行评价,然后由修改批准人员决定如何修 改,交维护人员在系统管理人员的指导下对软件进行修改。在修改过程中,配置管理员对 软件配置进行审查。
8.1.2 软件维护的类型
根据以上目的可以把维护活动可以归纳为完善性维护、适应性维护、纠错性维护和预 防性维护四类。
1.完善性维护(Perfective Maintenance)在软件漫长的使用过程中,为了满足用户使 用过程中对软件提出的新的功能与性能要求,需要对原来的软件的功能进行修改或扩充, 这种扩充软件功能、增强软件性能、提高软件运行效率和可维护性而进行的维护活动称为 完善性维护。此维护活动工作量较大占整个维护工作的 50%。例如:对人事管理程序,在 使用中要不断修改人事管理程序,使其增加或删除新的项目,满足新需求;原来软件的查 询响应速度较慢,要提高软件的响应速度;改变原来软件的用户界面或增加联机帮助信息; 为软件的运行增加监控设施等。
8.2.1 维护组织一般维护需要保持一个正式的组织机构,但委派一个
除了较大的软件公司外,通常的在软件维护工作方面,并不保持一个正式的组织。在 软件开发部门,确立一个非正式的维护组织即非正式的维护管理员来负责维护工作却是绝 对必要的。图 8.3 给出了一种典型的维护组织方式。
维护申请
维护管理员
修改批准人员
理解分析程序
安排计划 修改程序
维护实施
测试程序
复审
交付使用 的软件
维护修改建议
进行测试
分析修改建议
提交管理部门审批
N 是否合理
Y
提交管理部门审查
N 是否批准
Y
更新主文档
M=P+K*EXP(C-D) 其中:M 表示维护总工作量,P 表示生产性活动工作量,K 表示经验常数,C 表示由非结 构化维护引起的程序复杂度,D 表示对维护软件熟悉程度的度量。上式可以发现,C 越大, D 越小,那么维护工作量就成指数的增加。C 增加主要因为软件采用非结构化设计,程序 复杂性高;D 减小表示维护人员不是原来的开发人员,不熟悉程序,理解程序花费太多时 间。
预防性维护4%
完善性 维护 50%
纠错性维 护25%
适应性 维护21%
图8.1 各类维护所占的比例
其余 29%
维护 71%
图8.2 维护工作比例
2
8.1.3 软件维护的特性
1.时间长、工作量大、成本高 软件的维护过程是软件生存期中最长,并且相当困难的阶段,软件维护的工作量占整 个软件生存期的70%(如图 8.2 所示)以上,而且还在逐年增加。因此,如何减少软件 维护的工作量,降低软件维护的成本,就成为提高软件维护效率和质量的关键。 2.维护的副作用 通过维护可以延长软件的寿命使其创造更多的价值,但是,修改软件是危险的,每修 改一次,可能会产生新的潜在错误。因此,维护的副作用是指由于修改程序而导致新的错 误或者新增加一些不必要的活动。一般维护产生的副作用有如下三种。 (1)修改代码的副作用在修改源代码时,由于软件的内在结构等原因,任何一个小 的修改都可能引起的错误。因此在修改时必须特别小心。 (2)修改数据的副作用在修改数据结构时,有可能造成软件设计与数据结构不匹配, 因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。修改数据副作用可以 通过详细的设计文档加以控制,此文档中描述了一种交叉作用,把数据元素、记录、文件 和其他结构联系起来。 (3)修改文档的副作用 对软件的数据流、软件结构、模块逻辑等进行修改时,必须对相关技术文档进行相应 修改。但修改文档过程会产生新的错误,导致文档与程序功能不匹配,缺省条件改变等错 误,产生文档的副作用。 为了控制因修改而引起的副作用,应该:按模块把修改分组;自顶向下的安排被修改 模块的顺序;每次修改一个模块。 3.软件维护的困难 由于软件维护工作通常并不由软件的设计和开发人员来完成,维护人员首先要对软件 各阶段的文档和代码进行分析、理解。因而出现了理解别人的程序困难、文档不齐等问题, 尤其是对大型、复杂系统的维护,更加困难和复杂,甚至是不可能的! (1)结构化维护和非结构化维护 ①非结构化维护是只有源程序,缺乏必要的文档说明,难于确定数据结构、系统接口 等特性。维护工作令人生畏,事倍功半。 ②结构化维护是指软件开发过程是按照软件工程方法进行,开发各阶段文档齐全,软 件的维护过程,有一整套完整的方案、技术、审定过程。 可以看到,维护工作的难度及工作量的大小,明显的与前期的开发工作密切相关。 (2)维护的困难 软件维护的困难主要是由于软件需求分析和开发方法的缺陷造成的。这种困难主要有 如下几个方面: ① 读懂别人编的程序困难。 ② 文档的不一致性。 ③ 软件开发人员和软件维护人员在时间上的差异。
1
此项维护主要采用的策略可以使用功能强、使用方便的工具,采用原型化方法开发等。 2.适应性维护(Adaptive Maintenance)适应性维护是为了适应计算机的飞速发展, 使软件适应外部新的硬件和软件环境或者数据环境(数据库、数据格式、数据输入/输出 方式、数据存储介质)发生的变化,而进行修改软件的过程。适应性维护占整个维护工作 的 25%。例如:为现有的某个应用问题实现一个数据库管理系统;对某个指定代码进行修 改,如:从 3 个字符改为 4 个字符;缩短系统的应答时间,使其达到特定的要求;修改两 个程序,使它们可以使用相同的记录结构;修改程序,使其适用于另外的终端。 它主要的维护策略是对可能变化的因素进行配置管理,将因环境变化而必须修改的部 分局部化,即局限于某些程序模块等。 3.纠错性维护(Corrective Maintenance)软件测试不可能找出一个软件系统中所有 潜伏的错误,所以当软件在特定情况下运行时,这些潜伏的错误可能会暴露出来。对在测 试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错 以及验证、修改的回归测试过程,称为纠错性维护。纠错性维护占整个维护工作的 21%, 例如:修正原来程序中并未使开关复原的错误;解决开发时未能测试各种可能条件带来的 问题;解决原来程序中遗漏处理文件中最后一个记录的问题。 它的主要维护策略是开发过程中采用新技术,利用应用软件包,提高系统结构化程度, 进行周期性维护审查等。 4.预防性维护(Preventive Maintenance) 预防性维护是为了提高软件的可维护性和可靠性,采用先进的软件工程方法对需要维 护的软件或软件中的某一部分重新进行设计、编制和测试,为以后进一步维护和运行打好 基础。也就是软件开发组织选择在最近的将来可能变更的程序,做好变更它们的准备。由 于对于该类维护工作必须采用先进的软件工程方法,对需要修改的软件或部分进行设计、 编码和测试。对该类维护工作的必要性有争议,所以它在整个维护活动中占较小的比例约 占 4%。例如:预先选定多年留待使用的程序;当前正在成功地使用着的程序;可能在最 近的将来要做重大修改或增强的程序。 它的维护策略主要是常采用提前实现、软件重用等技术
8.2.2 维护工作的流程
图 8.4 描述了实施软件维护的工作流程,根据用户或维护人员的更改要求,进行维护 申请经过评审后,首先要确定维护的类型,还要分辨错误的严重程度或修改优先级的高低, 分别处理。
8.2.3 维护工作的组织管理
软件维护工作不仅是技术性的,它还需要大量的管理工作与之相配合,才能保证维护 工作的质量。管理部门应对提交的修改方案进行分析和审查,并对修改带来的影响作充分 的估计,对于不妥的修改予以撤销。需修改主文档时,管理部门更应仔细审查。