【软件构造】—— 复习篇 多维视图和质量目标看软件构造

这一章是软构的开篇章节,从个人理解层面进行PPT的知识梳理,如有不足欢迎大家补充指正。主要从宏观和理论层面讲述了软件构造的视图、质量指标以及标准流程。同时介绍了两种软件管理的系统,并讲解了如今最常使用的版本控制软件,也是一个SCM:Git的使用

多维度视图

这一部分主要就是弄懂一个图就可以,记住图中的内容

按阶段划分

Build-time View

idea -> 需求 -> design -> code -> 可安装/执行包

Run-time View

程序被载入目标机器开始执行

按动态性划分

Moment View

主要指特定时刻的软件形态

Period View

指软件形态随时间的变化

按构造对象的层次划分 

Code-level View (Logically)

源代码是如何通过基本的程序块如函数、类、方法、接口和他们的依赖项经过逻辑上组织起来的

Component View (Physically)

源代码是如何通过基本的程序块如文件、目录、包、库和他们的依赖项经过物理上组织起来的

总结

这部分对于上述表格中经过三个划分标准划分出的最小单元包含的对象和他们的含义进行了总结和分析

Build-time/Moment/Code-level

  • 源代码
  • AST(抽象语法树)-》语法层面
  • 接口-类-属性-方法(类图)-》语义层面

Build-time/Moment/Component-level

  • 文件
  • 静态链接
  • 测试用例
  • 构建脚本(Build Script)

Build-time/Period/Code-level

代码改变(Code Churn):源代码的改变

 

Build-time/Period/Component-level

各项软件实体随时间变化

  • 配置项(Configuration Item)
  • 版本

Run-time/Moment/Code-level

代码层面:逻辑实体在内存中如何呈现

Moment:逻辑实体在内存/硬件环境中特定时刻的形态

  • Snapshot 图(描述程序运行时某时刻内存里变量层面的状态)
  • 内存信息转储 (用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途)

Run-time/Moment/Component-level

构建层面:物理实体在物理硬件环境中的呈现

Moment:逻辑实体在内存/硬件环境中特定时刻的形态

  • 动态链接
  • 配置
  • 数据库
  • 中间件
  • 网络
  • 硬件

Run-time/Period/Code-level

代码层面:逻辑实体在内存中如何呈现

Period:逻辑实体在内存/硬件环境中的形态随时间的变化

  • UML时序图:各程序单元的交互情况

  •  执行跟踪:用日志的方式记录程序执行的调用次序

Run-time/Period/Component-level

构建层面:物理实体在屋里硬件环境中的呈现

Period:物理实体在内存/硬件环境中的形态随时间的变化

事件日志:系统层面

软件构造的阶段划分、各阶段的构造活动

 

内部/外部质量指标

质量指标用来衡量软件构造的好坏。内部是针对开发者而言的,所以往往与代码本身相关;外部是针对使用的client而言的,往往更关注使用时的效果。理解了这种差异,我们可以更好的判断某个质量指标是内部还是外部

内部质量指标

行数

复杂性

可读性

易懂性

clearness

体积

外部质量指标

正确性:按照预先定义的规约执行

最重要的质量指标!!!!

正确性不可以折中!

健壮性:针对异常情况的处理

可扩展性:规约的修改是否容易

可复用性:一次开发、多次使用

兼容性:不同软件系统间可以容易的集成

性能

可移植性

易用性

Functionality

及时性

可验证性

完整性

可修复性

经济性

前两部分的导图如下

 

 

软件配置管理SCM

追踪和控制软件的变化

核心:版本控制和基线的确立

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

  • 基线:软件持续变化过程中“稳定时刻”

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

版本控制系统VCS

本地版本控制系统

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

集中式版本控制系统

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

分布式版本控制系统

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

Git:SCM + 分布式版本控制系统

三个核心部分

  • .git:本地的CMDB

  • 工作目录:本地文件系统

  • 暂存区:隔离工作目录和Git仓库

每个文件都有三个状态

  • 已修改

  • 已暂存

  • 已提交

FILE状态周期

 

每个commit指向一个父亲。

若多个commit指向同一个父亲:分支;一个commit指向两个父亲:合并

HEAD指向当前commit,若文件不发生变化则后续多个版本始终指向同一个文件

基本命令

跟踪新文件

git add

检查当前文件状态

git status

查看尚未暂存的文件更新了哪些部分

git diff

提交更新到某个分支

git commit -m "msg"

从暂存区和工作区中删除

git rm

移动或重命名

git mv

从现有仓库克隆:复制服务器上项目的所有历史信息到本地

git clone [url]

创建分支

git branch (branchname)

切换分支

git checkout (branchname)

合并分支

git merge

删除分支

git branch -d ()

组合命令

在工作目录中初始化新仓库

git init
git add .
git commit -m 'msg'

远程管理主机

git remote # 列出所有主机
git remote -v # 查看远程主机的网址
git remote add <主机名> <网址> # 添加远程主机
git remote rm # 删除远程主机

将更新取回本地

git fetch <远程主机名> # 将某个远程主机的更新全部取回本地
git fetch <远程主机名> <分支名> # 取回指定主机的指定分支

取回远程主机某个分支更新并与本地分支合并

git pull <远程主机名> <远程分支名>:<本地分支名> # 取回某个远程端分支的更新与本地指定分支合并

将本地分支的更新推送到远程主机

git push <远程主机名> <本地分支名> <远程分支名> # 将本地分支推送到远程端分支上
git push origin master # 表示将本地分支推送到存在“追踪关系”的远程分支

老规矩,上个这部分的思维导图

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值