请问要怎么去估算软件开发的费用?
公司准备请别的公司开发一套软件,类似数据搜索引擎方面的,就是在数据库中按各种不同的条件查找数据并返回给请求者。第一版已由这家公司开发好了,之后合作中断了差不多两年,现在由于公司业务方面的需要,又想请这家公司改进和增加更多功能及对数据库的管理、日志分析、计费等等功能。
现在公司领导要求内部先估算一下开发费用成本,好在谈判时有个底。之前没有做过项目开发费用估算方面的工作。
请问要怎么去估算才比较合适呢?谢谢!
[解决办法]
工作分解结构(WorkBreakdownStructureWBS):以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。
无论在项目管理实践中,还是在PMP考试中,工作分解结构(WBS)都是最重要的内容。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。WBS同时也是控制项目变更的重要基础。项目范围是由WBS定义的,所以WBS也是一个项目的综合工具。
WBS具有4个主要用途:
1.WBS是一个描述思路的规划和设计工具。它帮助项目经理和项目团队确定和有效地管理项目的工作。
2.WBS是一个清晰地表示各项目工作之间的相互联系的结构设计工具。
3.WBS是一个展现项目全貌,详细说明为完成项目所必须完成的各项工作的计划工具。
4.WBS定义了里程碑事件,可以向高级管理层和客户报告项目完成情况,作为项目状况的报告工具。
WBS 是面向项目可交付成果的成组的项目元素,这些元素定义和组织该项目的总的工作范围,未在WBS中包括的工作就不属于该项目的范围。WBS每下降一层就代表对项目工作更加详细的定义和描述。项目可交付成果之所以应在项目范围定义过程中进一步被分解为WBS,是因为较好的工作分解可以:
a.防止遗漏项目的可交付成果。
b.帮助项目经理关注项目目标和澄清职责。
c.建立可视化的项目可交付成果,以便估算工作量和分配工作。
d.帮助改进时间、成本和资源估计的准确度。
e.帮助项目团队的建立和获得项目人员的承诺。
f.为绩效测量和项目控制定义一个基准。
g.辅助沟通清晰的工作责任。
h.为其他项目计划的制定建立框架。
i.帮助分析项目的最初风险。
WBS的最低层次的项目可交付成果称为工作包(WorkPackage),具有以下特点:
a.工作包可以分配给另一位项目经理进行计划和执行。
b.工作包可以通过子项目的方式进一步分解为子项目的WBS。
c.工作包可以在制定项目进度计划时,进一步分解为活动。
d.工作包可以由惟一的一个部门或承包商负责。用于在组织之外分包时,称为委托包(CommitmentPackage)。
e.工作包的定义应考虑80小时法则(80-HourRule)或两周法则(Two Week Rule),即任何工作包的完成时间应当不超过80小时。在每个80小时或少于80小时结束时,只报告该工作包是否完成。通过这种定期检查的方法,可以控制项目的变化。
1. 创建WBS的方法
创建WBS是指将复杂的项目分解为一系列明确定义的项目工作并作为随后计划活动的指导文档。创建WBS的方法主要有以下几种:
a.使用指导方针。一些像美国国防部(DOD)的组织,提供MIL-STD之类的指导方针用于创建项目的WBS。
b.类比方法。参考类似项目的WBS创建新项目的WBS。
c.自上而下的方法。从项目的目标开始,逐级分解项目工作,直到参与者满意地认为项目工作已经充分地得到定义。该方法由于可以将项目工作定义在适当的细节水平,对于项目工期、成本和资源需求的估计可以比较准确。
d.自下而上的方法。从详细的任务开始,将识别和认可的项目任务逐级归类到上一层次,直到达到项目的目标。这种方法存在的主要风险是可能不能完全地识别出所有任务或者识别出的任务过于粗略或过于琐碎。
2.创建WBS的基本要求
创建WBS时需要满足以下几点基本要求:
a.某项任务应该在WBS中的一个地方且只应该在WBS中的一个地方出现。
b.WBS中某项任务的内容是其下所有WBS项的总和。
c.一个WBS项只能由一个人责任,即使许多人都可能在其上工作,也只能由一个人负责,其他人只能是参与者。
d.WBS必须与实际工作中的执行方式一致。
e.应让项目团队成员积极参与创建WBS,以确保WBS的一致性。
f.每个WBS项都必须文档化,以确保准确理解已包括和未包括的工作范围。
g.WBS必须在根据范围说明书正常地维护项目工作内容的同时,也能适应无法避免的变更。
3.WBS的表示方式
WBS可以由树形的层次结构图或者行首缩进的表格表示。
在实际应用中,表格形式的WBS应用比较普遍,特别是在项目管理软件中。
4.WBS的分解方式
WBS的分解可以采用多种方式进行,包括:
a.按产品的物理结构分解。
b.按产品或项目的功能分解。
c.按照实施过程分解。
d.按照项目的地域分布分解。
e.按照项目的各个目标分解。
f.按部门分解。
g.按职能分解。
5.创建WBS的过程
创建WBS的过程非常重要,因为在项目分解过程中,项目经理、项目成员和所有参与项目的职能经理都必须考虑该项目的所有方面。制定WBS的过程是:
a.得到范围说明书(ScopeStatement)或工作说明书(StatementofWok,承包子项目时)。
b.召集有关人员,集体讨论所有主要项目工作,确定项目工作分解的方式。
c.分解项目工作。如果有现成的模板,应该尽量利用。
d.画出WBS的层次结构图。WBS较高层次上的一些工作可以定义为子项目或子生命周期阶段。
e.将主要项目可交付成果细分为更小的、易于管理的组分或工作包。工作包必须详细到可以对该工作包进行估算(成本和历时)、安排进度、做出预算、分配负责人员或组织单位。
f.验证上述分解的正确性。如果发现较低层次的项没有必要,则修改组成成分。
g.如果有必要,建立一个编号系统。
h.随着其他计划活动的进行,不断地对WBS更新或修正,直到覆盖所有工作。
检验WBS是否定义完全、项目的所有任务是否都被完全分解可以参考以下标准:
i.每个任务的状态和完成情况是可以量化的。
j.明确定义了每个任务的开始和结束。
k.每个任务都有一个可交付成果。
l.工期易于估算且在可接受期限内。
m.容易估算成本。
n.各项任务是独立的。
5.WBS的使用
对WBS需要建立WBS词典(WBSDictionary)来描述各个工作部分。WBS词典通常包括工作包描.述、进度日期、成本预算和人员分配等信息。对于每个工作包,应尽可能地包括有关工作包的必要的、尽量多的信息。
当WBS与OBS综合使用时,要建立账目编码(Code ofAccount)。账目编码是用于惟一确定项目工作分解结构每一个单元的编码系统。成本和资源被分配到这一编码结构中。
6.WBS的实践经验
最多使用20个层次,多于20层是过度的。对于一些较小的项目4-6层一般就足够了。
WBS中的支路没有必要全都分解到同一层次,即不必把结构强制做成对称的。在任意支路,当达到一个层次时,可以作出所要求准确性的估算,就可以停止了。
[解决办法]
软件费用较难评估,原因主要有软件开发成本难以评估、开发过程风险因素较多、甲乙方信息不对称等原因
可以从两个方面入手:技术难度和开发成本
[解决办法]
技术难度不说了,还是定性评判成分多,一般可以采用专家打分法等
开发成本的估算方法有很多,但应用起来也不是那么容易的,比如功能点法、代码行法等量化指标,当然也是要引入一些定性的判断
[解决办法]
学习,帮顶!
[解决办法]
根据难度估算人力, 大概用的时间@
人力*时间@
加一些余外成本@
[解决办法]
无法确定范围可以先让供应商报人力单价,一般的软件工程师多少钱,架构师多少钱,分析人员多少钱
先按人力工时付费,确定了开发范围之后,再签订固定总价合同~~
[解决办法]
学习~~