SDLC 或软件开发生命周期是一组用于创建软件应用程序的步骤。这些步骤将开发过程划分为可以分配、完成和衡量的任务。
什么是软件开发生命周期?
软件开发生命周期是将标准业务实践应用于构建软件应用程序。它通常分为六到八个步骤:规划、需求、设计、构建、文档、测试、部署、维护。一些项目经理会根据项目的范围合并、拆分或省略步骤。这些是为所有软件开发项目推荐的核心组件。
SDLC 是一种衡量和改进开发过程的方法。它允许对流程的每个步骤进行细粒度分析。这反过来又有助于公司在每个阶段最大限度地提高效率。随着计算能力的提高,它对软件和开发人员提出了更高的要求。公司必须 降低成本,更快地交付软件,并满足或超越客户的需求。SDLC 通过识别低效率和更高的成本并修复它们以使其顺利运行来帮助实现这些目标。
软件开发生命周期如何运作
软件开发生命周期简单地概述了将软件应用程序组合在一起所需的每项任务。这有助于减少浪费并提高开发过程的效率。监控还确保项目保持在正轨上,并继续成为公司的一项可行投资。
许多公司会将这些步骤细分为更小的单元。计划可能会分解为技术研究、市场研究和成本效益分析。其他步骤可以相互合并。测试阶段可以与开发阶段同时运行,因为开发人员需要修复测试期间发生的错误。
SDLC 的七个阶段
1. 规划
在规划阶段,项目负责人评估项目条款。这包括计算劳动力和材料成本、创建具有目标目标的时间表以及创建项目的团队和领导结构。
规划还可以包括利益相关者的反馈。利益相关者是从应用程序中受益的任何人。尝试从潜在客户、开发人员、主题专家和销售代表那里获得反馈。
规划应明确定义应用的范围和目的。它绘制课程并安排团队有效地创建软件。它还设置了界限,以帮助防止项目扩展或偏离其最初目的。
2. 定义需求
定义需求被认为是确定应用程序应该做什么及其需求的计划的一部分。例如,社交媒体应用程序需要能够与朋友联系。库存程序可能需要搜索功能。
需求还包括定义构建项目所需的资源。例如,一个团队可能会开发软件来控制定制制造机器。机器是过程中的要求。
3. 设计和原型制作
设计阶段模拟软件应用程序的工作方式。设计的一些方面包括:
架构—— 指定编程语言、行业实践、整体设计以及任何模板或样板的 使用用户界面—— 定义客户与软件交互的方式,以及软件如何响应输入 平台—— 定义软件将运行的平台,例如 Apple、Android、Windows 版本、Linux 甚至游戏机 编程—— 不仅仅是编程语言,还包括在应用程序中解决问题和执行任务的方法 通信—— 定义应用程序可以与其他资产通信的方法,例如作为中央服务器或应用程序 安全的其他实例—— 定义为保护应用程序而采取的措施,可能包括 SSL 流量加密、密码保护和用户凭据的安全存储原型制作可以是设计阶段的一部分。原型就像迭代软件开发模型中软件的早期版本之一。它展示了应用程序外观和工作方式的基本概念。这种“动手”设计可以向利益相关者展示。使用反馈来改进应用程序。更改原型阶段比重写代码以在开发阶段进行更改更便宜。
4. 软件开发
这是程序的实际编写。一个小项目可能由一个开发人员编写,而一个大项目可能由几个团队分解和工作。在此阶段使用访问控制或源代码管理应用程序。这些系统帮助开发人员跟踪代码的更改。它们还有助于确保不同团队项目之间的兼容性,并确保实现目标。
编码过程包括许多其他任务。许多开发人员需要提高技能或团队合作。发现并修复错误和故障至关重要。任务通常会阻碍开发过程,例如等待测试结果或编译代码以便应用程序可以运行。SDLC 可以预见这些延迟,以便开发人员可以承担其他职责。
软件开发人员喜欢说明和解释。文档可以是一个正式的过程,包括为应用程序连接用户指南。它也可以是非正式的,例如源代码中解释开发人员为何使用特定程序的注释。即使是努力创建简单直观的软件的公司也可以从文档中受益。
文档可以是首次启动时显示的应用程序基本功能的快速导览。它可以是复杂任务的视频教程。用户指南、故障排除指南和常见问题解答等书面文档可帮助用户解决问题或技术问题。
5. 测试
在将应用程序提供给用户之前对其进行测试至关重要。大部分测试都可以 自动化,例如安全测试。 其他测试只能在特定环境中进行——考虑为复杂的部署创建模拟生产环境。测试应确保每个功能都能正常工作。还应测试应用程序的不同部分以无缝协同工作——性能测试,以减少处理中的任何挂起或延迟。测试阶段有助于减少用户遇到的错误和故障的数量。这导致更高的用户满意度和更好的使用率。
6. 部署
在部署阶段,应用程序可供用户使用。许多公司更喜欢自动化部署阶段。这可以像公司网站上的支付门户和下载链接一样简单。它也可能是在智能手机上下载应用程序。部署也可能很复杂。将公司范围的数据库升级到新开发的应用程序就是一个例子。因为数据库使用了其他几个系统,集成升级可能需要更多的时间和精力。
7. 运维
至此,开发周期基本结束。该应用程序已完成并正在现场使用。但是,操作和维护阶段仍然很重要。在此阶段,用户会发现测试期间未发现的错误。这些错误需要解决,这可能会催生新的开发周期。除了错误修复之外,迭代开发等模型还计划在未来版本中提供其他功能。对于每个新版本,都可以启动一个新的开发周期。
SDLC 模型和方法解释
瀑布
Waterfall SDLC 模型是经典的开发方法。随着每个阶段的完成,项目会溢出到下一步。这是一个久经考验的模型,并且有效。瀑布模型的一个优点是可以在继续之前评估每个阶段的连续性和可行性。然而,它的速度是有限的,因为一个阶段必须在另一个阶段开始之前完成。
敏捷
AGILE 模型由开发人员设计,以将客户需求放在首位。这种方法非常注重用户体验和输入。这解决了许多旧应用程序使用起来晦涩难懂的问题。另外,它使软件对客户反馈的反应非常迅速。敏捷寻求快速发布软件周期,以应对不断变化的市场。这需要一个具有良好沟通能力的强大团队。由于过于依赖客户反馈,它还可能导致项目偏离轨道。
迭代
在迭代开发模型中,开发人员快速创建软件的初始基本版本。然后他们以小步骤(或迭代)审查和改进应用程序。这种方法最常用于非常大的应用程序中。它可以快速启动应用程序并运行以满足业务需求。但是,此过程可能会迅速超出其范围,并且可能会使用计划外资源。
开发运维
DevOps 安全模型将 操作(使用软件的人员)纳入开发周期。与敏捷一样,这旨在提高应用程序的可用性和相关性。该模型的一个显着优势是实际软件用户对设计和实施步骤的反馈。一个缺点是它需要积极的协作和沟通。这些额外成本可以通过自动化部分开发过程来抵消。