软件开发流程-学习笔记

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

  • 软件生命周期
    image

    1、定义问题
    @startuml
    scale 10
    |定义问题|
    start
    :搜集需求;
    :可行性研究;
    :需求分析;

    2、软件开发
    |软件开发|
    :概要设计;
    :详细设计;
    :编码;
    :测试;

    3、软件维护
    :纠错性维护;
    :改进性维护;
    :报废;
    stop
    @enduml

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

image-1

@startuml
scale 10
title 软件开发模型
:瀑布模型;
软件开发的各项活动严格按照线性方式进行。
当前活动接受上一项活动的工作结果。
当前活动的工作结果需要进行验证。
image-2

瀑布模型优缺点
优点:
开发的各个阶段比较清晰。
强调早期计划及需求调查。
适合需求稳定的产品开发。
缺点:
早期的错误可能要等到开发后期的阶段才能发现。
由于开发模型是线性的,增加了开发的风险。
image-3

:敏捷开发模型;
适用于需求频繁变化和需要快速开发的场景。
XP

SCRUM

敏捷模型总结:
增量迭代
小步快跑
:DevOps 模型;

DevOps 生命周期:
持续开发
持续测试
持续集成
持续部署
持续监控

@enduml

  • DevOps 对发布的影响
    减少变更范围
    强发布协调
    自动化

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

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