02:软件开发流程(Virigo)

什么是软件

是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件。
image_kptyp2kDSG

软件生命周期

  • 定义问题
    • 搜集需求
    • 可行性研究
    • 需求分析
  • 软件开发
    • 概要设计
    • 详细设计
    • 编码
    • 测试
  • 软件维护
    • 纠错性维护
    • 改善性维护
    • 报废
      image_Qk30H8fvhA

软件开发流程

为了使软件开发的工作系统化并且可控制,需要采用合适的软件开发模型和开发过程管理所有的活动

瀑布模型

概念

是一个项目开发架构。开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段。
image_AWe5G9Qc_n

  • 软件开发的各项活动严格按照线性方式进行。
  • 当前活动接受上一项活动的工作结果。
  • 当前活动的工作结果需要进行验证。

优点

开发的各个阶段比较清晰。
强调早期计划及需求调查。
适合需求稳定的产品开发。

缺点

早期的错误可能要等到开发后期的阶段才能发现。
由于开发模型是线性的,增加了开发的风险。

敏捷开发模型

概念

是一种增量模型。软件是以增量的、快速的周期开发的,这也导致许多小的增量版本,每个版本都建立在以前的功能之上,并且每个版本都经过了彻底的测试,以确保软件质量得到维护。

特点

适用于需求频繁变化和需要快速开发的场景。增量迭代小步快跑

DevOps

概念

是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠

生命周期

对发布的影响

  • 减少变更范围
  • 加强发布协调
  • 自动化

CI/CD

持续集成(Continuous Integration,缩写为 CI):

  • 种软件开发实践。
  • 团队开发成员每天可能会发生多次集成。
  • 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证。
  • 根据测试结果确定新代码和原有代码能否正确地集成在一起。

持续交付(Continuous Delivery,缩写为 CD)

  • 是一种软件工程手法。
  • 让软件产品的产出过程在一个短周期内完成。
  • 保证软件可以稳定、持续的保持在随时可以发目标
  • 软件的构建、测试与发布变得更快以及更频繁。
  • 减少软件开发的成本与时间,减少风险。

与DevOps关系

DevOps 的范围更广:DevOps 是软件交付过程所涉及的多个团队之间的合作,并且将软件交付的过程自动化。
持续交付是一种自动化交付的手段:关注点在于将不同的过程集中起来,并且更快、更频繁地执行这些过程。
即:DevOps 可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps 模型

总结