8 种基本软件开发模型:选择哪一种?_请问有哪些软件过程模型,并指出在软件开发时如何选择?-程序员宅基地

技术标签: 经验分享  sdlc  软件基础理论  软件框架  

软件工程是一个非常复杂的过程。在软件开发阶段要遵循不同的软件开发生命周期模型来指定和设计。这些模型也称为软件开发生命周期(SDLC)模型/方法。每个过程模型都遵循其类型所独有的一系列阶段,以确保软件开发步骤中的成功。

如今,已经有 50 多种公认的 SDLC 模型。它们都不是完美的,每一个都给特定的软件开发项目或团队带来了有利的方面和不利的方面。今天,我们将讨论业内最重要和最受欢迎的 7 种 SDLC 方法:

  • 瀑布模型
  • V型
  • 迭代和增量模型
  • 螺旋模型
  • 大爆炸模型
  • 敏捷模型
  • 原型模型
  • DevOps

这些方法中的每一种都有其各自的特点,但是它们的共同目的是组织项目管理。这使团队能够尽可能经济高效地快速生产高质量的软件。

 

1.瀑布模型

image

瀑布模型(Waterfall) 是最简单的软件开发历史上第一个 SDLC 模型。在瀑布模型中,开发过程是线性的。任务和阶段按严格顺序一个接一个地完成。进度平稳地向下流动,就像瀑布上的水一样。

瀑布模型的主要缺点是不灵活。瀑布易于理解且易于管理。但是过早的延迟会拖延整个项目的时间表。由于一旦完成阶段,几乎没有修改的余地,因此只有进入维护阶段才能解决问题。如果需要灵活性,或者项目是长期的且正在进行的,则此模型不能很好地工作。

 

2. V 型模型

image

V 形模型也称为 V 模型或验证与验证模型,是瀑布方法的扩展。使用 V 模型时,进度并不会直线移动,而是在实施和开发后逐渐上升。

对于 V 型 SDLC 项目,早期测试介入是与 瀑布模型相比的主要区别。每个开发阶段都有一个并行测试阶段,这有助于在继续下一步之前验证和验证每个步骤。

 

3.迭代和增量模型image

迭代和增量 SDLC 模型将迭代设计和工作流与增量构建模型结合在一起。在这种情况下,团队将按周期开发产品,并以渐进方式构建小零件

开发过程从简单实施一组严格限制的小型产品需求开始。然后对该产品进行增强,并使其本身成为更完整的版本,直到完成并准备好进行部署为止。每次迭代都可能包含设计更新和新功能。

迭代和增量模型的一个有价值的特点是可以在不知道所有需求的情况下开始开发。该模型包含其他 SDLC 模型的步骤-需求收集,设计,实施和测试,但要经过多次构建。开发团队可以利用先前构建中取得的成就来改善下一构建。

迭代和增量 SDLC 模型可能看起来像一组微型瀑布模型或微型 V 形模型。

 

4.螺旋模型

image

螺旋 SDLC 模型是原型方法和瀑布方法的结合。螺旋模型被认为是最灵活的 SDLC 方法之一。它从迭代模型及其重复中获得启发。该项目以“螺旋式”的方式反复经历四个阶段,直到完成为止,从而可以进行多轮改进。

  1. 规划
  2. 风险分析
  3. 工程
  4. 评价

螺旋模型主要用于大型项目,它允许构建高度定制的产品,并且用户反馈可以在项目的早期就被纳入。但可能有项目会形成永无止境的螺旋式发展的风险。

 

5.大爆炸模型

image

Big Bang 模型通常不遵循任何特定过程或说明。开发从当前可用的资源和工作开始,几乎没有计划或根本没有计划。结果,客户得到的产品甚至可能无法满足要求。功能是动态实现的。

Big Bang SDLC 模型的主要思想是将所有可用资源分配给产品本身的开发,主要是在编码方面,而不用担心满足计划。这是仅用于一两个软件工程师的小型项目的 SDLC 方法之一。

 

6.敏捷模型

image

敏捷(Agile) SDLC 模型是迭代和增量方法的组合,致力于通过早期交付工作软件来适应灵活的需求并满足用户和客户的需求。敏捷项目中的需求和解决方案可能会在开发过程中发展。

通过敏捷开发,该产品被分为小的增量构建,并以迭代方式交付。将所有任务划分为较小的时间范围,以便为每个版本准备工作功能。最终产品版本包含所有必需的功能。敏捷仍然是技术行业中使用最广泛的SDLC。

 

Scrum和看板

敏捷软件开发生命周期有许多成熟的方法。最受欢迎的两个是Scrum和看板

image

 

Scrum 是最受欢迎的敏捷框架之一,用于在sprint中交付软件的工作流框架,通常为期两周。Scrum专注于如何在开发环境中管理任务,并有助于改善团队动态。

由于Scrum具有高度的适应性,因此没有一种千篇一律的方法来执行Scrum。但是总的来说,团队需要在特定项目中安排相关的角色,事件,工件和规则。

典型元素:

  • Sprint 计划,团队计划在给定Sprint中要完成的工作量
  • 每日 Scrum 会议,团队的每日简短聚会,讨论已完成的工作,他们今天打算做什么以及自上次会议以来发生了什么问题
  • Sprint 审查,在 Sprint 结束时进行的一次聚会,在此期间,团队将检查完成的工作并根据需要对产品积压进行更改
  • Sprint 回顾会在新的 Sprint 开始之前进行。在回顾期间,Scrum 团队总结了工作并根据他们过去的冲刺经验为未来的冲刺制定了改进计划。

 

看板是一种广泛用于敏捷SDLC模型的管理可视化方法。它有助于在开发团队中提高和维持高水平的生产力。看板的运行周期很短:如果Scrum大约是几周,那么看板大约是几个小时。Scrum的目标是完成冲刺,而看板的目标是完成任务。看板是反多任务处理的。

看板的主要做法是:

  • 可视化工作流程
  • 限制进行中的任务
  • 管理工作流程

使用板实现看板,该板上所有项目任务都可视化,并分为待办,进行中,暂停,完成和审查等列。看板还适用于较少的技术活动,例如销售,市场营销和招聘。

 

7.原型制作

image

原型是系统的一个初期版本,可以快速开发以查看客户是否满意。客户参与开发过程会增加最终产品被早期接受的机会。当客户或开发人员不能百分百确定设计的可行性,产品要求,算法,业务规则等时,原型设计将非常有用。

原型模型有助于可视化软件的某些组成部分。这有助于避免客户与开发团队之间的误会。

 

8.DevOps模型

image

DevOps是新手模型。DevOps来自两个趋势:敏捷方法和精益方法的应用。通常,DevOps 是通过自动化基础架构和工作流程并持续跟踪应用程序性能来执行的。DevOps方法使您可以增加部署频率,编写代码并缩短部署新代码所需的时间

DevOps是工具,实践和方法的组合,鼓励开发人员,运维人员和 QA人员共同努力,以进行持续的开发,测试和部署活动,以加速创新并交付更高质量和更可靠的软件产品和功能。

 

哪种SDLC方法适合你?

这些SDLC方法中的每一种都为你在职业生涯中会遇到的各种项目挑战提供了独特的流程。

要知道,没有一种方法是完美的,找到合适的一种或多种模型,去尝试,解决我们当下的问题就好。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Shinranyao/article/details/108863656

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签