基于路由交换范式的构件功能一致性验证方法及装置的制造方法_2

文档序号:8265586阅读:来源:国知局
晰、层次分明的代码结构,若程序代码中的结构不符合基本结构(即顺序结结构、选择结构和循环结构)要求,则按照基本结构对该程序代码进行调整优化,否则对其不进行改变。然后,可删除程序代码中的注释、预包含、预定义等无关的内容。
[0030]需要说明的是,在本步骤中,在按照执行顺序对预处理后的待验证构件源程序代码进行分块时,可遵循以下分块原则:顺序结构相对集中,其他结构(如选择结构、循环结构)独立,且只对构件源程序代码最外层分块,内层结构视作一个整体,如有必要,则可将该内层结构单独视为独立构件进行一致性验证。
[0031]S103,将分块流程图按照待验证构件源程序代码中的控制流程及约束条件生成至少一个单支树。
[0032]具体而言,在本发明的实施例中,可先按照待验证构件源程序代码中的控制流程及约束条件将分块流程图转化为单向无环图,之后,以入口结点为根节点、出口结点为终端叶子结点,可将单向无环图分解为至少一个单支树。
[0033]更具体地,在本步骤中,首先,可将分块流程图中的各分块作为单向无环图的结点,其中,如果分块流程图中存在具有选择结构的分块,则获取分块中选择结构的分支个数,并生成与分支个数相同数量的结点。之后,按照待验证构件源程序代码中的控制流程及约束条件利用箭头将所有结点进行连接以形成单向无环图;其中,如果分块流程图中存在具有循环结构的分块,则将具有循环结构的分块以结点加自环箭头表示。
[0034]例如,可将分块流程图中的各分块分别用大写字母表示,并作为单向无环图的结点,若分块流程图中的分块为具有选择结构的分块,则可将先获取该选择结构总共有几个分支,然后将各分支放置在单向无环图的同一层并分别用大写字母加数字下标的方式表示,分支条件在相应的边上用小写字母表示,其中若分块流程图中的分块为具有循环结构的分块,则该分块用字母结点加自环箭头表示。然后,按照待验证构件源程序代码中的控制流程及约束条件利用箭头将所有结点进行连接以形成单向无环图。最后,以入口结点为根节点、出口结点为终端叶子结点,可将单向无环图分解为至少一个单支树。
[0035]应当理解,在本发明的实施例中,至少一个单支树可理解为一个单支树、或一个以上的单支树。需要说明的是,当以入口结点为根节点、出口结点为终端叶子结点,可将单向无环图分解为一个单支树时,可理解单向无环图没有分支结点,即待验证构件源程序代码中不存在选择结构。当以入口结点为根节点、出口结点为终端叶子结点,可将单向无环图分解为一个以上单支树时,可理解单向无环图存在分支结点,即待验证构件源程序代码中存在选择结构。在本发明的实施例中,当单向无环图存在分支结点时,在将单向无环图分解为一个以上单支树之前,可先对单向无环图进行剔除分支节点的处理。举例而言,如果单向无环图中某个结点指向两个或两个以上的结点,则可说明单向无环图存在分支结点,则可将该单向无环图分解为除入口结点外没有分支结点的单向无环图,例如,假设分支结点的个数为2,则可将分支结点的上一层级的结点变为2个,然后,按照控制流程及约束条件利用箭头再将这些结点重新连接起来,以生成除入口结点外没有分支结点的单向无环图。
[0036]S104,根据构件功能定义对至少一个单支树进行构件功能一致性验证。
[0037]具体地,由于通过以上步骤S101-S103可将待验证构件源程序代码转化成一个完全是顺序结构的简易程序,所以将构件功能定义和该具有顺序结构的简易程序进行对照,能够很方便地快速验证构件是否具备预期的功能。
[0038]进一步的,为了加快验证速度,可以使单支树的层级尽可能少,具体地,在本发明的实施例中,在将分块流程图按照待验证构件源程序代码中的控制流程及约束条件生成至少一个单支树之后,可对至少一个单支树中的普通结点(如代表顺序执行的分块)和无约束条件的边结点进行压缩,使单支树的层级尽可能少,其中,压缩后的结点例如用注明,以作为区分。
[0039]为了使得本领域的技术人员能够更加清楚地了解本发明,下面将举例说明。
[0040]举例而言,图2是根据本发明另一个实施例的基于路由交换范式的构件功能一致性验证方法的流程图,图3 (a)、图3 (b)、图3 (c)、图3 (d)、图3 (e)、图3 (f)、图3 (g)和图3(h)是分别根据图2中的方法对待验证构件源程序代码进行处理的过程中产生的相应结果的示例图。如图2所示,首先,可读取待验证构件源程序代码(S201),如图3(a)所示,为读取到的待验证构件源程序代码。之后,可对如图3(a)所示待验证构件源程序代码进行预处理,并删除代码中的包含、注释、全局变量的内容(S202),如图3(b)所示,即为删除的代码中的包含、注释、全局变量的内容之后得到的代码。之后,可将如图3(b)所示的源程序代码按照执行顺序(如入口参数、变量定义与赋值、选择结构、循环结构、函数调用、函数返回等功能)将其分块(S203),如图3(c)所示,可将如图3(b)中的源程序代码分为6块,即分块1:入口参数、分块2:变量定义、分块3:选择结构、分块4:循环结构、分块5:函数调用、分块6:函数返回。然后,可将如图3(c)中的6个分块用结构化流程图表示出来,以形成分块流程图(S204),如图3(d)所示,即为分块流程图。之后,可将如图3(d)所示的分块流程图中各分块分别用大写字母(A、B、C、D、E、F)表示,并作为单向无环图的结点,选择结构的各分支放置在图的同一层并用大写字母加数字下标(C1、C2等)的方式表示,分支条件在相应的边上用小写字母(Cl、c2)表示,循环结构用字母结点加自环箭头表示,这样即将分块流程图转化为单向无环图(S205),如图3(e)所示。之后,可将如图3(e)所示的单向无环图分解为除入口结点A外没有分支结点的单向无环图(S206),如图3(f)所示。然后,将如图3(f)中的单向无环图以A结点为根节点,以出口结点Cl和F为终端叶子节点,分解为2颗单支树(S207),如图3(g)所示。之后,可对图3(g)中的2颗单支树中的普通结点(如代表顺序执行的分块)和无约束条件的边结点进行压缩,即对A、B、D、E、F结点进行压缩,使单支树层级尽可能少,压缩后的结点用*注明(S208),如图3(h)所示。最后,可根据构件功能定义,将如图3(h)中的2棵单支树所代表的构件程序源代码进行功能一致性验证(S209)。
[0041]综上所述,经过如图2所示中的九个步骤,将基于路由交换范式的构件源程序代码分解为两个简单的顺序执行程序,能够快速方便地依据构件功能进行一致性验证,即将不符合功能定义的构件能方便快速的被发现,可以加快单元测试过程。此外,对于路由构件源程序代码进行分块和流程图分解,能够较为方便地发现代码结构缺陷,为缺陷改进打下良好的基础。
[0042]根据本发明实施例的基于路由交换范式的构件功能一致性验证方法,可先读取待验证构件源程序代码,之后可对待验证构件源程序代码进行预处理,并根据预处理后的待验证构件源程序代码生成对应的分块流程图,并将分块流程图按照待验证构件源程序代码中的控制流程及约束条件生成至少一个单支树,以及根据构件功能定义对至少一个单支树进行构件功能一致性验证,加快了验证过程,提高了验证效率,并且,通过对于路由构件源程序代码进行分块和流程图分解,能够较为方便地发现代码结构缺陷,为缺陷改进打下良好的基础。
[0043]为了实现上述实施例,本发明还提出了一种基于路由交换范式的构件功能一致性验证装置。
[0044]图4是根据本发明一个实施例的基于路由交换范式的构件功能一致性验证装置的结构示意图。如图4所示,该基于路由交换范式的构件功能一致性验证装置可以包括:读取模块10、预处理模块20、第一生成模块30、第二生成模块40和验证模块50。
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1