软件构造的多维度构图


1.    三个维度,八个视图的总视角:

    (1)    By phases:Build-time/Run-time Views

    (2)    By dynamics:Moment/Period Views

    (3)    By levels:Code-level/Component-level Views

    其间的组合,形成了2^3=8个视图,其具体内容如下:

    




2.    详细解释三个维度下的八个视图

先看Build-time Views下的四个视图

(1)Build-time Views

    Build-time,即构造阶段,有以下流程

    idea->requirement->design->code->installable/executable package.

    其中,与下列视角结合:

    (a)Code-level view 与 Component-level view。

    (b)Moment view 与 Period view。前者看特定时刻的软件状态,后者看软件状态随时

      间的变化。

      所衍生的四个视图:

      (1)Build-time,moment,code-level view:

          即从源代码的角度,从其基本的程序模块(包括函数,类,方法,等等)以及他们之

          间的联系,看源代码的逻辑组织

          具有三个内在联系的形式:词汇层面,语法层面,语义层面。

          词汇层面: 使用半结构化的代码:近乎自然语言的风格+遵循特定的编程语法。

          语法层面:常用抽象语法树(AST),来表示一个半结构化的源代码。

          语义层面:考虑源代码要实现的目标,将源代码与现实世界联系起来,使用图形化

          或形式化的方法,来表达”需求“与”设计“思想,再将其转化为code。

          主要为面向对象的分析与面向需求的设计。

            

      (2)Build-time,period,code-level view:

           随着时间用来描述变化的试图。

           主要来关注代码变化(Code churn):随着文件版本的变化,关注代码每行的增添,

           修改与删除。github上可以对其进行查看。

            

        (3)Build-time,moment,component-level view:

            即从源代码的物理结构(文件,包,库等),看源代码的物理组织

            A.   源代码在物理结构上以文件的形式组织,更上层是以目录形式组织的。

            B.    文件在逻辑上是被封装成Package,components和子系统的。

            C.    可复用的模块是以库(library)的形式存储的。

            在build time中需要执行静态链接,将库拷贝入代码形成整体,在执行时无需提供

            库文件。

        (4)Build-time,period,component-level view:

            关注各个软件实体(files/packages/components/libraries)随时间的变化。

            从软件配置项(SCI)和版本(Version)上进行观察。

            其中有版本控制系统    VCS:

            

            以及从SCI上得到的程序更新图:


            软件更新是一个对软件进行不断地升级和维护的过程。


  再看Run-time下的四个视图

(2)Run-time Views

    Run-time,即运行阶段,有以下流程

    其中,与下列视角结合:

    (a)Code-level view 与 Component-level view。前者看可执行程序的内存状态,以及

      程序在类,方法方面是怎样连接与交互的。后者看软件架构是怎样与操作系统,网络,硬

      件等相联系的。

    (b)Moment view 与 Period view。前者看特定时刻的软件状态,后者看软件状态随时

      间的变化。

       其中一些高层次的概念:

        可执行程序,动态链接库,配置和数据文件,分布式程序。

      所衍生的四个视图:

      (5)Run-time,moment,code-level view:

        通过快照图,关注程序运行时,目标计算机内存中变量层面的状态。

        例如:

                 

        另外可以观察内存信息转储(memory dump),将当前内存信息的详细情况转储到硬

        盘上的文件中,再对硬盘中的文件进行分析。    

         

      (6)Run-time,period,code-level view:

        关注程序单元-类是如何交互的。

        例如,可关注UML顺序图:


            或者观察执行跟踪,用日志的方式记录程序执行的调用次序。

            下面是用于debug过程中典型的例子:


            

        (7)Run-time,moment,component-level view:

        可观察UML部署图:计算机与服务器,服务器与服务器之间的拓扑图。

        

        (8)Run-time,period,component-level view:

            观察系统层面的事件日志。

            系统层面的日志与代码层面的执行轨迹追踪之间的差别:

            


3.    视图之间的转化:

        总体上如下图所示:

        


        


猜你喜欢

转载自blog.csdn.net/qq_38969070/article/details/80427518