软件构造第二章 第一节 软件生命周期和版本控制
基本内容
Software Development Lifecycle (SDLC)
Traditional software process models (waterfall, incremental, V-
model, prototyping, spiral)
Agile development and eXtreme Programming (XP)
Collaborative software development
Software Configuration Management (SCM)
Git as a SCM tool
1.软件生命周期SDLC:
From 0 to 1 从无到有
From 1 to n 从有到好
2.传统软件过程模型:
线性和迭代(迭代大体上就是线性上增加反馈)
Waterfall (Linear, non-iterative) 瀑布过程
Incremental (non-iterative) 增量过程
-
运用分治的思想,将需求分段,成为一系列增量产品,每个增量内部仍使用瀑布模型;
-
增量模型是瀑布模型的变形,拥有后者的全部优点,此外可以很快的迭代出第一版本;
V-Model (for verification and validation) V字模型
-
强调测试与继承,对代码、分析文档进行质量保证
Prototyping (iterative) 原型过程
Spiral (iterative) 螺旋模型
配置管理和版本控制
Software Configuration Management (SCM) 软件配置管理
Version Control System (VCS)
Software Configuration Item (SCI): the fundamental structural
unit of SCM. 软件配置项:软件中发生变化的基本单元(例如:文件)
基线:软件持续变化过程中的"稳定时刻"(例如:对外发布的版本)
CMDB:配置管理数据库
Local VCS
本地版本控制系统:
仓库存储于开发者本地机器,无法共享和协作
Centralized VCS
集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
Distributed VCS
分布式版本控制系统:仓库存储于独立的服务器分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器
以github为例,git仓库包含三部分:
.git directory (a repository storing all version control data) 本地的CMDB
Working directory (local file system) 工作目录:本地文件系统
Staging area (in memory) 暂存区:隔离工作目录和Git仓库
Object Graph :版本之间的演化关系图,一条边A->B 表征了"在版本A的基础上作出变化,形成了版本的基础上作出变化,形成了版本B,如下图
分支代码
-git(创建) branch(切换) -b(branch) iss53
-git merge hitfix(合并)
-是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
-用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
本地库和远程库
-clone:将整个库完整的复制
-fetch:将某一分支复制下来
-push:将分支推送到服务器上
-pull:将某一分支复制下来并合并在当前分支上