这篇文章是对软件构造课程第三节Software Construction Process and Configuration Management的复习总结。
本节内容的核心是软件是如何开发与管理的——软件开发(0→1→…→n)遵循什么过程以及:每个阶段内部的“子过程”。
在软件构造课程中,本节真正重要的是掌握配置管理工具的使用,例如Git
一、软件开发生命周期(SDLC)
软件的开发分为两个阶段:From 0 to 1 从无到有 and From 1 to n 从有到好
二、软件过程(Software Process Models)
传统软件过程:
两大基本模式:线性过程 and 迭代过程
具体的软件过程模型:瀑布过程、增量过程、V字模型、原型过程以及螺旋过程
当下常见软件过程——敏捷开发(Agile Development)
敏捷开发:通过快速迭代和小规模的持续改进,以快速适应变化。
三、软件配置管理与版本控制系统
软件配置管理Software Configuration Management(SCM):追踪和控制软件的变化
软件配置项(SCI):软件中发生变化的基本单元(例如,在Git中,基本单元为文件)
基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)
配置管理数据库Configuration Management DataBase(CMDB):存储软件的各配置项随时间发生变化的信息+基线
版本:为软件的任一特定时刻(Moment)的形态指派一个唯一的编号,作为“身份标识”
版本控制系统:
本地版本控制系统:仓库存储于开发者本地机器无法共享和协作
集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器
一种软件配置管理工具的学习——Git
workspace:本地的工作区
staging:本地的暂存区,分隔工作区与本地仓库
Local repository:本地的CMDB
Git的工作原理:
版本间关系:
每个commit指向一个父亲,多个commit指向同一个父亲:分支,一个commit指向两个父亲:合并
Git中的分支与合并:
一个实例
Git同样支持团队开发。