Day 29 - 开发流程(上) 瀑布式(Waterfall Model) & 敏捷式(Agile Model)

终於快结束30天的挑战了,专案开发的知识点除了环境安装、技术学习以外,还有一个重点知识,那就是专案的开发流程,不论是想要开发甚麽样的大型专案,都一定要先学习各种开发流程,然後寻找最适合现在使用的流程下去开发,这边会介绍两个常被人提及的开发模型,瀑布式敏捷式

软件开发生命周期

在讲开发模型以前,要先了解一下软件开发生命周期(Software Development Life Cycle,SDLC),周期各阶段如下图所示。
https://ithelp.ithome.com.tw/upload/images/20211014/20140728XVP6SSwtkO.png

分析与计画(Analysis and Planning)

这个步骤为专案开发的起点,当客户提出需求时,第一个步骤就是计画,在这个阶段需要PM、UI/UX Designer、Developers 以及客户共同确认几个目标。

  1. 确认需求
    • 厘清所有需求,确认专案范围
  2. 估计成本、时间、效益
    • 这个专案会花多少时间、人力、能产出多少收益。
  3. 时程安排
    • 相较於其他专案,这个专案的优先度如何,再根据优先度进行时程安排。

设计和制造产品原型(Design and Prototyping)

当需求与范围确认完成後,就开始进入设计流程,这个阶段交由PM 或UI/UX Designer 负责,在这里也有分为几个阶段。

  1. Wireframe 线框图
    Wireframe 是以简单的草稿图,展示产品介面及使用者流程,在这个阶段可以不用过度在意细节,主要讨论功能性以及流程,避免分散讨论注意力,同时加速功能规划的效率。
  2. Mockup 视觉稿
    根据确定好的Wireframe 进行视觉设计上的配色、效果、版面调整等,以增强使用者体验的效果,这阶段必须与PM 讨论设计的功能效果以及与前端工程师沟通效果制作与开发成本以进行取舍。

软件开发(Software Development)

到这里才正式进入开发的流程,从一开始到这个阶段才衍生出不同开发模型,例如Waterfall Model、Agile Model 等,依照公司的文化、步调以及团队的组成等等去决定使用的开发模型。

测试(Testing)

当然,在开发的过程中,团队也会进行测试、修Bugs的过程;然而在软件开发完毕,在将产品正式部署以前,必须再更深入的测试,了解使用者的反应、喜好以及软件运作的情况,有机会做出进一步的修改。
通常,测试的工作会交由开发团队中的QA (Quality Assurance)团队,邀请一小群的Users 去测试Beta 版,利用追踪工具、埋点去检视使用者的操作情况。

实施(Implementation)

在这个步骤就是将过去开发的结果部署到正式机上,将产品推向市场,发布产品给所有使用者。

维运和更新(Maintenance and Updates)

在产品正式部署後,会收到许多User 的反馈,需求就有可能进行更动,当然也有可能跑出许多测试时未发现的Bugs,这个阶段就必须因应Users 的反馈进行维护并持续更新。
这里也就是被称为生命周期(Life Cycle) 的原因,因为整个开发流程就是不断循环的一个过程,会根据使用者的需求改变、市场的改变,重复着上述每个步骤持续让产品更新迭代,才能够使产品生生不息。

Waterfall Model

Waterfall Model 瀑布模型也称作瀑布式开发,它是大多数软件开发的最初标准,基本上就是遵循着SDLC 的流程,必须完整的经历生命周期的每个步骤,系统化的考虑时间与资源的投入以及分析、设计、技术等。
由於该模型强调开发过程中需有完整的规划、分析、设计、测试等管理与控制,因此能有效的确保系统品质。
https://ithelp.ithome.com.tw/upload/images/20211014/20140728b6WXXmUCxn.png

优点

  1. 强调开发过程中需有完整的规划、分析、设计、测试等管理与控制,因此能有效的确保系统的品质。
  2. 十分清楚的阶段划分,易於分工及责任归属,让每个阶段工作都交由最专业的人执行。
  3. 适合大型专案开发。

缺点

  1. 由於各个阶段的划分完全固定,阶段之间会产生大量的文档,因此提高了工作量。
  2. 由於开发模型是线性的,客户只有等到整个专案的开发末期才会看到开发成果,因而增加了开发风险。
  3. 由上一个缺点衍生出另一个更明显的缺点,专案无法适应客户需求的变化。

Agile Model

Agile Model 敏捷模型也称作敏捷式开发,是一种应对快速变化需求的开发方式,强调开发人员团队成员及客户之间的紧密协同运作、面对面的沟通、频繁交付新的软件版本,能够很好地适应需求的快速变化。
https://ithelp.ithome.com.tw/upload/images/20211014/20140728K8L6PmV91E.png

优点

在敏捷式开发的过程中,会将专案项目分成多个子项目,各个子项目都会经过设计、开发、测试等流程,在子项目完成时,将成品展示给客户,若符合需求再向下开发,反之则进行修正改进,如此一来可将整体风险降至最低,并使产品能够快速适应变化。
由於将开发工作细分化,大大减少了前期规画和设计的数量,因此可将每个子项目的开发时程减少到一到四周的时间,以保证可以快速迭代,迭代的方式可能不会一次增加足够的功能可以立即发布使用,目标是在每次迭代都可以有个可用的发行版,因此完整产品的发布或新功能可能需要经过多次迭代。

缺点

因为较注重人员的沟通而忽略文件的重要性,若专案人员流动性太高,会给维护带来不少难度,特别式专案存在新手较多的时候,老手会比较辛苦。

参考网站

软件业到底在干嘛?软件业开发流程、各职能大揭密!
瀑布模型 - 维基百科,自由的百科全书
敏捷软件开发 - 维基百科,自由的百科全书
Difference between Agile and Waterfall model - javatpoint
【笔记】Waterfall model 瀑布模型介绍 @ 橘子乱说话 :: 痞客邦 ::


<<:  【Day 5_ Arm Mali GPU家族究竟是何方神圣_下篇】

>>:  【Day 6_ Arm的开发者友善工具组Arm Mobile Studio】

Day4 寻找合适的 Lua 开发工具

[CC: Tweaked / Lua] 寻找合适的开发工具 在上一回,我学会了自订 CC: Twea...

乐观锁 vs. 悲观锁

ref : https://medium.com/dean-lin/真正理解资料库的悲观锁-vs-乐...

007 2021线上看

007 2021线上看 世界局势波诡云谲,再度出山的邦德(丹尼尔·克雷格饰)面临有史以来空前的危机。...

使用WiringPi

昨天写了 "利用网页浏览器执行Raspberry Pi的程序" 很直觉地想把讯息...

D15/ 为什麽 remember 是 composable function? - @Composable 是什麽

今天大概会聊到的范围 @Composable compose compiler & run...