什么是瀑布开发?适用于哪些场景?有哪些瀑布开发管理系统?
瀑布模型产生的背景是复杂的,多方面的,也是必然的。
一是 1968 年软件危机爆发,需要标准化系统化规范化的软件开发方法来辅助危机的解决;
二是硬件的快速发展催生了新的高级语言,软件的数量和规模急剧增长,软件的交付、协作与管理滞后被视为软件失败的主要帮凶;
三是软件规模化和工程化过程中,存在以下几个问题:
-
缺少规划和设计环节,软件的结构随着软件规模的膨胀变得无法维护,软件开发通常处于失控的情况下运行;
-
忽视需求的重要性,缺少有效的过程管理和资产沉淀,导致软件开发混乱无序;
-
没有考虑软件的可测试性和可维护性,缺乏文档等关键过程活动资产,导致软件的交付失败率居高不下。
在这种背景下,亟需一个系统化的、规范的、顺序的软件开发流程来保障软件交过过程的协同与管理,确保软件交付的成功率,瀑布模型在这些期望和要求下产生了。
瀑布模型(Waterfall Model)是Royce在1970年提出的,他把大型软件开发分为:分析与编程,象工厂流水线一样把软件开发过程分成各种工序,并且每个工序可以根据软件产品的规模、参与人员的多少进一步细分成更细的工序。
该模型非常符合软件工程学的分层设计思路,所以成为软件开发企业使用最多的开发模型。
一、瀑布模型的特点:
(1) 严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。
(2) 使用里程碑的方式,严格定义了各开发阶段的输入和输出。如果达不到要求的输出,下一阶段的工作就不展开。
(3)重视和强调过程文档,在开发的中后期才会看到软件原型,早期只能通过文档来了解系统的模样。在这种情况下,文档的重要性仿佛已经超过了代码的重要性。
(4)瀑布模型把每个开发阶段都定义为黑盒,希望每个阶段的人员只关心自己阶段的工作,不需要关注其他阶段的工作。
(5)瀑布模型产生的管理文档(计划书,进度表)等,能让不太了解该项目的人也能看懂项目的进度情况(只有能看懂百分比就行),很适合向领导汇报用。
(6)所以管理人员比较喜欢瀑布模型的原因是文档可以理解为开发的速度,可以方便地界定不同阶段的里程碑。瀑布模型的用户很多,也有一些反对的意见:
-
第一、瀑布模型不适合客户需求不断变化的软件开发,尤其是客户的业务管理的软件,业务随着市场变化,而软件初期的设计可能已经大大变化,而后期的需求更改成本是开始的10倍基数。在ERP盛行的软件市场里,一方面市场带动需求变化,另一方面初期客户对需求描述不清楚,都为瀑布模型的使用团队带来困难。
-
第二、瀑布模型是一种软件文档的开发,把开发者变成流水线上的机器,大量重复性的工作让编程人员提不起兴趣,工作很枯燥,没有激情,编程成了一种没有创意的机械劳动,这让一向以高科技为标志的高级程序人员大为恼火。
(7) 没有迭代与反馈。瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应,瀑布就意味着没有回头路。
(8)软件生命周期前期造成的Bug的影响比后期的大的多。
(9)代价比较大的主要原因还是每个开发阶段的步子过大,每一次调整都可能直接,某个部分重新来过,框架结构重新搭建等等。
(10)更适合需求相对稳定的大型项目。
二、瀑布开发的优点和不足
瀑布开发的优点:
1.为项目提供了按阶段划分的检查点。
2.当前一阶段完成后,您只需要去关注后续阶段。
3.可在迭代模型中应用瀑布模型。
4.它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
瀑布开发的缺点:
1.各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
2.由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
3.通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
4.瀑布模型的突出缺点是不适应用户需求的变化。
三、瀑布模型适用场景
任何模型都有其优势和不足,也有其适用场景,扬长避短方得始终。
瀑布模型一般适用于以下场景:
1. 需求在规划和设计阶段就已确定,且项目开发周期内需求没有或极少变化,对需求变更进行严格控制,例如航空航天、金融核心系统等;
2. 稳定的低风险项目(对目标、环境非常熟悉),规模小实现简单易受控的项目;
3. 合同式的合作方式,严格按照说明执行,客户需求明确且不参与软件实现过程。
四、支持瀑布开发模式的研发管理系统有哪些?
这里我们主要介绍两款知名工具 PingCode 和 Jira。
1、PingCode
PingCode 是国内的一款研发项目管理工具,同时支持瀑布开发与敏捷开发模式,曾在2021年36氪发布的中国企服软件金榜-研发项目管理榜TOP1;
产品能力介绍:
PingCode 具备八大子产品,覆盖从客户反馈、规划、开发、编码、构建、测试到发布上线等研发管理全流程管理:
-
Ship(产品管理):提供工单收集、需求池管理、需求评审、产品路线图等能力,打通客户、业务团队和产研团队之间的协作,帮助团队规划产品路线;
-
Project(项目管理):支持敏捷开发、瀑布开发、Kanban等国内主流研发管理模式,以及规模化敏捷(SAFe)、项目集等的管理,规范团队的协作流程;
-
Testhub(测试管理):提供用例维护、评审,测试计划、自动化测试、测试报告、缺陷提交等能力;
-
Wiki(团队知识库):提供文档协作、结构化团队知识管理等能力,帮助生产和结构化沉淀团队规范、制度、实践经验;
-
Goals(目标管理):提供战略目标、团队目标、个人目标管理,让所有项目都聚焦于共同的目标,并在更高视野上及时了解企业目标进展;
-
Flow(研发自动化管理):提供自动化技术,将重复性和烦闷的手动操作变成自动化执行,让团队专注高价值生产;
-
Insight(效能度量):提供研发效能自动采集等能力,通过数据驱动的方式更加准确地评估和改善研发效能;
-
Access(目录服务):集成企业级帐号目录和支持单点登录,全局统—安全管控;
-
应用市场:集成了研发中主流的工具,如Git、Jenkins、gitlab等等,实现了不同工具间的数据打通;能够在飞书、企微等平台使用;
2、Jira
Jira可以适应许多场景,无论是初创公司还是大型企业Jira都能较好的提供服务。Jira支持多种设备并提供灵活的部署方式,可快速完成上线,并允许技术人员或非技术人员进行个性化配置。Atlassian 的这款产品无需使用任何第三方协作软件,其高级的工作流引擎、灵活的数据仪表板带来了极致用户体验。
简而言之,Jira 提供的能力包括:
· 多渠道沟通
· 强大的自定义工作流
· 无限添加的自定义字段
· 缺陷检测及修复
· 交互式仪表板
· 安全管理
· 团队活动报告
· 第三方业务系统集成
为什么选择PingCode 而不是Jira?
-
25人以下免费,收费版价格仅为Jira的30%-40%;
-
产品开箱即用,简单易上手,不需要像Jira 那样经过好几月的培训,以及专门的系统管理专家配置系统才可使用;
-
提供专业的敏捷管理咨询以及客户成功服务,Jira在国内无原厂服务;
-
有国产化需求;
为什么选择 Jira 而不是 PingCode?
-
PingCode 只有中文版本,且主要面向国内用户;
-
企业规模在几千人以上,有几百万预算;
推荐阅读:
1、瀑布式开发与敏捷开发的区别是什么: https://worktile.com/blog/know-01/
2、国内外主流敏捷开发项目管理工具盘点: https://worktile.com/kb/ask/9349.html