欢迎来到天天文库
浏览记录
ID:39846346
大小:499.50 KB
页数:30页
时间:2019-07-13
《软件工程基础之07软件维护》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章软件维护软件维护概述1软件维护技术5软件维护过程模型3应注意的问题2小结6软件维护概述软件维护的基本概念软件维护的基本类型维护的困难性软件维护的定义IEEE/EIA12207[ISO/IEC2008]中对软件维护的定义是:软件维护是指由于软件产品出现问题或需要改进而对代码及相关文档的修改,其目的是对现有软件产品进行修改的同时保持其完整性。软件维护的必要性软件维护能够改正错误。软件维护能够改善设计。软件维护能够实现软件的改进。软件维护能够实现与其他系统的交互。软件维护能够为使用不同的硬件、软件、系统的新性
2、能以及通讯设备等而对软件进行改进。软件维护能够完成遗留系统的移植。软件退出使用。遗留系统:仍能够使用的旧系统,有时对于业务运行来说至关重要。原因:过时的语言或技术实现、昂贵的系统支持导致维护昂贵、结构性差。软件维护的成本软件维护阶段一般要消耗软件生命周期中经费开支的大部分。软件维护的费用占软件总预算的比例:70年代的35%~40%80年代上升为40%~60%90年代已经占70%~80%软件维护的基本类型维护的类型有四种:纠错性维护适应性维护完善性维护预防性维护国外的统计数字表明,完善性维护占全部维护活动的50
3、%~66%,纠错性维护占17%~21%,适应性维护占18%~25%,其他维护活动只占4%左右纠错性维护在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。设计错误、编码错误、数据错误、文档错误这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误用,应当进行的诊断和改正错误的过程就叫做纠错性维护。适应性维护在使用过程中,外部环境(新的硬、软件配置)数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)网络环境
4、等其他可能发生的变化。为使软件适应外部、数据、网络的变化,而去修改软件的过程就叫做适应性维护。完善性维护在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足新的功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。实践表明,在几种维护活动中,完善性维护所占的比重最大。即大部分维护工作是改变和加强软件,而不是纠错。完善性维护不一定是救火式的紧急维修,而可以是有计划、有预谋的一种再开发活动。预防性维护预防性维护
5、是防止问题发生而事先维护,目的是为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。体系结构不良、数据结构不理想、文档不全、缺少变更记录等。预防性维护定义为:采用适当的方法对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。逆向工程、软件再工程等。软件维护中应注意的问题(一)技术方面程序的理解:有限理解测试:完整测试消耗大,往往选择回归测试、局部测试。软件运行中,协调测试困难。影响分析可维护性影响分析影响分析是对修改的影响进行完整分析,衡量消耗的可接受程度。目标:决定改变的范围。这
6、对合理计划和完成工作有重要意义对完成工作所需的资源进行精确的估计。分析改变的费用/效益比由于对软件进行变更往往是牵一发而动全身的,因此如果给出了一个变更,必须考虑到关联性的复杂情况。可维护性可维护性是指通过一定的手段,使软件可以被维护、改进、改动或修正,以满足特定的需求的方便程度。决定要素:可理解性可测试性可修改性可移植性可重用性环境要素:维护文档运行环境维护组织维护质量软件维护中应注意的问题(二)管理方面契合组织的目标:延长软件生命、软件升级、改进的需要,但投资回报不明确。权衡消耗与收益。人力资源:吸引和维
7、持软件维护队伍。“二等公民”误区过程:需要开发过程没有的活动,如逆向工程,管理挑战如何组织维护活动:责任到人外包:有效控制是重点,确定服务的范围以及合约细节是挑战。软件维护中应注意的问题(三)维护费用估算参数模型M=P+K×e(c‐d)M是维护用的总工作量,P是生产性工作量,K是经验常数,c是复杂程度,d是维护人员对软件的熟悉程度。生产性成本包括分析评价、修改设计和编码等。非生产性成本包括程序理解、数据结构解释、接口特点和性能限度等。基于经验专家判断、类推、工作分解结构软件维护过程模型IEEE维护模型图分类与
8、鉴别阶段分析阶段设计阶段实现阶段系统测试阶段验收测试阶段交付阶段修改输入软件维护技术程序的理解软件再工程软件逆向工程程序的理解为了有效维护,需要阅读和理解程序,方法:1、文档理解、代码理解、注释理解2、代码浏览工具(SourceInsight等)程序理解的任务:以软件维护、升级和再工程为目的,在不同的抽象级别上建立基本软件的概念模型,包括从代码本身的模型到基本应用领域的模型,即建立从问题/应用域到程
此文档下载收益归作者所有