450 likes | 615 Views
第四章 项目启动管理. 王晓辉 计算机科学与技术学院. 软件项目进度计划编制案例. 信息系统开发为例: 加入该 MIS 开发的时间要求是 100~125 天,要求正式验收前要试运行 20 天以上。 WBS 结构图 项目工作关系表 网络进度计划 软件项目成本估算. 工作分解结构图. 项目工作关系表. 如何估算?. 网络进度计划图. 试运行时间. 网络图的 Visio 画法. 进度图之 —— 甘特图. 4.4 软件项目成本估算. 常见的成本估算方法有如下的三种 : 标准值估算法 Putman 方法 COCOMO. 4.4.1 值估算法.
E N D
第四章 项目启动管理 王晓辉 计算机科学与技术学院
软件项目进度计划编制案例 信息系统开发为例: 加入该MIS开发的时间要求是100~125天,要求正式验收前要试运行20天以上。 • WBS结构图 • 项目工作关系表 • 网络进度计划 • 软件项目成本估算
项目工作关系表 如何估算?
4.4 软件项目成本估算 • 常见的成本估算方法有如下的三种: • 标准值估算法 • Putman方法 • COCOMO
4.4.1 值估算法 • 估算公式为: 其中,A是估算的最小规模,B是最大规模,M是最可能的规模。 然后可以使用一些修正系数来估算工作量。 修正系数 = 1+0.1*n(n为各种量化因子) 是用于小型非常熟悉的系统。
4.4.2 Putman模型估算法 Putman模型是一种动态多变量模型,根据50多个大型项目导出的规律: 其中,L是源代码行数;K是工作量(人年);t是开发所需要的时间(年);C为技术水平常数: 差的开发环境:C=2500 好的开发环境:C=10000 优越的开发环境:C=12500
Putman模型 根据公式得到的工作量估算公式为: 比如:一个2年的项目,需要开发100万行的代码,开发环境优越,那么他需要的工作量为: (100000**3 ) * (10000**(-3)) * (2**(-4)) 约:62.5人年
4.4.3 COCOMO模型 该模型是Boehm提出的结构性成本估算模型,他将现有的项目分成了三种开发模式:
COCOMO模型的三个等级 • 基本COCOMO • 这个等级仅仅使用规模和模式来确定工作量和进度。它可以对小到中等规模的项目进行快速而粗略的评估。 • 中等COCOMO • 这个等级使用规模、模式和15个其他变量来确定工作量。其他的变量被称为“成本驱动因子”,这些因子与产品、人员、计算机和增加或减少软件项工作量的项目属性相关。 • 详细COCOMO • 这个层次基于中等COCOMO之上,并且引入了其它对阶段敏感的工作量系数以及一个3层产品结构。
4.4.3.1 基本COCOMO 在基本COCOMO模型中,交付的源指令千行数(KLOC)是唯一的输入变量,并用它的一个指数公式来估算软件项目的工作量。 “工作量”的含义就是完成某项任务所需要的劳动量,在软件项目中通常使用“人员-月”来作为工作量的单位。 根据美国的节假日计算,每个人月包含19个人员-工作日,每个人员每天工作8小时,1个人月就包含152个人员-小时。在评估工作量时,单位一定要统一,不同的国家工作量的定义会有所区别。
基本COCOMO公式 工作量(E)= a×(规模)b
基本COCOMO举例 • 假设估算项目规模是200KLOC, • 当该项目是组织型的时候,工作量估算为2.4(200)1.05=2.4(260.66)=626人月。 • 当该项目是半独立型时,工作量估算为3.0(200)1.12=3.0(377.71)=1 133人月。 • 当该项目是嵌入型时,工作量估算为3.6(200)1.20=3.6(577)=2 077人月。
基本COCOMO进度估算 其中,c和d也是从回归分析中导出的常数,c一般取2.5,不同的开发模式d的取值也不同,在组织型模式中取0.38,在半独立型模式中一般取0.35,在嵌入型模式中可取0.32。
基本COCOMO全职人月估算 得出了工作量(E,单位“人员-月”)和开发时间(TDEV,单位“月”)之后,就可以计算完成项目的平均全职人员(FSP,Full-time-equivalent Software Personnel,单位“人员”)数了。其计算公式为: FSP = E / TDEV
基本COCOMO效率估算 在求得了开发时间后,我们又可以对平均的生产效率进行估算,生产效率用P表示,单位是LOC/人月,其估算公式为: P = KLOC / E
COCOMO估算例 一个32KLOC的中型项目: • 工作量: E=2.4(32)1.05 = 91人月 • 生产率: • 进 度: TDEV = 2.5(91)0.38 = 14个月 • 平均安置人员:
进度估算举例 仍然用320KLOC的中型项目为例我们从前面的COCOMO估算已近确定该项目需要91个人月的工作量和14个月的进度。假设我们需要该项目在编码阶段的时间量、工作量和相当于全职的软件人员平均数的估算,根据表的工作量部分,编码阶段需要总工作量的62%,即 • 0.62 * 91人月 = 56人月 根据进度分布表,编码阶段需要总进度的55%,即: • 0.55 * 14个月 = 7.7 个月 编码阶段所需要的人员数的平均数是: • 56人月 / 7.7个月 = 7.3 FSP
4.4.3.2 中等COCOMO 采用对应于15个成本驱动因子的属性系数进行调整。 中等COCOMO的基本估算公式(与基本COCOM不同):
调整因子:产品属性 • (1)产品属性:与产品本身或者与需要完成的任务本质相关的,迫使项目成本上升或者下降的一些属性。 • RELY(Required software reliability,软件可靠性)——主要应用于实时系统; • DATA(Data base size,数据库规模)——主要应用于数据处理系统; • CPLX(Product complexity,软件产品复杂性)——执行时间的限制。
调整因子:计算机属性 • (2)计算机属性:与作为支持工具的计算机平台有关,而且与要完成的任务有关的其它属性: • TIME(Execution time constraint,执行时间约束)——主要应用于当处理器速度勉强满足要求时; • STOR(Main store constrain,主存储器约束)——主要应用于当存储器大小勉强满足要求时; • VIRT(Virtual machine volatility,虚拟机的易变性)——包括目标设备的硬件和操作系统; • TURN(Computer turnaround time,计算机周转时间)——用于开发(当前考虑的比较少)。
调整因子——人员属性 • (3)人员属性:与完成工作的人员相关的属性,这些成本驱动因子可能会极大的增加或者减低成本: • ACAP(Analyst Capability,分析员能力); • AEXP(Analyst Experience,分析员经验); • PCAP(Programmer Capability,程序员能力); • VEXP(Virtual Machine Experience,虚拟机经验)——包括操作系统和硬件; • LEXP(Language Experience,编程语言经验)——包括工具和方法。
调整因子——项目属性 • (4)项目属性:与方法和工具有关的属性: • MODP(Modern Programming practices,现代编程规范)结构化技术或者面向对象技术; • TOOL(Use of software tools,软件工具的使用)——CASE,优秀的调试工具、测试、生成工具等; • SCED(Required development schedule,所需的开发进度)——与设想的进度是否有偏差,如果进度提前的话是比较糟糕的。
中等COCOMO举例 我们来举个例子,假如有一组32 KLOC的、半独立型模式软件产品的开发,中级COCOMO模型的标称工作量是3.0(32)1.12=146人月。此时产品的15个成本驱动因子的标称值都为1。然后我们考虑产品有如下特征时的工作量修正: • (1)若该产品是一个实验系统、或者可行性演示系统,软件错误影响的只是不便于开发人员修正错误(因为还没有提交给用户使用),可以具有很低的可靠性(表2)那么该产品需要的工作量是: • (146人月)*(0.75)= 110 人月
(2)若该产品是一个长期计划的模型(如气象预报模型),运行需要很长的时间,可靠性相对低。大部分的错误只是给用户带来比较低的、易于恢复的损失。此时该产品修正后的工作量估算是:(2)若该产品是一个长期计划的模型(如气象预报模型),运行需要很长的时间,可靠性相对低。大部分的错误只是给用户带来比较低的、易于恢复的损失。此时该产品修正后的工作量估算是: • (146人月)*(0.88)= 128 人月 • (3)若该产品是信息管理系统,需要标称可靠性的软件。而且这类系统如果出现错误,那么这些错误影响是比较大的,但不需要太大的代价就可以修复。那么该产品需要的工作量依然是: • (146人月)*(1.00)= 146 人月
(4)若该系统是一个银行交易系统或者电力分配系统,要求该系统高可靠性。若出现错误,那么错误的影响将是大量的财务损失,此时调整后的工作量是:(4)若该系统是一个银行交易系统或者电力分配系统,要求该系统高可靠性。若出现错误,那么错误的影响将是大量的财务损失,此时调整后的工作量是: • (146人月)*(1.15)= 168 人月 • (5)若该系统是军事指挥控制系统或者核反应堆控制系统等,要求很高的可靠性,软件错误很可能会影响到人员的伤亡。为了获取很高的可靠性,修正后的工作量是: • (146人月)*(1.40)= 204 人月
举例总结 从以上5种情况我们可以发现,产品所需要的可靠性越高所需要的工作量就越大。这是由于软件的开发分为四个主要的步骤,所需的可靠性在这四个步骤所需要做的工作以及这些工作的质量就越高,从而导致整个开发工作量的增加。
4.5 软件项目团队 • 软件项目团队的组建是项目启动阶段的主要工作之一,可以参考COCOMO所估算的FSP来预估项目团队的人数。 • 所需要注意的内容有: • 4.5.1 项目团队组织 • 4.5.2 项目经理选择
4.5.2 项目经理 • 项目经理职责: • 编制计划 • 确定组织 • 知道工作 • 监督和管理
项目经理权力 • 团队组建权 • 资金管理和控制权 • 项目实施权 • 项目内部资源调度权 • 项目宏观调控和微观决策权
项目经理的素质和要求: • 良好的道德素质 • 健康的身体 • 项目管理的理论和实际经验 • 项目所属领域的知识 • 系统的思维能力(哲学) • 娴熟的管理能力 • 积极的创新能力 • 丰富的软件项目管理经验 • 勤奋努力
4.5.3 团队管理与人力资源计划 • 人力资源的配备原则如下: • 开发人月少而精; • 梯队特点:技术水平的高、中、低分布比例最好为1:2:4; • 按软件项目的各个阶段的要求动态的组建成员,不需要一下子招齐。
团队管里重点: • 制定与项目相关的规章制度 • 建立明确的共同目标(猎狗与兔子的故事) • 营造积极进取的团结气氛 • 良好的沟通机制 • 及时发现并解决团队管里重的问题 • 做好团队的稳定工作。