一个成功的软件项目首先要有一个好的起点,也就是一个合理的项目计划;一个好的项目计划,离不开一个准确的、可信的、客观的项目估算数据作为基础。如何提高估算的准确性,如何利用项目估算的数据来制定项目计划,本文就将带领大家学习、理解软件项目估算的一些最佳实践。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
为什么要对项目进行估算
对于庞大的、多变的软件项目来说有着太多的不确定性。之所以要先制定项目计划,目的就是为了让项目更加可控。如果项目的计划缺乏数据进行支持,或者根本不进行估算,只凭项目管理人员的经验进行管理,那么项目最终就会变成软件项目常见的“三拍”现象:“首先公司领导拍拍某个项目经理的脑袋,说你来负责这个项目;项目经理拍拍胸脯说没问题;最后项目失败的时候项目经理就只能拍拍屁股走人”。
当然,这只是个玩笑。不过由此可见项目估算是项目管理人员深入了解项目的第一步,做到“知己知彼,才能百战不殆”。
常用的软件估算方法
软件可以通过主观和客观两种方法对其进行估算。
主观的估算方法可以通过召集项目团队成员,或者邀请各方面的专家,共同对某个项目的属性进行评估。参与评估的每个人都要单独进行估算,如果发现大家对某个项目属性估算的结果存在较大偏差,那么就需要做进一步的讨论,直到取得共识为止。对个别特殊属性进行主观估算时,一定要有直接干系人的参与,例如:对某个文档工作量进行估算时,最好该文档的负责人参与估算,因为他才是最终的执行人。
客观的估算方法是利用公司提供的各种度量数据进行估算,例如:组织级的生产率,或者其他项目的度量数据。本文主要讲解项目管理人员如何通过客观的方法对项目进行估算。
项目的哪些属性可以进行估算
软件项目的属性有很多,建议至少以下属性要在项目计划时对其进行估算:
1、 项目规模
2、 项目工作量
3、 项目所需资源
4、 项目各阶段工作量
5、 项目成本
Ø 如何对项目规模进行估算
对项目规模进行估算是为了将项目的范围进行量化,项目规模的估算是整个软件估算中最核心、最基础的环节,也是整个估算的第一步。
软件项目的规模可以使用功能点估算法和代码行估算法两种方式,但是作为项目初期阶段,建议使用功能点法进行估算会比较合理。具体的功能点估算方法可以参考我之前在ITPUB上发表的相关文章。
Ø 如何对项目工作量进行估算
在项目规模的基础上,可以利用组织级生产率得到项目总的工作量。例如:一个公司组织级生产率如下图所示,在2008年中期时,该组织每开发一个功能点需要花费1.5个人/天的工作量。假如该公司某项目有200个功能点,那么该项目的工作量就可以通过以下公式计算出来:
项目工作量= 200 * 1.5 = 300 人/天
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="Chart_x0020_2" style="VISIBILITY: visible; WIDTH: 433.5pt; HEIGHT: 192pt" o:gfxdata="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
" type="#_x0000_t75" o:spid="_x0000_i1025"><imagedata cropbottom="-68f" o:title="" src="file:///D:%5CDOCUME~1%5Czhangjin%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image002.png"></imagedata><lock aspectratio="f" v:ext="edit"></lock></shape>
Ø 如何对项目所需资源、各阶段工作量进行估算
对这些项目属性进行估算的主要方法是通过与组织级度量库中的历史数据进行对比,找到相同规模的历史项目,参考其数据,根据本项目的特点对相关属性进行估算。假如本项目与公司之前的某项目A规模大体相当,项目A历史数据如表1和表2所示:
表1-项目A使用资源数
人力资源估算
|
设计人员
|
2人
|
需求人员
|
1人
|
开发人员
|
4人
|
测试人员
|
3人
|
表2-项目A生命周期各阶段工作量分布
瀑布模型生命周期各阶段
|
立项阶段
|
2.00%
|
需求阶段
|
5.00%
|
计划阶段
|
6.00%
|
设计阶段
|
22.00%
|
开发阶段
|
22.00%
|
系统测试阶段
|
25.00%
|
用户验收阶段
|
11.00%
|
结项阶段
|
7.00%
|
两个项目的规模相当,这是我们进行估算的依据,根据之前对项目总工作量的估算(300人/天),那么就可以得到本项目各个阶段的工作量分布,如表3所示:
表3-本项目各生命周期工作量分布
瀑布模型生命周期各阶段
|
人/天
|
立项阶段
|
2.00%
|
6
|
需求阶段
|
5.00%
|
15
|
计划阶段
|
6.00%
|
18
|
设计阶段
|
22.00%
|
66
|
开发阶段
|
22.00%
|
66
|
系统测试阶段
|
25.00%
|
75
|
用户验收阶段
|
11.00%
|
33
|
结项阶段
|
7.00%
|
21
|
Ø 如何对项目工期进行估算
假设本项目采用瀑布式的开发模型,并且所需资源与组织级度量库中的历史项目A相同,根据表3对各个生命周期阶段工作量的估算,以及表1对各种资源的估算,那么通过表4的计算就可以得到完成本项目所需要的时间。
假如每月按照21个工作日进行计算,那么本项目估计5.82个月后可以结束。
表4-对项目周期的估算
生命周期各阶段
|
工时数
人/天
|
参与角色
|
参与人数
|
天数
|
立项阶段
|
6
|
PM
|
1
|
6
|
需求阶段
|
15
|
需求人员
|
1
|
15
|
计划阶段
|
18
|
PM
|
1
|
18
|
设计阶段
|
66
|
设计人员
|
2
|
33
|
开发阶段
|
66
|
开发人员
|
4
|
16.5
|
系统测试阶段
|
75
|
测试人员
|
3
|
25
|
用户验收阶段
|
33
|
测试人员 需求人员 PM
|
5
|
6.6
|
结项阶段
|
21
|
全体成员
|
10
|
2.1
|
项目周期(天)
|
122.2
|
Ø 如何估算项目的成本
假如本项目所使用的资源与项目A相同,那么就可以参考组织度量库中2008年各种资源的平均成本,如下图所示:
<shape id="Chart_x0020_4" style="VISIBILITY: visible; WIDTH: 361.5pt; HEIGHT: 216.75pt" o:gfxdata="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
" type="#_x0000_t75" o:spid="_x0000_i1026"><imagedata o:title="" src="file:///D:%5CDOCUME~1%5Czhangjin%5CLOCALS~1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image004.png"></imagedata><lock aspectratio="f" v:ext="edit"></lock></shape>
经过对项目周期的估算,可以得知本项目大概需要5.82个月的时间。基于以上数据就可以通过表5来对项目的成本进行估算,其结果如下所示:
<sp
分享到:
相关推荐
Kubernetes分布式部署教材,不要因为文档名称是英文的,其实内容全是中文版,而且是非常好的pdf文档。
插件名称:Add-nofollow-to-XFN 插件功能:在WordPress后台的"链接" - "添加新链接"中的"链接关系(XFN)"中增加一个"nofollow"选项,安装插件后效果如下: 安装方法: 下载插件压缩包,解压后将 "Add-nofollow-to...
这个压缩包名为"Follow-me-Learning-C.zip",其命名方式寓意着引导和陪伴,暗示了这份资源旨在帮助用户逐步跟进C语言的学习过程。通过"Follow_ Follow"的标签,我们可以理解这份资料注重的是连续性和渐进式的学习...
follow-me-install-kubernetes-cluster:和我一步步部署kubernetes
follow-me-car
"寻迹小车 FollowMe 项目"是一个基于C语言编程的智能小车开发项目,旨在实现小车能够自动追踪预设路径或者跟随特定目标移动。在这个项目中,开发者需要掌握C语言的基础语法以及一些高级特性,同时理解嵌入式系统的...
Followme-PlayBox PlayBox基于音乐播放器守护进程的FollowMe系统java 这个程序需要在你的树莓 B+ (PlayBox) 上安装 mpd 和 mpc 安装 mpd: apt-get install mpd mpc 为本地音乐配置文件:在 /etc/mpd.conf 中将...
Follow Me是一个简单的耳部训练应用程序,它会在指板/键盘/您拥有的功能上播放您必须遵循的间隔。
在软件开发方面,"FollowMe"功能意味着小车需要具备目标识别和追踪能力。这通常涉及到编程语言的学习,如Python或C/C++,以及相关库和框架的使用,如Arduino IDE或MicroPython。学习者将学习如何编写代码来处理...
10. 清理集群10. 清理集群清理 Node 节点清理 Master 节点清理 etcd 集群清理 Node 节点停相关进程:$ sudo systemctl
LL1语法分析c++实现-first集-follow集-分析表-分析栈.doc
资源分类:Python库 所属语言:Python 资源全名:ligo-followup-advocate-1.1.dev1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
下面我们将详细探讨First集、Follow集以及如何计算它们,并结合“First-Follow-FIRSTVT-LASTVT.rar”中的文件来理解这一过程。 First集是文法中非终结符或起始符号可能产生的符号的第一个符号集合。对于非终结符A,...
标题中的"button-follow-the-mouse.zip_Follow_ Follow"似乎是一个关于编程的项目,特别是与图形用户界面(GUI)交互有关。在这个项目中,我们关注的是一个按钮元素,它的行为被编程为根据鼠标的移动而改变位置。...
nofollow是链接的HTML标签属性,站长和SEO人员可以通过这个属性来告诉搜索引擎不要追踪此网页上的链接,或不要追踪某个指定的链接, 这些或这个链接并不是本网站所推荐的...链接一旦使用nofollow之后,就不会导出权重了
npm install -g follow-redirect-url 为您的项目安装: npm install -save follow-redirect-url 回到顶部 用法 CLI: follow https://bit.ly/2X7gCIT 模块: 第一个参数是url字符串。 'use strict' ; const...
"first-follow-set--LR-LALR...rar_Follow_ Follow_LALR_LR分析器_first"这个压缩包文件聚焦于一种特定的解析技术——LR分析器,特别是LR(0)和LALR(1)分析器,以及它们相关的first集和follow集概念。这些是构建自底...
If you're looking for solid, easy-to-follow advice on estimation, requirements gathering, managing change, and more, you can stop now: this is the book for you." --Scott Berkun, Author of The Art of ...