软件构造笔记 2.1 Software Lifecycle and Configuration Management
1.软件开发的基本过程
SoftwareDevelopment Life Cycle (SDLC): From 0 to 1 从无到有。
2.软件配置管理Software Configuration Management(SCM)
软件配置管理追踪和控制软件的变化,包括修订控制和基线的建立。
软件配置项(SCI):软件中发生变化的基本单元(例如:文件)
基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)。
CMDB:配置管理数据库,存储软件的各配置项随时间发生变化的信息+基线。
3.版本控制系统Version Control System (VCS)
软件版本控制是将唯一版本名称或唯一版本号分配给计算机软件的独特状态的过程。
版本控制术语
仓库:即于SCM中的CMDB
变化:即codechurn,两个版本之间的差异
工作拷贝:在开发者本地机器上的一份项目拷贝
HEAD:程序员正在其上工作的版本
VCS的特征
可靠:只要我们需要,就可以保持版本不变;允许备份
多个文件:跟踪项目的版本,而不是单个文件
有意义的版本:有什么变化,他们为什么做?
恢复:全部或部分恢复旧版本
比较版本
审查历史:整个项目或个人档案
不仅仅是代码:散文,图像......
本地版本控制系统:仓库存储于开发者本地机器,无法共享和协作
集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器
4.Git作为配置管理工具
Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问.Git与你熟悉的大部分版本控制系统的差别是很大的,理论上,Git可以保存任何文档,但是最善于保存文本文档,因为它本来就是为解决软件源代码(也是一种文本文档)版本管理问题而开发的,提供了许多有助于文本分析的工具。对于非文本文档,Git只是简单地为其进行备份并实施版本管理。
Git仓库具有三个部分:本地的CMDB;工作目录:本地文件系统 ;暂存区:隔离工作目录和Git仓库。
我们使用Git进行的所有操作,如:克隆,添加,提交,推送,合并......都是对图形数据结构的操作,该图形数据结构存储项目中文件的所有版本,同时日志条目描述了这些变化。
Git对象图存储在存储库的.git目录中。
从另一台机器/服务器复制git项目意味着复制整个对象图。
ObjectGraph:版本之间的演化关系图,一条边 A->B表征了“在版本A的基础上作出变化,形成 了版本B”。
每个提交提交都是我们整个项目的快照,Git用树节点表示。
对于任何合理大小的项目,大多数文件在任何给定的修订中都不会改变。 存储这些文件的冗余副本会很浪费,所以Git不会这么做。Git对象图存储一个单独文件的每个版本一次,并允许多个提交共享该副本。每个提交还包含日志数据:谁,何时,短日志消息等。