考点总结:
软件构造的多维视图
按阶段划分:构造时(Build-time)/运行时(Run-time)
按动态性划分:时刻(Moment)/阶段(Period)
按构造对象的层次:代码(Code)/构件(Component)
1. 构造(build)阶段 Code+Moment:代码的逻辑组织 源代码被组织成方法、类、接口等。 词汇层面(半结构化,近乎自然语言的编程风格+特定的编程语法)、语法层 面(AST,抽象语法树)、语义层面(UML 表达需求和设计思想)、
Code+Period:代码变化
Component+Moment:代码的物理组织 代码被放入文件、包、库等形成物理组件。 库:操作系统提供的库+编程语言提供的库+第三方公司的库+自己积累的库 我们需要告诉 IDE 和 JVM 在哪里寻找某些库,链接技术解决这一问题。链接 可以分为静态链接和动态链接。静态链接发生在 build 阶段,库被整体拷贝 进入代码形成整体,执行的时候无需提供库文件。
Component+Period:各软件实体随时间如何变化 配置项(SCI)、版本、版本控制
2. 运行(run)阶段 可执行程序:原生机器码、程序完全解释执行、解释型字节码 动态链接:发生在运行阶段,库文件不会再 build 阶段被加入可执行软件 中,仅仅做出标记,在程序运行时,根据标记装载至内存;发布软件时,记 得将程序所依赖的所有动态库都复制给用户。
Code+Moment:逻辑实体如何在内存中呈现 代码快照图(Code Snapshot)、内存信息转储(Memory dump)
Code+Period: 执行追踪(勇敢日志记录程序的调用)、多线程 Component+Moment: 数据库、网络等
Component+Period: 事件日志:记录系统层面