博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件构造的八个多维视图
阅读量:5154 次
发布时间:2019-06-13

本文共 1664 字,大约阅读时间需要 5 分钟。

1.Build-time, moment, and code-level view

在这个多维视图中,有三个相互关联的形式:

  • 词汇层面
  • 语法层面
  • 语义层面

词汇层面指的是基于词汇的半结构化源代码(Lexical-based semi-structured source code),半结构化是指近乎自然语言的风格+遵循特定的编程语法,前者方便程序员,后者方便编译器。

语法层面指的是面向语法的程序结构(Syntax-oriented program structure),具体例子有抽象语法树(AST)。

语义层面指的是面向语义的程序结构(Semantics-oriented program structure),语义是指源代码具体想实现什么目标。具体例子有使用类图Class Diagram(UML)来描述 interfaces, classes, attributes, methods以及它们之间的关系。下图既是一张Class Diagram。

2.Build-time, period, and code-level view

这个多维视图描述了代码随时间的变化(Code churn),包括代码行的增加,删除和修改。

3.Build-time, moment, and component-level view

这个多维视图着眼于源代码被物理地组织成文件(file),这些文件进一步由目录组织。文件被封装成包(package),并在逻辑上封装组件和子系统。可重用模块以库(library)的形式存在

4.Build-time,moment,and component-level view

    这个多维视图实体(例如files/packages/components/libraries)随时间如何变化,Software Configuration Item (SCI,软件配置项) 以及版本(Version)的演变。

 

  • Software Configuration Item (SCI,软件配置项) 
  • 版本(Version)
  • 对于每个软件,都会有一个初始版本,并在此版本的基础上逐步发展,在发展的过程中,不断发布新的版本,直到Final Version。在此过程中,我们通常使用Version Control System (VCS)即版本控制系统来对软件的版本进行管理,现在流行的VCS主要是git

5.Run-time,moment,and code-level view

    这个多维视图着眼于程序运行时在某个特定时刻的代码层面的状态,主要工具有快照图(Snapshot diagram)和内存信息转储(Memory dump )。

  • 快照图:描述了程序运行时内存里变量层面的状态
  • 内存信息转储:是指硬盘上的一个文件,它是当进程因特定类型的内部错误或信号而中止时产生的,其中包含进程内存的副本

6. Run-time, period and code-level view

这个多维视图着眼于程序运行阶段在某一段时间内在代码层面的视图,以下面UML中的Sequence diagram为例,图中体现了程序各个单元间的交互。

7.Run-time,moment,and component-level view

    这一多维视图着眼于程序运行阶段在某一特定时刻在组件层面的视图,以下面UML中的部署图为例,图中展示了各个组件的相互联系。

8.Run-time, period, and component-level view

这一多维视图着眼于程序在运行阶段在某一阶段的组件层面视图,这一视图主要涉及到事件日志(Event logging),事件日志为系统管理员提供了对诊断和审计有用的信息。每一类事件都被赋予一个唯一的“代码”来格式化并输出一条人类可读的消息。这有利于本地化,并允许系统管理员更轻松地获得有关发生问题的信息。

转载于:https://www.cnblogs.com/hitszr/p/9159528.html

你可能感兴趣的文章
C++指针的指针的作为形参vector容器操作
查看>>
hadoop06---多线程
查看>>
IBM、HPUX、Solaris不同之处
查看>>
Img2Lcd
查看>>
H3C的DHCP中继配置命令
查看>>
shell脚本之批量添加用户
查看>>
正式版SVN服务器安装记录
查看>>
bzoj3510 首都
查看>>
Hibernate整合C3P0实现连接池
查看>>
等差数列
查看>>
slf4j的简单用法以及与log4j的区别(转载)
查看>>
百度地图API二次开发小经验分享
查看>>
52. N-Queens II
查看>>
CS231n assignment2 Q3 Dropout
查看>>
unity中按钮点击的委托事件写法
查看>>
Vue.js前后端同构方案之准备篇——代码优化
查看>>
SPOJ DIVISION - Divisiblity by 3
查看>>
关于用C#实现宽带的连接
查看>>
codevs 3369 膜拜
查看>>
Python网络编程笔记一
查看>>