软件开发生命周期(SDLC,Software Development Lifecycle)通常可以分为以下几个阶段:

第一阶段:计划和需求分析(Planning and Requirement Analysis)

软件开发生命周期从分析开始,过程的利益相关者讨论对最终产品的要求。此阶段的目标是系统要求的详细定义。此外,还需要确保所有流程参与者都清楚地了解任务以及每个需求将如何实施

第二阶段:设计项目构架(Project Archiecture)

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

第三阶段:开发和编程(Development and coding)

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

第四阶段:测试(Testing)

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

第五阶段:部署(Deployment)

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

SDLC模型:瀑布模型(Waterfall model)、迭代模型(Iterative model)、螺旋模型(spiral model)、V型模型(V-shape model)、敏捷模型(Agile model)

瀑布模型:是一个级联SDLC模型,其中开发过程看起来像流程,一步一步地进行分析,预测,实现,测试,实施和支持阶段。

软件开发生命周期(SDLC)-风君雪科技博客

优点:简单易用和理解;每个阶段都有明确的结果和流程审查;易于确定开发周期中的关键点;易于分类和确定任务的优先级

缺点:只有在最后一个阶段结束后,软件才会准备就绪;高风险和不确定性;阶段的进展很难衡量

适用性:适用于产品定义明确且不模棱两可的小型或中型项目,不适合长期项目。

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

软件开发生命周期(SDLC)-风君雪科技博客

优点:某些功能可以在开发生命周期的开始阶段快速开发;可以应用并行开发;进展很容易衡量

缺点:迭代模型比瀑布模型需要更多资源;需要持续管理;可能会出现架构或设计问题,因为在短期规划阶段并未预见到所有要求;过程很难管理

适用性:主要任务是预定义的,但细节可能随着时间而推进,小项目的糟糕选择,适用于大型项目

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

软件开发生命周期(SDLC)-风君雪科技博客

优点:开发过程准确记录,可根据变化进行扩展;可伸缩性允许在相对较晚的阶段进行更改并添加新功能;早期的工作原型已经完成 – 用户可以更快地指出这些缺陷

缺点:早期的工作原型已经完成 – 用户可以更快地指出这些缺陷;大量的中间阶段需要过多的文档

适用性:对小项目可能无效,具有中级或高级风险的项目,防止这些风险非常重要客户不确定要求,预计在开发周期中会进行重大编辑。

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

软件开发生命周期(SDLC)-风君雪科技博客

优点:V形模型的每个阶段都有严格的结果,因此很容易控制;测试和验证在早期阶段进行

缺点:缺乏灵活性、相对较大的风险

适用性:适用于需求稳定且清晰的小型项目、对于需要进行准确产品测试的项目。

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

软件开发生命周期(SDLC)-风君雪科技博客

优点:功能需求的更正被实施到开发过程中以提供竞争力;项目按短而透明的迭代划分;灵活的变更过程使风险最小化

缺点:新要求可能与现有架构冲突;通过所有更正和更改,项目可能会超出预期时间;由于永久性变化而无法衡量最终成本

适用性:用户需求动态变化的项目