0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瀑布与敏捷的软件开发模式归纳盘点

工程师邓生 来源:博客园 作者:张飞洪 2022-09-13 14:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

瀑布和敏捷不是什么新概念,这里只是个人在团队合作中不得不去思考而做的归纳和总结,同时记录自己曾经踩过的坑,新瓶装旧酒,希望对你有所启发。

瀑布模式

瀑布模型是比较传统一种开发模式,特别是在2B的传统企业,包括ERP,MES,WMS,CRM,OA,IBMS等系统当中可以经常见到他们的影子。现在这种模式仍然流行在一些大的项目或者是外包的一些项目当中。

4b888f80-330e-11ed-ba43-dac502259ad0.png

如上图所示,瀑布模型优缺点都很突出。

优点明显:

阶段清晰。从计划到开发最后到上线运行,三个阶段非常清晰。

时间顺序。每个阶段顺序必须是从上到下,严格按照时间先后进行。

环环相扣。在每一个阶段都必须有产出物然后才能进入到下一个阶段进行。

黑盒模式。每个阶段都有各自的角色和分工,各自只关心自己的任务。比如需求阶段开发人员无需关注。

缺点突出:

需求隔离。由于各阶段的人员只能接触到自己工作范围内的东西,所以对客户需求的理解程度高低不等,开发人员更像是定义为流水线上的工人。

变更代价大。既然叫做瀑布,就意味着不应该走回头路。否则如果出现返工,付出的代价会很大。需求变更,编码人员会很强的抵触情绪。

束缚创造性。由于强调文档管理,所以管理人员会比较喜欢,但是他束缚了开发人员的创造性。

周期漫长。整个开发持续的生命周期很长,需求和设计的时间会耗费特别多,有时候会占用三分之一甚至更多时间,这样整个周期就会变长,大都在半年到一年左右的时间,所以更适合需求相对稳定的大项目。

归纳总结

根据以上分析,我们知道瀑布模式强调里程碑,重视文档,强调分工,避免变化,凡事喜欢规划和做计划,但是代价就是拖沓笨重,反应迟钝。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

敏捷模式

发展背景

敏捷开发借助互联网浪潮开始流行起来,这也是2C的业务特点决定的,看过QQ和微信长大的人,这种体会特别深。互联网产品不可能一步规划到位,一般都是核心功能优先,比如微信,先是实现聊天功能,然后才是漂流瓶,钱包,小程序……

互联网业务有何特点呢?借用雷军的七字诀:专注、极致、口碑、快。

唯有专注才能聚焦能量,引爆燃点。

唯有极致才能排除竞争,争取用户。

金杯银杯不如口碑。

天下武功唯快不破。

敏捷无疑更加贴近互联网的这种业务需求,如果纯用瀑布模式,估计黄花菜都凉了。敏捷还有一个更极致的做法,直接上PPT通过类似众筹的方式进行开发,这种从群众中来到群众中去的个性化定制功能非常的有创意,如果众筹的结果是没有人感兴趣,就可以直接否定该产品开发,可以避免无谓的“库存”导致的开发压力,节省巨大的成本浪费。

Scrum是什么

4bbc3970-330e-11ed-ba43-dac502259ad0.png

Scrum的意思是橄榄球运动的一个专业术语,表示“争球”的动作。把一个开发流程的名字取名为一项体育运动,你一定能感受到其中的碰撞,冲突,激情。如果是这样,Scrum如何能提高开发效率呢?敏捷开发是一种指导思想,Scrum和XP则是敏捷开发的具体开发流程,这里只选择Scrum进行探讨。

我们先来看下Scrum的三个角色:

4be32350-330e-11ed-ba43-dac502259ad0.png

产品负责人: 提供整体产品需求清单,确定产品边界,功能组合图谱,交付内容和日期。另外产品负责人有权拒绝开发团队的开发成果。

开发团队: 因为追求快,开发人员需要很强的自我管理能力,需要主动反馈,主动沟通。

流程管理员: 主要任务是疏通开发和业务的障碍,起到一个胶水的粘合作用,所以一旦开发进行,流程管理员有权拒绝需求的变更或修改。

Scrum是一个理想化的开发流程,前提条件是角色完整,分工明确,配合默契,沟通融洽。如果出现其中任何一个环节的故障,可能都会破坏流程的效率,比如,开发经理和流程管理员脾气一样倔强,脾气互斥,那么整个效率就打折扣。我感觉在招聘人员,团结组建的过程中,我们务必要寻找气味相投的人,这可以减少开发过程中的冲突。

Scrum和瀑布的本质区别是,一个以文档为本,一个以人为本。在以人为本的团队里,领导者的文化就是团队的文化。如果领导者不透明,喜欢玩虚假,自大,官僚气十足,这个团队基本上就没什么希望了。人必须是主人,有能动性,这个高度困难。因为如何让团队觉得公司的事是我家里的事是高度困难的,因为有些开发人员自己家的事都没怎么认真过。想要做到这点,需要老板重视,否则中层领导我感觉一般都心有余力不足。

Scrum流程图

4c1ccc72-330e-11ed-ba43-dac502259ad0.png

首先需要确定一个产品需求列表 ,由产品负责人负责;

4c616fda-330e-11ed-ba43-dac502259ad0.png

开发团队根据列表,做工作量的预估和安排

有了产品需求列表,我们需要通过计划会来从中挑选出一个故事作为本次迭代完成的最小目标 ,这个目标的时间周期是1~4个星期,然后把这个故事进行细化,形成一个最小产品需求。比如该故事是登陆的功能故事,那么登陆的需求就要进行完整的细化工作;

开发成员根据故事再细化 成更小的任务(细到每个任务的工作量在2天内能完成);

4ca60cc6-330e-11ed-ba43-dac502259ad0.png

计划纸牌怎么怎么用的呢?比如A程序员开发一个功能,需要5个小时,B程序员认为只需要半小时,那他们各自取相应的牌,藏在手中,最后摊牌,如果时间差距很大,那么A和B就可以讨论A为什么要5个小时...

开发过程需要设置每日站会 ,每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报三个问题:A.你昨天完成了什么;B今天要完成什么;C.什么问题不能解决。

每个人回答完成后,要走到黑板前更新自己的sprint燃尽图;

4ce7ce2c-330e-11ed-ba43-dac502259ad0.png4d61ff26-330e-11ed-ba43-dac502259ad0.png

每日集成 ,也就是每天都要有一个可以成功编译、并且可以演示的版本,可以机制CI,CD工具进行辅助开发;

当一个故事完成,也就是最小目标被完成,这时,我们要进行演示会议 ,也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个开发成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);

4d7ff7f6-330e-11ed-ba43-dac502259ad0.png

最后就是回顾会议 ,也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮sprint的产品需求中;

大家如果认真的看完整个Scrum的开发流程,会发现这个过程还真的是很完美,不妨可以用在你的团队开发过程中。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

瀑布vs敏捷

对比一览图

瀑布敏捷是有边界的,我觉得团队在整体学习开发模式优劣后,需要对二者的边界有一个清晰的认识,并在整个团队上下都要达成一致的共识,否则后果可能会很严重。双方的边界如下图所示

4db32fb8-330e-11ed-ba43-dac502259ad0.png

为什么说共识很重要呢?就我踩过的坑进行盘点,有如下几个问题:

领导指挥不当 :老板重文档,觉得必须有文档往下开发才是规范的,否则后面的工作都是一种浪费,因为你的顶头上司不一定懂技术,这样导致的结果是文档没出来前,底下人只能泡茶聊天了。

团队效率极低 :因为瀑布强调分工,各自为战,所以有可能架构设计人员在等产品经理给需求文档,开发人员在等待架构设计文档,测试人员在等待开发成果,老板在等待产品交付。这里环环相扣,类似电流串联工作,一个环节出错,造成断电,导致交付延期,后果可能就是互相推诿和扯皮,严重的话可能会引发争吵,团队分崩离析。

归纳盘点

就个人的经验来看,瀑布和敏捷不是天然分割的,只是针对业务各有侧重,应该是你中有我,我中有你的混合体。比如微信第一版的时候,聊天核心功能的迭代一定也有内部的小瀑布,如果没有计划-开发-测试-运维根本就无法进行下去。再比如瀑布,特别对创业团队,刚开始人手不多,分工不明,架构师有可能要去画原型图,做需求调研;产品经理业务模糊,还在探索,各种短板和不足就像黑洞一样存在你的周边,你浑然无知。如果你一定要等整个调研完成,PRD文档周全再做开发,估计也要歇菜。

既然各有利弊,那么中间的这个平衡点如何拿捏就非常重要,如何在前期设计的时候既能不过渡导致交付延迟,又能兼顾后续的演进和变化导致的修改可控,这需要开发经理丰富的实战历练和审时度势的判断力。

另外叨叨一下,开发模式贯穿做整个开发的生命周期,但是团队各个成员包括产品经理,技术经理,架构师,开发人员对项目管理的流程理解各不相同,深浅不一,很难想象如果大家没有达成共识,整个开发团队的效率会有多高?但是现实当中,大部分团队成员没有开发模式的培训和上下达成一致依然在进行着开发的工作……



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ERP
    ERP
    +关注

    关注

    0

    文章

    630

    浏览量

    36059
  • CRM
    CRM
    +关注

    关注

    1

    文章

    154

    浏览量

    22198
  • IBMS
    +关注

    关注

    0

    文章

    83

    浏览量

    5864

原文标题:谈谈软件开发模式:瀑布与敏捷

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    知识分享 | ISO 25119标准在农业机械软件开发中的应用

    知识分享在知识分享栏目中,我们会定期与读者分享来自MES模赛思的基于模型的软件开发相关Know-How干货,关注公众号,随时掌握基于模型的软件设计的技术知识。ISO25119标准在农业机械软件开发
    的头像 发表于 04-08 10:03 202次阅读
    知识分享 | ISO 25119标准在农业机械<b class='flag-5'>软件开发</b>中的应用

    网络分析仪程控软件开发工具平台介绍

    在射频测试领域,矢量网络分析仪(以下简称“网分”)作为核心测量设备,广泛应用于通信、半导体、航空航天等行业的滤波器、放大器、天线等器件测试。随着测试需求的自动化、智能化升级,网分程控软件开发成为提升
    的头像 发表于 03-06 18:05 1057次阅读
    网络分析仪程控<b class='flag-5'>软件开发</b>工具平台介绍

    嵌入式软件开发工具市场新动向:订阅制趋势下的中国开发者选择

    面对软件业从永久授权模式广泛转向订阅制的行业趋势,作为行业两大主流嵌入式软件开发工具,即Keil MDK与IAR Embedded Workbench也推出了不同的市场策略,正在为中国开发
    的头像 发表于 01-30 17:20 1016次阅读
    嵌入式<b class='flag-5'>软件开发</b>工具市场新动向:订阅制趋势下的中国<b class='flag-5'>开发</b>者选择

    ADC模数转换实战:硬件设计与软件开发要点指南!

    ADC硬件设计与软件开发的关键要点,为开发者提供ADC转换的实战指导。 本文将分享硬件参考设计及LuatOS开发相关API,带你快速了解ADC的软硬件实现要点。 01. 模组相关管脚 Air780EPM系列模组与ADC相关的管脚
    的头像 发表于 12-16 13:25 642次阅读
    ADC模数转换实战:硬件设计与<b class='flag-5'>软件开发</b>要点指南!

    CW32嵌入式软件开发的必备知识

    嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备一系列的专业知识和技能。 而基于CW32的嵌入式软件开发必备知识包括以下部分: 1 、编程语言 熟练掌握C(C++)语言,这是
    发表于 11-28 07:48

    融合AI的OpenHarmony应用软件开发:ai学习自律辅助软件

    *附件:ai study.zip*附件:融合AI的OpenHarmony应用软件开发:ai学习自律辅助软件.pdf 基于开源鸿蒙编写的ai辅助学习软件
    发表于 11-12 15:38

    芯科科技推出Simplicity Ecosystem软件开发套件

    Silicon Labs(芯科科技)今日在深圳盛大举办享誉业界的Works With开发者大会,同时宣布推出Simplicity Ecosystem软件开发套件,它不仅是下一代模块化的软件开发
    的头像 发表于 10-27 16:45 1714次阅读

    十大北京软件开发公司推荐:有哪些优点和缺点

    十大北京软件开发公司推荐:有哪些优点和缺点
    的头像 发表于 10-04 09:44 4191次阅读
    十大北京<b class='flag-5'>软件开发</b>公司推荐:有哪些优点和缺点

    2025北京软件开发公司推荐汇总:盘点10家优秀软件定制开发公司

    2025北京软件开发公司推荐汇总:盘点10家优秀软件定制开发公司
    的头像 发表于 09-30 09:16 3052次阅读
    2025北京<b class='flag-5'>软件开发</b>公司推荐汇总:<b class='flag-5'>盘点</b>10家优秀<b class='flag-5'>软件</b>定制<b class='flag-5'>开发</b>公司

    2025“芯原杯”全国嵌入式软件开发大赛圆满落幕

    此前,2025年7月20日至26日,第四届“芯原杯”全国嵌入式软件开发大赛决赛在海口成功举办。
    的头像 发表于 08-06 09:51 1685次阅读

    知识分享 | 敏捷方法在基于模型的软件开发项目中的应用

    传统的瀑布软件开发流程存在诸多局限,这使得应用敏捷原则变得尤为重要,尤其是面对复杂且不断变化的开发环境时。作为最高效的软件开发方法之一,基
    的头像 发表于 07-16 16:52 1492次阅读
    知识分享 | <b class='flag-5'>敏捷</b>方法在基于模型的<b class='flag-5'>软件开发</b>项目中的应用

    主流机器视觉软件开发平台介绍及对比?

    机器视觉作为工业自动化的核心技术,其软件开发平台的选择直接影响项目的开发效率、成本及最终性能。本文将对比当前主流的视觉开发平台,包括LabVIEW、VisionPro、Halcon
    的头像 发表于 07-14 09:44 3067次阅读
    主流机器视觉<b class='flag-5'>软件开发</b>平台介绍及对比?

    嵌入式软件开发常用的软件有哪些?

    对于初学嵌入式的朋友们,会想要了解嵌入式软件开发常用的软件有些,有什么用。那么看以下常用的软件介绍。 1.Visual Studio Code 简称VSCode:它是一款由微软开发且跨
    发表于 07-03 17:06

    基于瑞萨64位MPU RZ/G2L进行32位应用软件开发

    本文主要介绍基于瑞萨64位MPU RZ/G2L进行32位应用软件开发的介绍,用于解决客户32位软件移植相关问题,供客户参考。
    的头像 发表于 06-26 15:48 2306次阅读
    基于瑞萨64位MPU RZ/G2L进行32位应用<b class='flag-5'>软件开发</b>

    北京顶尖软件开发公司大盘点:谁能满足您的定制需求?

    软件
    北京华盛恒辉科技
    发布于 :2025年06月06日 14:50:13