软件方法论——瀑布 vs 敏捷 vs DevOps
IT 技术行业不断瞬息万变。在过去的十几年间,它经历了技术与各种方法的不断发展,人们不断需要升级集成不同的解决方案来满客户和市场需求。
软件工程从瀑布方法开始进化,目前软件研发方式开始转向敏捷方法,而现在主要关注 DevOps 原则与最佳实践。
为什么国内外等价值数百亿美元的大厂都采用了 DevOps?这一切是从哪里开始的?是什么导致了 DevOps 的发展?来看正文。
什么是瀑布模型?
瀑布模型是遵循线性软件开发过程的软件开发技术,瀑布开发模型要求在进行下一步之前完成每个步骤。
顺序软件开发的每个阶段都是独立的,需要从一开始就非常清楚。收集需求是第一步,然后是分析、设计、编码、测试和部署。
随着软件开发过程的动态特性的出现,在实施过程中需要不断变化,由于其开发的僵化特性,模型逐渐过时,因为人们无法回到前一阶段进行任何变化。瀑布方法最适合 -
瀑布模型的缺点
在瀑布模型始终不足的领域,以对客户有意义的方式获取和记录需求的有效性。在流程早期提供的细节和细节通常会让客户感到恐惧。
客户可能会对交付的软件产品不满意。尽管如此,他们通常在项目几乎完成之前不会注意到,并且进行必要的更改可能会非常昂贵。
什么是敏捷?
敏捷是一种基于团队的迭代开发方法。该策略非常强调应用程序的快速交付。
可交付成果按业务价值的顺序排列,并由客户选择。如果一个 sprint 的所有计划工作都无法完成,则重新排列 sprint 的优先级,并确定未来 sprint 值的信息。
敏捷很大程度上依赖于开发人员、测试人员和客户在项目的所有阶段的参与,尤其是在审查期间。
以下是用于实施敏捷的各种过程:
Scrum - 这是一个 7-9 名成员团队驱动的开发环境。Scrum 通常由 Scrum 主管、产品负责人和 Scrum 团队组成。
水晶方法论——这种方法论强调人与人之间的互动,而不是工具。
动态软件开发方法- 也称为“快速行动开发模型”,团队成员被赋予决策能力。
功能驱动开发 (FDD) - 在此方法中,每个阶段都涉及在给定时间内完成一个小功能。
敏捷的优势
客户可以参与开发过程的所有阶段,甚至可以做出贡献。
通过自始至终与项目团队积极直接地合作,客户培养了强烈的主人翁意识。
如果应用程序的营销是最重要的,敏捷技术可以用来创建一个可以重复迭代直到应用程序完成的基本版本。
什么是 DevOps?
DevOps 是一种工程文化,专注于将开发和运营集成在一起以实现更高效的开发。术语“DevOps”指的是组织协作,而不是框架或标准。为了实现持续集成和部署,DevOps 生命周期的各个阶段都集中在持续监控、操作、实施和响应最终用户反馈上。
DevOps 生命周期由 8 个流程组成,其中包括:
1. 计划:在开始一个项目之前,计划、跟踪、可视化和总结。
2. 编码:开发人员使用 Git、Github 和 Gitlab 等版本控制平台来编码。
3. 构建:开发人员使用 Kubernetes、Docker、Maven、Gradle 和 Apache 等工具来创建一个预发布版本,该版本由构建号而不是发布号识别。
4. 测试:QA 团队通过测试运行新代码,以发现和解决错误。
5. 发布:在此步骤中,在新环境中计划、安排和控制已构建的过程。
6. 部署:在此阶段,部署过程一直进行中。这样做的方式是,在任何时候对代码进行的任何修改都不会对运营中的网站产生影响。
7. 运营:产品或应用程序在部署后提供给客户使用,客户可用于日常需求。
8. 监控:运维团队将在此期间处理生产中发现的任何不当系统行为或者问题。
DevOps 的优势
更快的交付——DevOps 原则始终以更快的迭代和标准化流程而业界闻名,它让产品在市场上随时可用;
打破孤岛——DevOps 已经取代了线性的瀑布流程,在这种流程中,一个团队将完成与项目相关的所有职责,然后将其交给另一个团队继续工作。
软件质量——因为 DevOps 有助于频繁发布,所以更容易发现和修复问题,从而提高软件稳定性。因此,开发者有更多时间专注于质量和创新。
三种模型之间的主要区别
定义明确、可预测且不太可能发生重大变化的软件开发项目最好使用瀑布方法处理。通常,更小、更简单的企业选择这一类。瀑布项目在开发周期中不包含反馈,其流程定义很严格,并且几乎没有输出可变性。
敏捷方法建立在增量、迭代开发的基础上,可以迅速生产出适销对路的业务产品。在增量开发过程中,产品被分解成更小的部分,每个部分都经过构建、测试和修改。敏捷计划不是从完整的定义开始的。他们依靠持续的反馈来指导团队自身的进步。
在敏捷开发中,DevOps 就是关于合并团队和自动化。敏捷开发既适用于传统软件开发文化,也适用于 DevOps 文化。与典型的 dev-QA-ops 组织相比,开发人员不会在 DevOps 中将代码扔到地上不管,团队负责监督整个过程。
小结
诚然,软件开发有很多种方法策略,而且每个组织都是不同的,我们选择的方法在很大程度上取决于公司的项目、受众还有其它各种其他参数,然后量体裁衣。
作者:万能的大雄
相关阅读: