开发模型其实是在时代洪流的发展中,不断总结和摸索的结果。
这是一个经典的模型,也是你们用的最多的模型 将项目活动分解为线性顺序阶段,其中每个阶段取决于前一个阶段的可交付成果。
https://en.wikipedia.org/wiki/Waterfall_model
原形要解决的问题就是需求不准,避免需求经过长时间的开发,浪费了大量的金钱和人力,得到的软件还不是用户所期望的。
原形模型采用的方式是:开发团队在分析需求的时候,尽快开发出一个用户看得到的原形, 让用户尽早感受到效果 。其实原形模型更多的是一种沟通方式,只是有人不丢掉原形,在原形的基础上继续开发,才被定位为原形模型。不过原形的开发过程时间紧,任务重,结果非常粗糙,重用的成本一般很高,建议还是丢掉。
https://en.wikipedia.org/wiki/Software_prototyping#Throwaway_prototyping
迭代模型的思路是分解需求。看似简单的分解操作,却得到了三个好处:
https://en.wikipedia.org/wiki/Iterative_and_incremental_development
敏捷核心关键词: 快速交付,持续重构;演进的需求和方案;自组织且跨功能的团队 。
用户的需求一般都只是一个大方向,具体的价值和实现方式都是不确定的,用户也在不断探索他们的业务。敏捷接纳了原型法的需求分析方法,还提出了 Inception 来分析更有价值的需求,通过 MVP 圈定最小开发范围,快速验证方案,这就是演进的需求和方案
在 Self-Organizing 组织方式下,每个人都致力于项目的目标,团队成员互相尊重,每个人都专注于工作,开放,团队成员有勇气站出来参与该项目。这里最关键的就是 每个人都致力于项目的目标 。如果只有 Project Manager 直接关注目标,其他人很难知道自己做的内容和目标之间有什么关系,就不能对这个目标做太多的努力。类似一个开发人员开发了一个定时任务需求,测试人员需要等待若干小时才能测试一次。如果开发人员提供一个手工触发的接口,测试人员的工作效率就会提升很多。所以看清楚全局的目标和问题能很大的提升生产力,敏捷的每日站会就在为这个而努力。
参考: https://www.infoq.cn/article/lpq3iig3skbv3oqmz3wv