华中科技大学软件学院THESCHOOLOFSOFTWAREENGINEERINGOFHUST第6章软件项目开发计划2THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要软件项目分解6.1软件项目估算概念6.2软件项目规模估算6.3软件项目成本估算6.4软件项目进度估算6.5软件项目进度计划6.6本章小结6.7复习思考题6.83THESCHOOLOFSOFTWAREENGINEERINGOFHUST6.1软件项目分解项目分解目的——明确项目所包含的各项工作;项目分解的结果就是WBS(任务分解结构)图项目分解意义——WBS(任务分解结构)图是实施项目、创造最终产品或服务所必须进行的全部活动的一张清单,也是进度计划、人员分配、预算计划的基础项目分解内容——项目分解就是先把复杂的项目逐步分解成一层一层的要素(工作),直到具体明确为止项目分解工具——项目分解的工具是工作分解结构WBS原理,它是一个分级的树型结构,是一个对项目工作由粗到细的分解过程4THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解WBS——WorkBreakdownStructure主要是将一个项目分解成易于管理的几个部分或几个细目,以便确保找出完成项目工作范围所需的所有工作要素它是一种在项目全范围内分解和定义各层次工作包的方法WBS——WorkBreakdownStructure结构层次越往下层则项目组成部分的定义越详细,WBS最后构成一份层次清晰,可以具体作为组织项目实施的工作依据WBS——WorkBreakdownStructure通常是一种面向“成果”的“树”,其最底层是细化后的“可交付成果”,该树组织确定了项目的整个范围。但WBS的形式并不限于“树”状,还有多种形式。5THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解WBS分解类型基于可交付成果的划分–上层一般为可交付成果为导向–下层一般为可交付成果的工作内容基于工作过程的划分–上层按照工作的流程分解–下层按照工作的内容划分6THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解基于可交付成果的划分——WBS举例:信息网络工程信息网络工程结构化布线网络平台建设布线设计采购布线验收方案设计采购网络平台实施验收0级1级2级7THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解基于工作过程的划分——WBS举例:网络系统工程网络系统培训设备准备设备采购设备验收交接网络系统设计布线设计平台设计工程实施布线实施网络集成软件开发软件需求确定系统设计编码测试0级1级2级8THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解WBS表达形式——层次结构图和锯齿列表(清单)图形显示锯齿列表1.0系统1.1元素A1.1.1任务1.1.2任务1.2元素B1.0系统1.1元素A1.2元素B1.1.1任务1.1.2任务9THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解WBS工作编码——由高层向下层用多位码编排,要求每项工作有唯一的编码。–1000–110011101111111211131120112111221123–120010THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解WBS工作编码举例:企业经营评价系统项目网络1430软件1410硬件1420系统开发1400测试1500实施1600系统设计1300问题界定1100企业经营评价系统项目1000系统分析1200文档1440包装软件1411培训1610验收1630系统转换1620定制软件14120级1级2级3级11THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解项目工作分解结构表项目名称:项目负责人:单位名称:制表日期:工作分解结构任务编码任务名称主要活动描述负责人1000110012001x001x101x111x12项目负责人审核意见:签名:日期:12THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解WBS分解的一般步骤总项目子项目或主体工作任务主要工作任务次要工作任务小工作任务或工作元素13THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解WBS分解注意事项WBS分解的规模和数量因项目而异收集与项目相关的所有信息参看一下类似的项目的WBS,与相关人员讨论可以参照相关模板最低层是可控的和可管理的,但是避免不必要的过细,最好不要超过7层,软件项目推荐分解到40小时的任务每个Workpackage必须有一个提交物14THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解定义任务完成的标准每个WBS必须有利于责任分配可以准备WBS的字典最后与相关人员进行评审15THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目分解案例讨论假如您要在自己的家里举行一次生日宴会,请按WBS为你制定一份工作的分解计划?假如贵公司进行成立10周年庆典活动,如果请你负责此次活动,你将如何分析此次活动所应包含的工作?16THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要软件项目分解6.1软件项目估算概念6.2软件项目规模估算6.3软件项目成本估算6.4软件项目进度估算6.5软件项目进度计划6.6本章小结6.7复习思考题6.817THESCHOOLOFSOFTWAREENGINEERINGOFHUST6.2软件项目估算概念软件项目估算——是指预测构造软件项目所需要的工作量以及任务经历时间的过程。主要包括三个方面:规模(即工作量)的估算确定每个软件功能所必须执行的一系列软件工程任务成本的估算确定完成软件项目规模相应付出的代价进度的估算估计任务的持续时间,即历时估计18THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目估算概念估算方法规模估算方法代码行(LOC,LinesofCode)估算法、功能点(FP,FunctionPoints)估算法和计划评审技术(PERT,ProgramEvaluationandReviewTechnique)估算法成本估算方法自顶向下(类比)估算法、自下而上估算法、参数估算法、专家估算法、猜测估算法等进度估算方法基于规模的进度估算、工程评价技术、关键路径法、专家估算方法、类推估算方法、模拟估算方法、进度表估算方法、基于承诺的进度估算方法和Jones的一阶估算准则等19THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要软件项目分解6.1软件项目估算概念6.2软件项目规模估算6.3软件项目成本估算6.4软件项目进度估算6.5软件项目进度计划6.6本章小结6.7复习思考题6.820THESCHOOLOFSOFTWAREENGINEERINGOFHUST6.3软件项目规模估算估算的步骤在技术允许的条件下,应从最详细的工作分解结构开始精确定义度量的标准估计底层每一模块的规模,汇总已得到总体的估算适当考虑偶然因素的影响21THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目规模估算LOC估算法代码行可以分为无注释的源代码行(NCLOC,Non-CommentedSourceLinesOfCode)和注释的源代码行(CLOC:CommentedSourceLinesOfCode),源代码的总行数LOC即为NCLOC与CLOC之和FP估算法功能点度量是在需求分析阶段基于系统功能的一种规模估计方法,该方法通过研究初始应用需求来确定各种输入、输出、查询、外部文件和内部文件的数目,从而确定功能点数量22THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目规模估算规模的单位–LOC(LinesofCode)–源代码程序长度的测量–FP(FunctionPoint)–用系统的功能数量来测量–人月–人天–人年23THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要软件项目分解6.1软件项目估算概念6.2软件项目规模估算6.3软件项目成本估算6.4软件项目进度估算6.5软件项目进度计划6.6本章小结6.7复习思考题6.824THESCHOOLOFSOFTWAREENGINEERINGOFHUST6.4软件项目成本估算成本估算方法算法模型专家判定类比自顶向下自底向上25THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目成本估算成本估算模型——静态模型和动态模型–静态模型用一个唯一的变量(如程序规模)作为初始元素来计算所有其他变量(如成本、时间),且所用计算公式的形式对于所有变量都是相同的–动态模型没有类似静态模型中的惟一基础变量,所有变量都是相互依存的–已有的模型1)Farr-Zagorski模型;2)Price-S模型;3)Walston-Felix模型;4)Putnam模型;5)COCOMO模型26THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目成本估算COCOMOⅡ模型——在现代软件工程研究结果的基础上,将未来软件市场划分为基础软件、系统集成、程序自动化生成、应用集成、最终用户编程五个部分,COCOMOII通过三个生命周期模型(估算早期原型工作量的应用组合模型,早期设计模型,后体系结构模型)支持上述的五种软件项目。27THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目成本估算Putnam模型——Putnam模型是Putnam于1978在来自美国计算机系统指挥部的200多个大型项目(项目的工作量在30~1000人年之间)数据的基础上推导出来的一种动态多变量模型。Putnam模型假设软件项目的工作量分布类似于Rayleigh曲线。Putnam模型包含两个方程:软件方程和人力增加方程。1433tSCE28THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目成本估算实用软件估算模型——是一种自下而上和参数法的结合模型,步骤如下:–对任务进行分解–估算每个任务i的最大值Max、最小值Min、最可能值Avg,Ei=(Max+4Avg+Min)/6(或者使用唯一的估计值:最可能值)–直接成本=E1+E2+……+Ei+……+En–项目总估算成本=直接成本+间接成本–项目总报价=项目总估算成本+风险利润–风险利润=利润+风险基金+税29THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目成本估算直接成本–直接成本=开发成本+管理成本+质量成本–直接成本=规模*人力成本参数–例如:人力成本参数=2万/人月,30人月的项目的直接成本是60万间接成本–间接成本=直接成本*间接成本系数–间接成本=规模*人力成本参数*间接成本系数–例如:间接成本系数=1.5--330THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目成本估算成本估算步骤建立目标规划需要的数据和资源确定软件需求拟定可行的细节运用多种独立的技术和原始资料比较并迭代各个估算值随访跟踪31THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目成本估算成本模型的评价准则定义正确性客观性构造性细节稳定性范围易用性可预期性节约性32THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要软件项目分解6.1软件项目估算概念6.2软件项目规模估算6.3软件项目