04. 瀑布模型之外,还有哪些开发模型?

项目开发都有自己的需求和特点:

⚪有的项目风险很高,客户可能随时不给你钱,要做好准备,随时止损。

⚪有的项目客户没有想清楚自己需要什么,做出来后再提各种修改意见,必须想办法降低变更成本。

⚪有的项目客户希望能很快就能上线。

面对这些需求,使用瀑布模型就很冗沓。也不灵活。

一. 快速开发快速修改

1.1快速原型模型

快速原型模型,就是为了要解决客户的需求不明确和需求多变的问题。原型模型因为能快速修改,所以能快速对用户的反馈和变更做出响应,同时原型模型注重和客户的沟通,所以最终开发出来得分软件能够真正反映用户的需求。

ps: 但是这种快速原型开发往往是以牺牲质量为代价的。

处理方法: 抛弃策略和附加策略。

二. 大瀑布拆小瀑布

瀑布模型的很多问题,根源都是周期太长。

2.1增量模型 -> 按模块分批次交付

增量模块是把待开发的软件系统模块化,然后在每个小模块的开发过程中,应用一个小瀑布模型,对这个模块进行分析、设计、编码和测试。相对瀑布模块而言,增量模型周期更短,不需要一次性把整个项目都交付给客户,而分批次交付。


基于这样的特点,增量模型用于:需求比较清楚,能模块化的系统,并且可以按模块化分批次交付。

2.2 迭代模型 -> 每次迭代都有一个可用得分版本

迭代模型每次只设计和实现产品的一部分,然后逐步完成更多的功能。每次设计和实现一个阶段叫做一个迭代;一个迭代模型迭代时间是固定的,不会太长,一般是2-4周。每次迭代实现一部分功能,做到能在这个周期内完成。

一个迭代周期囊括:分析、设计、编码和测试。类似于一个小瀑布。迭代结束时要完成一个可以运行的交付版本。

增量模型是按照功能模型来拆分;而迭代模型是按照时间来拆分,看单位时间能完成多少功能。

用盖房子来理解,增量模型则是先盖厨房,再是卧室,这样一个这样一个个模块来完成。而迭代模型则是先盖一个简单的茅草房,有简易的土灶和土床,而迭代模型则是先盖一个简单的茅草房,有简易的土灶和土床,然后再升级成小木屋,有更好的灶和更好的卧室,这样一步步迭代成最终的房子。

迭代模型最难的部分,在于规划每次迭代的内容和要达到的目标。多了可能完成不了,少了可能造成每次迭代工作的不饱和,这需要在实践中去摸索,一个迭代一个迭代的去调整。

三.如何让选择

1.外包项目,需要阶段验收

   假如你现在是一家外包公司,甲方需求对你每个项目的每个阶段进行验收测试,以确认你是不是达到要求。针对从需求定义一直到编码阶段,每个阶段都有应有的测试验收,如下图:

这样一个V模型,本质它还是瀑布模型,知识它增加了阶段测试验收的过程模型。

2.项目风险高,随时可能中断。

如果你现在要做一个高风险的项目,客户随时不给你钱了,这种情况基于增量模型或者迭代模型进行开发,可以降低风险。注意每次交付,同时做一个风险评估,风险过大就不做后续开发,即使止损。

这种强调风险,以风险驱动的方式完善项目的开发模型就是螺旋模型。如图:

3.山寨软件产品,希望能快速上线发布。

其实软件行业山寨的案例不少,山寨项目的特点是,项目需求是明确的,不会有什么变化,这时候就可以选择增量模型,划分好模块,先实现核心模块,发布可运行版本,再增量发布其他模块。多模块可以同步开发。

4.客户都没想清楚想要什么,但是个大单子。

很多项目,客户一开始都没想清楚想要的是什么,需要花很长时间去分析定义需求,但是单子很大,值得认真去做好。

那么这样的项目,你可以考虑拆分成四个阶段:

1.初始阶段

主要是确定需求边界和主要风险,几乎没有什么开发工作。

2.细化阶段

这个阶段主要是确定需求,可以采用快速原型模型开发,和客户对需求反复确认,需要辅助一定量的开发和测试工作。对代码质量可以要求比较低,重点是确认需求。可能需要一个或多个版本迭代。

3.构造阶段

在需求确认清楚后,现在可以使用迭代模型来开发,逐步交付产品。这个阶段的重点是开发和测试。如果迭代中,有新的需求加入或者需求变更,也可以在新的迭代中加入。

4.交付阶段

在开发和测试完成后,产品可以交付客户,根据线上运行情况还需要修复一些 Bug。这个阶段重点是测试和部署。也会有多个迭代。

过程如下图:

上面这种开发方式来源自统一软件开发过程(Rational Unified Process,RUP),适用于复杂和需求不明确的软件系统。

5.产品已经上线,但是需要持续更新维护。

很多产品在上线后,还在不停的更新维护,修复BUG、增加功能,定时更新,这种情况适用于迭代模型。

另外还可以尝试敏捷开发,也是居于迭代开发模型,也是强调快速支付,每次交付系统的部分功能,来保证客户满意度。在敏捷开发中,系统交付的周期称之为冲刺。

严格来说,敏捷开发并不算是一种开发模型,更像是框架或指南。有各种开发模型来实现敏捷开发,比如说极限编程(Extreme programming),看板(Kanban)和 Scrum。有关敏捷开发,下一篇中向你详细讲解。



此内容极客时间版权所有,本人只是学习之后做一个笔记记录如有用做任何商业用途,极客时间可能追究法律责任,本人一概不负责,分享和转载请注明:https://time.geekbang.org/column/article/543f03f9b434f06485ab631f6984d21b/share?code=mybUYSWKKskrdOz0DM6%2FKO%2F9RDfR5YCw65TVohaq%2FrE%3D

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • 第一部分有效开发 第二章快速软件开发的策略 快速开发的总体策略 *避免典型错误 *打好开发基础 *管理风险 避免灾...
    Seymoure阅读 1,180评论 0 2
  • 第六章 开发方法 6.1 软件生命周期 软件生命周期划分为8个阶段:可行性研究与计划、需求分析、概要设计、详细设计...
    步积阅读 1,405评论 0 3
  • 软件开发模型(转自百度,以备查看) 软件开发模型(Software Development Model)是指软件开...
    0xiasandu阅读 575评论 0 3
  • 1. 软件开发过程模型温故 软件开发过程是什么? 软件开发的开发生命周期,各个阶段实现软件的需求定义与分析、设 计...
    大地零一阅读 1,322评论 0 0
  • 今天是在外面坐享的(学校操场) 因为这里有更好端午空气 更好的声音可以感受 在宿舍老觉得憋屈 今天坐享的感觉-就像...
    赵扬帆阅读 144评论 0 0