软件构造的多维视图
三个维度
(1)编程时&运行时
(2)时间&时刻
(3)微观和宏观
从这三个维度来看待软件构造,那么在这写维度的组合下,我们更关注一些什么呢或许能解答你的疑惑!
语法层面
对于语法的层面,更加注重的是软件执行的过程,或者说是软件执行的算法流程。
语义层面
语义的含义是指源代码具体现实什么目标,例如:用UML来描述接口、类、属性、方法及它们之间的关系。而这些通常用图形化或者形式化的方法来表达“需求”和“设计”思想。如下图:
(3) Build-time, moment, and component-level view
在这三个视图下,我们所关注的是代码的组织情况,简单来说就是在开发程序的时候会有很多的类、很多的文件,当然我们可以任意的放在工程里,但这样就会出现一个问题,如果想要对程序进行更改,那什么应该更改,什么不该更改这个问题就会需要耗费大量的时间去思考以及记录。一种好的组织方式就是利用模块化的方式来组织文件。比如功能类似的、完成某个功能的文件放在一个包里,这样上面的问题就迎刃而解了。
(4) Build-time, period, and component-level view
在这些维度下,其实我们所关注的也是代码的改变情况,简单来说,也就是希望我们能够知道在这个阶段中,我们对这个代码做了什么改变。没错!还是版本控制工具!software configuration item !比如说window在不同的阶段会有不同的版本,我们就希望能把它记录下来。
运行时的视图下
运行时,程序被载入目标机器,开始执行
在code-level view 的维度,我们关心的是逻辑实体,例如:对象、函数等,在内存中如何呈现很简单,我们使用的java是一种面向对象的编程语言,在程序进行运行的时候,我们所关注的就是程序在某一个时间点到底有多少个对象,以及对象里面的值是什么样的。
而在模块化的角度,我们更关注的是多个模块在运行时的配置是什么样的,即在软件层面,物理实体(OS 、network 、 hardware 等等)在物理硬件环境中如何呈现很多的程序都是采用分布式的情况来进行配置的,什么的是分布式呢,简单来说,就是一个程序并不是就安装在一个机器上,而可能是被分割成了几部分,安装在了不同的机器上来进行运行的。
在时刻视角下,我们可能更关注的是程序在内存中的情况,程序占用内存的空间有多大,程序在某个时间点生成了多少个对象。
在时间或者周期的角度,我们关注的是这个程序在执行时到底需要多大的内存等问题。
(5) Run-time, moment, and code-level view
在当前视图下,我们关注的就是程序在某一个时间点到底有多少个对象,以及对象里面的值是什么样的。这时候我们引入一个snapshot diagram(代码快照图)来描述当前我们所关注的信息。
(6) Run-time, period and code-level view
这个角度我们所看重的是代码的执行情况,这也可以通过一个UML图来表示,这时的UML图我们称之为运行视图,或者也可以称之为时序图,这个时序图就描述了在和层序运行的时候,多个类、多个方法之间是怎么进行调用的。
(7) Run-time, moment, and component-level view
在这个维度下,我们从模块的角度来看待代码的组织情况,即程序在不同的机器或者单元上的配置情况,如下图:
总结
引用
以上博文中的资料均引用自2021年春季学期软件构造课程(任课教师:王忠杰 感谢老师的倾囊相授!)中的内容,加上个人对其的稍许理解。
欢迎各位相约探讨!
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93647 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!