1.Build-time, moment, and code-level view
在这个多维视图中,有三个相互关联的形式:
- 词汇层面
- 语法层面
- 语义层面
词汇层面指的是基于词汇的半结构化源代码(Lexical-based semi-structured source code),半结构化是指近乎自然语言的风格+遵循特定的编程语法,前者方便程序员,后者方便编译器。
语法层面指的是面向语法的程序结构(Syntax-oriented program structure),具体例子有抽象语法树(AST)。
语义层面指的是面向语义的程序结构(Semantics-oriented program structure),语义是指源代码具体想实现什么目标。具体例子有使用类图Class Diagram(UML)来描述 interfaces, classes, attributes, methods以及它们之间的关系。下图既是一张Class Diagram。
2.Build-time, period, and code-level view
这个多维视图描述了代码随时间的变化(Code churn),包括代码行的增加,删除和修改。
3.Build-time, moment, and component-level view
这个多维视图着眼于源代码被物理地组织成文件(file),这些文件进一步由目录组织。文件被封装成包(package),并在逻辑上封装组件和子系统。可重用模块以库(library)的形式存在
4.Build-time,moment,and component-level view
这个多维视图实体(例如files/packages/components/libraries)随时间如何变化,Software Configuration Item (SCI,软件配置项) 以及版本(Version)的演变。
- Software Configuration Item (SCI,软件配置项)
- 版本(Version)
- 对于每个软件,都会有一个初始版本,并在此版本的基础上逐步发展,在发展的过程中,不断发布新的版本,直到Final Version。在此过程中,我们通常使用Version Control System (VCS)即版本控制系统来对软件的版本进行管理,现在流行的VCS主要是git
5.Run-time,moment,and code-level view
这个多维视图着眼于程序运行时在某个特定时刻的代码层面的状态,主要工具有快照图(Snapshot diagram)和内存信息转储(Memory dump )。
- 快照图:描述了程序运行时内存里变量层面的状态
- 内存信息转储:是指硬盘上的一个文件,它是当进程因特定类型的内部错误或信号而中止时产生的,其中包含进程内存的副本
6. Run-time, period and code-level view
这个多维视图着眼于程序运行阶段在某一段时间内在代码层面的视图,以下面UML中的Sequence diagram为例,图中体现了程序各个单元间的交互。
7.Run-time,moment,and component-level view
这一多维视图着眼于程序运行阶段在某一特定时刻在组件层面的视图,以下面UML中的部署图为例,图中展示了各个组件的相互联系。
8.Run-time, period, and component-level view
这一多维视图着眼于程序在运行阶段在某一阶段的组件层面视图,这一视图主要涉及到事件日志(Event logging),事件日志为系统管理员提供了对诊断和审计有用的信息。每一类事件都被赋予一个唯一的“代码”来格式化并输出一条人类可读的消息。这有利于本地化,并允许系统管理员更轻松地获得有关发生问题的信息。