传统软件进程模型
基础类型:线性过程、迭代过程
瀑布过程:线性推进 阶段划分清楚 整体推进 无迭代 管理简单 无法适应需求 增加/变化
增量过程:线性推进 增量式(多个瀑布的串行)无迭代 比较容易适应需求的增加
V字模型:
原型过程:迭代过程
螺旋模型 :非常复杂的过程 。 多轮迭代基本遵循瀑布模式 每轮迭代有明确的目标 遵循“原型”过 程,进行严格的风险分析 方可进入下一轮迭代
敏捷开发
通过快速迭代和小规模的持续改进,以快速适应变化。
Agile = 增量 + 迭代,每次迭代处理一个小规模增量
极限的用户参与
极限的小步骤迭代
极限的确认/验证
软件配置管理 (SCM) 和版本控制系统 (VCS)
软件配置管理:追踪和控制软件的变化
软件配置项(SCI):软件中发生变化的基本单元(例如:文件)
基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)
CMDB:配置管理数据库 存储软件的各配置项随时间发生变化的信息 +基线
Versioning 版本控制
版本:为软件的任一特定时刻(Moment)的形态指 派一个唯一的编号,作为“身份标识”
古老的版本控制方法:通过复制文件并修改文件名
仓库:即于SCM中的CMDB
工作拷贝:在开发者本地机器上的一份项目拷贝
文件:一个独立的配置项
版本:在某个特定时间点的所有文件的共同状态
变化:即code churn,两个版本之间的差异
HEAD:程序员正在其上工作的版本
版本控制系统(VCS)
本地版本控制系统: 仓库存储于开发者本地机器,无法共享和协作
集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器
Git as an example of SCM tool
本地的CMDB
工作目录:本地文件系统
暂存区:隔离工作目录和Git仓库