软件生命周期与配置管理

2.1 Software Lifecycle and Configuration Management

概论

  • 软件开发过程
  • 传统的软件开发过程模型
  • 敏捷开发
  • 软件配置管理
  • Git

软件开发的生命周期

  • 软件生命周期与配置管理

    版本管理

    软件生命周期与配置管理

    传统软件开发模型

    两种基本的类型

    • 线性过程
    • 迭代过程

    目前常用的模型

    • 瀑布过程
    • 增量过程
    • V模型
    • 原型过程
    • 螺旋过程

    选择类型的依据

    • 用户参与程序开发有多大
    • 开发效率 管理复杂度
    • 开发出的软件的质量
    瀑布过程

    几个特点

    • 线性推进
    • 阶段划分过程
    • 整体推进
    • 无迭代
    • 管理简单
    • 无法适应需求的改变
    增量过程
    • 每次只开发一点点
    • 和瀑布模型相比 
      • 开发过程被分割为几个小的功能
      • 需求可变

    几个特点

    • 线性推进
    • 增量式(多个瀑布的串行)
    • 没有迭代
    • 比较容易适应需求的增加
    V模型

    软件生命周期

    计划需求设计构造测试部署运营

    • 计划 需求:产品经理
    • 设计:架构师
    • 构造:程序员
    • 部署 运营:运维
    原型过程

    在原型上进行进行迭代 时刻发现用户需求
    时间代价高 程序质量高

    螺旋模型

    复杂的开发过程

    • 多轮次迭代 基本符合瀑布
    • 每轮次迭代有明确目标 遵循原型过程 进行严格的风险控制 才可以进行下一轮次迭代

    敏捷开发

    敏捷开发:通过快速的迭代和效果的持续改进 以快速适应变化 类似于增量和原型的叠加

    敏捷开发的特点

    软件生命周期与配置管理

    • 对用户需求反应及时
    • 流程短 开发灵活

    敏捷开发过程

    软件生命周期与配置管理

    特征

    软件生命周期与配置管理

    • 极致的用户参与
    • 极致的小步骤迭代
    • 极致的确认和验证

    eXtreme Programming极限编程

    SCM版本控制

    SCM 软件配置管理:追踪和控制软件的变化

    SCI and baseline

    SCI 软件配置:程序文件

    baseline:软件持续变化过程中相对稳定的版本

    CMDB and check-in/out for Auditing

    CMDB:配置管理数据库 存储软件各个配置项随时间发生变化的信息+baseline

    Versioning版本控制

    版本:为软件的任意时刻的形态指派一个ID

    软件生命周期与配置管理 
    例如: 
    软件生命周期与配置管理

    进行版本控制的必要性

    • 随时回滚到上一个版本
    • 比较两个版本的差异
    • 备份软件版本历史
    • 获取备份
    • 合并分支
    • 在多个开发者之间进行共享和协作
    • 记录每个开发者的动作 便于审计

    历史上版本控制演化

    • 本地版本控制 
      • 仓库存储在本地机器
      • 无法共享协作
    • 集中式 
      • 存储于独立服务器
      • 支持多开发者协作
    • 分布式 
      • 存储在独立服务器+本地机器
      • 本地可以直接共享