【软件构造复习1】软件构造的基础概念

(一)软件的多维视图
【软件构造复习1】软件构造的基础概念

【Code-level + Build-time + Moment】

词汇:使用的语句、字符串、变量、注释,半结构化的代码
词法:AST语法树
语义:UML图

【Code-level + Build-time + Period】

Code Churn(代码变化)

【Component-level + Build-time + Moment】
files(文件)
directories(目录)
packages(包)

libraries(库)
静态链接
【Component-level + Build-time + Period】
版本控制(SCM、Git)
【Code level + Run-time + Moment】
snapshot(运行时的程序快照图)
memory dump(内存转储)
【Code level + Run-time + Period】
UML时序图
【Component level + Run-time + Period】

执行跟踪tracing
系统日志
(二)软件开发的质量指标

  1. 外部质量指标(面向用户)
    【正确性】首先要保证的属性
    【鲁棒性】通过添加异常处理来完善程序
    【易扩展性】
    【复用性】
  2. 内部质量指标(面向开发者)
    【LOC】代码行数
    【圈复杂度】程序模块的路径复杂性
    【高内聚低耦合】
    (三)软件配置管理
    【软件配置管理SCM】

追踪和控制软件的变化
软件配置项SCI:软件中发生变化的基本单元(文件:Component-Level)

【版本控制系统VCS】

本地的VCS
集中式VCS(CVS、SVN):通过服务器进行共享,客户端可以是全集或子集(Git只能是全集)
分布式VCS(Git):用户之间可以直接进行推送,也可以通过云

【版本控制工具git】
(1)基本指令
添加文件:git add xxx.xxx

提交文件:git commit -m “message”

push到远程仓库:git push origin master

从远程仓库pull:git pull origin master
新建分支:git checkout -b branch_name
切换分支:git checkout branch_name or git checkout master
选择一个分支与当前分支合并:git merge branch_name2
(2)Git的整体架构——四个仓库(本地有三个)

工作目录
暂存区域
本地库:源代码
云端软件服务器(远程仓库)

(3)对象结构图
Object Graph

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

(4)管理变化:

Git存储发生变化的文件(而非代码行),不变化的文件不重复存储
Commits: nodes in Object Graph