您好,欢迎访问三七文档
第四篇软件项目管理第10章计划退出所谓管理就是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的软件项目管理先于任何技术活动之前开始,并且软件项目管理过程从一组称为项目计划的活动开始,而第一项计划活动是“估算”。软件计划最详尽地描述了软件过程,它包括采用的生命周期模型、开发组织的组织结构、责任分配、管理目标和优先级、所用的技术和CASE工具,以及详细的进度、预算和资源分配。整个计划的基础是工作量估算和完成期限估算。10.1度量软件规模10.2工作量估算10.3进度计划10.4小结10.1度量软件规模10.1.1代码行技术是比较简单的定量估算软件规模的方法。这种方法根据以往开发类似产品的经验和历史数据,估计实现一个功能需要的源程序行数。当有以往开发类似项目的历史数据可供参考时,用这种方法估计出的数据还是比较准确的。把实现每个功能需要的源程序行数累加起来,就得到实现整个软件需要的源为了使得对程序规模的估计值更接近实际值,可以由多名有经验的软件工程师分别作出估计。每个人都估计程序的最小规模(a)、最大规模(b)和最可能的规模(m),分别算出abm之后,再用下式计算程序规模的估计值:用代码行技术度量软件规模时,当程序较小时常用的单位是代码行数(LOC),当程序较大时常用的单位是千行代码数(KLOC)64bmaL10.1.2功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。这种方法用功能点(FP)1.功能点技术定义了信息域的5个特性,分别是输入项数(Inp)、输出项数(Out)、查询数(Inq),主文件数(Maf)和外部接口数(Inf)。2.用下述三个步骤,可以估算出一个软件的功能点数(即软件规模)(1)计算未调整的功能点数UFP首先,把产品信息域的每个特性(即Inp、Out、Inq、Maf和Inf)都分类成简单级、平均级或复杂级。根据其等级,为每个特性都分配一个功能点数,例如,一个平均级的输入项分配4个功能点,一个简单级的输入项是3个功能点,而一个复杂级的输入项分配6个功然后,用下式计算未调整的功能点数UFPUFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf其中,ai(1≤i≤5)是信息域特性系数,其值由相应特性的复杂级别决定,如表10.1表10.1复杂级别特性系数简单平均复杂输入系数a1346输出系数a2457查询系数a3346文件系数a471015接口系数a55710(2)计算技术复杂性因子TCF这一步将度量14种技术因素对软件规模的影响程度。这些因素包括高处理率、性能标准(例如,响应时间)、联机更新等,在表102中列出了全部技术因素,并用Fi(1≤i≤14)代表这些因素。根据软件特点,为每个因素分配一个从0(不存在或对软件规模无影响)到5(有很大影响)的值。然后,用下式计算技术因素对软件规模的综合影响程度DI技术复杂性因子TCFTCF=0.65+0.01×DI因为DI的值在0~70之间,所以TCF的值在0.65~1.35141iiFDI表10.2序号Fi技术因素1F1数据通信2F2分布式数据处理3F3性能标准4F4高负荷的硬件5F5高处理率6F6联机数据输入7F7终端用户效率8F8联机更新9F9复杂的计算10F10可重用性11F11安装方便12F12操作方便13F13可移植性14F14可维护性(3)计算功能点数FP功能点数FPFP=UFP×TCF功能点数与所用的编程语言无关,因此,功能点技术比代码行技术更合理一些。但是,在判断信息域特性复杂级别及技术因素的影响程度时,存在相当大10.2工作量估算计算机软件估算模型使用由经验导出的公式来预测软件开发的工作量,工作量是软件规模(LOC或FP)的函数,工作量的单位通常是人月(pm)支持大多数估算模型的经验数据,都是从有限个项目的样本集中总结出来的,因此,没有一个估算模10.2.1E=A+B×(ev)C其中,A、B和C是由经验数据导出的常数,E是以人月为单位的工作量,ev是估算变量(LOC或FP)。此外,大多数模型都有某种形式的调整成分,使得E能够依据项目的其他特性(例如,问题的复杂程度、开发人员的经验、开发环境等)加以调整。下面给出几个典型的静1.面向LOC(1)WalstonFelixE=5.2×(KLOC)0.91(2)BaileyBasiliE=5.5+0.73×(KLOC)1.16(3)BoehmE=3.2×(KLOC)1.05(4)Doty模型(在KLOC>9的情况下)E=5.288×(KLOC)1.4072面向FP(1)Albrecht&GaffneyE=-13.39+0.0545FP(2)KemererE=60.62×7.728×10-8FP3(3)Maston、Barnett和MellichampE=585.7+5.12FP10.2.2动态多变量模型也称为软件方程式,它是根据从4000多个当代软件项目中收集的生产率数据推导出来的。这种模型把工作量看作是软件规模和开发时间这两个变E=〔LOC×B0.333/P〕3×(1/t)4EtB是“特殊技术因子”,它随着对集成、测试、质量保证、文档及管理技术的需求的增长而缓慢增加,对于较小的程序(KLOC=5~10),B=0.16,对于超过70KLOC的程序,B=0.39P是“生产率参数”,它反映了下述因素对工作量的影响:······应用系统的复杂程度。当开发实时嵌入式软件时,典型值是P=2000;对于电信和系统软件来说,P=10000;对于商业系统应用,P=28000。适用于当前项目的生产率参数,可以从历史应该注意,软件方程式有两个独立的变量:①对软件规模的估算值(用LOC表示);②以月或年为单位的从(10.2)式可以看出,开发同一个软件(即LOC固定)的时候,如果把项目持续时间延长一些,则可降低10.2.3COCOMO所谓COCOMO模型就是Boehm提出的构造性成本模型(COnstructiveCOstMOdel),它是一种层次结构的软件估算模型。下面以中级COCOMO模型为例,介绍构造性成本模型。该模型把软件开发工作量表示成代码行数(KLOC)1511iafiKLOCCMMMM是开发工作量(以人月为单位)C1KLOC是估计的代码行数(以千行为单位)afi(i=1到15)每个成本因素都根据它的重要程度和影响大小赋予一定数值。成本因素影响所有工程项目,即使不使用COCOMO模型估算成本,也应该注意这些因素。可以把成本因素划分成产品因素、计算机因素、人员因1.(1)要求的软件可靠性(RELY)(2)数据库规模(DATA)(3)软件产品复杂程度(CPLX)2.(1)执行时间的约束(TIME)(2)存储约束(STOR)(3)环境变更率(VIRT)(4)计算机换向时间(TURN)3.(1)系统分析员的能力(ACAP)(2)应用经验(AEXP)(3)程序员的能力(PCAP)(4)环境知识(VEXP)(5)语言知识(LEXP)4.(1)程序设计实践(MODP)(2)软件工具(TOOL)(3)进度约束(SCED)软件开发项目可以分成组织式、半独立式和嵌入式三种模式。对组织式软件的要求通常不苛刻,开发人员经验丰富,而且对软件的使用环境很熟悉(通常是为自己所在的组织开发软件),程序规模一般不大(小于50000行代码)。例如,简单的商业数据处理系统即属于组织式。嵌入式软件需要在很强的约束条件下运行,通常和某些硬设备紧密结合在一起(例如,空中交通管理软件),对这类软件系统的要求通常十分苛刻。对半独立式软件的要求通常介于上述两类软件之间,但是这类软件的规模一般都比较大(可达300000行代码)表10.3列出了上述三种开发模式的模型系数和模型指数。表10.4列出了各个成本因素的实际值(称为工作量系数)。有了这两张表中的数据,就可以用式(10.3)表10.3开发模式模型系数C1模型指数a组织式3.21.05半独立式3.01.12嵌入式2.81.02表10.4影响软件开发成本的工作量系数级别成本因素甚低低正常高甚高特高RELY0.750.881.001.151.40DATA0.941.001.081.16CPLX0.700.851.001.151.301.65TIME1.001.061.211.56STOR1.001.061.211.56VIRT0.871.001.151.30TURN0.871.001.071.15ACAP1.461.191.000.860.71AEXP1.291.131.000.910.82PCAP1.421.171.000.860.70VEXP1.211.101.000.90LEXP1.141.071.000.95MODP1.241.101.000.910.82TOOL1.241.101.000.919.83SCED1.231.081.001.041.10对64个覆盖了相当广泛的应用领域的项目样本的研究,证明了中级COCOMO模型的有效性:对这些样本应用该模型,预测结果的误差在20%以内的项目约占总项目的68%10.3进度计划项目管理者的目标是定义全部项目任务,识别出关键任务,跟踪关键任务的进展状况,以保证能及时发现拖延进度的情况。为了做到这一点,管理者必须制定一个足够详细的进度表,以便监督项目进度,并软件项目的进度安排是一项活动,它通过把工作量分配给特定的软件工程任务,并规定完成各项任务的起、止日期,从而将估算的工作量分布于计划好的项目持续期内。10.3.1下述的基本原则能够指导软件项目的进度安排。1.2.3.4.5.6.7.10.3.2GanttGantt图(甘特图)是历史悠久、应用广泛的进度计划工具,下面通过一个非常简单的例子介绍这种工具。表10.5各道工序估计需用的时间(小时)工序墙壁刮旧漆刷新漆清理1或32312或4462图10.1旧木板房刷漆工程的Gantt图为了醒目地表示里程碑,可以在Gantt图中加上菱形标记,一个菱形代表一个里程碑,如图10.2图10.2标有里程碑的Gantt图10.3.3上一小节介绍的Gantt图能很形象地描绘任务分解情况,以及每个子任务(作业)的开始时间和结束时间,因此是进度计划和进度管理的有力工具。它具有直观简明和容易掌握、容易绘制的优点,但是Gantt图也有·不能显式地描绘各项作业彼此间的依赖关系;·进度计划的关键部分不明确,难于判定哪些部·计划中有潜力的部分及潜力的大小不明确,往当把一个工程项目分解成许多子任务,并且它们彼此间的依赖关系又比较复杂时,仅仅用Gantt图作为安排进度的工具是不够的,不仅难于做出既节省资源工程网络是制定进度计划时另一种常用的图形工具,它同样能描绘任务分解情况以及每项作业的开始时间和结束时间,此外,它还显式地描绘各个作业彼此间的依赖关系。因此,工程网络是系统分析和系统在工程网络中用箭头表示作业(例如,刮旧漆,刷新漆,清理等),用圆圈表示事件(一项作业开始或结束)。注意,事件仅仅是可以明确定义的时间点,它并不消耗时间和资源。作业通常既消耗资源又需要持续一定时间。图10.3是旧木板房刷漆工程的工程网络。图中表示刮第1面墙上旧漆的作业开始于事件1,结束于事件2。用开始事件和结束事件的编号标识一个作业,因此“刮第1面墙上旧漆”是作业1—2图10.3图中:1—2刮第1面墙上的旧漆;2—3刮第22—4给第1面墙刷新漆;3—5刮第34—6给第2面墙刷新漆;4—7清理第15—8刮第4面墙上旧漆;6—8给第37—9清理第2面墙窗户;8—10给第49—10清理第3面墙窗户;10—11清理第4虚拟作业:3—4;5—6;6—7;8—9。在工程网络中的一个事件,如果既有箭头进入又有箭头离开,则它既是某些作业的结束又是另一些作业的开始。例如,图10.3中事件2既是作业1—2(刮第1面墙上的旧漆)的结束,又是作业2—3(刮第2面墙上旧漆)和作业2—4(给第1面墙刷新漆)的开始。也就是说,只有第1面墙上的旧漆刮完之后,才能开始刮第2面墙上旧漆和给第1面墙刷新漆这两个作业。因此,工程网在图10.
本文标题:第十章软件项目管理
链接地址:https://www.777doc.com/doc-3262187 .html