软件构造的多维度视图和质量目标

Views and Quality Objectives of Software Construction
对于一个软件系统的构成可以从如下维度来分析:

  1. 按阶段划分:构造时->运行时视图
  2. 按动态性划分:时刻(时间点)->阶段(时间段)视图
  3. 按构造对象的层次划分:代码->构件视图

多维软件视图

Multi-dimensional software views
image-20210706161721571

构造阶段视图(Build-time)

构造阶段: idea => requirement => design => code => installable / executable package

  • Code - level view: 代码的逻辑组织
    1. 词汇层面: Lexical - oriented source code(面向词法的源代码)
    2. 语法层面: Syntax-oriented program structure: e.g. Abstract Syntax Tree
      (抽象语法树AST),彻底结构化,将源代码变为一棵树,对树做各种操作等价于对源代码的修改
    3. 语义层面: Semantics-oriented program structure: e.g. Class Diagram面向语义的程序结构:例如类视图,用于表达“需求”和“设计”思想,再转化为code
  • Component - level view: 代码的物理组织
    1. 源代码被组织成文件,文件再组织成目录
    2. 文件被封装成一个个包packages,逻辑上就被封装成一个个组件和不同的子系统
    3. 可以重用的模块被封装成库libraries,eg. Maven库
  • Moment view: 特定时刻的软件形态
  • Period view: 软件形态随时间的变化

一些概念的简单介绍:

Code churn 代码变化:defined as lines added, modified or deleted to a file from one version to another

image-20210706173028905

Maven:专门为Java项目打造的管理和构建工具

链接库:编程时和构造时,需要告诉IDE和JVM寻找某些库的位置

javac -classpath ./lib/*.jar

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

SCI:Software Configuration Item 配置项

VCS:Version Control System 版本控制系统,用于解决多项软件实体随时间变化版本匹配

image-20210706174746825

Evolution Graph:软件演化视图

image-20210706175434844

版本的命名规范:

image-20210706175545774

运行阶段视图(Runtime Views)

运行时:程序被载入到目标机器,开始执行

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

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

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

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


随心所至