软件构造过程和配置管理

软件开发的生命周期

从0到1  从无到有

从1到n  从有到好

传统软件开发的过程模型
两个基本类型:线性过程(Linear)、迭代过程(Iterative)

现有模型:

瀑布过程(Waterfall)
增量过程(Incremental)
V字模型(V-Model)
原型过程(Prototyping)
螺旋模型(Spiral)

选择合适的过程模型的依据:

用户参与度(适应变化的能力)
开发效率(管理复杂度)
开发出的软件的质量

瀑布过程

特点:

  • 线性推进,整体推进
  • 阶段划分清楚
  • 管理简单
  • 无法适应需求变化
  • 无迭代

增量过程

特点:

  • 线性推进
  • 无迭代
  • 比较容易适应需求的增加
  • 增量式(多个瀑布串行)

V字模型

特点:

  • 瀑布过程的拓展

原型过程

迭代过程,开发之后由用户试用、评审,发现问题反馈给开发者,开发者修改原有实现再交给用户评审。以上过程循环往复,直至用户满意为止。

时间代价高,但开发质量也高

螺旋模型

敏捷开发:

通过快速迭代和小规模的持续改进,以适应快速变化

极限的用户参与

极限的小步骤迭代

极限的确认、验证

软件控制管理和版本控制系统

软件配置管理:追踪和控制软件的变化(核心:版本控制和基线的确立)

软件配置项:软件中发生变化的基本单元(eg:文件)

基线:软件持续变化过程中的“稳定时刻”(对外发布的版本)

配置管理数据库(CMDB):存储软件的各配置项随时间发生变化的信息+基线

版本:为软件的任一特定时刻(Moment)的形态指派一个唯一的编号,作为“身份标识”(意义:1.在多个开发者之间共享和协作  2.记录开发者的动作,便于审计)

本地版本控制系统:仓库存储于开发者本地机器,无法共享和协作

集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作

分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器(git)

Git——一种分布式版本控制工具

git的发展历史:

2005年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权利。为了Linux Kernel的持续开发,Linux的缔造者Linus Torvalds与众多Linux开源社区的开发者基于使用BitKeeper时的经验教训进行了Git的设计和开发。

初版Git就发行于2005年,随着时间的发展,Git日臻成熟完善。如今它依然是世界上最先进的分布式版本控制系统。
 

组成:

典型的Git仓库由以下三部分组成:

本地的CMDB(Configuration Management Database,配置管理数据库)
工作目录
暂存区
本地的CMDB存在于Git仓库中.git目录(通常是隐藏的)下,存储着所有的版本控制数据;

工作目录即本地文件系统,存储Git仓库中的文件;

暂存区隔离工作目录和Git仓库,被称为区域但其实只是在文件上打标记来区分(Git仓库的文件状态)。
 

文件状态:

每个文件处于以下三种状态之一:

  • 已修改(Modified)
  • 已暂存(Staged)
  • 已提交(Committed)

三者可进行转化

Git版本管理

版本演化关系图(Object Graph)是一个有向无环图,体现了一个Git仓库的历史

其中,我们要注意一下:

HEAD指向当前commit对象
分支(branch)只是一个指向commit对象的名称
除去初始commit外,每个commit对象指向一个父对象
一个commit对象最多有两个父对象——通常只有一个,合并(Merge)操作才会有两个
多个commit对象可以指向同一个父对象——创建分支(branch)后产生
Git版本变化的存储方法

传统的版本控制工具存储版本之间变化的代码行,而Git存储版本之间变化的文件。这样做方便了使用者创建不同的分支,但缺点在于如果要查看两个版本间的差异则需要进行比较处理。

eg:

常用命令:

本地Git仓库部分:

获取Git仓库:

1.本地初始化创建 git init

2.克隆现有的仓库:git clone <url>(从url克隆同名仓库至当前目录)

暂存和修改

1.git add.  将当前目录下的所有已修改文件添加到暂存区

2.git  add * 将仓库所有已修改文件添加至暂存区

3.git add [filename]  将指定文件添加到暂存区

4. git rm [filename]  同时删除暂存区和本地文件

5. git rm --cached[filename]  从暂存区删除但不删本地文件

撤销操作

1.git commit --amend  重新提交上次提交(多用于添加漏掉的文件)

2.git checkout --  <file>  撤销对文件所做的修改

3.git reset HEAD <file>撤销文件暂存

查看
1.git status  查看未暂存,已暂存的修改,如果关联了远程库还包含本地库和远程库的比较

2.git diff  查看未暂存文件

3.git diff --cached  查看已暂存文件跟上次提交之间的变化

4.git branch -a 查看所有分支

5.git  brance -v 查看每一个分支的最后一次提交

分支的建立和合并

1.git checkout -b [branch]   新建一个分支,并切换到此分支
2.git branch [branchname]   新建一个分支,但仍停留在当前分支
3.git branch –d [branch]  删除指定分支
4.git checkout [branchname]  切换到指定分支,并更新工作区
5.git merge [branch]  合并分支到当前分支
6. git branch -m old_name new_name  修改分支名

远程git仓库

添加,查看远程仓库

git remote 查看远程仓库(使用-v参数会显示简写和地址)

git remote add<shortname><url>  添加远程仓库

Git支持多个远程仓库关联同一个本地仓库,使用git clone命令实际上自动添加了一个远程仓库。

git fetch <remote>
访问远程仓库,从中拉取所有你还没有的数据,而且会自动添加此远程仓库
git pull
从最初克隆的服务器上抓取并自动尝试合并到当前所在的分支
git push <remote> <branch>
推送到远程仓库,若未指定remote和branch则推送至默认远程仓库的默认分支
 

软件构造的普遍过程

1.语言:

从用途上划分:编程语言,建模语言,配置语言,构建语言

从形态上划分:基于语言学的构造语言,基于数字的结构化构造语言,基于图形的可视化构造语言

IDE 集成开发环境

UML 统一模拟语言(unified modeling language)

2.该部分剩余请自行翻看ppt

初步理解build 

该部分请自行翻看ppt

p114

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值