软件构造-视图

文章探讨了软件构造的过程,通过build-time、runtime的多个视图进行分析。在构造阶段,关注点包括代码的逻辑和物理组织、源代码的词汇、语法和语义层面。运行时视图则涉及代码在内存中的呈现、构件在硬件环境中的布局以及动态链接库的使用。文章还提到了原生机器码、解释型字节码和库的静态、动态链接等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,要了解软件构造的对象是什么?如何刻画?如何构造?
将要从三个维度来看软件系统的构成,这是对软件系统的刻画,而软件构造可以看作是不同视图之间的转换
还有知道构造的结果和过程如何算好,这是质量目标

多个软件视图:

  • 按阶段划分:构造时/运行时视图
  • 按动态性划分:时刻/阶段视图
  • 按构造对象的层次划分:代码/构件视图

三维视图

请添加图片描述

build-time阶段(构造阶段)

在build-time阶段:

code-level是代码的逻辑组织,是代码的关系
component-level是代码的物理组织,是文件、库等关系

Moment view:特定时刻的软件形态
Period view: 软件形态随时间的变化

Build-time, moment, and code-level view

在这个阶段,是构造阶段,某个时刻的编码视角,包括了三个层面:词汇层面、语法层面、语义层面

词汇层面是基于词汇的半结构化源代码,这是以近乎自然语言的风格+遵循特定的编程语法

语法层面是用树来表示源代码AST(Abstract Syntax Tree)

语义层面是用图形化或形式化的方式表达需求和设计思想

请添加图片描述

Build-time, period, and code-level view

代码变化
记录添加、修改或删除的行。

Build-time, moment, and component-level view

源代码被物理地组织成文件,文件又被目录组织;

文件封装为包,逻辑上封装为组件和子系统。

可重用模块以库的形式存在。

关于库的部分:编程时和build时,需告诉IDE和JVM在哪里寻找某些库

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

静态链接中:库被拷贝进入代码形成整体,执行的时候无需提供库文件,静态链接发生在构造阶段

Build-time, period, and component-level view

表示整个系统的版本变化

Runtime Views

指的是运行时

代码层面:逻辑实体在内存中如何呈现?

构件层面:物理实体在物理硬件环境中如何呈现?

Moment view:e 逻辑/物理实体 在内存/硬件环境中特定时刻的形态如何?

Period view: 逻辑/物理实体在内存/ 硬件环境中的形态随时间如何变化?

可执行程序的几种实现形式

  • Native Machine Codee (原生机器码):直接转换为机器的操作码,直接对CPU进行访问和操作,最快
  • Full Program Interpretation (程序完全解释执行):运行时系统将整个源代码加载到内存中并对其进行解释,需要一个解释器
  • Interpreted Byte Codes (解释型字节码):代码变成这种字节码,但是这种字节码CPU识别不出来,需要一个解释器或者是编译器来加载
  • Perl/Python是解释器,Java的JVM也是解释器

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

Run-time, moment, and code-level view

代码快照图:描述程序运行时内存里变量层面的状态

Run-time, period and code-level view

程序执行的调用次序

Run-time, moment, and component-level view

UML中部署图

Run-time, period, and component-level view

事件日志:系统层面

将被记录的事件的不同类别,以及将在事件消息中出现的详细信息,都将在开发周期中考虑。

-每一类事件被分配一个唯一的“代码”格式化和输出一个人类可读的消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值