一种面向多模式物联网设备的程序可视化方法与流程

文档序号:18409193发布日期:2019-08-10 00:47阅读:346来源:国知局
一种面向多模式物联网设备的程序可视化方法与流程

本发明涉及一种面向多模式物联网设备的程序可视化方法。



背景技术:

如文献[1]:陈宇航.以用户为中心的无线传感器网络中间件设计与实现[d].浙江工业大学,2017给出了一种面向多模式物联网设备基于配置文件的编程方法。该方法仅要求用户编写简单的配置文件,即可令物联网设备自动控制模式切换和模块执行。如文献[2]w.m.merrill,dynamicnetworkingandsmartsensingenablenext-generationlandmines[j].ieeepervasivecomputing,2004.即支持下一代地雷的动态网络和智能感知,以及文献[3]k.asakawa,m.kashiwada,etal,aprototypeofsensornetworkvisualizationwithgeographicinformation[c].proceedingsofthe10thacm/ieeeinternationalconferenceoninformationprocessinginsensornetworks,2011.即一种使用地理信息的传感器网络可视化原型系统,主要用于显示网络拓扑而不是显示程序逻辑结构,文献[4]m.laguna,r.marti,etal.arccrossingminimizationinhierarchicaldigraphswithtabusearch[j].computers&operationsresearch,1997.即禁忌搜索中分层有向图中的弧交叉最小化,文献[5]j.wolff,v.gudenberg,etal.evolutionarylayoutofumlclassdiagrams[c].proceedingsofthe2006acmsymposiumonsoftwarevisualization,2006.即uml类图的进化布局和文献[6]c.gutwenger,k.klein,etal.caesarautomaticlayoutofumlclassdiagrams[c].proceedingsofthe9thinternationalsymposiumongraphdrawing.2001.即uml类图的caesar自动布局,给出了描述多节点间关联的排布算法,但其中节点的大小是固定的,同时只考虑节点间关联边的交叉。文献[7]m.eiglsperger,m.kaufmann,etal.atopology-shape-metricsapproachfortheautomaticlayoutofumlclassdiagrams[c].proceedingsofthe2003acmsymposiumonsoftwarevisualization.2003.即uml类图自动布局的拓扑-形状-度量方法,文献[8]h.hu,j.fang,etal.rank-directedlayoutofumlclassdiagrams[c].proceedingsofthe1stinternationalworkshoponsoftwaremining.2012.即uml类图的排名指导布局,根据类包含的方法和属性数量不同确定uml类节点的大小,但是并没有考虑到图中节点的大小调整可能带来的节点和边之间的交叉问题。同时,这些方法无法根据每一层节点的大小动态调整每层之间的距离,因此面积较大。



技术实现要素:

为克服现有可视化方法在多模式物联网程序中排布效果不佳的问题,本发明提出一种面向多模式物联网设备的程序可视化方法,该方法根据模式中模块执行依赖关系,动态调整模式矩形大小,并依此优化模式矩形排布,从而减小排布面积和命令边与模式矩形间的交叉,实现良好的可视化效果。

本发明解决其技术问题所采用的技术方案是:

一种面向多模式物联网设备的程序可视化方法,包括以下步骤:

1)将物联网设备的每个功能模块以固定大小的矩形显示,并将属于同一模式的模块矩形包含在一个模式矩形中,然后根据模块执行依赖关系计算模式矩形大小并对模块矩形进行分层排布,所述模块执行依赖关系表示某个模块需要等待同一模式下其他模块执行完成才能开始执行;同时,将模式之间的切换命令以连接模式矩形的有向边显示,将模块执行依赖关系以连接模块矩形的有向边显示;

2)对模式矩形进行分层排布,并根据模式矩形大小对层间距和同一层模式矩形之间的间距进行优化,减小排布面积;然后,以最小化命令边长度和弯折次数为前提,检测交叉并搜索交叉数量最小的模式矩形排布,从而实现良好的可视化效果。

进一步,所述步骤1)中,基于模块执行依赖关系的模式矩形长度和高度的计算过程如下:

首先,根据某模式下模块执行依赖关系,分层计算每一层包括的模块数量:

其中,n表示总层数,m表示模块,m(i)表示在第i(1≤i≤n)层的模块集合,p(m)表示模块m依赖的模块集合,d(m)表示依赖于模块m的模块集合;

然后,计算该模式矩形的长度l和高度h:

其中,max(|m(i)|)表示所有层次中,模块数量最多的层包含的模块数量。d1和d2是每个模块矩形的长度和高度。

进一步,所述步骤2)中,基于模式矩形大小优化的模式矩形分层排布过程如下:

根据模式切换命令的指向关系进行分层,并以第一层所有模式矩形的中心点连线为x轴,以每一层的第一个模式矩形的中心点的连线为y轴建立坐标系;

对于第i层的第j个模式矩形oij,用<cij,x,y>表示其排布位置与大小,其中cij表示模式矩形oij的中心点,其x轴坐标和y轴坐标通过以下公式计算:

其中,lij表示第i层中第j个模式矩形的长度,hk表示第k层所有模式矩形的最大高度,d3,d4是两个常数。

再进一步,所述的步骤2)中,交叉检测方法,除检测命令边之间交叉外,还检测命令边与模式矩形的交叉,在检测命令边与模式矩形的交叉中,仅检测每一层模式矩形与连接该层其他模式矩形和相邻层模式矩形的命令边是否存在交叉,过程如下:

首先,对于模式矩形oij,根据<cij,x,y>,计算其左上角、右上角、左下角、右下角四个顶点tlij,trij,blij,brij的坐标;

然后,对于模式矩形oij,分别连接中心点cij和四个顶点,构成四条模式矩形内连线cij→tlij、cij→trij、cij→blij、cij→brij;

然后,对于第i层模式矩形oij,以及连接第i层另一模式矩形oik和第i-1层某个模式矩形o(i-1)l的命令边cik→c(i-1)l,按照以下规则检查:

则计算:

则计算:

若公式(4)或(5)成立,则oij与cik→c(i-1)l存在交叉;

对于第i层模式矩形oij,以及连接第i层另一模式矩形oik和第i+1层某个模式矩形o(i+1)l的命令边cik→c(i+1)l,按照以下规则检查:

则计算:

则计算:

若公式(6)或(7)成立,则oij与cik→c(i+1)l存在交叉。

本发明的技术构思为:根据模式中模块执行依赖关系,动态调整模式矩形大小,并依此优化模式矩形排布层间间距和层内间距以减小排布面积。同时,根据模式矩形位置和大小,检测命令边与模式矩形之间的交叉,在最小化命令边长度和弯折次数的前提下,最小化交叉数量。

本发明的有益效果在于:提高多模式物联网设备程序的可视化效果,包括减小排布面积、减少命令边与模式矩形间的交叉。

附图说明

图1为本发明的多模式物联网设备的程序可视化方法流程图。

图2为本发明中模式矩形排布坐标系图。

图3为本发明中模式矩形和命令边交叉的判定方法示意图。

具体实施方式

下面结合附图和实例对本发明作进一步说明。

参照图1~图3,一种面向多模式物联网设备的程序可视化方法,包括以下步骤:

1)将物联网设备的每个功能模块以固定大小的矩形显示,并将属于同一模式的模块矩形包含在一个模式矩形中,然后根据模块执行依赖关系计算模式矩形大小并对模块矩形进行分层排布,所述模块执行依赖关系表示某个模块需要等待同一模式下其他模块执行完成才能开始执行;同时,将模式之间的切换命令以连接模式矩形的有向边显示,将模块执行依赖关系以连接模块矩形的有向边显示;

2)对模式矩形进行分层排布,并根据模式矩形大小对层间距和同一层模式矩形之间的间距进行优化,减小排布面积;然后,以最小化命令边长度和弯折次数为前提,检测交叉并搜索交叉数量最小的模式矩形排布,从而实现良好的可视化效果。

进一步,所述步骤1)中,基于模块执行依赖关系的模式矩形长度和高度的计算过程如下:

首先,根据某模式下模块执行依赖关系,分层计算每一层包括的模块数量:

其中,n表示总层数,m表示模块,m(i)表示在第i(1≤i≤n)层的模块集合,p(m)表示模块m依赖的模块集合,d(m)表示依赖于模块m的模块集合;

然后,计算该模式矩形的长度l和高度h:

其中,max(|m(i)|)表示所有层次中,模块数量最多的层包含的模块数量。d1和d2是每个模块矩形的长度和高度。

进一步,参照图2,所述步骤2)中,基于模式矩形大小优化的模式矩形分层排布过程如下:

根据模式切换命令的指向关系进行分层,并以第一层所有模式矩形的中心点连线为x轴,以每一层的第一个模式矩形的中心点的连线为y轴建立坐标系;

对于第i层的第j个模式矩形oij,用<cij,x,y>表示其排布位置与大小,其中cij表示模式矩形oij的中心点,其x轴坐标和y轴坐标通过以下公式计算:

其中,lij表示第i层中第j个模式矩形的长度,hk表示第k层所有模式矩形的最大高度,d3,d4是两个常数。

再进一步,参照图3,所述步骤2)中,交叉检测方法除检测命令边之间交叉外,还检测命令边与模式矩形的交叉,在检测命令边与模式矩形的交叉中,仅检测每一层模式矩形与连接该层其他模式矩形和相邻层模式矩形的命令边是否存在交叉,过程如下:

首先,对于模式矩形oij,根据<cij,x,y>,计算其左上角、右上角、左下角、右下角四个顶点tlij,trij,blij,brij的坐标;

然后,对于模式矩形oij,分别连接中心点cij和四个顶点,构成四条模式矩形内连线cij→tlij、cij→trij、cij→blij、cij→brij;

然后,对于第i层模式矩形oij,以及连接第i层另一模式矩形oik和第i-1层某个模式矩形o(i-1)l的命令边cik→c(i-1)l,按照以下规则检查:

则计算:

则计算:

若公式(4)或(5)成立,则oij与cik→c(i-1)l存在交叉;

对于第i层模式矩形oij,以及连接第i层另一模式矩形oik和第i+1层某个模式矩形o(i+1)l的命令边cik→c(i+1)l,按照以下规则检查:

则计算:

则计算:

若公式(6)或(7)成立,则oij与cik→c(i+1)l存在交叉。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1