最佳实践:怎样评估软件开发时间
旺道一键推广 -> 最新发布

图片

作者 | DDI Development
译者 | 王强
策划 | 王一鹏

据统计,有差不多 70% 的项目都没能准时完成,你的项目也可能是其中之一。总是 delay 是不是很烦人?你也希望在满足市场需求的同时,还能按时交付项目,对不对?正因如此,软件开发时间的估算,应该是构建研发流程时优先考虑的事项。我们编制了一份清单,列出了为获得贴近实际情况的软件开发时间,你需要做的一些基本动作和步骤。下面我们就来具体谈谈,如何估算开发时间。

1 为什么你需要预估软件开发时间

这当然是很必要的,有了这个数据,你才能知道完成项目需要多久(以小时为单位来估算)。这可以比作装修房子……哦不对,那太复杂了。算了,我们可以把它比作一家花店,这样的比喻更合理一些。

假设你想开一家花店,要提前做预算和时间估算:

  • 你计算了从准备到开张需要多长时间;

  • 在这个过程中,你发现原本想要的花进不到货,你需要用另一个产品替换原计划的品种,这需要时间;

  • 然后你又发现,鲜花储存需要更多条件,你的设备需要更换;

  • 花店还没有开张,但你已经意识到店里应该卖咖啡和书籍。

你意识到发生了什么吗?嗯,是的,业务需求以及最初估计的时间和预算都可能会发生变化。这个例子同样可以适用于你的软件解决方案。

2 你从开发时间估算中获得的好处
作为客户,你将获得的收益:  
  • 你将清楚地知道何时可以拿到交付的产品。如果不久会有产品展示或重大公司活动,这一点尤其重要;

  • 你知道自己能赶上截止日期,可以放心了;

  • 你可以完全控制流程,并及时了解时间估算或预算的变化及其影响。

软件开发团队获得的优势:  
  • 我们可以提前智能地分配任务 / 资源,并管理截止日期和工作量;

  • 我们可以了解哪些专家应该在哪些阶段参与进来。

3 为什么很难获得真正可靠的时间估算结果?

尽管时间估算有很多明显的好处,但它和预测还是没有太大区别,因为它主要是凭直觉完成的。软件开发人员基于他们自己的经验来判断哪些东西很难实现,哪些比较容易。程序员越优秀,估算的时间就越准确。

但是这种估算开发时间的方法也是有一些小差异的。当开发人员面对的是不熟悉的问题时,他们以往的经验、曾经行之有效的方法都可能不再灵光。任何开发人员都无法避免架构、框架、库访问和技术社区支持方面的潜在问题。

那么人为因素呢?程序员 -- 没错,就算是高级程序员 -- 也可能会生病或请一天假。当然,如果程序员不能在明天早上完成任务,那并不是你的错。但是客户这边可能会带来计划外的额外任务,这些任务会打乱原来的时间估算结果。

综上所述,开发时间估算结果是可能会出错的,原因如下:

  • 经验不再适用;

  • 不可预测的技术侧问题;

  • 人为因素。

那么该怎么办呢?——你可能会问这个问题。答案是用深思熟虑的方法和行之有效的手段来把事情做好。

4 如何估算开发时间:要考虑的各个阶段

要计算出总体的软件开发时间,我们应将预期的开发过程划分为多个阶段。然后估计每个阶段需要多长时间并汇总数据。

图片

发现阶段   

在这个阶段,参与项目的开发人员需要获得尽可能多的项目信息。这一阶段还需要准备原型和框架。如果实践中有的工作需要使用复杂的技术来完成,我们必须为此分配足够的时间。

在估算开发时间时,发现阶段应该安排深入的需求讨论环节。

具体做法:

  • 开发人员从客户那里收到需求,并仔细检查它们是否存在逻辑漏洞;

  • 如果出现任何问题,大家要进一步讨论;

  • 开发人员起草一份详细说明需求的通用文件,并与客户达成一致。

准备一份有着明确定义的规范的文档,每个人都拿它当作指南,因为它可以防止“我们不是说好了应用程序要有这一特性吗?”之类的情况。让我们面对现实吧,在计划阶段解决问题,比在产品完成时解决问题要便宜得多。

软件架构设计阶段  

产品的可扩展性受系统架构规划和设计的一致性影响。在估算软件开发时间时应考虑到这一点。这一阶段需要选择技术栈、类图、数据库、库、API 和细分的阶段。

开发阶段  

为了提高效率,需要将这一阶段分解为几个单独的逻辑阶段,方便你监控团队的进度和绩效。产品开发过程可能需要 2 到 12 个月。在估算软件开发时间时应考虑到这一点。

测试阶段  

如果没有经过彻底的测试,任何产品都不能被认为是完整的。此外,软件解决方案必须从一开始就进行测试。为什么?因为解决潜在错误的成本会低不少,毕竟它们会更快被发现和修复。测试阶段也需要包含在时间估算中。

额外的时间:缓冲时间和时间吞噬者  

还需要考虑可能影响时间表的计划外工作,或很难预估的任务耗时。它们约占总开发时间的 5% 到 25%:

  • 技术的不可预测性;

  • 集成或扩展问题;

  • 团队内部的利益冲突;

  • 会议、电话、批准;

  • 生产力损失,等等。

5 如何估算软件项目的工时

图片

工时估算通常是将一个个任务汇总起来完成的,这样可以简化工作并让结果更加透明。估算开发时间的一种方法是估算每位专家可以在项目上花费多长时间。

这种方法关注的是一位平均水平的 IT 专业人员在一小时内能够完成的工作量。

平均水平的 IT 专家意味着他 / 她是中级技术专家(开发人员、设计师、QA 工程师)。他们执行的是与他们专业相关的任务。这意味着完成测试任务所需的时间应该根据 QA 工程师,而不是前端开发人员的表现来估算。中级工程师的工作速度可能不如高级程序员,但他或她的工作效率可能比初级技术人员更高。

一个小时的工作意味着连续工作 60 分钟。这里的重点是要了解这位专家的工作是否依赖其他专家的产出,他或她是否需要等待其他人才能完成自己的工作量。

让我们看看可以应用哪些方法和实践来估算软件开发时间。最常见的方法是敏捷方法。

先来看一看这个主题涉及的关键术语:

  • 用户故事:用 1-2 句话描述系统应该做什么;

  • 故事描述:衡量完成用户故事所需的工作量(不是以小时为单位);

  • 待办事项:为实现目标而需要完成的任务列表。

现在我们继续来估算软件开发时间。

6 软件开发时间估算方法

通过开发时间估算,一切似乎都足够清楚了。但是……你不觉得少了点什么吗?这个估算具体是怎么做的?

下面介绍基本方法。

自下而上的方法或坚持参照里程碑  

当提前了解总开发时间后,技术人员可能会高估他们的生产力,结果会让估计的开发时间偏低。我们可以将所有任务划分为各个阶段,并分别估算每个阶段来避免超时问题。也就是说,遵循“自下而上”的原则。

通常需要有两位专家参与时间估算:

  • 开发人员。他 / 她准备了一份描述所有任务的规范;将它们分成各个组或子任务并估计开发时间;

  • 一位公司的独立专家(例如高级项目经理)。他 / 她会检查开发人员提供的时间估算结果,评估它们的现实性。如有必要,再进行调整。

规划扑克  

这种估算软件开发时间的方法所涉及的一些原则,很像敏捷方法论和打扑克。它是怎样做的呢?

  • 客户表达了团队需要面对的任务;

  • 该信息在团队内进行讨论,后续问题与客户一起解决;

  • 创建一个包含细分任务的待办事项列表(积压,backlog);

  • 团队成员聚在一起,从积压中找出执行这些任务需要多长时间。

使用规划扑克估算软件开发时间的具体做法如下所示。

每位开发人员都会给出他或她对手头任务的时间估计。为此,他们使用带有数字的卡片。每位团队成员都有一组卡片,其值为 1、2、3、5、8、13 以及 21、34、55(斐波那契数列)或用 20、40、100 换掉最后三个。此外还有三张没有数字的牌,它们分别画一个无穷大符号、一个问号和一个咖啡杯。

每个用户故事都用一张卡片评分,其值等于估计的工作量(故事点数)。带有数字 1 的卡片表示用户故事很容易完成。比 1 越大,用户故事似乎就越困难。无限卡片代表最高级别的难度。

如果每位开发人员选择的数字都相同,则意味着对所需工作量的估计是正确的。如有分歧,最终分数经过团队讨论确定下来。

这一步并不是单纯地以小时为单位估算软件开发时间。到目前为止我们只定义了故事点。要了解如何以小时为单位表示这些故事点,你需要知道故事点对应的小时值。

要注意扑克计划的关键在于讨论。试想一下——很多真正的专家会参与你的项目。他们每个人都对自己的选择给出了理由,并对项目的细节进行了彻底的讨论。这样一来,你很可能会得到准确的时间估算结果。

图片

基于经验的方法  

这种方法需要将新项目与以前的类似项目进行比较。在这种情况下,你需要从实现旧项目所花费的时间开始估算。还需要找出两者的难度级别差异。将旧项目使用的小时数乘以项目的难度差异系数,你就可以估计即将开始的新项目所需的开发时间。

7 项目估算数字

下面我们来看以下示例,把上面的内容转成数字表示。

总时间估算结果(OE)+OE*缓冲时间 +OE*时间吞噬者 = 软件开发时间

我们输入一些数字(数字是近似值):

5000(OE)+5000*20%+5000*20%=7000小时。

我们来更进一步。

想象一下,我们需要在 Instagram 上实现“多账户”选项。为此,我们需要考虑用户可以采取的所有可能的操作:

  • 他 / 她想添加一个帐户。

  • 他 / 她可以选择“登录现有帐户”选项,这需要他 / 她输入用户名和密码或通过 Facebook 登录。

  • 用户可能会忘记他 / 她的访问权限或发现他 / 她没有在 Facebook 上获得授权。

  • 用户可以选择“创建新帐户”选项,之后系统将要求他或她完成注册步骤。

鉴于用户行为的差异,你可以定义开发人员需要完成的任务列表,以便用户可以添加新的 Instagram 帐户。将上述信息转化为任务、技术人员和时间估算:

  • 设计一个包含所有必要字段和易于理解的用户场景的页面。

  • 查明系统是否允许用户访问请求的页面,确保用户通过身份验证。

  • 根据鉴权结果进行重定向:跳转到请求的 Instagram 页面;跳转到 Facebook 页面通过 Facebook 完成鉴权;跳转到鉴权错误页面,等等。

图片

因此,需要花费 13 个小时的技术人员工时才能让用户在多个 Instagram 帐户之间切换。还要记得算上协调和管理流程的项目管理工时(例如 3 小时)。

8 小结

乍一看,软件开发时间似乎是很容易估算的。然而,它需要时间和技术人才的充分参与才能做到位。为了确保你和你的 IT 服务提供商都对结果感到满意,你需要从一开始就正确估算开发时间。

让整个开发团队都参与进来是很有帮助的。他们的经验会让时间估算结果最贴近实际。他们还会根据自己的能力估算项目工时。如果到头来时间估算结果不符实际,并且团队比计划落后了,他们不太可能愿意加班来赶工。所以为你提供尽可能准确的数据符合这些开发人员的自身利益。

说到这里,我们希望你现在知道了,为什么你们需要一个明确的时间估算结果。有了它,你就能够更好地控制预算和流程,避免令人不快的意外情况。

如果你还不知道如何估算产品开发所需的时间,请联系我们进一步讨论。

原文链接:

https://ddi-dev.com/blog/it-news/how-to-estimate-software-development-time/




END



架构技术交流群

 「架构君」建立了读者群,可以添加我微信拉你进群

图片

添加时可以备注城市+职位+年限】


往期推荐

一款神仙接私活儿软件,吊到不行!

架构之道:分离业务逻辑和技术细节

一份完整的聚合支付中心设计方案!

唯品会亿级数据服务平台落地实践

从朋友那里搞了 20 个实战项目,速领!

系统架构设计:平滑发布和ABTesting

重要提醒!人脸识别一定要穿上衣服!

图解 Git,一目了然!

厉害了!单点登录系统用 8 张漫画就解释了。。。

基于 SpringBoot 的仿豆瓣平台【源码分享】


图片

如有收获,点个在看,诚挚感谢图片

教育培训机构-如何策划节日招生?
做教育培训,最重要的事情莫过于招生了。面对不同的学员,招生方…于招生。目标不同,活动策划也会不一样。② 活动主题要鲜明不仅主题要鲜明,主题之间要有连续性。就像看连续剧一样,一集接一集,一环扣一环。策划好一系列活动,一个接一个来,从多个角度延续活动的宣传,突出主题,引起关注度。常用的招生方式有:体验课招…-------------想要获得更多运营技巧、doc文案,
教育培训:如何提高满班率和续班率
什么是满班率?就是实际人数除以计划招生人数,这个值就是满班率…员有流失是正常的,但要保证一个概率。在保障老学员续期的基础上,我们也要大胆创新,开设网络课程,拓宽招生区域。实地课程录制后,进一步发行到商弈云课上,通过商弈云课系统转成真实流量,网上有人点击观看,点赞,可以按点播量分佣金。助你在日常的营销推…-----------------------想要获得更多运
培训机构难盈利的问题出在哪里,如何实现盈利?
竞争白热化实地培训班、托管辅导班竞争白热化了,利润越来越稀薄…现没有多少盈利。还有一部分负责人在刚招生时,掌握了不少资金,开始盲目扩张,盲目做课程推广,以期待获得更多生源和收费,从而使培训班陷入了这种恶性循环的陷阱里。其实这些到手的钱,并不是你的利润,而是你未来要支出的钱。如遇到行业快速发展时期,或者…-----想要获得更多运营技巧、doc文件,请“关注”并“转
“差异化”经营是网络培训赚钱的关键所在
“差异化经营”这个词,相信大多数人都耳熟能详,但要做到的却是…。在现有的基础上更新升级或者资源整合就是对现有的产品或者技术,进行升级版本,或者通过一些资源整合,成一个项目。你的技能以前是用来生产或制造产品,现在是把技能升级成知识培训,转换云课堂。直白一点就是可以让老师自行录好课程并上传到学校的商弈云课…在着缺点和不足之处。在创新改革时,要从功能、服务、价格等方面
教育培训行业是如何运作的?
以前读书时,学校附近有个小摊卖鸡蛋灌饼。刚开始的时候只有一家….%,剩下的一对一和多人大班其实市场份额都很小。家长报培训班,是希望孩子能够学到知识。老师通过课上教学和课后辅导来满足孩子的需求,达到成绩提高的目标。我见过上百人的大培训班,为什么一个班这么多人?因为是名师讲课,但人太多坐后面,基本听不到重…是你的核心竞争力。想要得到用户的认同,你就必须做到产品质量好
旺道:实体店怎么做网络营销?
年纪大了,体力不好了,便赚不了什么钱了。所以,一定要在年轻的…写文案都是非常头痛的事情,那么下面我会给大家提供一个解决方案。在互联网营销系统里面有很多细节营销,软文营销就是其中一种,但好多小白头痛写文章,所以可以用这个方法也一样可以植入广告语,或者是图片广告,轮显切换广告,使用 旺道营销系统,也就是每…以帮你吸引海量精准粉丝。有了粉丝,你通过广告、产品、服务就可
旺道:圈里圈外,铁饭碗距离瓷饭碗究竟有多远?
中国人爱混圈子,从线下一直混到线上,各种奇形怪状的圈子勾勒出…不能推则敷衍了事,盼着混到主任科员退休;一种是老黄牛式,踏踏实实、兢兢业业工作,但拙于人际关系,活干得最多,但依旧不见晋升迹象;还有一种是提线木偶式,你扯一下线他动一下,好像脑子和身体是分离的。我突然一拍脑袋,这是提前衰老的迹象啊,工作内容…即使选择留在铁饭碗圈里,也应保有随时离开的思想警惕和进行必要
旺道:微信要双开了,朋友圈推广更好做了
现在手机只能登一个微信,如两个,三个微信的小伙伴们就只能退出…动推广工具、 设置头像点击头像图标,点“+”选择图片,可以上传你的企业,个人头像,产品服务等。旺道微信朋友圈广告免费朋友圈广告-旺道、 设置推广主题点“广告”,再点“+”设置推广的主题(类别),填好中文主题,以及你的网址。教你不花一分钱做朋…简直就是一劳永逸哟。如果你点开发布的文章看不到广告,那就是你
旺道:如何能让网站多个关键词排名百度首页?
最近接了一个单,做婴儿游泳馆加盟的。优化推广范围是全国,但是…泳馆加盟哪家好”、“婴儿游泳加盟多少钱”这类与我息息相关的词。如何能让网站多个关键词排名百度首页?但客户并不认同,客户说这个词指数低,或者说搜的人不多。是,这是一方面原因。但是,指数低有什么关系,你是卖产品还是卖指数。搜的人不多有什么关系,…实现广告效果最大化,来满足大众化的广告需求。对于这样的四两拔
旺道:如何成为网络营销达人?这个技能帮你节省80%的时间
在某次名师讲坛上,听到了一个让人警醒的故事。说有个村子缺水,…准的产品。现在已经不是新鲜事物,好多企业因为百度竞价的高额费用,头疼不已,所以做网站关键词优化排名,成为了企业必选的推广项目。做优化也要做到有成效,不然就是一分钱也是昂贵的。用 旺道智能机器人 就可以持续代替人工去做,它非常聪明,只要你够耐…手,设备先进,你多努力奔跑也于事无补。简单说,要去一个地方,

此文章来源来互联网,如果你有任何版权冲突,可以联络我们,微信号:WANCOME,QQ:1444641。加我们时,请说明来意,我们将优先处理你的问题。




商弈云推  | 圈广告  | 跨圈推  | 圈推广  | 圈营销
粤ICP备10213132号
旺道商标注册证号:8608864
Copyright © 2016 环企网络信息科技有限公司 版权所有