1、软件项目管理,Module: Software Project Planning 软件项目计划,软件项目计划的重要性,体现了对客户需求的理解为项目管理和运作提供可行的计划是有条不紊地开展软件项目活动的基础跟踪、监督和评审计划执行情况的依据是项目相关个人和组织的明确承诺,计划!计划!再计划!,常见错误,过于乐观的计划在压力下放弃计划在项目过程中不细化计划、不及时更新计划,不监控计划的执行缺乏足够的风险管理缺乏质量计划项目估算时遗漏必要的任务前期活动不合要求“我们没有时间做设计”,或为了“加快进度”而鲁莽编码,本节内容,项目计划概述软件估算进度安排和人员分配小结,软件项目计划,定义软件开发过程软件
2、估算安排进度,确定里程碑分配资源,商讨承诺支持计划质量计划、风险管理计划、沟通计划、配置计划、组织计划、采购计划,项目规划,定义WBS,定义活动,定义资源,活动排序,活动工期估算,质量计划,沟通计划,风险计划,配置计划,采购计划,支持计划,需求基线,成本估算,进度安排,人员分配,项目计划,软件项目规划,定义WBS,定义活动,定义资源,活动排序,活动工期估算,质量计划,沟通计划,风险计划,配置计划,采购计划,支持计划,需求基线,成本估算,进度安排,人员分配,项目计划,定义软件过程,软件估算,项目计划的演化,项目计划,计划评审,计划基线,计划变更细化,计划核准,计划分发,在项目实施过程中,软件项目
3、计划大纲,1.引言 1.1目的1.2 背景1.3 参考文献2. 计划和费用项目/产品的输入、输出、所需资源;组织接口和技术接口;里程碑;开发计划、质量计划、配置计划、采购计划、测试计划、培训计划、安装计划、沟通管理计划、风险计划、度量计划每个计划分为多个阶段,列出每个阶段名称和起止日期,应完成的工作、应递交的文档和产品,应达到的质量要求、和优先级,阶段所需资源,阶段间的制约关系开发工作量预估3标准和方法 开发方法,分析、设计、测试和文档采用的标准和指南,开发用的工具、技术和可重用组件,项目计划工具MS Project,本节内容,项目计划概述软件估算进度安排和人员分配小结,为什么要进行估算,进行
4、项目计划跟踪项目向客户报价过程和能力改进,估算内容,规模工作量进度关键计算机资源成本,估算精确度带来的影响,对项目进度和费用等的损害程度,100%,100%, 100%,Target as a Percentage of Nominal Estimate,Overestimation,Underestimation,CostEffortSchedule,估算准确性的影响因素,项目复杂性项目规模结构不确定性,即需求被确定的程度,功能被分解的容易程度等历史信息的可用性,历史数据对估算准确度的影响,0%,140%,-140%,.,.,.,.,.,.,.,.,.,.,.,.,. .,. . . .,.
5、,. .,.,.,.,.,.,.,. .,.,.,.,. . . .,. .,.,. . . . .,.,.,.,. .,.,.,.,.,.,. . .,. . . . .,.,. .,.,.,.,. .,.,无历史数据,有历史数据,(工作量 = 人时),(+20% -145%,CMM L1&L2),(-20% +20%,CMM L3),.,. .,.,.,.,.,.,.,.,. .,.,.,.,.,.,.,.,.,.,.,.,.,.,.,. . . . . .,. . . . . .,. .,.,. . .,. . .,. . . .,. . . .,. . . . .,. . . . .,
6、. . . . .,. . . . . .,. . . . .,. . . . . .,. . . . . .,. . . . .,. . .,. . .,. . . . .,. . . . .,. . . .,. . . . . .,. . . . . .,. . . . . .,.,. .,.,.,.,.,.,. . . . .,. . . . . .,. . . . . .,.,. .,.,. . . . . .,.,.,. .,.,.,. .,.,.,.,.,.,. . .,.,. . . . .,估算精确性的收敛图,4x2xX0.5x0.25x,Time,Project cost,(
7、effort and size),估算收敛举例,初始产品概念阶段 25-400人月 vs. 100人月已批准的产品概念阶段 50-200人月 vs. 100人月需求说明书阶段 90-200人月 vs. 135人月产品设计说明书阶段 145-180人月vs. 145人月结束阶段 170人月注意:不要采用单点估算,常用的估算方法,工程方法类似项目直接比较估算工作量和进度使用生产率数据,根据规模估算工作量使用经验模型 d = f (Vi),根据规模估算工作量和进度非工程方法专家的判断Parkinson 法则从价格出发,使用生产率数据,工作量估算值= 项目规模/生产率举例:10000行/(100行/人
8、天)=100人天生产率不能简单地比较规模的估算方法会不同编程语言应用领域过程资源工程师质量,使用经验模型,使用经验模型是目前最佳的估算方法经验模型的经验数据是从有限的一些项目样本中得到的IBM 经验模型Putnam 经验模型COCOMO 经验模型,经验模型,软件规模KLOC、FP,成本时间工作量,如 E=5.2 * (KLOC)0.91,常用的估算步骤,需求说明,概念设计,各模块的规模估算,总的规模估算,工作量估算,生产率数据经验模型,因子,进度估算,注:工作量和进度常常同时估算,两者是非线性关系,成本估算,估算举例(需求说明),开发一个软件工程网站:栏目资源:需求、设计、测试、过程和工具讨论
9、组网上咨询资料上传搜索引擎会员管理采用微软平台,估算举例(概念设计),语言:ASP + HTML数据库:SQL Server模块:需求栏目 设计栏目测试栏目 工具栏目 讨论组 网上咨询搜索引擎 会员管理,估算举例(规模估算),基于类似的两个项目,做出以下估算,合计,估算举例(工作量估算),估算举例(进度估算),二个工程师负责做此项目,估算技巧,分解估算(过程分解和模块分解)和的误差大于误差的和给出估计一个范围(如最好情况下)或一个可信赖程度(如90%的把握)。 期望值 =(乐观值+4*一般值+悲观值)/ 6 避免无准备的估算留出估算的时间使用以前项目的数据,规模估算,LOC 代码行FP 功能点
10、需求的数量文档的页数,FP估算,计算FP,FP 总计数( 0.65 0.01SUM ( Fi ) ) 总计数是所有加权计数项的和Fi(i1.14)是复杂性校正值, Fi的取值0.5:0 没有影响 1 偶然的2 适中的 3 普通的4 重要的 5 极重要的,计算复杂性校正值Fi,1. 系统是否需要可靠的备份和恢复?2. 是否需要数据通信?3. 是否有分布处理的功能?4. 是否性能成为关键?5. 系统是否运行在既存的高度实用化的操作环境中?6. 系统是否需要联机数据项?7. 联机数据项是否需要建立多重窗口显示和操作,以处理输入处理?8. 主文件是否联机更新?9. 输入、输出、文件、查询是否复杂?10
11、. 内部处理过程是否复杂?11. 程序代码是否可复用?12. 设计中是否包括了转移和安装?13. 系统是否设计成可以重复安装在不同机构中?14. 系统是否设计成易修改和易使用?,经验模型,IBM估算模型Putnam SLIMCOCOMOESTIMACSFASTMAINSTAYPRICESPQR 等,经验模型,软件规模,成本、时间、工作量,COCOMO 经验模型,COnstructive COst MOdel结构型成本估算模型是一种精确、易于使用的成本估算方法。1981年基于63个项目的分析基础上提出第一个版本 COCOMO81最新版本COCOMO II,COCOMO81,COCOMO81按其详
12、细程度分成三级: 基本COCOMO模型 中间COCOMO模型 详细COCOMO模型,基本COCOMO模型,基本COCOMO模型是静态单变量模型,用源代码行数(LOC) 为自变量的经验函数计算软件开发工作量,中间COCOMO模型,中间COCOMO模型在用LOC为自变量的函数计算软件开发工作量(称为名义工作量)的基础上,用涉及产品、硬件、人员、项目等方面的15种影响因素调整工作量估算。,(KDSI),中间COCOMO模型的名义工作量公式,15种影响因素,中间COCOMO模型举例,一个规模为10KDSI的商用微机远程通信的嵌入型软件,使用中间COCOMO模型进行成本估算。程序名义工作量 MM 2.8
13、 (10)1.20 44.38(MM)程序实际工作量 MM 44.38 44.381.17 51.5(MM),中间COCOMO模型举例,中间COCOMO模型举例,开发所用时间 TDEV 2.5 (51.5)0.32 8.9 (月)如果分析员与程序员的工资都按每月6,000美元计算,则该项目的开发人员的工资总额为 51.56,000 309,000 (美元)做为对比,现在用IBM模型计算: PM 5.2 (10)0.91 42.27 (人月) D 4.1 (10)0.38 9.84 (月) S 0.54 (42.27)0.60 5.1 (人),详细COCOMO模型,详细COCOMO模型包括中间C
14、OCOMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。例如,关于软件可靠性(RELY)要求的工作量因素分级表(子系统层),如表所示。,软件可靠性工作量因素分级表(子系统层),COCOMO II,考虑到需求的不稳定性有三种模型:应用组成模型早期设计模型结构后期模型,COCOMO II 17个影响因子 Fi,产品因素 软件可靠性 数据库规模产品复杂性文档产品复用性计算机因素 执行时间限制存储限制平台稳定性,人员因素分析员能力应用领域经验 程序员能力平台经验语言使用经验人员持续性项目因素使用软件工具多地点开发工期,COCOMO II
15、工具演示,正确使用模型,了解各种模型的原理和优缺点,根据本企业的具体情况来使用模型采用您自已的历史数据调整模型,减少偏差使用多种估算方法可借助工具,本节内容,项目计划概述软件估算进度安排和人员分配小结,软件项目规划,定义WBS,定义活动,定义资源,活动排序,活动工期估算,质量计划,沟通计划,风险计划,配置计划,采购计划,支持计划,需求基线,成本估算,进度安排,人员分配,项目计划,定义软件过程,软件估算,进度安排,建立PERT图或网络图,确定关键路径,即决定项目开发时间的任务链。根据每个活动的工期估算值设置时间窗口(将节假日等非工作日除外)。 考虑时间缓冲,按工期的百分比或固定时间。对活动时序关
16、系设定Lead和Lag。备注:进度安排和人员分配常常同时进行,相互影响,PERT图例子,关键路径,(0,0),(0,3),(0,2),(3,5),(2,8),(3,7),(7,9),(7,11),(15,15),(11,15),项目计划网络图,项目计划Gantt图,项目计划工具MS Project演示,建立软件过程WBS活动间的时序关系时间估算进度安排浏览多种进度视图Gantt网络图日历图设置和修改工作时间,如何面对交付期限的巨大压力,进度压力是软件项目的通病理想与事实的差距理想情况下,按估算方法科学地进行估算事实上,你的上司、客户、市场人员可能按照主观意愿迫使你压缩计划进度半数左右的项目在需
17、求调查与分析完成之前便制定了进度计划,并且不留出足够的备用时间,进度压力与计划偏离的恶性循环,更大的进度压力,更重的负担,更多的错误,更加偏离进度计划,战胜进度压力的方法,提高工作质量和效率基于风险管理的增量式开发,优先级高的需求先实现合适的过程模型,如快速原型、轻载过程软件复用、购买和分包并行开发 (返工的风险会增加)选择精兵强将,组成一个小型开发小组做好充分的需求分析和设计,保证用户充分介入,避免大量返工有原则的谈判,进度风险,开发计划工期,延期风险,一般进度,进度压缩后,可能的最短进度,两个事实:存在一个可能的最短进度,而且不可能突破它当把进度缩短得比普通进度短时,费用将迅速上涨,按进度
18、日期完成的可能性,预定完成日期,费用,预定完成日期,人力资源分配原则,考虑人员的技术水平、专业、人数考虑在开发过程各阶段中对各种人员的需要尽早落实责任减少接口责权均衡,人力资源需求分布图,恒定人力配备,资源负荷和资源平衡,资源负荷是指在项目特定时间段现有计划中个体资源的负荷资源平衡是指通过资源调配、延迟任务等方式来解决资源冲突问题,项目计划工具MS Project演示(续),设置项目资源分配资源浏览多种资源视图设置和修改个人的工作时间,本节内容,项目计划概述软件估算进度安排和人员分配小结,项目规划的几点经验,计划安排要符合实际,留有余地明确的里程碑严格控制项目范围重视前期的评审,提早测试业务部门和用户的全程参与演化式增量式开发使用软件工具辅助项目规划等,讨论:项目计划,如何进行限时开发?如何对待加班?项目进度延后了,应采取何种措施?,讨论:项目计划案例,进度谈判案例进度控制案例,练习:项目计划,计划开发一个学生在线选课系统,估计10000行代码,5个月开发周期,从5/1开始开发,学校希望9/1学生能正式使用本系统。请在软件过程设计的基础上,采用MS Project做出本项目的计划,内容包括:递代活动子活动活动间的关系活动的起止时间活动的执行者活动的成果,即文档或代码等,