软件工程:软件开发生命周期 (SDLC)

2023-05-16

软件构建的基本概念之一 - 软件开发生命周期模型。或者只是SDLC模型。SDLC - 是一个连续的过程,从决定启动项目的那一刻开始,并在它完全从开发中移除的那一刻结束。没有一个单一的SDLC模型。它们分为主要组,每组都有其特点和弱点。

阶段1.计划和需求分析 (Planning and Requirement Analysis)

每个软件开发生命周期模型都从分析开始,过程的利益相关者
讨论对最终产品的要求。此阶段的目标是系统要求的详细定义。此外,还需要确保所有流程参与者都清楚地了解任务以及每个需求将如何实施。通常,讨论涉及质量保证专家,如果有必要,他们甚至可以在开发阶段干预过程中的添加。

阶段2.设计项目架构 (Project Architecture)

在软件开发生命周期的第二阶段,开发人员实际上正在设计架构。所有利益相关者(包括客户)都会讨论此阶段可能出现的所有不同技术问题。此外,还定义了项目中使用的技术,团队负载,限制,时间范围和预算。最合适的项目决策是根据定义的要求做出的。

第3阶段。开发和编程 (Development and Coding)

在批准要求后,该过程进入下一阶段 - 实际开发。程序员从这里开始编写源代码,同时牢记先前定义的需求。系统管理员调整软件环境,前端程序员开发程序的用户界面以及与服务器交互的逻辑。
编程本身假设有四个阶段

  • 算法开发
  • 源代码编写
  • 汇编
  • 测试和调试

阶段4.测试 (Testing)

测试阶段包括调试过程。开发过程中遗漏的所有代码缺陷都会在此处检测到,记录下来并传回给开发人员进行修复。重复测试过程,直到删除所有关键问题并且软件工作流程稳定。

阶段5.部署 (Deployment)

当程序最终确定并且没有关键问题时 - 是时候为最终用户启动它了。新程序版本发布后,技术支持团队加入。该部门提供用户反馈; 在利用期间咨询和支持用户。此外,此阶段还包括所选组件的更新,以确保软件是最新的,并且不会受到安全漏洞的影响。

SDLC模型 (Software Development Lifecycle Model)

从第一个也是最古老的“瀑布式”SDLC模型演变而来,它们的种类显着扩大。SDLC模型的多样性由众多产品类型预先确定 - 从简单的网站到复杂的医疗软件。如果你采用下面提到的SDLC模型之一作为基础 - 无论如何,它应该根据产品,项目和公司的特征进行调整。下面给出了最常用,最受欢迎和最重要的SDLC模型:

  • 瀑布模型 (Waterfall Model)
  • 迭代模型 (Iterative Model)
  • 螺旋模型 (Spiral Model)
  • V形模型 (V-Shape Model)
  • 敏捷模型 (Agile Model)

瀑布SDLC模型

瀑布 - 是一个级联SDLC模型,其中开发过程看起来像流程,一步一步地进行分析,预测,实现,测试,实施和支持阶段。该SDLC模型包括完全逐步执行每个阶段。该过程严格记录并预定义,具有该软件开发生命周期模型的每个阶段所期望的功能。

Waterfall SDLC Model Scheme

好处劣势
简单易用和理解只有在最后一个阶段结束后,软件才会准备就绪
由于其刚性,管理简单:每个阶段都有明确的结果和流程审查高风险和不确定性
发展阶段逐一进行不是复杂和面向对象项目的最佳选择
适用于要求明确且不模棱两可的小型或中型项目不适合长期项目
易于确定开发周期中的关键点阶段的进展很难衡量,但仍处于发展阶段
易于分类和确定任务的优先级集成在最后完成,不提供预先识别问题的选项

Waterfall SDLC模型的用例:

  • 准确记录了这些要求
  • 产品定义稳定
  • 技术堆栈是预定义的,这使得它不是动态的
  • 没有模棱两可的要求
  • 该项目很短

迭代SDLC模型

在项目开始之前,迭代SDLC模型不需要完整的需求列表。开发过程可以从对功能部件的要求开始,可以在以后扩展。该过程是重复的,允许为每个循环制作新版本的产品。每次迭代(持续两到六周)都包括开发系统的单独组件,然后,将此组件添加到之前开发的功能中。说到数学术语,迭代模型是顺序逼近方法的实现; 这意味着逐渐接近计划的最终产品形状。

Iterative SDLC Model Scheme

 

好处劣势
某些功能可以在开发生命周期的开始阶段快速开发迭代模型比瀑布模型需要更多资源
可以应用并行开发需要持续管理
进展很容易衡量可能会出现架构或设计问题,因为在短期规划阶段并未预见到所有要求
较短的迭代是 - 更容易的测试和调试阶段小项目的糟糕选择
由于首先完成高风险任务,因此更容易控制风险这个过程很难管理
在下一个sprint中可以防止在一次迭代中定义的问题和风险即使在项目的最后阶段,风险也可能无法完全确定
灵活性和准备变化的要求风险分析需要高素质专家的参与

迭代模型的用例:

  • 最终产品的要求是严格预定义的
  • 适用于大型项目
  • 主要任务是预定义的,但细节可能随着时间而推进

螺旋SDLC模型

螺旋模型 - 是SDLC模型,它分阶段结合了架构和原型。它是Iterative和Waterfall SDLC模型的组合,具有重要的风险分析重点。螺旋模型的主要问题是确定进入下一阶段的正确时机。建议将初步设定的时间范围作为此问题的解决方案。即使前一阶段的工作尚未完成,也将根据计划完成向下一阶段的转变。该计划是根据统计数据引入的,即使从个人开发人员的经验来看,也可以在之前的项目中收到。

èºæSDLC模åæ¹æ¡

好处劣势
生命周期分为小部分,如果风险集中度较高,则可以提前完成阶段以解决问题可能相当昂贵
开发过程准确记录,可根据变化进行扩展风险控制需要高技能专业人员的参与
可伸缩性允许在相对较晚的阶段进行更改并添加新功能对小项目可能无效
早期的工作原型已经完成 - 用户可以更快地指出这些缺陷大量的中间阶段需要过多的文档

旋模型的用例

  • 客户不确定要求
  • 预计在开发周期中会进行重大编辑
  • 具有中级或高级风险的项目,防止这些风险非常重要
  • 应该在几个阶段发布的新产品,以获得足够的客户反馈

V形SDLC模型

V形SDLC模型是经典瀑布模型的扩展,它基于每个开发阶段的相关测试阶段。这是一个非常严格的模型,下一阶段仅在前一阶段之后开始。这也称为“验证和验证”模型。每个阶段都有当前的过程控制,以确保可以转换到下一个阶段。

Vå½¢SDLC模åæ¹æ¡

好处劣势
V形模型的每个阶段都有严格的结果,因此很容易控制缺乏灵活性
测试和验证在早期阶段进行小项目的糟糕选择
适用于需求稳定且清晰的小型项目相对较大的风险

V形模型的用例:

  • 对于需要进行准确产品测试的项目
  • 适用于中小型项目,其中严格要求严格要求
  • 获得所需资格的工程师,特别是测试人员,可轻松到达。

敏捷SDLC模型

在每次开发迭代之后的敏捷方法中,客户能够看到结果并理解他是否满意或不满意。这是敏捷软件开发生命周期模型的优势之一。其缺点之一是,由于缺乏明确的要求,很难估计资源和开发成本。极限编程是敏捷模型的实际应用之一。这种模型的基础包括每周短暂的会议 - Sprint是Scrum方法的一部分。

 

ææ·SDLC模åæ¹æ¡

好处劣势
功能需求的更正被实施到开发过程中以提供竞争力由于永久性变化而无法衡量最终成本
项目按短而透明的迭代划分团队应该是高度专业和客户导向的
灵活的变更过程使风险最小化新要求可能与现有架构冲突
快速发布第一个产品版本通过所有更正和更改,项目可能会超出预期时间

敏捷模型的用例:

  • 用户需求动态变化
  • 由于许多迭代,实施的更改的价格更低
  • 与瀑布模型不同,它只需要初始计划来启动项目

更多推荐的Scrum文章

敏捷中的三个Amigos发展战略是什么?

Three friends refer to the main perspective of testing and inspecting increments in business, during and after development. They review each story in informal start-up meetings to provide a shared vision of what will be delivered and help ensure that it is the voice of the team, not a single opinion. (三个朋友指的是在业务、开发期间和开发之后测试检查工作增量的主要视角,例如,业务分析师、开发人员、测试人员在非正式的启动会议中回顾每个故事,以对将要交付的内容给出一个共同的共享愿景,并帮助确保它是团队的声音,而不是单一的意见。)

什么是敏捷?什么是Scrum?

Agile is the software development methodology that focuses on customer satisfaction by delivery shippable software frequently. Scrum is one of the many approaches to implement Agile. Scrum is suitable for certain type of projects where there are rapidly changing requirements. (敏捷是一种软件开发方法,它通过频繁交付可交付的软件来关注客户满意度。Scrum是实现敏捷的众多方法之一。Scrum适用于需求变化迅速的特定类型的项目。)

什么是Scrum中的速度?

Velocity in Scrum is a measure of the amount of work a Team can tackle during a single Sprint and is the key metric in Scrum. Velocity is calculated at the end of the Sprint by totaling the Points for all fully completed User Stories. (速度是一个团队在一次冲刺中可以完成的工作量的度量,也是Scrum中的关键度量标准。在冲刺结束时,通过对所有完全完成的用户故事的点进行合计来计算速度。)

为什么Scrum易学难精?

Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value. Whilst it is lightweight and simple to understand it is difficult to implement and hard to master. This article tell you why?(Scrum是一个框架,人们可以在其中解决复杂的适应性问题,同时富有成效和创造性地交付具有最高价值的产品。虽然它是轻量级的,易于理解,但很难实现,也很难掌握。这篇文章告诉你为什么?)

传统项目管理 vs 敏捷项目管理

Traditional project management emphasizes on conducting detailed upfront planning for the project with emphasis on fixing the scope, cost and schedule - and managing those parameters. Whereas, Scrum encourages data-based, iterative decision making in which the primary focus is on delivering products that satisfy customer requirements. (传统的项目管理强调对项目进行详细的前期规划,强调确定范围、成本和进度,并管理这些参数。然而,Scrum鼓励基于数据的、迭代的决策,其中主要关注的是交付满足客户需求的产品。)

Scrum如何演变?

Scrum has not been immune to controversy, and its history of invention is a topic of frequent debate. Some professionals believe that Jeff Sutherland, John Scumniotales, and Jeff McKenna invented Scrum in 1993. And then there are others who vouch for Hirotaka Takeuchi and Ikujiro Nonaka as inventing Scrum in 1986. (Scrum并没有不受争议,它的发明历史是一个经常争论的话题。一些专业人士认为Jeff Sutherland、John Scumniotales和Jeff McKenna于1993年发明了Scrum。还有其他一些人也许相信, 在1986年Hirotaka Takeuchi和Ikujiro Nonaka发明了Scrum。)

什么是5个Scrum的核心价值?

Less known than the process of Scrum and probably under-highlighted, but therefore not less important, are the 5 core Scrum Values upon which the framework is based: Commitment – Focus – Openness – Respect – Courage. These values relate to the ethics of Scrum, thereby -from a social point of view- turning Scrum into a value system. (与scrum的过程相比,人们对scrum知之甚少,而且可能低估了这一点,但同样重要的是,该框架所基于的5个核心scrum价值观:承诺——关注——开放——尊重——勇气。这些价值观与Scrum的伦理有关,因此从社会的角度来看,将Scrum转变为一个价值体系。)

什么是敏捷软件开发?

When talking about Agile, we often talk about ''Agile'' and ''Scrum,'' but, how exactly are related, and how are they different? We take a look of this issue in this Article. (在谈到敏捷时, 我们经常谈论 "敏捷" 和 "scrum", 但是, 它们到底有什么关系, 它们有什么不同?我们在本文中介绍了这一问题。)

Scrum在3分钟内完成

This article covers all the key concept of Scrum framework that make you easily be recalled and apply anytime from your mind as systematic knowledge structure (本文涵盖了 scrum 框架的所有关键概念, 使您可以轻松地被召回, 并从您的头脑中随时作为系统的知识结构应用)

什么是Scrum的三大支柱?

什么是Scrum的三大支柱? SCRUM使用经验方法(或有时称为经验主义)以适应客户不断变化的需求。经验主义是根据实际经历的内容做出决策的行为。经验方法意味着以事实为基础,以经验为基础,以证据为基础的方式开展工作,特别是,进展是基于对现实的观察,而不是基于大量前期要求的虚构计划。 […]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件工程:软件开发生命周期 (SDLC) 的相关文章

  • 【软件工程期末复习内容】

    前言 时不可以苟遇 道不可以虚行 一 软件工程的概念 软件是计算机系统运行的 指令 数据 和 相关文档 的集合 即软件等于程序 数据 加上文档 程序 是事先按照预定功能性能等要求设计和编写的指令序列 数据 是使程序正常处理信息的数据结构及信
  • 软工导论知识框架(六)面向对象分析

    前言 绘制各种类型的图是重点 对于面向对象建模中需要绘制的图总结在第五期中 软工导论知识框架 五 面向对象方法学 一 分析过程 1 获取需求 与用户交谈 向用户提问题 参观用户的工作流程 观察用户的操作 向用户群体发调查问卷 与同行 专家交
  • 软件工程-第七章-实现

    软件工程 第七章 实现 7 实现 7 2 软件测试基础 7 2 3 测试方法 7 2 4 测试步骤 7 3 单元测试 7 3 2 代码审查 7 4 集成测试 7 4 1 自顶向下集成 7 4 2 自底向上集成 7 5 确认测试 7 5 3
  • 目前支持CUDA的nVIDIA的显卡型号 驱动及其 修改过后的 inf文件

    下载169 21 forceware winxp 32bit english whql exe NVIDIA Driver for Microsoft Windows XP with CUDA Support 169 21 我们在运行它的时
  • 计网学习记录,burp抓包等学习记录

    攻防实验室 网安学习记录 1 学习到html的基础架构及其简单用法 1 html基础架构 2 table 定义表格 2 学会用phpstudy创建网站 3 用wordpress对phpstudy创建的网站进行了编辑修改 4 仅通过phpst
  • 软件工程第五章习题

    软件工程第五章习题 1 为每种类型的模块耦合举一个具体例子 2 为每种类型的模块内聚举一个具体例子 1 为每种类型的模块耦合举一个具体例子 只需要答出什么模块和例子即可 一共5个 数控特环内 数据耦合 两个模块之间通过参数交换信息 信息仅为
  • 软件工程——第7章实现知识点整理

    本专栏是博主个人笔记 主要目的是利用碎片化的时间来记忆软工知识点 特此声明 文章目录 1 实现由哪两个部分组成
  • 【软件工程】详细设计说明书

    详细设计说明书 1引言 1 1编写目的 说明编写这份详细设计说明书的目的 指出预期的读者 该文档实在概要设计的基础上 进一步的细化系统结构 展示了软件啊结构的图标 物理设计 数据结构设计 及算法设计 详细的介绍了系统各个模块是如何实现的 包
  • 使命、愿景、价值观到底有什么区别

    以前的企业都是在发展到一定成熟阶段 才开始考虑这三个问题 但今天人们越来越多的意识到 哪怕在企业发展的初期 对于创业企业来说 确定公司的使命 愿景和核心价值观也是非常重要的 明确的使命 愿景和核心价值观对于企业的好处在于 形成统一共识目标方
  • 什么是决策表?什么是决策树?

    决策树 是在已知各种情况发生概率的基础上 通过构成决策树来求取净现值的期望值大于等于零的概率 评价项目风险 判断其可行性的决策分析方法 是直观运用概率分析的一种图解法 这种决策分支画成图形很像一棵树的树干 故称决策树 它是一种树形结构 每个
  • 推荐111个软件工程本科的计算机毕业设计,有手就会

    对于即将挑战计算机专业毕业设计的学子们 是否已经为选题和项目感到焦虑 今天 我们为即将毕业的学生提供了大量的毕业设计项目 期望对于正在为毕业设计挠头的同学们有所助益 一 成品列表 以下所有springboot框架项目的源码博主已经打包好上传
  • SQL 算术运算符:加法、减法、乘法、除法和取模的用法

    SQL Server中的存储过程 什么是存储过程 存储过程是一段预先编写好的 SQL 代码 可以保存在数据库中以供反复使用 它允许将一系列 SQL 语句组合成一个逻辑单元 并为其分配一个名称 以便在需要时调用执行 存储过程可以接受参数 使其
  • 【车载开发系列】FlashMemory基本概念

    车载开发系列 FlashMemory基本概念 车载开发系列 FlashMemory基本概念 车载开发系列 FlashMemory基本概念 一 FlashMemory的特征 二 常见的FlashMemory 1 NOR FlashMemory
  • WMS系统出库扫描:提升仓储管理效率与准确性

    WMS系统中的出库扫描功能是关键环节之一 它通过扫描物料或货物的条形码或二维码 实现实时 准确地记录和更新库存信息 一 WMS系统出库扫描的重要性 1 实现库存准确性 通过出库扫描 WMS系统能够准确记录物料或货物的出库信息 实时更新库存数
  • MES系统工单进度查询:提升生产控制与监控

    在MES系统中 工单进度查询是一个至关重要的功能 它为企业提供了实时 准确地追踪和监控生产工单进度的能力 一 MES系统工单进度查询的重要性 1 实时监控生产进度 通过工单进度查询 企业能够随时了解每个工单的进展情况 包括已完成的工序 正在
  • thinkphp+vue教学互动课程资源网站

    软件工程课程建设通篇文章的撰写基础是实际的应用需要 然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程 以软件工程课程建设的实际应用需要出发 架构系统来改善现软件工程课程建设工作流程繁琐等问题 不仅如此以操作者的角度来
  • Docker 安全必知:最佳实践、漏洞管理与监控策略

    容器安全是实施和管理像 Docker 这样的容器技术的关键方面 它包括一组实践 工具和技术 旨在保护容器化应用程序及其运行的基础架构 在本节中 我们将讨论一些关键的容器安全考虑因素 最佳实践和建议 容器隔离 隔离对于确保容器化环境的强大性和
  • Go 语言运算符详解:加法、算术、赋值、比较、逻辑和位运算符全面解析

    运算符用于对变量和值执行操作 加号运算符 将两个值相加 如下面的示例所示 示例代码 package main import fmt func main var a 15 25 fmt Println a 尽管加号运算符通常用于将两个值相加
  • 《Spring 测试指南》:JPA、MockMvc 和 @SpringBootTest 详解

    测试 Spring 提供了一组测试工具 可以轻松地测试 Spring 应用程序的各个组件 包括控制器 服务 存储库和其他组件 它具有丰富的测试注释 实用程序类和其他功能 以帮助进行单元测试 集成测试等 JPA 测试 Spring JPA J
  • Python - 字典4

    复制字典 您不能简单地通过输入 dict2 dict1 来复制一个字典 因为 dict2 只会成为 dict1 的引用 对 dict1 的更改也会自动应用于 dict2 有多种方法可以复制字典 一种方法是使用内置的 copy 方法 示例 使

随机推荐

  • 局域网内Windows使用RealVNC远程连接CentOS6.5桌面

    1 进入root终端 xff0c 检查是否安装VNC server xff1a rpm q tigervnctigervnc server 2 如果未安装VNC server xff0c 则 xff1a yum install ytiger
  • CentOS7安装tigerVNC

    一 首先系统是已经安装了图形界面 并默认是启动到图形界面 xff0c 如果你的系统没安装图形界面 xff0c 就请给系统安装图形界面 xff1a yum y span class token function groups span spa
  • openstack主要版本亮点

    openstack主要版本亮点 1 Stein 在Stein新增的几十项功能特性中 xff0c 主要亮点有三 xff1a 容器功能的强化 用于支持5G 边缘计算和网络功能虚拟化 xff08 NFV xff09 用例的网络升级功能 资源管理和
  • OpenStack 学习之 OVN : L2网络 ( Logical switches 逻辑交换机)

    OVN Manual install amp Configuration Open vSwitch 官网 参考 OVN学习 xff08 一 xff09 OVN实战一之GNS3操作指南及OVN入门 简单理解和知识 按照 OVN Manual
  • linux vncserver设置及配置自动启动

    VNC 服务端 vncserver 启动VNC vncserver kill num num一般从1开始 因为0被x server占用了 vncpasswd 设置vnc连接密码 要使用VNC图形界面修改 vnc xstartup配置文件中末
  • 【125】Linux 中 ps -ef|grep和ps、grep详解

    一 ps ef grep详解 xff08 原文见公众号python宝 xff09 ps命令将某个进程显示出来 PS是LINUX下最常用的也是非常强大的进程查看命令 grep命令是查找 xff0c 是一种强大的文本搜索工具 xff0c 它能使
  • Pycharm Debug调试(纯干货)

    内容目录 xff08 原文见公众号python宝或www xmmup com xff09 一 打断点二 代码调试三 界面小图标介绍四 控制台介绍 数字转换为大写人民币 import sys import io sys stdout 61 i
  • 【217】#!/usr/bin/env 的意义

    题目部分 xff08 原文见公众号 xff1a python宝 xff09 python宝 https mp weixin qq com mp profile ext action 61 home amp biz 61 MzU5NjIyOT
  • 使用Scrum进行敏捷项目管理

    Scrum是一种敏捷方法 xff0c 旨在指导团队进行产品的迭代和增量交付 通常被称为 敏捷项目管理框架 xff0c 其重点是使用经验过程 xff0c 使团队能够快速 xff0c 有效 xff0c 有效地做出改变 传统的项目管理方法确定了需
  • 【246】Python -继承(父类、子类、super)

    题目部分 xff08 原文见公众号 xff1a python宝 xff09 python宝 xff1a https mp weixin qq com mp profile ext action 61 home amp biz 61 MzU5
  • 【250】Python 的基本数据类型

    题目部分 xff08 原文见公众号 xff1a python宝 xff09 python宝 xff1a https mp weixin qq com mp profile ext action 61 home amp biz 61 MzU5
  • 【252】Python3 常见异常和处理方法

    题目部分 xff08 原文见公众号 xff1a python宝 xff09 python宝 xff1a https mp weixin qq com mp profile ext action 61 home amp biz 61 MzU5
  • 500 : Internal Server Error(jupyter)

    如需转发 xff0c 请注明出处 xff1a 小婷儿的python https www cnblogs com xxtalhr p 10739036 html 一 报错 jupyter notebook能打开目录页 xff0c 但是打不开i
  • 聚类总结(二)聚类性能评估、肘部法则、轮廓系数

    文章目录 一 聚类K的选择规则1 1 肘部法则 Elbow Method1 2 轮廓系数 Silhouette Coefficient 二 聚类性能评估2 1 外部评估 xff08 external evaluation xff09 2 1
  • keil工程的文件

    打开工程前 tree span class token punctuation span project span class token punctuation span uvoptx project span class token p
  • vmware 中减少硬盘vmdk大小

    一般的话 span class token punctuation span 我用一个文件代表所有的磁盘上 span class token punctuation span xxx span class token punctuation
  • 各种 RTOS 对比

    商业解读 RTOS种类是否开源是否免费厂家官网uclinux 并入linux mainline 是是linux基金会linux orgucosII是是Micriumweston embeddeducosIII是是Micriumweston
  • 使用adb命令取出手机中已安装的apk

    1 查看手机中安装的apk列表 xff1a adb shell pm list package 2 根据包名找出apk在内部存储空间的路径 xff1a adb shell pm path com baicells voip 3 使用adb
  • STM32学习过程记录8——蜂鸣器

    零之前言 最近想用无源蜂鸣器来播放曲子 xff0c 但是看了好多博客讲的都是马马虎虎 xff0c 没有讲的太清楚 xff0c 所以我只好自己重新学习了一下 xff0c 音乐发声的原理 xff08 因为硬件基础够啦QAQ xff09 和简谱
  • 软件工程:软件开发生命周期 (SDLC)

    软件构建的基本概念之一 软件开发生命周期模型 或者只是SDLC模型 SDLC 是一个连续的过程 xff0c 从决定启动项目的那一刻开始 xff0c 并在它完全从开发中移除的那一刻结束 没有一个单一的SDLC模型 它们分为主要组 xff0c