HIT Software Construction Review Notes(1-1 Multi-Dimensional Views of Software Construction)

第1章:软件构造的观点和质量目标

1.1软件构造的多维视图

 

1.多维度的软件视图:

 

1.分阶段——构建时和运行时的视图

2.分动态——时刻和周期的视图

3.分级别——代码和组件的视图

 

软件构造:视图之间的转换

1.∅ → 代码

2.代码 → 组件

3.构建时 → 运行时

4.时刻 → 周期

 

本节目标:

1.以三个正交维度理解软件系统的组成部分

2.了解用于描述软件系统的形态和状态的模型

3.把软件构造看成是不同视图之间的转换

 

Software= Program + Data + Documents

Software= Modules(Components) + Data/Control Flows

 

更进一步:软件系统

——程序(UI,算法,实用程序,API,测试用例等)

——数据(文件,数据库等)

——文档(SRS需求规格说明,SDD设计规格说明,用户手册等)

Users+ Business Objectives + Social Environment + Technological Environment + Hardware/ Network


(1)Build-time Views(构建时视图)

 

构建时:想法 → 需求 → 设计 → 代码 → 可安装/可执行程序包

 

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

  • 组件层面视图:结构——源代码是如何由文件、目录、包、库以及它们之间的依赖关系进行物理组织的

——————————————————————————————————

  • 时刻层面视图:源代码和组件在特定时间是什么样的

  • 周期层面视图:它们如何随着时间推移而发生变化

 

(2)Runtime Views(运行时视图)

 

运行时:程序在目标机器内运行时的外观如何,以及目标机器需要加载到内存中的所有磁盘文件是什么

 

  • 代码层面视图:源代码——可执行程序的内存状态是什么样的,程序单元(对象,函数等)如何相互交互

  • 组件层面视图:体系结构——软件包如何部署到物理环境(操作系统,网络,硬件等)以及它们如何进行交互?

——————————————————————————————————

  • 时刻层面视图:程序如何在特定时间内运行

  • 周期层面视图:它们如何随着时间推移而发生变化

 

(软件)运行时的高级概念:

  • 可执行程序:CPU执行的机器可读指令序列,以及相关的数据值。

这是完全编译的程序,可以加载到计算机的内存中并执行

  • :可以被不同程序重用的常用目标代码的集合

大多数操作系统都包含一组标准的库来供开发人员重复使用,而不是每个程序都提供自己的库。

库不能直接在目标机器上加载和执行,它必须首先与一个可执行程序链接。

  • 配置和数据文件:这些不是可执行文件,它们提供程序可以从磁盘中加载的有用的数据和配置信息

  • 分布式程序:这种类型的软件由多个可执行程序组成,这些程序可以通过网络相互通信,或者简单的称为在同一台计算机上运行的多个进程

这与具有单个单片程序映像的更传统的软件形成了鲜明对比

 

可执行程序的三种执行方式:

本机机器码、完全解释、解释的字节代码


静态链接与动态链接

1.静态链接

  • 在静态链接中,库是个别对象文件的集合

  • 在构建过程中,当链接器工具需要确定某个函数时,它会从库中提取适当的对象文件并将其复制到可执行程序中

该库的目标文件看起来与开发者自己创建的任何目标文件完全相同

  • 静态链接在构建时发生,在构建过程中会发生将库与开发人员自己的软件链接的行为

最终将一个可执行程序加载到目标机器上

在创建最终的可执行程序之后,将程序与其库分离是不可能的


2.动态链接

  • 动态链接方法不会将目标文件复制到可执行映像中;相反,它记录了成功执行程序所需的库

  • 当程序开始运行时,库作为独立的实体加载到内存中,然后与主程序链接

  • 动态库是通过链接目标文件构建的磁盘文件,然后将该库收集到发行包里并安装到目标机器上,只有这样才能将其加载到机器的内存中

优点:(1)可以升级到较新版本的库(添加功能或修复错误),而无需重新创建可执行程序。(2)许多操作系统都可以通过仅将单个库副本加载到内存中来优化它们的内存使用,然后与其它需要相同库的程序共享。


内存转储:硬盘上的一个文件,其中包含进程内存的副本,当进程因特定类型的内部错误或信号而中止时产生内存。

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

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

3. 它是为了分析程序的状态而编写的,程序员查看内存缓冲区以查看哪些数据项在失败时正在处理

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_36163296/article/details/80517644
今日推荐