软件构造基础
一、软件构造的多维视图和质量目标
课程目标
- 从三个维度理解软件系统的构成(对象是什么)
- 了解使用什么模型描述软件系统的形态和状态(如何刻画)
- 将软件构造看作不同视图之间的转换(如何构造)
- 了解软件构造过程中应考虑的质量因素
- 了解如果达不到质量目标的结果
- 了解本课程将研究哪些面向质量指标的软件构造技术
清楚要构造的结果是什么,如何才算好
1、多维软件视图
-按阶段:构造阶段(build-time)/运行阶段(run-time)视图
-按动态性:时刻(moment)/时期(period)视图
-按对象的层次:代码(code-level)/构件(component-level)视图
Build-time (构造阶段)
idea ➡ requirement ➡ design ➡ code ➡ installable / executable package
Code-level view:代码的逻辑组织(函数、类、方法、接口)
Component-level view:代码的物理组织(文件、目录、包、程序库)
Moment view:特定时刻的软件形态
Period view:软件形态随时间的变化
- Build-time, moment, and code-level view
源代码在逻辑上是如何组织的,包括三个层面:
词汇层面:面向词法的源代码
语法层面:面向语法的程序结构,例如抽象语法树(AST)
语义层面:面向语义的程序结构,如类图 - Build-time, period, and code-level view
描述代码随时间的变化 - Build-time, moment, and component-level view
源代码如何组织成文件,文件被封装到包(packages)中,逻辑上进入组件(components)和子系统(sub-systems),可重用模块以库(library)的形式出现。
将库集成到可执行程序中的两种不同方法:Static linking (静态链接),Dynamic linking (动态链接)。
静态链接发生在构造阶段,库被拷贝进入代码形成整体,执行的时候无需提供库文件。 - Build-time, period, and component-level view