一、瀑布模型
1.1 模型介绍
1970年温斯顿-罗伊斯提出。将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。
1.2 核心思想
按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
1.3 模型缺点
- 各阶段完全固定,输出大量文档,极大增加工作量;
- 线性开发,增加项目延期风险;
- 不适应用户需求的变化。
二、迭代模型
2.1 模型介绍
RUP(统一开发过程)推荐的周期模型,被定义为: 迭代包括产生产品发布的全部开发活动及外围因素,类似小型的瀑布模型。
2.2 模型优点(与瀑布模型相比)
- 降低了增量的风险;
- 降低产品无法按既定进度投入市场风险;
- 加快了整个开发工作的进度;
- 迭代过程适应需求变化更容易。
2.3 模型缺点
- 在项目早起开发可能有所变化,对于开发人员要求及项目管理者能力有较高要求。
三、螺旋模型
3.1 模型介绍
1988年,巴利-玻姆正式提出”螺旋模型“,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。风险驱动的方法体系。
3.2 模型优点
- 设计的灵活性,可以在项目的各个阶段进行变更;
- 以小的分段来构建大型系统,成本计算更简单;
- 客户始终参与每个阶段的开发,保证了项目不偏离正确方向及项目的可控性。
3.3 模型缺点
- 该模型强调风险分析,让客户接受和信任这种分析方式是不易的;
- 如果执行风险分析影响项目利润,那么进行风险分析毫无意义;
- 研发人员应该擅长发现风险,准确分析风险,否则将会带来更大的风险。
四、敏捷开发
4.1 模型介绍
以迭代模型为理论基础,1990年开始逐渐引起关注,包括XP、Scrum、FDD、DSDM、Crystal、ASD、Kanban、Lean等。强调研发团队与业务团队紧密合作、面对面沟通、频繁交付版本、紧凑而自我组织型的团队。
4.2 模型优点
- 通过快速而持续交付有用的软件来满足客户的需求;
- 强调人员和互动,而不是过程和工具。客户、开发人员和测试人员经常相互交流;
- 频繁交付工作软件(几周而不是几个月);
- 面对面交谈是最好的交流方式;
- 业务与研发之间日常密切的合作;
- 持续关注技术的卓越程度和良好的设计;
- 经常适应不断变化的环境。
4.3 模型缺点
- 必要的设计和文档缺乏重视;
- 大型项目,开发初期,很难评估工作量;
- 如果业务或客户不清楚他们想要的最终结果,项目很容易偏离轨道。
来源:云栈技术CSTC
作者:IDCF社区 Geekwolf
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。