复习(1)

三维度八视图:

三个维度:构建时间和运行时间,某一时刻和某一时期,代码层面和组件层面

  1. 构建时某时刻代码层面:functions, classes, methods, interfaces and the dependencies among them
  2. 构建时某时刻组件层面:File, directory, package, library, static link, test item
  3. 构建时某时期代码层面:Code churn
  4. 构建时某时期组件层面:Software Configuration Item、Version
  5. 运行时某时刻代码层面:Snapshot diagram、Memory dump
  6. 运行时某时刻组件层面:包、库、动态链接、数据库、网络、硬件。
  7. 运行时某时期代码层面:Execution tracing,用日志的方式记录程序执行的调用次数。堆栈轨迹、并发线程
  8. 运行时某时期组件层面:事件日志、多进程、分布式程序。

视图转换:

∅→Code

Programming / Coding (ADT/OOP)

Code→Component

Design (ADT/OOP; Reusability; Maintainability)

Build−time→Run−time

Debug, unit/integration testing (Robustness and Correctness)

Moment→Period

Version control

内外部质量指标:

内部:可被用户感知的因素,如软件速度、易用性;影响用户

源码方面:Lines of Code (LOC), Cyclomatic Complexity

结构方面:耦合、内聚

其他:可读性、可理解性、清晰度、大小

外部:作为软件产品的质量,如代码可读性;影响软件本身和它的开发者

Correctness正确性Robustness健壮性、xtendibility可扩展性、Reusability可复用性、Compatibility兼容性、Efficiency效率、Portability可移植性、Ease of use易用性、Functionality功能性、Timeliness及时性、Verifiability可验证性、Integrity完整性、Repairability可修复性、Economy经济性

软件配置管理SCM与版本控制系统VCS:

Software Configuration Mgmt(SCM)

软件配置管理:追踪和控制软件的变化,包括版本控制和软件配置项

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

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

Version control systems(VCS):

古老的版本控制方法:通过复制文件并修改文件名

本地版本控制系统:

仓库存储于开发者本地机器,无法共享和协作。

集中式版本控制系统:

仓库存储于独立的服务器, 支持多开发者之间的协作。

分布式版本控制系统:(git)

仓库存储于独立的服务器 + 每个开发者的本地机器。

Git的结构、工作原理、基本指令

一个 Git 仓库分为三个部分:

.git 目录:本地的 CMDB

工作目录:本地文件系统

暂存区:.git 目录中的一个文件,隔离工作目录和 Git 仓库

Object Graph:版本之间的演化关系图,一条边A->B表征了“在版本B的基础上作出变 化,形成了版本A”

每个commit指向一个父亲

多个commit指向同一个父亲:分支

一个commit指向两个父亲:合并

一个 “分支”只是一个指向 commit 的别名

HEAD 指向当前工作的 commit

结点

一个 commit 存储一个树形结点。tree 中包含了数个 blob;每个 blob 是一个压缩了的仓库文件,不保存文件名信息。

对于每个文件的每个版本(或是不同文件名但相同内容的文件),Git 只会存储一个 blob,而允许多个 commit tree 指向同一个 blob。

一个 commit 中与之前相比未发生变化的文件,无需重复存储。文件未发生变化,则后续多个版本始终指向同一个文件。文件发生变化了,存储两份不同的文件,两个版本指向不同的文件。

传统 VCS 和 Git 对比

传统VCS存储版本之间的变化(行)

Git存储发生变化的文件(而非代码行),不变化的文件不重复存储

一些git指令:

git checkout –b 分支名 ——创建分支

git checkout master ——回到分支master

git merge 分支名 ——如果两个分支在一条线上,将master与之合并,head指向master;否则,创建一个新节点,让这个节点同时指向两个结点,然后master到这个新节点,head指向master

git branch –d 分支名 ——删除分支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值