你的团队使用什么开发模式?
小雪是一位项目经理,工作了很多年,也经历了很多
那天,她和朋友聚会,很多朋友也是从事项目经理的职务
聚会开始后,大家有说有笑
不知怎么的,话题就聊到了大家的工作模式
小米说:我们现在用最先进的敏捷开发模式。
几个朋友也附和道:我们也是啊。
小唐却说:我们就不是啦,我是在国企里面,所以我们还是用传统的瀑布开发模式。
小雪说:我们也是啊。
小雪疑问道,只有这两种开发模式吗,难道没有其他的了?这些开发模式有什么不同吗?
从软件开发到现在,先后浮现了很多种开发模式。这些开发模式随时时代的进步,和科技的发展,慢慢的,有的被遗忘,有的盛行。
目前市面上主要食用的开发模式是瀑布模式和敏捷模式。
但是你知道吗?除了这两种,还有其他的开发模式。
边做边改模型(Build-and-Fix Model)
这种模型适用于产品周期短,功能模块少且简单的项目。
在这个模型中,没有固定的流程,也没有各阶段的文档交付物,比如PRD等。
有人把这种模式成为“作坊式”模式,一边做一边改。用户可以不断提出自己的意见和新的需求,开发团队按照需求直接进行开发、测试。
瀑布模型(Waterfall Model)
这种模式是一种传统的开发模式。早在1970年被温斯顿·罗伊斯提出。
使用这个模型可以将生命州区划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动。
这个流程自上而下,上一个阶段做完,才能开始下一阶段,就像瀑布流水似的。
当然这个模型很强调阶段的文档交付物,每个阶段严格把关后才能开始下一阶段。
迭代模型(stagewise model)
(也被称作迭代增量式开发或迭代进化式开发)
这种模型是一种与传统的瀑布式开发相反的软件开发过程。
这种模式适用于短小,固定时常的项目。
每个迭代都有需求分析、设计、开发和测试。
快速原型模型(Rapid Prototype Model)
看到这个名字,就知道这个模型具体是要做什么了吧。
就是通过快速设计一个系统原型,实现客户需求,然后再进行开发,满足客户的具体需求。
增量模型(Incremental Model)
这个模型在交付时,可能给的是一个可运行的不完整的产品。
客户看到成果后,提出建议和意见。然后开发团队修改和完善产品功能。
螺旋模型(Spiral Model)
这个模型是1988年巴利·玻姆(Barry Boehm)提出的。
它是将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
这个模型的主要过程是:制定计划、风险分析、实施工程、客户评估。
这里单独将风险列出来,可见,该模型注重风险驱动。
强调可选方案和约束条件从而保证开发出的软件更加的具有可扩展性、可塑性。
敏捷软件开发 (Agile development)
这个模型最近很火,强调以人为核心的进行迭代、循序渐进。
在这个过程中,将一个大项目分为多个子项目,经过测试和质量检测后完成一个小项目。
演化模型(evolutionary model)
这个模型是事先不能完整定义需求的软件开发。
用户可以给出核心需求,软件开发人员首先开发核心系统。
之后,核心系统进入试运行阶段后。用户提出系统的升级内容。
这个模型第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。
在开发模式上采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。
于是,设计就不断地演化出新的系统。实际上,这个模型可看作是重复执行的多个“瀑布模型”。
喷泉模型
(fountain model, (面向对象的生存期模型, 面向对象(Object Oriented,OO)模型))
喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。
就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
智能模型(四代技术(4GL))
这个模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。
这种方法需要四代语言(4GL)的支持。
混合模型(hybrid model)
过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型。
它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。
实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。
名称 |
特点 |
适用范围 |
瀑布模型 |
简单,分阶段,阶段间存在因果关系,各个阶段完成后都有评审,允许反馈,不支持用户参与,要求预先确定需求 |
需求易于完善定义且不易变更的软件系统 |
快速原型模型 |
不要求需求预先完备定义,支持用户参与, 支持需求的渐进式完善和确认,能够适应用户需求的变化 |
需求复杂、难以确定、动态变化的软件系统 |
增量模型 |
软件产品是被增量式地一块块开发的, 允许开发活动并行和重叠 |
技术风险较大、用户需求较为稳定的软件系统 |
迭代模型 |
不要求一次性地开发出完整的软件系统,将软件 开发视为一个逐步获取用广需求、完善软件产品的过程 |
需求难以确定、不断变更的软件系统 |
螺旋模型 |
结合瀑布模型、快速原型模型和迭代模 型的思想,并引进了风险分析活动 |
需求难以获取和确定、软件开发风险较大的软件系统 |
参考文献:
[1].https://www.cnblogs.com/liang--liang/p/3613815.html
[2].https://blog.csdn.net/q_17600689511/article/details/81875287