软件构造的多维度视图
前言
本篇博客是对哈工大CS32123《软件构造》课程第一讲多维度视图部分的理解与总结
软件构造的三个维度
- 按阶段划分:构造时/运行时视图(build- and run-time views)
- 按动态性划分:时刻/阶段视图(moment and period views)
- 按构造对象的层次划分:代码/构件视图( code and component views)
八个视图
依据以上三个维度,可将软件构造过程划分为8个视图:
以下将逐一对这8个视图进行分析:
构建时,时刻,代码视图
这一视图是主要是源代码相关内容,包括源代码的逻辑组织(比如函数,类,接口等)以及源代码不同部分之间的依赖关系。
构建时,阶段,代码视图
“阶段”相比“时刻”强调代码发生的变化(Code churn)。
比如git等版本管理工具可以很方便的看到代码发生的变化:
构建时,时刻,构件视图
这一视图是关于源代码被物理组织成文件按目录组织。
构建时,阶段,构件视图
这一视图表现软件实体随时间的变化。
这里引入软件版本的概念,百度百科对于软件版本是这样定义的:
“软件版本:包含两种不同含义(1)为满足不同用户的不同使用要求,如适用于不同运行环境或不同平台的系列产品。(2)软件产品投入使用以后,经过一段时间运行提出了变更的要求,需要做较大的修正或纠错,增强功能或提高性能。”
将“版本”作为不同时期的软件实体的标识,这一视图即是描述不同版本软件的变化。
运行时,时刻,代码视图
这一视图描述某一时刻程序运行时内存里变量层面的状态(将其称为代码快照)。
运行时,阶段,代码视图
这一视图描述了程序运行是代码各部分的调用顺序。
可以使用UML建模语言中的“时序图”来表示:
运行时,时刻,构件视图
这一视图描述了软件产品中硬件和软件的物理架构关系。
可以使用UML建模语言中的“部署图”来表示:
运行时,阶段,构件视图
这一视图描述程序运行过程和经历。
可以使用“事件日志”来体现。
事件日志为系统管理员提供信息 用于诊断和审计。下图为事件日志示例:
不同视图之间的转换
在软件构造的不同阶段会进行不同视图的转换,下图描述了这一行为: