软件构造多维视图

软件系统有三个相互正交的三个维度

按阶段划分:build-time(构造阶段)和run-time(运行阶段)
按动态划分:moment(时刻)和period(时期)
按层次划分:code(代码层面)和component(组件,文件层面)

1. build-time

(1) build-time; moment; code-level
三种相互关联的形式

面向词法:半结构化源代码
面向词法:(AST抽象语法树)半结构化的源代码变成语法树(编译器能够处理)
面向词法:UML视图(通常是图形化或形式化的)
(2) build-time; period; code-level
Code churn(代码变化)

(3) build-time; moment; component-level
源代码如何组织成文件——通过类库
文件被压缩进package,逻辑上进入components(组件)and sub-systems(子系统)
链接技术(动态 / 静态)
Library

操作系统提供的库
编程语言提供的库
第三方公司提供的库
自己编写的库
链接:编程时和build时,需告诉IDE和JVM在哪里寻找某些库。

静态链接

库被拷贝进入代码形成整体,执行的时候无需提供库文件。
静态链接发生在构造阶段。
(4) build-time; period; component-level
配置项的更改
各项软件实体随时间如何变化
软件随时间变化的版本
版本控制(通过Git,SVN等等)

2. run-time

动态链接

  • 库文件不会在build阶段被加入可执行软件,仅仅做出标记。
  • 程序运行时,根据标记装载库至内存。
  • 发布软件时,记得将程序所依赖的所有动态库都复制给用户。

分布式程序

  • 需要多个运行程序,分别部署于多个计算机物理环境。
  • 需要多端口或者多线程。

(5) run-time; moment; code-level
Code SnapShot(代码快照)
描述程序运行时内存里变量层面的状态。


Memory dump(内存信息转储)
常发生在异常退出时,把内存中信息写到文件中(常用来调试)。


(6) run-time, period and code-level view
Execution tracing(执行跟踪)
用日志方式记录程序执行的调用次序。


(7) run-time; moment; component-level
UML部署图

执行跟踪:根据跟踪日志里的信息进行调试或诊断软件问题。
(8) run-time; period; component-level
事件日志(系统层面)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值