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
进行版本控制的必要性
- 随时回滚到上一个版本
- 比较两个版本的差异
- 备份软件版本历史
- 获取备份
- 合并分支
- 在多个开发者之间进行共享和协作
- 记录每个开发者的动作 便于审计
历史上版本控制演化
- 仓库存储在本地机器
- 无法共享协作
- 存储于独立服务器
- 支持多开发者协作
- 存储在独立服务器+本地机器
- 本地可以直接共享
文章来源: 软件生命周期与配置管理