对于很多没有接触过软件开发,但是又想定制一款软件的朋友来说,经常会有一个疑问,那就是开发一款软件要多久?,下面我们就来谈谈这个问题。
1. 为什么开发软件要提前做好计划?
无论我们想开发只有一个页面的官 ,还是有 200 个页面的 App ,研发团队对于项目开发时间的估算和计划都是非常重要的,估算和计划的结果可以让我们决定要不要做这个软件,比如研发团队估算后发现开发 100 个页面的 App 要 3 个月,按 1人/1月/2 万 来算的话,如果要 5 个人开发,那一个月就是 10 万,3 个月就要 30 万,根据这些信息,我们就可以判断要不要做,要做哪些功能。
但是计划是很困难的,很多软件开发团队要么不做计划,要么做出一个完美无缺的计划,这个计划完美到无法实施,如果有人告诉你某个时间点一定能开发出某个软件,那大概率这个人说的话是不可靠的,因为我做软件这么多年了,除了一些非常简单的功能,没见过一个稍微有分量的软件能如期交付的,都是有 10%~25% 的偏差的(这个数据是项目管理协会统计的)。而对于选择合适的方式进行计划的团队来说,往往也是随着时间的推移计划的准确度才会逐渐提升。
既然估算和计划是不精准的,那为什么开发软件的时候还是要估算和计划呢?其中一个原因就是我们的其他活动也是需要在一定的时间内完成的,比如做市场推广计划、安排产品发布活动、对内部用户进行培训等,我们要为这些活动排期,这时就需要软件开发团队能跟得上节奏。
好的软件开发计划可以通过降低风险、降低不确定性、提供更好的决策支持、建立信任以及传递信息这几个点来帮助我们更好地规划推广和培训等其他活动。
在软件开发的过程中,需求方或多或少都会提出新的需求或修改原有的需求,而软件开发团队在这个过程中也在不断掌握新的信息,这些信息包括需求和技术两个方面,一是需求方真实的需求和软件开发团队的理解之间的差异,二是开发这款软件的过程中的具体难点。掌握这些新的信息后,并将这些信息融入到迭代式计划是非常重要的。大多数软件面临的最大风险是开发出错误的软件,大多数软件开发团队或公司都没有意识到这个风险,而迭代式的敏捷计划就可以降低这种风险。
敏捷计划通过频繁且可靠地交付承诺的功能,让软件需求方和软件开发团队之间建立信任,客户可以根据软件开发团队对功能的估算,根据自己对功能优先级的评估,做出折中的决策,比如开发更多的功能,又或者是只开发重要的几个功能。
2. 为什么计划会失败?
大约 2/3 的软件项目会超出预算、软件中 64% 的功能很少或从未被使用、软件开发真实投入的时间超过最初的估计的 1 倍 ,这三个数据分别是在 1992 年、2002 年和 2001 年统计的。
传统项目管理方法的其中一种工具就是甘特图,就像下面这样,每一个活动的开始和结束时间在表格上都列得清清楚楚的,看上去让人很安心。
甘特图在其他领域行不行得通我不知道,但是在真实的软件开发行业中,所有真正实施过这个甘特图的人都会告诉你这个东西太不靠谱了,只是传统项目经理用来自欺欺人的一个东西罢了。
使用甘特图的软件开发团队在时间不够用,马上要延期的时候,会选择快速写出一些烂代码来避免更多的延期,最终的结果就是开发出来的软件 bug 非常多。如果时间很充足,那这些团队成员又会拖拖拉拉地做事,等时间快到了才开始干活,效率非常低。
传统的软件开发计划的第二个特点是忽略优先级,忽略优先级就意味着开发团队可能会先选择开发简单但是不重要的功能,然后重要但是难做的功能到最后却没有做完。
3. 敏捷计划为什么能成功?
敏捷开发运动是从 2001 年 2 月的敏捷宣言 正式开始的,这一宣言是 17 位软件开发大师所编写和签署的,敏捷宣言的价值观为交流重于流程、可工作的软件重于详尽的文档、客户合作重于合同谈判、响应变化重于遵循计划。
交流重于流程,指的是优秀的软件是由优秀的人员开发的,一个使用优秀工具和严格遵循流程的普通人只能做出很烂的软件。
可工作的软件让需求方在每次迭代(比如一两个星期)后都能得到一个稳定的软件版本,这样软件开发团队就能频繁收集需求方的反馈,从而让需求方真实地感受软件变得越来越好,而不是软件开发人员嘴上说的正在开发。
而合作重于谈判,指的是如果过于重视合同谈判,就会让需求方和软件开发团队进入一种对立的局面,这样对项目的开发非常不利。响应变化重于遵循计划,指的是最初设定的功能并不是最重要的,如果需求方在软件开发的某个阶段发现某个功能不重要,或者某个功能缺失了,那么软件开发方应该与需求方进行沟通,看下怎么根据最新的真实需求来调整计划,而不是拒绝变化。
敏捷开发团队会按照一个短的迭代周期分阶段地开发软件,而不是闷头开发半年再把软件交给客户,迭代周期一般是 2~4 个星期。
敏捷开发团队会使用用户故事描述软件需求,用户故事是从需求方的角度对功能的简单描述,一般的格式为作为(某类用户),我想要(某个功能),以便做到(某件事情)。比如作为购书者,我想要根据书名查找一本书,这样就能快速找到我想要的书。
敏捷开发团队会做发布计划、迭代计划和每日计划,发布计划着眼于一次版本发布的时间范围,通常是 1~2 个月,迭代计划着眼于一次迭代的时间范围,通常是 2~4 个星期,每日计划则是开发成员在每日站会上向其他人做出的承诺。
综上所述,如果你想定制一款软件,就要找懂得敏捷开发的团队,这样的团队更懂得根据你最新的需求来调整开发计划,而不是闷头开发出一个你不想要的软件。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!