02.软件开发流程

发布时间 2023-12-30 10:30:41作者: 想要暴富的小男孩

目录

 
  • 软件
  • 软件生命周期
  • 软件开发模型

软件

 
  • 软件是与计算机系统操作有关的计算机程序、可能有的文档及数据。

软件生命周期

 
  • 定义问题
  • 软件开发
  • 软件维护
@startuml
scale 10
|定义问题|
start
:搜集需求;
:可行性研究;
:需求分析;
|软件开发|
:概要设计;
:详细设计;
:编码;
:测试;
|软件维护|
:纠错性维护;
:改进性维护;
:报废;
stop
@enduml

软件开发流程

 
  • 为了使软件开发的工作系统化并且可控制;
  • 需要采用合适的软件开发模型和开发过程管理所有的活动。
@startuml
scale 10
title 软件开发模型
:瀑布模型;
:敏捷开发模型;
:DevOps 模型;
@enduml

瀑布模型

 
  • 软件开发的各项活动严格按照线性方式进行。
  • 当前活动接受上一项活动的工作结果。
  • 当前活动的工作结果需要进行验证。
@startuml
scale 4
:制定计划;
:需求分析;
:软件设计;
:程序编码;
:软件测试;
:运行维护;
@enduml

瀑布模型优缺点

 
  • 优点:
    • 开发的各个阶段比较清晰。
    • 强调早期计划及需求调查。
    • 适合需求稳定的产品开发。
  • 缺点:
    • 早期的错误可能要等到开发后期的阶段才能发现。
    • 由于开发模型是线性的,增加了开发的风险。
@startuml
scale 4
:制定计划;
:需求分析;
:软件设计;
:程序编码;
:软件测试;
:运行维护;
@enduml

敏捷开发模型

 
  • 适用于需求频繁变化和需要快速开发的场景。
    • XP
    • SCRUM

XP - 极限编程

 

SCRUM

敏捷模型总结

 
  • 增量迭代
  • 小步快跑

DevOps

 

 

DevOps 生命周期

 

 

  • 持续开发
  • 持续测试
  • 持续集成
  • 持续部署
  • 持续监控

DevOps 对发布的影响

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

CI/CD

 
  • 持续集成(Continuous Integration,缩写为 CI):
    • 一种软件开发实践。
    • 团队开发成员每天可能会发生多次集成。
    • 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证。
    • 根据测试结果确定新代码和原有代码能否正确地集成在一起。
  • 持续交付(Continuous Delivery,缩写为 CD)
    • 是一种软件工程手法。
    • 让软件产品的产出过程在一个短周期内完成。
    • 保证软件可以稳定、持续的保持在随时可以发布的状况。
    • 目标:
      • 让软件的构建、测试与发布变得更快以及更频繁。
      • 减少软件开发的成本与时间,减少风险。

CD 与 DevOps 的关系

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