您好,欢迎访问三七文档
软件维护与项目管理软件维护软件维护的概念软件维护活动程序修改的步骤及修改的副作用可维护性提高可维护性的方法软件再工程编程大师说:“任何一个程序,无论它多么小,总存在着错误。”初学者不相信大师的话,他问:“如果一个程序小得只执行一个简单的功能,那会怎样?”“这样的一个程序没有意义,”大师说,“但如果这样的程序存在的话,操作系统最后将失效,产生一个错误。”但初学者不满足,他问:“如果操作系统不失效,那么会怎样?”“没有不失效的操作系统,”大师说,“但如果这样的操作系统存在的话,硬件最后将失效,产生一个错误。”初学者仍不满足,再问:“如果硬件不失效,那么会怎样?”大师长叹一声道:“没有不失效的硬件。但如果这样的硬件存在的话,用户就会想让那个程序做一件不同的事,这件事也是一个错误。”没有错误的程序世间难求。[James1999]软件维护的定义在软件运行/维护阶段对软件产品进行的修改就是所谓的维护。维护的类型有四种:改正性维护适应性维护完善性维护预防性维护改正性维护在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就叫做改正性维护。适应性维护在使用过程中,外部环境(新的硬、软件配置)数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。完善性维护在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。预防性维护预防性维护是为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。预防性维护定义为:采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。维护在软件生三类维护占存期所占比例总维护比例系统大小程序设计语言系统年龄数据库技术的应用先进的软件开发技术影响维护工作量的因素软件维护的策略改正性维护技术改进包括:数据库管理系统、软件开发环境、程序自动生成系统、较高级(第四代)的语言。以及新的开发方法、软件复用、防错程序设计及周期性维护审查等。完善性维护1、数据库管理系统、程序生成器、应用软件包,可减少维护工作量。2、建立软件系统的原型,把它在实际系统开发之前提供给用户。维护成本有形的软件维护成本是花费了多少钱,无形的维护成本有更大的影响。一些合理的修复或修改请求不能及时安排,使得客户不满意;变更的结果引入新的故障,使得软件整体质量下降;维护工作量包括生产性活动(如分析和评价、设计修改和实现)和“轮转”活动软件维护的代价是降低了生产率,在做老程序的维护时非常明显。例如,开发每一行源代码耗资25美元,维护每一行源代码需要耗资1000美元。维护工作量包括生产性活动(如分析和评价、设计修改和实现)和“轮转”活动(如力图理解代码在做什么、试图判明数据结构、接口特性、性能界限等)。维护工作量的模型M是维护中消耗的总工作量p是上面描述的生产性工作量K是一个经验常数c是因缺乏好的设计和文档而导致复杂性的度量d是对软件熟悉程度的度量。dcKepM软件维护活动为了有效地进行软件维护,应事先就开始做组织工作。首先建立维护的机构申明提出维护申请报告的过程及评价的过程为每一个维护申请规定标准的处理步骤建立维护活动的登记制度以及规定评价和评审的标准。软件维护的机构软件维护工作流程程序修改的步骤及修改的副作用通常对源程序的修改不能无计划地仓促上阵,为了正确、有效地修改,需要经历以下三个步骤。分析和理解程序修改程序重新验证程序在修改源代码时,都可能引入错误。例如,删除或修改一个子程序、删除或修改一个标号、删除或修改一个标识符、改变程序代码的时序关系、改变占用存储的大小、改变逻辑运算符、修改文件的打开或关闭、改进程序的执行效率,以及把设计上的改变翻译成代码的改变时,都容易引入错误。修改代码的副作用(2)修改数据的副作用在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。容易导致设计与数据不相容的错误可以有:重新定义局部的或全局的常量重新定义记录或文件的格式增大或减小一个数组或高层数据结构的大小修改全局或公共数据重新初始化控制标志或指针重新排列输入/输出或子程序的参数(3)文档的副作用对数据流、软件结构、模块逻辑或任何其它有关特性进行修改时,必须对相关技术文档进行相应修改。否则会导致文档与程序功能不匹配,缺省条件改变,新错误信息不正确等错误。使得软件文档不能反映软件的当前状态。如果对可执行软件的修改不反映在文档里,就会产生文档的副作用。重新验证程序在将修改后的程序提交用户之前,需要进行充分的确认和测试,以保证整个修改后程序的正确性。静态确认计算机确认(1)确认测试顺序(2)准备标准的测试用例。(3)充分利用软件工具帮助重新验证过程。软件可维护性的定义软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。可维护性、可使用性、可靠性是衡量软件质量的主要质量特性,也是用户十分关心的几个方面。软件的可维护性是软件开发阶段各个时期的关键目标。目前广泛使用的是用如下的七个特性来衡量程序的可维护性。可理解性可重用性可测试性可移植性可修改性效率可靠性而且对于不同类型的维护,这七种特性的侧重点也不相同。可理解性表明人们通过阅读源代码和相关文档,了解程序功能及其如何运行的容易程度。可靠性表明一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行的概率。可测试性表明论证程序正确性的容易程度。可修改性表明程序容易修改的程度。可移植性表明程序转移到一个新的计算环境的可能性的大小。效率表明一个程序能执行预定功能而又不浪费机器资源的程度。从用户观点出发,可使用性定义为程序方便、实用、及易于使用的程度。在各类维护中的侧重点改改正正性性维维护护适适应应性性维维护护完完善善性性维维护护可可理理解解性性可可测测试试性性可可修修改改性性可可靠靠性性可可移移植植性性可可重重用用性性效效率率可维护性的度量人们一直期望对软件的可维护性做出定量度量。常用的度量一个可维护的程序的七种特性的方法。就是:质量检查表质量测试质量标准质量检查表是用于测试程序中某些质量特性是否存在的一个问题清单。评价者针对检查表上的每一个问题,依据自己的定性判断,回答“Yes”或者“No”。质量测试与质量标准则用于定量分析和评价程序的质量。由于许多质量特性是相互抵触的,要考虑几种不同的度量标准,相应地去度量不同的质量特性。度量可靠性的方法根据程序错误统计数字,进行可靠性预测。常用方法是利用一些可靠性模型,根据程序测试时发现并排除的错误数预测平均失效间隔时间MTTF。根据程序复杂性,预测软件可靠性。用程序复杂性预测可靠性,前提条件是可靠性与复杂性有关。因此可用复杂性预测出错率。程序复杂性度量标准可用于预测哪些模块最可能发生错误,以及可能出现的错误类型。提高可维护性的方法建立明确的软件质量目标和优先级使用提高软件质量的技术和工具进行明确的质量保证审查选择可维护的程序设计语言改进程序的文档提高软件质量的技术和工具模块化如果需要改变某个模块的功能,则只要改变这个模块,对其它模块影响很小;如果需要增加程序的某些功能,则仅需增加完成这些功能的新的模块或模块层;程序的测试与重复测试比较容易;程序错误易于定位和纠正;结构化程序设计面向对象的开发方法保证软件质量的最佳方法是在软件开发的最初阶段把质量要求考虑进去,并在开发过程每一阶段的终点,设置检查点进行检查。检查的目的是要证实,已开发的软件是否符合标准,是否满足规定的质量需求。在不同的检查点,检查的重点不完全相同。在检查点进行复审软件开发期间各个检查点的检查重点机器语言汇编语言高级语言查询语言(FORTRAN、报表生成语言COBOL等)图象语言应用生成语言选择可维护的程序设计语言软件再工程逆向工程软件项目管理软件项目管理1.估算软件规模2.工作量估算3.进度计划4.人员组织5.质量保证6.能力成熟度模型7.软件配置管理8.能力成熟度模型软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。导言软件项目目标技术管理俗话说“三分技术,七分管理”软件项目管理贯穿于软件的整个生命周期导言软件项目管理什么是管理(management)?管理就是通过计划、组织和控制等一系列活动,合理地配置和使用资源,达到既定目标的过程。导言计划组织控制过程资源合理使用与配置效率质量软件项目管理的内容导言时间管理人员管理配置管理质量管理项目的时间管理导言估算工作量软件需求KLOCFP估算规模人月估算进度GanttPert模型模型模型项目的人员管理导言民主制程序员组主程序员组现代程序员组项目的质量管理导言产品运行SQA小组活动措施基于非执行的测试程序正确性证明软件的配置管理导言数据程序文档软件配置项变化管理×标识变化版本控制变化控制报告配置审计能力成熟度模型:评价软件机构的软件过程能力成熟度的模型。导言1.代码行(KLOC/LOC)技术13.1估计软件规模出发点:依据以往开发类似产品的经验和历史数据。L=6a+4m+b---加权平均法:多名有经验的软件工程师每人都估计程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别计算出这3中规模的平均值a,b和m之后,计算L。---1.代码行(KLOC/LOC)技术13.1估计软件规模L=6a+4m+b---工程师abm唐僧111312孙悟空101311沙僧91210猪八戒131714白龙马121513均值111412=611+4×14+12=13.171.代码行(KLOC/LOC)技术13.1估计软件规模优点:代码是所有软件项目的产品,且代码行易于计算。缺点:(1)代码仅是软件配置的成分之一,用代码行表示软件规模不尽合理;(2)用不同语言实现统一软件,代码行数并不相同。2.功能点(FP)技术13.1估计软件规模克服代码行技术的缺点;依据软件信息域特性和软件复杂性的评测结果。用功能点(FP)为单位度量软件规模。2.功能点(FP)技术13.1估计软件规模(1)信息域特性输入项数(Inp)输出项数(Out)查询数(Inq)主文件数(Maf)外部接口数(Maf)信息域2.功能点(FP)技术13.1估计软件规模(1)信息域特性输入项数(Inp):用户向软件输入的项数,这些输入给软件提供面向应用的数据,不包括查询。输出项数(Out):查询数主文件数外部接口数2.功能点(FP)技术13.1估计软件规模(2)估算功能点的步骤计算未调整的功能点UFP计算技术复杂性因子TCF计算功能点数FP2.功能点(FP)技术13.1估计软件规模(2)估算功能点的步骤①计算未调整的功能点UFPUFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf复杂级别特性系数简单平均复杂输入系数a1346输出系数a2457查询系数a3346文件系数a471015接口系数a557102.功能点(FP)技术13.1估计软件规模(2)估算功能点的步骤②计算技术复杂性因子TCF①确定技术因素对软件规模的影响值F1~F14;0≤Fi≤5②计算技术因素对软件规模的综合影响程度DI;DI=∑Fi③计算技术复杂性因子TCF。TCF=0.65+0.01×DIi=1142.功能点(FP)技术13.1估计软件规模(2)估算功能点的步骤序号Fi技术因素1F1数据通信2F2分布式数据处理3F3性能标准4F4高负荷的硬件5F5高处理率6F6联机数据输入7F7终端用户效率序号Fi技术因素8F8联机更新9F9复杂的计算10F10可重用性11F11
本文标题:软件维护与项目管理
链接地址:https://www.777doc.com/doc-3626127 .html