一 Software Development Lifecycle (SDLC) 软件生命周期
一个软件的生命周期: 从0到1 从无到有。
多版本的软件的生命周期:从1到n 从有到好。如下图所示:
软件生命周期变化过程中会引起有效性,即vitality的变化。
二 传统软件的开发模式 Trational Software Process Models
两种模式: 线性过程 迭代过程
存在模式:瀑布过程 增量过程 V字过程 原型过程 螺旋模型
选择合适的过程模型的依据
用户参与程度有多大,即适应变化的能力‘
开发效率/管理复杂程度
开发出的软件质量
1)瀑布过程
线性推进
优点:阶段划分清楚 整体推进
缺点:无迭代,管理简单 无法适应需求增加和变化
2)增量过程:
线性推进 增量式(多个瀑布的串行) 无迭代 比较容易适应需求的增加。
3)V字模型
本质上是瀑布模型的扩展
4)原型过程
在原型的基础上不断的迭代,发现用户堆变化需求
迭代:开发出来后再由用户试用,发现问题将问题反馈给开发者,开发者修改原有实现,继续交给用户评审。
循环往复,更容易使得用户满意,但代价较高。
5)螺旋模型
多轮迭代遵循瀑布模式,每轮迭代由明确的目标,遵守原型的过程。
三.Agile Development敏捷开发
定义:提供快速迭代和小规模地持续改进,以适应快速变化
agile=增量+迭代
每次迭代处理一个小规模的增量。
极限的用户参与 极限的小步骤迭代 极限的确认和验证
1)敏捷开发的方法:XP 极限编程。
2)敏捷开发的方法:Scrum
四.软件结构管理和版本控制系统 Software Configuration Management (SCM) and Version Control System (VCS)
1)software Configuration Management (SCM) 软件配置管理
软件配置管理:追踪和控制软件的变化。核心:版本控制和基线的确定。
软件配置项:软件中发生变化的基本单元(例如:文件)。
基线(baseline):软件持续变化过程中的稳定时刻(例如:对外发布的版本)
CMDB:配置管理数据库 存储软件的各配置项随时间发生变化的信息+基线。
四 Version Control System (VCS)版本控制系统
古老的版本控制方法:通过复制文件并修改文件名。
对于新型版本控制方法1. 回滚到上一个版本;
2. 比较两个版本的差异;
3. 备份软件版本历史;
4. 获取备份;
5. 合并;
6. 在多个开发者之间共享和协作;
7. 记录每个开发者的动作,便于“审计”。
五History of an SCI
多个版本之间形成线性或分支结构。分支容许多个不同的版本存在,如 Git 中可以将branch版本合并到主线master上。
4)版本控制的大致组成部分
1. 仓库:即于 SCM 中的 CMDB。
2. 工作拷贝:在开发者本地机器上的一份项目拷贝。由于对某一版本的文件,需要经过下载、在本地机上的目录修改、更新(上传)等的步骤,而其中本地机上的目录指的就是工作拷贝。
3.文件:一个独立的配置项。
4.版本:在某个特定时间点的所有文件的共同状态。
5.变化:即 code churn,两个版本之间的差异。
6.HEAD:程序员正在其上工作的版本。
六..Git as an example of SCM tool Git软件配置管理工具
在软件开发中管理变化。
Git的结构: 由服务器(即远程的版本库)以及本地端存在的三个目录组成。
本地端存在三个目录:
1.本地端仓库,用来存放程序的所有版本。
2.工作目录(即工作区)。它是对程序进行更改的目录。
3.暂存区(Staging area(in memory)):更改完程序的地方,更改后的程序可能过如 g i t a d d . git\space add .\spacegit add. 指令存放在这里,之后可通过 g i t c o m m i t git\space commitgit commit 提交到版本库中形成新的版本库。用来隔离工作目录和 Git 仓库。
需要注意的是,除了暂存区不是真实存在的以外,其他目录及服务器均是真实存在的。
暂存区表示为某一个文件设置一位,如结尾增加标志位,实质上是设置文件的状态。
演化关系图:图中的版本之间的演化关系图(Object Graph),一条边A->B表征了“在版本B的基础上做出变化,形成了版本A”。
基本的Git命令:跳过使用暂存区域、移除文件
Git提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 git commit 加上-a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来 一并提交,从而跳过git add步骤;
使用git rm命令从Git中移除某个文件,把它从已跟踪文件清单(暂存 区域)中移除,并连带从工作目录中删除指定的文件。
基本的Git命令:对远程仓库的操作
远程仓库:托管在网络上的项目仓库; 多人协作开发某个项目时,需要管理这些远程仓库,以便推送或拉取 数据,分享各自的工作进展。
管理远程仓库:添加远程库、移除废弃的远程库、管理各式远程库分 支、定义是否跟踪这些分支。
分支是在版本控制下对对象的复制,以便可 以沿两个分支平行进行修改。