软件构造的多维度视图(复习)

1.Build-time

·软件构建的核心过程和环节

idea—requirement—design—code—installable/executable package

·Code-level view:

源代码——源代码是如何按照基本程序块(如函数、类、方法、接口等)以及它们之间的依赖关系进行逻辑组织的。

·Component-level view:

架构:源代码是如何通过文件、目录、包、库以及它们之间的依赖关系进行物理组织的。

·Moment:源代码和组件在特定时间内是什么样子的

·Period:它们是如何随时间发展/变化的

(1.Build-time、Moment和Code-level视图

·在逻辑上代码是如何通过基本程序块组织的

三种相互关联的形式:面向词法、面向语法、面向语义

·AST(抽象语法树):面向语法的程序结构—结构化树

Class Diagram (UML):可以描述接口、类、属性、方法以及它们之间的关系

(2.Build-time、Period和Code-level视图

代码改动是指从一个版本添加、修改或删除到另一个版本的文件中的行。

(3.Build-time、Moment和Component-level视图

·静态链接

源代码在物理上被组织成文件,这些文件进一步按目录进行组织

文件被封装成包、组件和子系统

可复用模块形成类库

·库:磁盘文件中,可重用

库来源:OS预装、语言自带 、第三方、自行开发

·与库链接:用到的类库列表 — 复制类库到可执行程序中

将库集成到可执行程序中的两种不同方法:–静态链接–动态链接

·静态链接

静态链接在Build-time发生

将类库文件复制到可执行文件中,称为可执行文件的一部分,不能分离。

·UML中的组件图

在UML中,组件图描述了组件如何连接在一起以形成更大的组件或软件系统。

(4.Build-time、Period和Component-level视图

软件配置项(SCI)

版本控制系统(VCS)

版本控制是给计算机软件的不同状态分配唯一的名字或者编号的过程

软件演化是指软件产生之后,由于不同的原因对其进行持续地升级过程。

2.Run-time

·可执行程序:可以加载到计算机内存中并执行

库:可以被不同程序重用的常用对象代码集合,库不能直接在目标机器上加载和执行;必须首先与可执行程序链接。

·本机代码,完全转换为CPU能识别的机器码

源代码被加载入内存进行解释执行,程序被编译成字节码形式(如 java的class文件) ,运行时需要由解析器转换成机器码或者解释执行

·动态链接

不将目标文件复制到可执行程序 中,而是会标注用到的类库

在运行时,加载用到的库到内存中,然后同主程序链接

部署时需要将用到的类库同程序一起部署

类库变化时,不需要重新生成可自行程序

多个运行中程序可共享同一类库,优化内存使用

·配置文件

·分布式程序

(5.Run-time、Moment和Code-level视图

·Snapshot diagram:计算机内存中的可变执行状态

刻画内存中某时刻变量的状态

·内存转储(垃圾):硬盘上的一种文件,包含进程内存内容的副本,当进程因某种内部错误或信号而中止时产生。

调试程序可以加载转储文件并显示它包含的有关运行程序状态的信息。

信息包括寄存器、调用堆栈和所有其他程序数据(计数器、变量、开关、标志等)的内容。

(6.Run-time、Period和Code-level视图

·UML中的序列图:程序单元(对象)之间的交互

·跟踪涉及到日志记录有关程序执行的信息的专门用途。

用于调试目的

根据跟踪日志中包含的信息类型和详细信息,诊断常见问题。

(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、付费专栏及课程。

余额充值