软件构造复习 | 软件构造的视图和质量分析

文章介绍了软件系统的构建可以从构造时/运行时、动态性和构造对象层次三个方面来理解。在构建时,关注点包括代码的逻辑和物理结构、版本控制,而运行时则涉及内存中的代码实现、动态链接和分布式运行。文章详细阐述了每个维度的不同视角,如代码层面的AST、组件层面的库管理和运行状态的监控等。
摘要由CSDN通过智能技术生成

软件系统构成的三个维度

       按阶段划分:构造时/运行时视图;

  按动态性划分:时刻/阶段视图;

  按构造对象的层次划分:代码/构件视图。

软件构造多维视图

  Moment维度关注程序在某一时刻的表现,而Period关注的是程序在一段时间内的表现;Build-time维度关注程序还未被投入运行,编码阶段的表现,而Run-time维度更关注于程序运行时的表现。

  (1)Build-time:构造代码的过程,代码分为逻辑结构和物理结构。

    Moment,code-level view:基于词汇的半结构化源代码,AST(彻底结构化,将源代码变成一棵树,对树的修改等价于对源代码的修改)

    Period,code-level view:代码变化,被定义为在版本迭代中代码内容的的增删改查。

    Moment,component-level view:源文件的组织方式:package(包),library(库),包括别人提供的库和你自己积累的库。

    寻找库的命令:javac -classpath ./lib/*.jar

    静态链接:发生在构造阶段,库被拷贝成代码,执行时无需提供库文件。

    Period,component-level:Version Control System (VCI),版本更新。

  (2)Run-time:运行时,程序被载入内存,开始运行。

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

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

    动态链接:库文件不会在build阶段被加入可执行软件,仅仅做出标记;程序运行时,根据标记装载库到内存;发布软件时,记得将程序所依赖的所有库都复制给用户。

         分布式运行程序态:需要多个运行程序,分别部署于计算机的多个物理环境。

    Moment,code-level view:代码快照图:描述程序运行时内存变量层面的状态(debugger)。

    Period,code-level view:执行跟踪:用日志记录程序执行的调用次序。

    Moment,component-level view:硬件部署图。

    Period,component-level:系统层面的事件日志。

软件构造:不同视图的转换

  ①从无到写出代码,就进入了Build-time维度,开始只是单个的没有任何联系的代码文件,所以是在moment+Code-level维度;

  ②此时随着时间的推移,代码删删改改,就属于Period+Code-level了,而代码越写越多成为了一个包,甚至形成了一个库,于是就属于moment+Component-level维度了;

  ③但是随着时间的推移,库文件由于需求的变化发生了变化,所以就属于Period+Component-level;

  ④代码写好了,投入运行,进入Run-time维度,观察的如果是某一句代码的执行后结果,那就是moment+Code-level维度,但如果看的是代码执行的轨迹,那就是Period+Code-level维度,而如果看的是一个库文件的连接情况等,那就是moment+Component-level维度了;如果看的是线程或进程的执行过程,也就是通过日志等手段查看一段时间内系统都做了什么事情,那么就是Period+Component-level了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值