图中有三个维度:时间(瞬时的角度、周期的角度),编码(构造开发阶段、运行阶段),(代码层级、模块层级)
目录
1.1Build-time,moment,and code-level view构造阶段,瞬时视角,编码层面
1.2 Build-time ,period,and code-level view(关注在编码的时候代码随时间的变化)
1.3 Build-time,moment,and component-level view(开发阶段、瞬时角度、模块化视图)
1.4 Build-time,period,and component-level view
2 运行阶段(Runtime Views)(运行时:程序被载入目标机器,开始执行)
2.1 Run-time,moment,and code-level view
2.2 Run-time,period,and code-level view
2.3 Run-time,moment,and component-level view
2.4 Run-time,period,and component-level view
1.构造阶段(Build-time Views)
Code-level view(编码阶段):代码的逻辑组织
Component-level view(结构角度):代码的物理组织
Moment view(瞬时角度):特定时刻的软件形态
Period view(周期角度):软件形态随时间的变化
1.1Build-time,moment,and code-level view构造阶段,瞬时视角,编码层面
(在某个时间点上构建代码的时候,代码呈什么样的展现形式)
三个层面:
词汇层面:面向词汇的源代码(Lexical-oriented source code)——半结构化,代码+注释
语法层面:面向语法的程序结构,AST(Syntax-oriented program structure: e.g., Abstract Syntax Tree)——AST:彻底结构化,将源代码变为一棵树,对树做各种操作==对源代码的修改
语义层面:向语义的程序结构,(Semantics-oriented program structure: e.g., Class Diagram )——程序中有多少类以及类与类之间的关系。
Interface(接口)-Class(类)-Attribute(属性)-Method (方法)(Class Diagram)
1.2 Build-time ,period,and code-level view(关注在编码的时候代码随时间的变化)
Code churn(代码变化)——版本控制工具
1.3 Build-time,moment,and component-level view(开发阶段、瞬时角度、模块化视图)
Package, File, Static Linking, Library, Test Case, Build Script (Component Diagram)
(代码的组织情况)关注如何组织程序文件
利用模块化形式组织,例如把功能类似的放入一个包(Package),把完成某一功能的类或者文件放入一个包里
调用第三方库文件(Library),链接库文件(Static Linking与Dynamic Linking)
静态链接(Static Linking)发生在构造阶段,库被拷贝进入代码形成整体,执行的时候无需提供库文件。方便程序的构建(优点),难以升级(缺点)
Component Diagram in UML,程序的模块图
1.4 Build-time,period,and component-level view
Configuration Item(配置项), Version(版本)
(代码的改变情况)在某个阶段,对代码做了什么样的变化——版本控制工具(VSC,Version Control System,支持协同开发)
2 运行阶段(Runtime Views)(运行时:程序被载入目标机器,开始执行)
Code-level view(代码层面):逻辑实体在内存中如何呈现
Component-level view(构件层面):物理实体在物理硬件环境中如何呈现
Moment view(瞬时角度):逻辑/物理实体在内存/硬件环境中特定时刻的形态如何
Period view(周期角度):逻辑/物理实体在内存/硬件环境中的形态随时间如何变化
可执行程序(Executable Programs):一次性编译将程序编译为机器码(可移植性差,但是非常方便简单);程序完全解释执行(执行一行代码,编译一行)将程序文件转换为解释性字节码;
动态链接(Dynamic Linking):库文件不会在构造阶段被加入可执行文件,仅做标记;程序运行时,根据标记装载库到内存中;发布软件时,记得将程序所依赖的所有动态库都复制给用户。 优点:易于升级;
配置文件(Configuration and Data Files)通过配置文件,告知程序读取不同文件资源的时候采取不同的方式
分布式程序(Distributed Programs)需要多个运行程序,分别部署于多个计算机物理环境
2.1 Run-time,moment,and code-level view
(Code Snapshot, Memory dump)
(关注程序运行过程中,有多少个对象以及每个对象的值是什么)
代码快照图(Snapshot diagram),内存信息转储(Memory dump)
2.2 Run-time,period,and code-level view
(Execution stack trace, Concurrent multi-threads)
执行跟踪(Execution tracing)用日志的方式记录程序执行的调用次序
2.3 Run-time,moment,and component-level view
Package, Library, Dynamic linking, Configuration, Database, Middleware, Network,
(运行阶段,在某个时刻下从结构性或者模块化的角度看代码的情况)
2.4 Run-time,period,and component-level view
Event log, Multi-processes, Distributed processes
Event log(时间日志):系统的调用、使用情况