开发模式Note

瀑布型开发模式(Waterfall)

在1970年由温斯顿·罗伊斯(Winston Royce)提出,作为最早出现的软件开发模型,它把项目分解成一系列可管理的步骤或阶段。每个阶段完成后才能进行到下一个阶段。这种类型的开发过程通常用于大型系统中

例如:

>1.需求分析Requirements
>2.设计Design
>3.开发编码Development
>4.测试Testing	
>5.部署Deployment
>6.维护Maintenance

优点:易于理解与规划;明确性强,便于人员间分工合作,有利于控制风险;适合于大规模复杂应用场景。

缺点:不适合小规模或者快速原型制作;缺乏灵活度,难以适应变化;对团队协作要求高。

瀑布

迭代式开发

迭代式开发也被称为迭代增量式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式的一些弱点,有更高的成功率。在迭代式开发中,整个开发工作被组织为一系列短小的、固定长度的小项目,每次迭代都包括需求分析、设计、实现与测试。采用迭代式开发时,工作可以在需求被完整地确定之前启动,并在一次迭代种完成系统的一部分功能或业务,再通过客户的反馈来细化需求,并开始新一轮的迭代。

迭代式开发有如下特点:

  • 每次只设计和实现产品的一部分。

  • 一步一步地完成。

  • 每次设计和实现一个阶段,这叫作一个迭代。

迭代

螺旋式开发

螺旋式开发是由巴利·波姆(Barry Boehm)在1988年正式发表的软件系统开发模型,它兼顾了快速原型的迭代特征及瀑布模型的系统化和严格监控,其最大的特点是引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减少损失。同时,在每个迭代阶段构建原型是螺旋模型用来减少风险的方法。螺旋模型更适合大型的昂贵的系统级的软件开发,一开始应用的规模很小,当项目被定义得更好、更稳定时逐渐展开。其核心在于不需要在刚开始时就把所有事情都定义清楚,可以先定义最重要的功能去实现它,然后听取客户的意见,再进入下一个阶段,入此不断循环、重复,直到得到满意的产品。螺旋模型在很大程度上是一种风险驱动的方法体系,因为在每个阶段及经常发生的循环之前,都必须先进行风险评估

螺旋式开发有如下特点:

  • 制定计划:确定软件目标,选定实施方案,弄清楚项目开发的限制条件。

  • 风险分析:分析、评估所选方案,考虑如何识别和消除风险。

  • 实施工程:实施软件开发和验证。

  • 客户评估:评价开发工作,提出修正建议,制定下一步计划

螺旋

敏捷开发(Agile)

“敏捷”一词来源于2001年在美国犹他州举行的雪鸟会议,在这次会议上,Martin Fowler,Jim Highsmith等17位著名的软件开发专家提出了Agile(敏捷开发)这个概念,并共同签署了《敏捷宣言》。敏捷宣言的主要价值观如下:

  • 个体和互动高于流程和工具。
  • 工作的软件高于详尽的文档。
  • 客户合作高于合同谈判。
  • 响应变化高于遵循计划

简单地说,“敏捷开发”是把原有模式下的大需求拆分成多个小需求,并采用小步快跑的方式进行开发与迭代,原来的一个大环改为一个个小的闭环。在新迭代开始前,产品经理会将需求拆分成具体的开发任务,研发人员进行任务认领,每日站会进行任务的review,直到开发完成,发布新的可用版本

注重客户反馈及时调整,采用短平快的迭代开发形式去达成目标。其核心思想就是“速度比完美重要”。

优点:更加关注用户价值;响应能力强;允许变更;具有良好沟通机制。

缺点:过于重视短期利益,范围仅限于开发和测试阶段,并没有覆盖到部署端,加重了运维的负担,因为运维追求的目标是稳定,而频繁的变更往往就是出现问题的根源,这与敏捷的理念产生了冲突。

敏捷

DevOps

DevOps 运动始于 2007 年左右,当时技术社区对于开发与运维之间分开工作的方式,随着越来越多问题的出现,大家逐渐认识到,为了按时交付软件产品和服务,开发和运维必须紧密合作。2009年10月,在比利时根特市举办了首届DevOpsDays大会,这届会议出乎意料的成功,并引起了人们广泛的讨论。后面为了在Twitter上更好的传播,由DevOpsDays缩写为DevOps。

DevOps的英文发音是/ de’vops/,这个词是由Development和Operations两个词的简写组合而成。

在维基百科中对于DevOps的定义是:一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例, 通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。可以说,DevOps的出现正是为了打破开发和运维人员之间的壁垒,让两者得以更加通畅的沟通,以清除部门间存在的对立,DevOps完善了敏捷开发存在的短板,实现了真正的闭环。

优点:显著提升生产力;增强可靠性和安全性;简化操作和监控任务。

缺点:初始投资大;学习曲线陡峭;不太适用于高度定制的解决方案

DevOps


开发模式Note
https://centyuan.github.io/2023/12/06/软件工程与项目管理/开发模式/
作者
hlyuan
发布于
2023年12月6日
许可协议