1,Build-time Views(构造阶段)
Code-level View:编码阶段代码是如何组成的(代码有多少个类,类的方法)
Component-level View:结构角度关注代码的物理结构,比如系统有多少个package,libraries
Moment View:瞬时角度,某个时间点代码的完成情况
Period View:长期角度关注软件的变化情况
1.1 Build-time,Moment,code-level View
在某一个时间点,构建代码过程中,代码是什么样子。
1,词法
source code
2,语法
Abstract Syntax Tree(AST)
抽象语法树
3, 语义:源代码具体想实现什么目标
源代码到现实世界的映射,类与类之间的关系
UML图
1.2 Build-time,period,code-level View
1,关注编码过程中代码的改变情况
code churn
版本控制工具
1.3 Build-time,moment,component-level View
代码的组织情况,类和文件之间的组织情况,(更改时应该修改哪些部分?)
模块化
1,库函数(编写阶段)
library
2,(构建阶段)
maven Repository
3,(测试阶段)
junit
静态链接和动态链接
静态链接:代码被复制进代码成为整体,发生在构造阶段(库文件的升级难以反馈)
动态链接:
Component diagram in UML
1.4 Build-time,period,component-level View
各软件实体随时间如何变化?
SCI(配置项)
Version(版本)
VCS(version control system)
2,Run-time Views(构造阶段)
Code-level View:逻辑实体在内存中如何呈现
Component-level View:物理实体在物理硬件环境如何呈现
Moment View:逻辑/物理实体在内存/硬件环境某时刻的形态
Period View:逻辑/物理实体在内存/硬件环境形态随时间的变化
2.0.1 Executable programs(可执行程序)
1,native machine code
2,interpreted byte codes(解释型字节码)
java移植性更高
2.0.2 Libraries(库文件)
dynamic link 动态链接,仅仅做标记,运行时才将库文件转置内存
2.0.3 configuration and data files(配置文件)
2.0.4 Distribute programs(分布式程序)
2.1 Run-time,Moment,code-level View
程序运行的某个阶段,分别有多少对象,以及每个对象的值
1,Snapshot 代码快照图
2,Memory dump 内存信息转储查看内存使用情况
2.2 Run-time,period,code-level View
Sequence diagram in UML
Execution tracing
2.3 Run-time,moment,component-level View
Deployment diagram in UML
2.4 Run-time,period,component-level View
系统日志 Event logging