软件开发的操作周期:软件开发生命周期
软件开发的操作周期:软件开发生命周期好处瀑布 - 是一个级联SDLC模型,其中开发过程看起来像流程,一步一步地进行分析,预测,实现,测试,实施和支持阶段。该SDLC模型包括完全逐步执行每个阶段。该过程严格记录并预定义,具有该软件开发生命周期模型的每个阶段所期望的功能。测试阶段包括调试过程。开发过程中遗漏的所有代码缺陷都会在此处检测到,记录下来并传回给开发人员进行修复。重复测试过程,直到删除所有关键问题并且软件工作流程稳定。当程序最终确定并且没有关键问题时 - 是时候为最终用户启动它了。新程序版本发布后,技术支持团队加入。该部门提供用户反馈; 在利用期间咨询和支持用户。此外,此阶段还包括所选组件的更新,以确保软件是最新的,并且不会受到安全漏洞的影响。从第一个也是最古老的“瀑布式”SDLC模型演变而来,它们的种类显着扩大。SDLC模型的多样性由众多产品类型预先确定 - 从简单的网站到复杂的医疗软件。如果你采用下面提到的SDLC模
软件构建的基本概念之一 - 软件开发生命周期模型。或者只是SDLC模型。SDLC - 是一个连续的过程,从决定启动项目的那一刻开始,并在它完全从开发中移除的那一刻结束。没有一个单一的SDLC模型。它们分为主要组,每组都有其特点和弱点。
阶段1.计划和需求分析 (Planning and Requirement Analysis)每个软件开发生命周期模型都从分析开始,过程的利益相关者
讨论对最终产品的要求。此阶段的目标是系统要求的详细定义。此外,还需要确保所有流程参与者都清楚地了解任务以及每个需求将如何实施。通常,讨论涉及质量保证专家,如果有必要,他们甚至可以在开发阶段干预过程中的添加。
在软件开发生命周期的第二阶段,开发人员实际上正在设计架构。所有利益相关者(包括客户)都会讨论此阶段可能出现的所有不同技术问题。此外,还定义了项目中使用的技术,团队负载,限制,时间范围和预算。最合适的项目决策是根据定义的要求做出的。
第3阶段。开发和编程 (Development and Coding)在批准要求后,该过程进入下一阶段 - 实际开发。程序员从这里开始编写源代码,同时牢记先前定义的需求。系统管理员调整软件环境,前端程序员开发程序的用户界面以及与服务器交互的逻辑。
编程本身假设有四个阶段
- 算法开发
- 源代码编写
- 汇编
- 测试和调试
测试阶段包括调试过程。开发过程中遗漏的所有代码缺陷都会在此处检测到,记录下来并传回给开发人员进行修复。重复测试过程,直到删除所有关键问题并且软件工作流程稳定。
阶段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模型包括完全逐步执行每个阶段。该过程严格记录并预定义,具有该软件开发生命周期模型的每个阶段所期望的功能。
好处 |
劣势 |
简单易用和理解 |
只有在最后一个阶段结束后,软件才会准备就绪 |
由于其刚性,管理简单:每个阶段都有明确的结果和流程审查 |
高风险和不确定性 |
发展阶段逐一进行 |
不是复杂和面向对象项目的最佳选择 |
适用于要求明确且不模棱两可的小型或中型项目 |
不适合长期项目 |
易于确定开发周期中的关键点 |
阶段的进展很难衡量,但仍处于发展阶段 |
易于分类和确定任务的优先级 |
集成在最后完成,不提供预先识别问题的选项 |
Waterfall SDLC模型的用例:
- 准确记录了这些要求
- 产品定义稳定
- 技术堆栈是预定义的,这使得它不是动态的
- 没有模棱两可的要求
- 该项目很短
在项目开始之前,迭代SDLC模型不需要完整的需求列表。开发过程可以从对功能部件的要求开始,可以在以后扩展。该过程是重复的,允许为每个循环制作新版本的产品。每次迭代(持续两到六周)都包括开发系统的单独组件,然后,将此组件添加到之前开发的功能中。说到数学术语,迭代模型是顺序逼近方法的实现; 这意味着逐渐接近计划的最终产品形状。
好处 |
劣势 |
某些功能可以在开发生命周期的开始阶段快速开发 |
迭代模型比瀑布模型需要更多资源 |
可以应用并行开发 |
需要持续管理 |
进展很容易衡量 |
可能会出现架构或设计问题,因为在短期规划阶段并未预见到所有要求 |
较短的迭代是 - 更容易的测试和调试阶段 |
小项目的糟糕选择 |
由于首先完成高风险任务,因此更容易控制风险 |
这个过程很难管理 |
在下一个sprint中可以防止在一次迭代中定义的问题和风险 |
即使在项目的最后阶段,风险也可能无法完全确定 |
灵活性和准备变化的要求 |
风险分析需要高素质专家的参与 |
迭代模型的用例:
- 最终产品的要求是严格预定义的
- 适用于大型项目
- 主要任务是预定义的,但细节可能随着时间而推进
螺旋模型 - 是SDLC模型,它分阶段结合了架构和原型。它是Iterative和Waterfall SDLC模型的组合,具有重要的风险分析重点。螺旋模型的主要问题是确定进入下一阶段的正确时机。建议将初步设定的时间范围作为此问题的解决方案。即使前一阶段的工作尚未完成,也将根据计划完成向下一阶段的转变。该计划是根据统计数据引入的,即使从个人开发人员的经验来看,也可以在之前的项目中收到。
好处 |
劣势 |
生命周期分为小部分,如果风险集中度较高,则可以提前完成阶段以解决问题 |
可能相当昂贵 |
开发过程准确记录,可根据变化进行扩展 |
风险控制需要高技能专业人员的参与 |
可伸缩性允许在相对较晚的阶段进行更改并添加新功能 |
对小项目可能无效 |
早期的工作原型已经完成 - 用户可以更快地指出这些缺陷 |
大量的中间阶段需要过多的文档 |
旋模型的用例
- 客户不确定要求
- 预计在开发周期中会进行重大编辑
- 具有中级或高级风险的项目,防止这些风险非常重要
- 应该在几个阶段发布的新产品,以获得足够的客户反馈
V形SDLC模型是经典瀑布模型的扩展,它基于每个开发阶段的相关测试阶段。这是一个非常严格的模型,下一阶段仅在前一阶段之后开始。这也称为“验证和验证”模型。每个阶段都有当前的过程控制,以确保可以转换到下一个阶段。
好处 |
劣势 |
V形模型的每个阶段都有严格的结果,因此很容易控制 |
缺乏灵活性 |
测试和验证在早期阶段进行 |
小项目的糟糕选择 |
适用于需求稳定且清晰的小型项目 |
相对较大的风险 |
V形模型的用例:
- 对于需要进行准确产品测试的项目
- 适用于中小型项目,其中严格要求严格要求
- 获得所需资格的工程师,特别是测试人员,可轻松到达。
在每次开发迭代之后的敏捷方法中,客户能够看到结果并理解他是否满意或不满意。这是敏捷软件开发生命周期模型的优势之一。其缺点之一是,由于缺乏明确的要求,很难估计资源和开发成本。极限编程是敏捷模型的实际应用之一。这种模型的基础包括每周短暂的会议 - Sprint是Scrum方法的一部分。
好处 |
劣势 |
功能需求的更正被实施到开发过程中以提供竞争力 |
由于永久性变化而无法衡量最终成本 |
项目按短而透明的迭代划分 |
团队应该是高度专业和客户导向的 |
灵活的变更过程使风险最小化 |
新要求可能与现有架构冲突 |
快速发布第一个产品版本 |
通过所有更正和更改,项目可能会超出预期时间 |
敏捷模型的用例:
- 用户需求动态变化
- 由于许多迭代,实施的更改的价格更低
- 与瀑布模型不同,它只需要初始计划来启动项目
END
网安加社区作为行业知名的交流社区,秉承“让开发人员更懂安全”的理念,集聚行业专家,各细分领域领航人士,整合各方优质资源,提供行业专业认证培训课程、积极开展各类专题活动,逐步形成一个积极鲜明的学习成长圈,全面助力行业人才发展培养。
持续关注,定期举行各类线下线上活动,了解最新行业咨询,发展!
公众号:网安加云课堂