SDLC 阶段 [解释]:如何在 2021 年打造出色的软件
已发表: 2019-10-02目录
了解 SDLC 流程
软件开发过程的结构
SDLC模型
包起来
软件开发行业正在蓬勃发展。 我们每年都在不断地产生大量的代码。
该行业的核心是软件开发生命周期(SDLC)——指导软件团队如何构建和规划他们的工作的过程。
因此,让我们踏上穿越软件开发危险地带的旅程。
我们将看看 SDLC 究竟是什么并追踪它的演变。 我们将看到哪些是行业使用的主要模型。
我们将发现 SDLC 阶段,即软件在问世之前经历的阶段 - 以及每个阶段的关键执行者。
最后,我们将为您提供整个过程的鸟瞰图。
了解 SDLC 流程
构建软件是一个过程。 因此,它需要一个明确的目标、实现目标的方法以及衡量、维护和改进结果的方法。 软件开发的不同方法提供了所有这些。 不过,它们并非都是从同一块布上剪下来的。 根据您的情况,您可能需要选择截然不同的方法。
这取决于许多变量,例如:
- 行业
- 组织规模
- 团队和项目
- 预计时间范围
- 和分配的预算。
常见的是每个软件都遵循特定的SDLC 流程。
该框架充实了完成所需的阶段、所需的资源以及在此过程中要执行的任务。
该SDLC过程最终是需要完成什么样一个结构良好的时间表。 它在估计的时间和成本限制内决定最佳软件开发方法。
SDLC 通常被认为是更广泛的术语“系统开发生命周期”的子集——用于开发信息系统的最古老的框架。
它出现在 1960 年代初期,是对能够处理大量数据的业务系统的必要性的回应。 第一个有据可查的SDLC 框架是 1969 年的结构化编程范式。
1990 年代出现了各种软件开发方法。 其中一些是面向对象的编程、Scrum 和 Rational Unified Process。 敏捷统一流程出现于 2005 年。
软件开发过程的结构
软件产品的开发是一系列协调良好的阶段。 根据所选的开发方法, SDLC 步骤的数量可能会有所不同。
我们将回顾 SDLC 的 5 阶段和 7 阶段风味。
5 阶段版本
软件开发过程的 5 阶段版本如下:
需求与分析
这是一个关键阶段,与客户和利益相关者的互动至关重要。 他们需要确定预期的结果,即软件产品的目标。 除了客户要求之外,还有各种其他因素需要考虑。 这些包括:
- 建筑
- 功能性
- 非功能性
- 表现
- 和设计相关的
为了成功完成这个阶段,开发了一个名为“软件需求规范”的文档。 它是从这一刻开始发生的一切的基础。
开发项目的成功在很大程度上取决于需求分析。 此阶段的关键执行者是业务分析师 (BA)。 他管理所有通信以收集业务需求,执行彻底分析,最重要的是 - 在利益相关者和开发人员之间转换该信息。
设计
软件的设计基于既定的需求。 这是我们确定开发环境、编程语言、架构框架、硬件等的地方。这也是确定将使用的测试策略的时候。 系统架构师的角色在这里至关重要。 他们需要考虑“需求规范”文档中的所有先决条件,并提供用于下一步的设计文件。
编码阶段
到目前为止,开发人员已经非常了解设计规范。 工作被分成模块,然后开始编码。 客户也应该参与到这个阶段。 他们确保为产品采取所有措施以满足他们的期望。 生产一个可以工作的软件是这个阶段的最终结果。
测试
现在我们有了一个可行的产品,测试阶段就可以开始了。 根据设计规范文档中概述的测试策略,这可能以多种方式发生。
然而,目标保持不变。 首先,验证是否满足所有初始要求,其次,确定代码中是否存在任何错误。 测试人员是这里的关键执行者。 他们努力的结果是一个功能齐全的软件,随时可以发布。
维护
没有完美的软件产品。 这就是客户服务在开发过程中扮演重要角色的原因。 一旦交付给最终客户,就会出现实时问题并且需要修复。 如果您想让客户满意,则必须进行持续维护。
7 阶段版本
现在,这个过程的7 阶段风味有点不同。 它有一些额外的阶段,不可避免地也会改变其他阶段的性质。 让我们来看看:
规划
启动SDLC 流程的另一种方法是规划阶段。 它在需求收集之前,主要寻求反馈。 来自利益相关者、业务合作伙伴、工程师和最终客户的意见决定了项目的范围。 此阶段回答以下问题:
- 必须做什么?
- 需要什么资源?
- 需要多少时间?
- 它要花多少钱?
需求与分析
在这里,业务分析师根据客户的反馈编制需求列表。 然后,他们将这些信息提供给软件工程师。 沟通是必不可少的。
此阶段应生成一份概述所有要求的文件,并作为下一阶段的基础。
系统设计
软件需求现在进入系统架构。 此时,我们可以确定交付项目所需的功能手段和操作。 一旦准备好,设计计划就会提交给企业。 我们在实际编程开始之前整合所有反馈。
软件开发
一旦需求明确,软件工程师就可以开始工作了。 此阶段的目标是一个可用于测试的工作程序。 这也是SDLC 流程中生产的开始。
测试
质量保证团队的作用是确定是否满足初始业务要求。 他们检查软件代码的质量。 错误得到修复。 有一整套软件测试方法需要经过:功能测试、集成测试、性能测试等等。
自动化测试是一种通过使用外部软件(例如 Bamboo 和 Jenkins)来自动化运行重复测试的过程的方法。
执行
一旦代码通过了测试阶段,就可以将其部署到生产环境中。 根据公司政策,此过程可能需要批准; 然而,在大多数情况下,它是软件开发生命周期中的一个自动化步骤。
维护和操作
一旦软件在生产中发布,各种问题都会出现。 通过监控,他们可以得到识别和解决。 新功能也可以进入产品。 这是可以衡量和改进性能的阶段。
SDLC模型
开发软件的过程在很大程度上是通用的。 有增加更多阶段或简化现有阶段的空间——但大体上是一样的。
当我们查看开发方法时,这并不成立。 尽管他们都在观察这个过程,但他们以截然不同的方式进行。
要选择最合适的一个,有几个关键因素需要考虑。 在客户的需求和开发软件的实际细节之间始终保持平衡。 有一些因素,例如:
- 项目的复杂性
- 选定的技术
- 和团队规模。
所有这些决定了哪种方法最有效。 我们将对一些最广为人知和使用的SDLC 方法进行概述。
瀑布
瀑布模型是一个线性顺序设计过程。 这是软件工程中使用的最古老的已知方法。 它起源于1970年代的制造业和建筑业。
遵循瀑布模型的开发项目的进度严格遵循 SDLC 管道。 只有在 SDLC 的前一阶段成功完成后,才有可能进行进度。 倒退没有明确的流程。
该SDLC瀑布是一个非常结构化的方法。 它在以下情况下运行良好:
- 需求和活动是明确定义和理解的
- 技术可靠
- 支持团队可用,您估计一个短期项目
该方法的缺点与其缺乏灵活性有关。 您无法在此过程中实现新出现的需求。 由于直到开发过程后期才生产有形产品,因此风险和不确定性很高。 如果您决定动态修改项目的要求或范围,这可能是一种非常昂贵的方法。
迭代
这种方法基于这样一种观念,即软件可以通过一系列重复循环来构建。 它从一组简单的要求开始。 在每一轮中,工程师都从软件早期版本的行为中学习,并能够增强其功能。
这种方法的最大优点是在每个周期完成后都会生成软件的工作原型。 这使得实施变更和识别风险变得更加容易。 当每次迭代执行的SDLC测试相对容易些。
软件开发迭代模型的缺点归结为资源和成本。 增加迭代次数会消耗更多资源。 项目完成期限未定,风险也未定。 因此,要使这种方法发挥作用,需要高技能的专家进行风险分析。
该方法不适合较小的项目。
敏捷
软件开发的敏捷方法相对较新。 尽管如此,它还是迅速在全球范围内流行起来。
敏捷SDLC是基于提供可工作的软件,并寻求来自客户的即时反馈的一小部分。 这种方法的核心在于团队之间的强大协作和持续沟通。 每个周期大约持续一到三周,此时工作模块/功能将交付给客户。 然后重复该过程。
每次迭代都会进行测试,这样可以及早解决问题。 它鼓励演示软件功能和获取反馈。 该模型提供了结果的清晰可见性。 它提倡团队合作并为软件工程师提供灵活性。
由于没有大量文档的要求,因此存在依赖某些人的风险。 在将知识转移给团队的新成员时,这也可能是一个挑战。
倾斜
精益软件开发方法被认为是敏捷软件开发方法的一部分。 遵循精益方法的SDLC 流程包括七项原则:
- 消除浪费
- 扩大学习
- 尽量晚做决定
- 尽快交付
- 为团队赋能
- 建立诚信
- 看大图
理解这个模型的关键是通过这些原则。 这将导致将这些转变为功能性敏捷实践并将其实施到工作流程中。
精益原则围绕为最终用户创造尽可能多的附加值的想法进行组织,同时优化质量、速度、成本和业务预期。 为此,取消了一些任务(大量文档),优化了其他任务(会议频率)。
开发运营
DevOps 模型部分基于敏捷和精益。 这是一种新兴的方法,在整个开发生命周期中将软件开发和运营团队之间的密切协作联系起来。
这种方法的关键方面是强调开发过程的自动化。 最终目标是缩短 SDLC,同时交付符合业务需求的高质量、创新结果。
通过这种方法,开发人员、运营团队和质量保证成员都在同一页面上。 他们使用相同的工具并遵循相同的流程。 这可以改善沟通,并带来更好、更及时的结果。
螺旋
这是迭代开发和瀑布模型的一些概念的结合。 它允许在每个迭代周期中部分发布软件。
这四个阶段和重复被称为“螺旋”。 该SDLC阶段是:规划和收集的要求; 设计; 开发和测试。
风险分析起着关键作用。 在每个螺旋中,都会执行风险分析,以便识别和避免或克服任何潜在风险。 它适用于大型项目,尽管管理和过程本身可能很复杂。
包起来
选择正确的软件开发方法需要大量研究。 通过定义项目的范围、要求和目标,您可以确定您的产品需要经历的SDLC 阶段。
您选择的方法不仅是开发功能性产品的过程。 这是使您的组织和团队的价值观保持一致以创造和谐工作环境的一种方式。
常问问题
根据您选择的方法,您的软件将经历不同数量的阶段。 无论哪种方式,以下活动都应该是其中的一部分:
- 计划、收集需求和分析
- 就设计或系统架构达成一致
- 生成代码
- 测试生成的代码
- 将代码部署到生产环境中
- 持续维护和改进
刨削; 需求和分析; 设计; 发展; 测试; 执行; 维护。
这取决于你的项目! 您对行业的分析、项目的目标、可用的能力和资源、时间和成本指标将是选择最佳 SDLC 方法的指导因素。