软件构造的多维度视图和质量目标
Views and Quality Objectives of Software Construction
对于一个软件系统的构成可以从如下维度来分析:
- 按阶段划分:构造时->运行时视图
- 按动态性划分:时刻(时间点)->阶段(时间段)视图
- 按构造对象的层次划分:代码->构件视图
多维软件视图
Multi-dimensional software views
构造阶段视图(Build-time)
构造阶段: idea => requirement => design => code => installable / executable package
- Code - level view: 代码的逻辑组织
- 词汇层面: Lexical - oriented source code(面向词法的源代码)
- 语法层面: Syntax-oriented program structure: e.g. Abstract Syntax Tree
(抽象语法树AST),彻底结构化,将源代码变为一棵树,对树做各种操作等价于对源代码的修改 - 语义层面: Semantics-oriented program structure: e.g. Class Diagram面向语义的程序结构:例如类视图,用于表达“需求”和“设计”思想,再转化为code
- Component - level view: 代码的物理组织
- 源代码被组织成文件,文件再组织成目录
- 文件被封装成一个个包packages,逻辑上就被封装成一个个组件和不同的子系统
- 可以重用的模块被封装成库libraries,eg. Maven库
- Moment view: 特定时刻的软件形态
- Period view: 软件形态随时间的变化
一些概念的简单介绍:
Code churn 代码变化:defined as lines added, modified or deleted to a file from one version to another
Maven:专门为Java项目打造的管理和构建工具
链接库:编程时和构造时,需要告诉IDE和JVM寻找某些库的位置
javac -classpath ./lib/*.jar
静态链接:发生在构造阶段,库被复制到代码段中形成整体,执行时候无需提供库文件
SCI:Software Configuration Item 配置项
VCS:Version Control System 版本控制系统,用于解决多项软件实体随时间变化版本匹配
Evolution Graph:软件演化视图
版本的命名规范:
运行阶段视图(Runtime Views)
运行时:程序被载入到目标机器,开始执行
代码层面:逻辑实体在内存中如何呈现?
构件层面:物理实体在物理硬件环境中如何呈现?
特定时刻:逻辑/物理实体在内存/硬件环境中特定时刻的形态?
某一时间:逻辑/物理实体在内存/硬件环境中的形态随时间变化?
Comments NOTHING