1、Quora精选:为什么软件开发周期总是预估的2~3倍?
作者在文章中并没有直接告诉我们原因,而是通过一个好友面基过程的比喻来阐述原因。一开始“我们”规划好了路线,并且十分自信只要按着路线就一定能到达目的地。这就好像在软件开发周期的设计阶段,开发人员根据用户需求将软件的大致框架设计出来。终于“我们”出发啦,但是实际情况是道路比地图上看到的更遥远,于是便和基友商量推迟见面的时间(还没开始就已经推迟了行程)。软件进入实际开发阶段,当开发人员拿着设计好的软件“地图”,要开始进行开发了,却发现现实好像不是这样的,要么是某个功能设计不当,要么是实现的过程十分复杂,于是乎便推迟软件交付时间。终于在第二天,“我们”踏上了征途,但是路也太难走了!一路上除了道路的崎岖,人员的疲惫,还有队员之间的矛盾使得“我们”的日期一拖再拖。结果就是原来计划的十天路程,现在变成了70天......当软件开发不断进行下去后,不断地有新问题开始暴露出来:功能实现复杂,人员身心疲惫,项目经理不当的规划,以及团队成员之间摩擦不断增多。种种原因的叠加使得软件开发陷入了一个泥潭中,越挣扎陷的越深。这一切都源于软件开发的不确定性。
2、什么是分而治之?
分而治之就是分治,分治在百度百科里是这样定义的:
所谓“分而治之” 就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的解,把各部分的解组成整个问题的解,这种朴素的思想来源于人们生活与工作的经验,也完全适合于技术领域。
其基本思想是将一个复杂的大问题拆解成一个个简单的、易于实现的小问题,再对每个小问题进行求解,最后将解答组合起来就可以得到原问题的答案。
在软件开发中,诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。
3、什么是WBS?
WBS是工作分解结构(WorkBreakdownStructureWBS)的简称,在百度百科中的定义为:
工作分解结构(Work Breakdown Structure, WBS):以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。
工作分解结构(简称WBS)跟因数分解是一个原理,就是把一个项目,按一定的原则分解,项目分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中,直到分解不下去为止。即:项目→任务→工作→日常活动。
工作分解结构以可交付成果为导向,对项目要素进行的分组,它归纳和定义了项目的整个工作范围,每下降一层代表对项目工作的更详细定义。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。