目录1.目的...............................................................................................................22.范围...............................................................................................................23.估算过程.......................................................................................................23.1规模和工作量估算.......................................................................................33.1.1单元复杂度定义............................................................................33.1.2项目的单元分解............................................................................33.1.3规模和工作量估算.........................................................................33.1.4项目整体开发工作量估计................................................................43.2进度估算.......................................................................................................43.3风险的估算...................................................................................................53.4关键计算机资源估算...................................................................................63.5项目成本及报价参见〈项目估算表〉......................................................63.5.1人力成本...........................................................................................63.5.2非人力成本.......................................................................................63.5.3项目成本...........................................................................................63.5.4项目报价...........................................................................................64.估算方法.......................................................................................................65.项目估算评审...............................................................................................76.参考资料.......................................................................................................71.目的软件估算的目的是通过对软件项目管理和开发工作量的估算,确认项目开发的成本,开发周期以作为项目投标、立项的依据.对项目的估算通常还包括对软件大小(Size)、软件项目风险和关键计算机资源的估算等.对软件的估算很难以精确或准确来衡量,相反以其合理性来评估.项目的估算通常和市场价格、商务目标、项目经验和开发成员的工作弹性相关并是上述方面的综合反映.2.范围软件项目的估算不是一次估算过程.通常会对项目估算多次.例如在商务过程中,通过估算进行报价和投标;在项目计划过程中,通过估算以确定项目开发计划;在里程碑评审和变更过程,通过估算和总结调整项目计划.3.估算过程开始估计软件规模和工作量估计成本写入项目开发计划估计风险和关键计算机资源估计项目进度3.1规模和工作量估算在估算过程中,根据项目的类型、技术、语言和其他属性,尽可能地参照以往项目的数据,基于以往项目的历史数据,对指定项目的程序单元进行划分和确认。如果没有可供参照的历史数据,使用Delphi等方法进行估算。3.1.1单元复杂度定义软件项目经理根据以下表格并结合项目的历史数据,确定本项目的单元复杂度标准。(下表列出了制定复杂度标准时参考的因素,具体到各项目,需要软件项目经理具体定义各种类型的标准以及LOC、工作量的范围。)复杂度单元复杂度标准LOC工作量(人-天)简单产品因素(产品复杂性、数据库规模、软件可靠性)人员因素(开发人员能力、工作经验、工具的使用经验)项目因素(使用现代程序设计技术经验)5OO--15001-------5中等1600--40006--------10复杂4100--700010------15其他大于7000大于153.1.2项目的单元分解软件项目经理组织相关人员参照定义的标准进行系统分解,以确认系统的程序单元以及程序单元的复杂度。程序单元估算表ID名称简要说明复杂度分类C++C++3.1.3规模和工作量估算在确认完成简单、中等和复杂后,软件项目经理可以参照历史数据或用Delphi法对工作量或规模进行估算,并把结果登记到程序单元估算表中。(在用Delphi法估算时,各类估算值的范围应在单元复杂度标准定义的范围内)如下表:程序单元估算表ID名称简要说明复杂度分类LOC工作量(人天)3.1.4项目整体开发工作量估计软件项目经理组织相关人员估计项目开发过程中各开发阶段的相对工作量和总工作量(可参照以前项目的历史数据,否则需要用用Delphi法估算)。工作分布工作量分配比例(%)工作量(人-天)需求阶段策划阶段设计阶段实现阶段测试阶段交付阶段评审培训项目管理SQASCM合计工作量分配比例应依据以往项目经验和项目实际情况进行调整并在项目开发过程中跟踪和在项目结束时进行总结.前六个阶段的工作量主要指完成实际的开发任务所需的工作量;质量保证工作量包括实施检查、填写各种工作记录等活动;配置管理工作量包括配置管理的库管理活动、状态报告、填写各种记录等活动;项目管理指软件项目经理的管理活动如任务跟踪、组织交流等;评审包括各种技术评审、计划评审和里程碑评审等;培训包括项目管理和项目技术等方面培训。3.2进度估算项目进度估算应基于以往相似项目的时间进度进行估计。具体步骤为:1.创建一个MSProject2000文件。2.设置项目工作日历。3.到甘特图视图,基于程序单元估算表,列出项目所有的任务/活动。4.定义任务依赖性。5.设置所有的约束,包括:a.确定的里程碑日期;b.关键资源获取日期(人力资源/硬件/软件)。6.到资源页面,输入对所有相关项目相关组来说,可获得的资源。7.到甘特图视图,分配任务资源。8.设置任务周期,周期基于以下考虑:a.基于系统大小和工作量估计。b.根据指定资源的工作效率,调整任务周期。c.在工作周期中,不要包括假期。d.在里程碑周期内,根据活动和时间分割,设置合理的周期。e.为不可预知的问题,预留15%的余量9.重复步骤3,4,5,6,7,8,直到任务,资源和周期合理分配。3.3风险的估算1识别风险项(可利用风险项检查指南)和对风险进行分析根据项目的情况识别项目的风险项,并对每一项进行分析。例如序号风险项风险描述风险发生概率风险后果(质量、进度、成本方面)风险损失(万元)1人员流动在项目实施中会发生一名主要开发人员调动85拖延项目进度违反合同923452确定风险优先级根据上述列表“最主要的5个”风险项,根据风险大小确定优先级。确定风险损失与等级对应表,例如:损失等级12345678910损失(万元)22--44--77--1010--1313--1515--1818--2525--3030根据风险发生概率和损失对应等级确定优先级,例如:序号风险名称发生概率(%)损失对应等级风险系数1人员流动8543.423453建立风险排序表和制定相应的措施进行预防根据建立的风险排序表,制定相应的措施来降低、规避和预防风险的发生。风险排序风险等级风险项描述降低风险策略1234备注:出现率-高、中、低可根据计算的系数分类,如1--3为低,4-7为中,7-10为高3.4关键计算机资源估算对计算机资源的估算可和工作量、进度估算并行进行。估计程序如下:估计系统的大小,包括数据类型和存储在数据库中数据记录的数量,同时访问系统的用户数量,网络传输的数据量。计算存储在数据库中的数据大小,每分钟执行的请求和复杂度。定义系统中使用的协议,计算网络的带宽。计算数据库服务器的性能和其他服务器的性能,定义操作系统和数据库系统。定义应用服务器和其他附件计算桌面计算机的性能,定义开发工具。定义硬件服务器,桌面计算机和开发计算机。基于以上估计步骤,填写计算机资源估算表(参见《项目估算表》)。需要特别指出的是,关键计算机资源的估算是指项目必须满足的针对计算机资源的要求.例如,软件的规模不能超过500MB,系统响应时间不能低于2秒/页,等.对于关键计算机资源的要求应于计算机资源估算表中记录.3.5项目成本及报价参见〈项目估算表〉3.5.1人力成本项目的人力成本是指由于各种人员的参与而计入的成本.可根据对总工作量的估算乘以相应的小时成本得出:人力成本=(工作量x小时成本)3.5.2非人力成本非人力成本主要包括和项目相关的成本,如软件,硬件,出差及办公费用等.3.5.3项目成本项目成本是人力成本和非人力成本的总和:项目成本=人力成本+非人力成本3.5.4项目报价项目报价则是以项目成本为基础加上合理的利润.需要指出的是项目的报价通常受客户的承受力、市场价格以及项目竞争者报价制约,应予综合考虑.4.估算方法针对项目的需要,在不同阶段可采取不同的估算方法.如单人估算和多人Delphi估算法等.通常建议采用由3-5人组成估算小组,每人单独估算并填写《Delphi估算表》,经讨论后汇总的Delphi估算法.Delphi估算法是工业界广泛采用的基于个人经验汇总的估算方法.其基本方法为:1.软件项目经理选择具有相关经验的估算人员3-5人组成估算小组,并确认组长.2.软件项目经理准备和估算相关的材料.3.软件项目经理召开会议,确认待估算的条目(Item),并分发給估算小组成员.4.估算小组成员进行个人独立估算,并填写Delphi个人估算表.5.估算小组长汇总个人估算于Delphi估算总结6.估算小组长召开会议组织讨论和汇总,对于估算偏差大于30%的条目经讨论后由小组成员重新估算.7.估算小组长汇总最终估算并报软件项目经理8.软件项目经理