1什么是SDLC?

软件开发生命周期(SDLCSoftware Development Lifecycle)是构建软件的系统过程,可确保构建软件的质量和正确性。 SDLC流程旨在生产满足客户期望的高质量软件。软件开发应在预定义的时间范围和成本内完成。

SDLC包含详细的计划,解释如何规划,构建和维护特定的软件。 SDLC生命周期的每个阶段都有自己的流程和可交付成果,可以进入下一阶段。

为什么选择SDLC?

这里是SDLC对于开发软件系统非常重要的主要原因。

  • 它为项目规划,调度和估算提供了基础
  • 为一组标准活动和可交付成果提供框架
  • 它是项目跟踪和控制的机制
  • 提高项目规划对开发过程中所有相关利益相关者的可见性
  • 增加并提高开发速度
  • 改善客户关系
  • 帮助您降低项目风险和项目管理计划开销

SDLC阶段

整个SDLC流程分为以下几个阶段:

  • 阶段1:需求收集和分析
  • 第2阶段:可行性研究:
  • 第3阶段:设计:
  • 阶段4:编码:
  • 第5阶段:测试:
  • 阶段6:安装/部署:
  • 阶段7:维护:

阶段1:需求收集和分析:

该要求是SDLC流程的第一阶段。它由高级团队成员根据业内所有利益相关者和领域专家的意见进行。在此阶段还要规划质量保证要求并识别所涉及的风险。

此阶段更清晰地描述了整个项目的范围以及触发项目的预期问题,机会和指令。

要求收集阶段需要团队获得详细和精确的要求。这有助于公司完成必要的时间表,以完成该系统的工作。

第2阶段:可行性研究:

完成需求分析阶段后,下一步是定义和记录软件需求。此过程在“软件需求规范”文档的帮助下进行,该文档也称为“SRS”文档。它包括在项目生命周期中应设计和开发的所有内容。

主要有五种可行性检查:

  • 经济:我们能否在预算范围内完成项目?
  • 法律:我们能否将此项目作为网络法和其他监管框架/合规处理。
  • 运营可行性:我们能否创建客户期望的运营?
  • 技术:需要检查当前的计算机系统是否可以支持该软件
  • 时间表:确定项目是否可以在给定的时间表内完成。

第3阶段:设计:

在第三阶段,系统和软件设计文档按照需求规范文档准备。这有助于定义整个系统架构。

该设计阶段作为模型下一阶段的输入。

在此阶段开发了两种设计文档:

高级设计(HLD)

  • 每个模块的简要描述和名称
  • 关于每个模块的功能的概述
  • 模块之间的接口关系和依赖关系
  • 识别数据库表及其关键元素
  • 完整的架构图以及技术细节

详细设计(LLD)

  • 模块的功能逻辑
  • 数据库表,包括类型和大小
  • 界面的完整细节
  • 解决所有类型的依赖性问题
  • 错误消息列表
  • 为每个模块完成输入和输出

阶段4:编码:

一旦系统设计阶段结束,下一阶段就是编码。在此阶段,开发人员通过使用所选编程语言编写代码来开始构建整个系统。在编码阶段,任务分为单元或模块,并分配给各种开发人员。这是软件开发生命周期过程中最长的阶段。

在此阶段,开发人员需要遵循某些预定义的编码指南。他们还需要使用编译器,解释器,调试器等编程工具来生成和实现代码。

第5阶段:测试:

软件完成后,将其部署在测试环境中。测试团队开始测试整个系统的功能。这样做是为了验证整个应用程序是否符合客户要求。

在此阶段,QA和测试团队可能会发现一些与开发人员沟通的错误/缺陷。开发团队修复了该错误并将其发送回QA进行重新测试。此过程一直持续到软件无错误,稳定并根据该系统的业务需求工作。

阶段6:安装/部署:

一旦软件测试阶段结束并且系统中没有任何错误或错误,则开始最终部署过程。根据项目经理提供的反馈,最终软件将被发布并检查是否存在部署问题。

阶段7:维护:

部署系统后,客户开始使用已开发的系统,发生以下3项活动

  • 错误修复 – 由于某些未完全测试的情况而报告错误
  • 升级 – 将应用程序升级到较新版本的软件
  • 增强功能 – 在现有软件中添加一些新功能

SDLC阶段的主要重点是确保继续满足需求,并确保系统继续按照第一阶段提到的规范执行。

参考资料

  • 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
  • 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
  • python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md

流行的SDLC模型

这里是SDLC生命周期的一些最重要的阶段:

  • 瀑布模型

瀑布是一种广泛接受的SDLC模型。在这种方法中,软件开发的整个过程分为不同的阶段。在该SDLC模型中,一个阶段的结果充当下一阶段的输入。

该SDLC模型是文档密集型的,早期阶段记录了后续阶段需要执行的操作。

  • 增量方法

增量模型不是单独的模型。它本质上是一系列瀑布循环。这些要求在项目开始时分为几组。对于每个组,遵循SDLC模型来开发软件。重复SDLC过程,每个版本都添加更多功能,直到满足所有要求。在此方法中,每个循环都充当先前软件版本的维护阶段。对增量模型的修改允许开发周期重叠。之后的循环可以在前一循环完成之前开始。

  • V模型

在这种类型的SDLC模型测试和开发中,阶段是并行计划的。因此,侧面有验证阶段,另一侧有验证阶段。 V-Model通过编码阶段加入。

  • 敏捷模型

敏捷方法是一种在任何项目的SDLC过程中促进开发和测试的持续交互的实践。在Agile方法中,整个项目分为小型增量构建。所有这些构建都是在迭代中提供的,每次迭代持续一到三周。

  • 螺旋模型

螺旋模型是风险驱动的过程模型。此SDLC模型可帮助团队采用一个或多个流程模型的元素,如瀑布,增量,瀑布等。

该模型采用了原型模型和瀑布模型的最佳特征。螺旋方法是设计和开发活动中快速原型设计和并发性的结合。

  • 大爆炸模型

Big bang模型专注于软件开发和编码中的所有类型的资源,没有或很少计划。这些要求在它们到来时就被理解和实施。

此模型最适合与较小规模开发团队合作的小型项目。它对学术软件开发项目也很有用。这是一个理想的模型,其中要求是未知的或未给出最终发布日期。

小结

结论

  • SDLC是一个用于构建软件的系统过程,可确保所构建软件的质量和正确性
  • SDLC流程为标准的一系列活动和可交付成果提供了框架
  • 七个不同的SDLC阶段1)需求收集和分析2)可行性研究:3)设计4)编码5)测试:6)安装/部署和7)维护
    高级团队成员进行需求分析阶段
  • 可行性研究阶段包括在项目生命周期中应设计和开发的所有内容
  • 在设计阶段,系统和软件设计文档是根据需求规范文档准备的
  • 在编码阶段,开发人员通过使用所选编程语言编写代码来开始构建整个系统
  • 测试是下一阶段,用于验证整个应用程序是否按照客户要求运行。
  • 当软件测试阶段结束时,安装和部署面开始,并且系统中没有任何错误或错误
  • 维护面中涉及的错误修复,升级和参与操作
  • 瀑布,增量,敏捷,V型,螺旋,大爆炸是一些流行的SDLC模型
  • SDLC包含详细的计划,解释如何规划,构建和维护特定的软件

2瀑布模型什么是瀑布模型?

瀑布模型是一种将软件开发划分为不同阶段的顺序模型。 每个阶段都设计用于在SDLC阶段执行特定活动。 它由Winston Royce于1970年推出。

软件工程中瀑布模型的不同阶段

阶段活动
需求收集阶段从客户收集要开发的软件系统的详细要求
设计阶段规划编程语言、数据库或者项目的其他高级技术细节
编码在设计阶段之后,它是建立阶段,这只是编码软件
测试阶段测试软件以验证它是否按照客户端提供的规范构建。
部署阶段在相应的环境中部署应用程序
维护阶段可能需要根据客户要求更改代码

何时使用SDLC瀑布模型

可以使用瀑布模型

  • 需求不经常变化
  • 应用并不复杂和庞大
  • 项目很短
  • 要求很明确
  • 环境稳定
  • 使用的技术和工具不是动态的,而且是稳定的
  • 资源可用并经过培训

瀑布模型的利弊

好处缺点
在下一个开发阶段之前,必须完成上一阶段只能在阶段期间修复错误
适用于需求定义明确的小型项目对于需求经常变化的复杂项目,这是不可取的
应该在完成每个阶段之前执行质量保证测试(验证和验证)测试介入很晚
精心编写的文档文档占用了开发人员和测试人员的大量时间
项目完全依赖项目团队,客户干预最少客户的宝贵反馈不能包含在正在进行的开发阶段
软件的任何变化都是在开发过程中进行的完成的软件中出现的微小变化或错误可能会导致很多问题

3增量模型什么是增量模型?

增量模型是一个软件开发过程,其中需求被分解为软件开发周期的多个独立模块。从分析设计,实施,测试/验证,维护开始逐步进行增量开发。

每次迭代都要经过需求,设计,编码和测试阶段。并且系统的每个后续版本都会将功能添加到先前版本,直到实现了所有设计的功能。

系统在交付第一个增量时投入生产。第一个增量通常是解决基本要求的核心产品,并在下一个增量中添加补充功能。一旦客户分析了核心产品,就会有下一个增量的计划开发。

增量模块的特征包括

  • 系统开发分解为许多小型开发项目
  • 部分系统相继构建以产生最终的总系统
  • 首先解决最高优先级要求
  • 一旦制定了要求,就会冻结对该增量的要求

需求分析:收集软件的要求和规格
设计: 在此阶段设计了一些高端功能
编码:在此阶段完成软件编码
测试:部署系统后,它将进入测试阶段

何时使用增量模型?

  • 清楚地理解系统的要求
  • 当产品的早期发布需求出现时
  • 当软件工程团队不熟练或训练有素时
  • 当涉及高风险特征和目标时
  • 这种方法更多地用于Web应用程序和基于产品的公司

优点:

  • 软件将在软件生命周期中快速生成
  • 更改要求和范围更灵活,成本更低
  • 发展阶段的变化可以做到
  • 与其他模型相比,该模型的成本更低
  • 客户可以回复每个版本
  • 错误很容易识别

缺点:

  • 它需要一个良好的规划设计
  • 问题可能是由于系统架构导致的,因此并非所有需求都在整个软件生命周期中预先收集
  • 每个迭代阶段都是刚性的,并且彼此不重叠
  • 在一个单元中纠正问题需要在所有单元中进行校正并且消耗大量时间

4螺旋模型什么是螺旋模型?

螺旋模型是瀑布模型和迭代模型的组合。螺旋模型中的每个阶段都以设计目标开始,最后由客户审查进度。 Barry Boehm在1986年的论文中首次提到螺旋模型。

Spiral-SDLC模型的开发团队从一小部分需求开始,并针对这些需求进行每个开发阶段。软件工程团队在每个不断增加的螺旋中增加了额外需求的功能,直到应用程序为生产阶段做好准备。

螺旋模型阶段

  • 计划

它包括估算迭代的成本,进度和资源。它还涉及了解系统分析员与客户之间持续通信的系统要求

  • 风险分析
    在规划和最终确定风险缓解策略的同时,确定潜在风险

  • 工程
    它包括在客户现场测试,编码和部署软件

  • 评估
    由客户评估软件。此外,还包括识别和监控诸如进度滑点和成本超支等风险

什么时候使用螺旋方法?

  • 当项目很大时
  • 需要频繁发布
  • 创建原型时适用
  • 风险和成本评估很重要时
  • 适用于中高风险项目
  • 当要求不清楚和复杂时
  • 随时可能需要更改
  • 由于经济优先事项的变化,长期项目承诺不可行

螺旋模型的优缺点

好处

  • 其他功能或更改可在稍后阶段完成
  • 由于原型建筑是以小碎片完成的,因此成本估算变得容易
  • 持续或重复的开发有助于风险管理
  • 开发速度快,功能以系统的方式添加
  • 始终存在客户反馈的空间

缺点

  • 不符合时间表或预算的风险
  • 它最适合大型项目,也需要风险评估专业知识
  • 为了顺利运行,需要严格遵循螺旋模型协议
  • 文档更多,因为具有中间阶段
  • 对于较小的项目,这是不可取的,它可能会花费很多

5RAD快速应用程序开发模型什么是RAD(快速应用程序开发)模型?

RAD或Rapid Application Development流程采用瀑布模型;它的目标是在短时间内开发软件。

SDLC RAD模型具有以下阶段

  • 业务建模
  • 数据建模
  • 流程建模
  • 应用程序生成
  • 测试和Turnover

它侧重于信息的输入输出源和目的地。它强调以小块形式提供项目;较大的项目分为一系列较小的项目。 RAD模型的主要特点是它专注于模板,工具,流程和代码的重用。

RAD模型的阶段

  • 业务建模:根据各种业务渠道之间的信息流动和分配,设计产品
  • 数据建模:从业务建模收集的信息被细化为一组对业务有重要意义的数据对象
  • 流程建模:转换在数据建模阶段声明的数据对象,以实现实现业务功能所需的信息流
  • 应用程序生成:自动化工具用于构建软件,将过程和数据模型转换为原型
  • 测试和Turnover:由于原型在每次迭代期间都经过单独测试,因此RAD的整体测试时间会缩短。

何时使用RAD Methodology?

  • 当需要在短时间内(2-3个月)生产系统时
  • 当要求已知时
  • 当用户将参与整个生命周期
  • 当技术风险较小时
  • 当有必要创建一个可以在2-3个月内模块化的系统
  • 当预算足够高时,可以为设计人员提供建模以及代码生成的自动化工具的成本

SDLC RAD模型的优缺点

好处

  • 灵活且适应变化
  • 当您必须降低整体项目风险时,它非常有用
  • 它具有适应性和灵活性
  • 以脚本,高级抽象和中间代码的形式传输可交付物更容易
  • 由于代码生成器和代码重用,减少了手动编码
  • 由于本质上的原型设计,可能存在较少的缺陷
  • RAD的每个阶段都为客户提供最高优先级的功能
    人员越少,生产力就能在短时间内增加

缺点

  • 它不能用于较小的项目
  • 并非所有应用程序都与RAD兼容
  • 当技术风险很高时,它是不合适的
  • 如果开发人员不致力于按时交付软件,RAD项目可能会失败
  • 由于时间装箱而减少的功能,其中功能被推送到更高版本以在短时间内完成发布
  • 由于RAD开发的应用程序作为原型开始并演变为完成的应用程序,因此降低了可伸缩性
  • 习惯性的进步和问题难以跟踪,因此没有文件证明已经完成的工作
  • 需要高技能的设计师或开发人员
模型瀑布增量模型螺旋模型Rad模型
早期规划没有
回到早期阶段没有
处理大型项目不适当不适当适当不适当
详细文档必要会,但不多有限
成本昂贵
需求规格开始开始开始时间盒发布
灵活变革简单简单简单
用户参与只在开始时中间只在一开始
维护性最小促进可维护性典型易于维护
持续时间很长
风险中到高风险
框架类型线性线性+迭代线性+迭代线性
测试编码阶段完成后每次迭代后在工程阶段结束时编码完成后
迭代没有是(因为并行开发)没有
可重用性最少可能在某种程度上在某种程度上
大体时间很长
工作软件可用性在生命周期结束时在每次迭代结束时在每次迭代结束时在生命周期结束时
目的高保证快速发展高保证快速发展
团队规模大团队不是大团队大团队小团队
客户控制非常低

6原型模型什么是软件原型模型?

原型方法被定义为软件开发模型,其中构建原型,测试,然后在需要时重新加工,直到实现可接受的原型。它还创建了生成最终系统的基础。

软件原型模型在项目要求未知的情况下效果最佳。它是一种在开发人员和客户端之间进行的迭代,试验和错误方法。

原型模型阶段

原型模型遵循以下六个SDLC阶段:

  • 第1步:需求收集和分析

原型模型从需求分析开始。在此阶段,详细定义了系统的要求。在此过程中,对系统的用户进行访谈,以了解他们对系统的期望。

  • 第2步:快速设计

第二阶段是初步设计或快速设计。在这个阶段,创建了一个简单的系统设计。但是,它不是一个完整的设计。它向用户简要介绍了系统。快速设计有助于开发原型。

  • 第3步:构建原型

在此阶段,基于从快速设计收集的信息设计实际原型。它是所需系统的小型工作模型。

  • 第4步:初始用户评估

在此阶段,建议的系统将提交给客户进行初步评估。它有助于找出工作模型的优缺点。评论和建议从客户收集并提供给开发人员。

  • 第5步:精炼原型

如果用户对当前原型不满意,您需要根据用户的反馈和建议优化原型。

在满足用户指定的所有要求之前,此阶段不会结束。一旦用户对开发的原型感到满意,就会根据批准的最终原型开发最终系统。

  • 第6步:实施产品和维护

一旦最终系统基于最终原型开发,它就会经过全面测试并部署到生产中。该系统进行日常维护,以最大限度地减少停机时间并防止大规模故障。

原型模型的类型

四种原型模型是:

  1. 原型
  2. 进化原型
  3. 增量原型
  4. 极端原型
  • 快速原型

快速一次性是基于初步要求。它很快就被开发出来以显示需求在视觉上的外观。客户的反馈有助于推动对需求的更改,并再次创建原型,直到需求基线为止。

在这种方法中,开发的原型将被丢弃,并且不会成为最终接受的原型的一部分。该技术对于探索想法和获得客户需求的即时反馈非常有用。

  • 进化原型

在这里,开发的原型根据客户的反馈逐步完善,直到最终被接受为止。它可以帮助您节省时间和精力。这是因为从头开始为过程的每次互动开发原型有时会非常令人沮丧。

该模型对于使用未被充分理解的新技术的项目很有帮助。它还用于复杂项目,其中必须检查每个功能一次。当要求不稳定或在初始阶段不清楚时,这是有帮助的。

  • 增量原型

在增量型原型设计中,最终产品被抽取为不同的小型原型并单独开发。最终,不同的原型被合并为一个产品。此方法有助于缩短用户与应用程序开发团队之间的反馈时间。

  • 极端原型:

极端原型方法主要用于Web开发。它由三个连续阶段组成。

  1. 所有现有页面的基本原型都以HTML格式显示。
  2. 您可以使用原型服务层模拟数据流程。
  3. 这些服务已实施并整合到最终原型中。

原型设计的最佳实践

在这里,您需要在原型制作过程中注意以下几点:

  • 当要求不清楚时,您应该使用原型
  • 执行计划和控制的原型设计非常重要。
  • 定期会议对于保持项目准时并避免代价高昂的延误至关重要。
  • 用户和设计人员应该了解原型设计问题和陷阱。
  • 在很早的阶段,您需要批准原型,然后才允许团队进入下一步。
  • 在软件原型设计方法中,如果需要部署新的想法,就不应该害怕改变先前的决策。
  • 您应该为每个版本选择适当的步长。
  • 尽早实施重要功能,以便在用完时,您仍然拥有一个有价值的系统

原型模型的优点

在这里,使用Prototyping模型是重要的优点/好处:

  • 用户积极参与开发。因此,可以在软件开发过程的初始阶段检测错误。
  • 可以识别缺失的功能,这有助于降低故障风险,因为原型设计也被视为降低风险的活动。
  • 帮助团队成员有效沟通
  • 客户满意度的存在是因为客户可以在很早的阶段就能感受到产品。
  • 几乎没有软件拒绝的可能性。
  • 更快的用户反馈可帮助您实现更好的软件开发解决方案。
  • 允许客户端比较软件代码是否与软件规范匹配。
  • 它可以帮助您找出系统中缺少的功能。
  • 它还确定了复杂或困难的功能。
  • 鼓励创新和灵活的设计。
  • 这是一个简单的模型,因此很容易理解。
  • 无需专业专家来构建模型
  • 原型作为推导系统规范的基础。
  • 原型有助于更好地了解客户的需求。
  • 原型可以改变甚至丢弃。
  • 原型也可作为操作规范的基础。
  • 原型可以为软件系统的未来用户提供早期培训。

原型模型的缺点

这里是原型设计模型的重要缺点:

  • 原型设计是一个缓慢且耗时的过程。
  • 由于原型最终被丢弃,开发原型的成本完全是浪费。
  • 原型设计可能会鼓励过多的变更请求。
  • 有时,客户可能不愿意在更长的持续时间内参与迭代周期。
  • 每次客户评估原型时,软件需求可能会有太多变化。
  • 文档很差,因为客户的要求正在发生变化。
  • 软件开发人员很难适应客户要求的所有变更。
  • 在看到早期的原型模型后,客户可能会认为实际的产品很快会交付给他。
  • 当客户对初始原型不满意时,客户可能会对最终产品失去兴趣。
  • 想要快速构建原型的开发人员最终可能会构建不合标准的开发解决方案。

摘要

  • 在软件工程中,Prototype方法是一种软件开发模型,其中构建原型,测试然后在需要时重新工作直到获得可接受的原型。
  • 1)需求收集和分析,2)快速设计,3)构建原型,4)初始用户评估,5)精炼原型,6)实施产品和维护;是原型制作过程的6个步骤
  • 原型模型的类型是1)Rapid Throwaway原型2)进化原型3)增量原型4)极端原型
  • 定期会议对于保持项目准时并避免原型制作方法出现代价高昂的延误至关重要。
  • 可以识别缺失的功能,这有助于降低故障风险,因为原型设计也被视为SDLC中的风险降低活动。
  • 原型设计可能会鼓励过多的变更请求。

钉钉或微信号: pythontesting 微信公众号:pythontesting