瀑布、敏捷、混合。在谈论软件开发生命周期(SDLC)时,常常会用到这些词,但是它们到底是什么意思呢?以及它们之间的关系如何?接下来,小编将根据软件开发生命周期的演变介绍几种当前的趋势。
1
什么是软件开发生命周期?
软件开发生命周期是用于设计、开发、测试和部署软件的软件工程过程。SDLC的每个阶段都旨在为公司提供可预测的可交付成果以及对预算和截止日期的可见性,从而对其软件开发进行控制。采用SDLC模型的目的是以高效的方式和较低的成本生产高质量的软件。
当前,软件开发中使用的最常见的SDLC模型包括瀑布法和基于敏捷的方法论。
2
瀑布软件开发
瀑布模型是用于管理软件开发的第一个过程模型,瀑布在1970年代初期引入,遵循线性顺序的开发周期,其中每个阶段都是离散的,并且仅在前一个阶段完成时才开始。在此模型中,它来自制造业和建筑业,进度从上到下流动,就好像瀑布一样。
被誉为软件工程瀑布模型的创建者温斯顿·罗伊斯确定了以下SDLC阶段:
要求:Waterfall的第一步是预先收集所有客户需求,在交付软件之前,这是设计客户的唯一阶段。
设计:这是软件架构阶段,包括逻辑和物理设计。
执行:在此阶段,开发人员根据设计阶段的规范来生成和测试代码。
确认:软件已发布给审核产品的客户,以确保其满足项目要求。
维护:产品得到维护,任何错误或安全漏洞都已根据需要进行修复。
在传统的瀑布模型下,无论发布的大小如何,两次发布之间的平均时间为一到两年。瀑布模型为软件开发提供了集中且标准化的方法,易于管理,当然也存在缺点,其并不灵敏或不能响应不断变化的客户需求,一旦团队的进度超过了设计阶段,产品更改的成本就会很高。
3
敏捷软件开发
2001年,发布了《敏捷宣言》,并延长了软件开发生命周期。敏捷宣言不是技术上的框架或方法,它是一套12条指导原则,着重于领导力,团队合作和客户满意度。其中一些核心原则包括:
通过尽早频繁地交付软件来满足客户的需求;
面对面的交流是最有效和高效的;
在开发中的任何时候都可能发生更改;
简单是必不可少的。
敏捷运动的主要成果之一是开发周期更短,小型企业是最早开始采用敏捷方法的公司,因为它们可以通过在很短的时间内迅速满足客户对附加功能的需求来使自己与众不同。中型公司看到采用敏捷实践的好处后开始也纷纷效仿。
敏捷就是要精益求精,并为客户带来最大的增值。它包括瀑布中的所有核心步骤,另外,与瀑布式不同,SDLC的各个阶段可以在敏捷实践中并行运行,从而使其对市场变化更加敏感。
4
SDLC的敏捷方法
如前所述,敏捷比模型更像是一种思维方式,但是,有许多敏捷框架采用迭代方法进行开发,并专注于更好的沟通,客户满意度和上市速度。其中最受欢迎的前五名方法如下:
Scrum:将工作分解称为sprint的小型模块定时迭代,每天的站立会议对于沟通进度至关重要。
看板:此方法专注于可视化工作负载,这些工作负载是在容量许可的情况下拉动的,而不是将工作推给开发人员。
XP(极限编程):XP具有多个较短的开发周期,从而降低了更改成本并提高了生产率。
Crystal:被描述为“人力,自适应和超轻量级”的模型,人们的交流方式对项目的影响最大,因为它关注的是人与人之间的互动,而不是流程和工具。
精益软件开发:该方法论源于精益制造,具有七项原则,包括消除浪费,提高质量,创造知识,延迟决定,快速交付,尊重人员并整体优化。
尽管它们之间存在差异,但是这些方法具有相似的目标:降低成本,改善跨工程的沟通和协作,提高客户满意度以及对市场变化做出更快的响应。
5
Waterfall-Agile混合软件开发
在实践中,瀑布式和敏捷式各有优缺点。尽管就发布周期而言,瀑布式无法与敏捷并驾齐驱,但在预算和时间表方面瀑布式更加可预测,因为范围通常更明确地定义。而且,尽管敏捷方法更能适应不断变化的市场条件和客户需求,但长期项目可能难以计划,并且对开发人员造成了更大的负担。
为了平衡每种方法的局限性,许多软件组织采用了一种混合方法。这里的想法是利用两种方法中的最佳方法:通过交流和敏捷执行瀑布规划。
在混合方法下,团队实施瀑布式的结构化前期计划流程。当瀑布式计划分解成较小的开发块时,敏捷就起作用了,以便可以更快地将新功能部署到客户。这种方法同时提供了结构和速度。
6
SDLC中的安全性
由于应用程序仍然是外部攻击的最主要的手段,因此在SDLC的背景下我们不得不提起经常被忽略的安全性。
当涉及安全性时,瀑布的传统线性方法可能是一个好方法。当在后期测试中发现诸如缓冲区溢出之类的安全漏洞时,很难进行代码更改。为了纠正这些漏洞,开发人员最终不得不检查几个月才发现的代码,这些代码效率并不高。
较新的SDLC模型更适合开发安全软件,这在一定程度上是因为它们的迭代方法使在需要进行漏洞修复时随时可以轻松进行更改。开发人员在进行处理较小的代码块时也会降低出现其他意外后果的几率,错误影响较小,更易于修复。此外,敏捷模型的连续发布周期使安全性向左转移,以防止测试瓶颈。开发人员现在可以通过更早地在SDLC中检查和测试代码来处理许多安全工作。
7
寻找有效的SDLC模型
无论您采用瀑布式,敏捷式还是混合式方法,软件开发都是一项巨大且高度个人化的工作。在每个模型中,基本任务都是相似的-设计,开发,测试,部署。它们执行的方式各不相同。
选择正确的方法取决于组织的特定项目,需求和环境。如果软件已经成熟并且其要求已明确,那么瀑布可能是最佳的选择。如果上市速度和客户的投入更加重要,那么组织可以考虑采用敏捷模型。
最后,对于SDLC模型,没有最佳“一刀切”的产品,为了选择最适合组织的产品,组织必须首先评估自己的独特需求,然后选择最合适的模型。
领取专属 10元无门槛券
私享最新 技术干货