CN107967136B - 基于多人图形建模的流程图函数栈结构识别方法及*** - Google Patents

基于多人图形建模的流程图函数栈结构识别方法及*** Download PDF

Info

Publication number
CN107967136B
CN107967136B CN201711121178.1A CN201711121178A CN107967136B CN 107967136 B CN107967136 B CN 107967136B CN 201711121178 A CN201711121178 A CN 201711121178A CN 107967136 B CN107967136 B CN 107967136B
Authority
CN
China
Prior art keywords
node
judging
judgment
flow chart
identifying
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711121178.1A
Other languages
English (en)
Other versions
CN107967136A (zh
Inventor
吴翔虎
曲明成
陶永超
刘全胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Academy of Aerospace Technology
Original Assignee
Shenzhen Academy of Aerospace Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Academy of Aerospace Technology filed Critical Shenzhen Academy of Aerospace Technology
Priority to CN201711121178.1A priority Critical patent/CN107967136B/zh
Publication of CN107967136A publication Critical patent/CN107967136A/zh
Application granted granted Critical
Publication of CN107967136B publication Critical patent/CN107967136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供一种基于多人图形建模的流程图函数栈结构识别方法及***,属于图形化建模领域。本发明方法包括如下步骤:为每个节点添加属性InStack,判断当前节点是否有返回,如果是,属性InStack赋值false,结束,如果否,属性InStack赋值true;判断节点是否可达,如果否,结束,如果是,判断当前节点的类型;根据当前节点的类型,判断软件流程图函数栈中的节点类别,识别确定节点结构;根据节点结构识别整个函数栈结构。本发明还提供了一种实现所述识别方法的***。本发明的有益效果为:实现了流程图的函数栈结构识别,解决了识别流程图的一个关键问题,能够实现多人协同建模,极大的提升各类产品的研制速度。

Description

基于多人图形建模的流程图函数栈结构识别方法及***
技术领域
本发明涉及图形化建模领域,尤其涉及一种基于多人图形建模的流程图函数栈结构识别方法,还涉及一种实现所述识别方法的***。
背景技术
随着软件行业的发展,软件复杂度越来越高。软件的分类日益细化,更多的软件向定制化发展。定制化软件迫切的需要建模软件辅助完成软件模型的建模工作。
在图形化建模领域,传统的图形建模软件如Microsoft Visio、Rational Rose已无法满足对软件专业化、定制化的建模趋势。因此多人图形建模的需求日益增高。
市场上,建模工具属于非开源软件,因此在以往的软件开发过程中,需要建模只能够依赖已有图形建模软件。而市场上已有建模软件通常是单独建模工具,无法实现多人共同建模,从而导致各领域图形化建模进度缓慢,周期长,成本大大提高。
在图形建模软件中,流程图是最基本的图形。由于图形建模软件为非开源,能够检索到的流程图识别算法都存在一定程度上的缺陷,无法在多人建模中识别并利用。
发明内容
为解决现有技术中的问题,本发明提供一种基于多人图形建模的流程图函数栈结构识别方法,还提供一种实现所述识别方法的***。
本发明识别方法包括如下步骤:
A:开始,为每个节点添加属性InStack,判断当前节点是否有返回,如果是,属性InStack赋值false,结束,如果否,属性InStack赋值true;
B:判断节点是否可达,如果否,结束,如果是,判断当前节点的类型;
C:根据当前节点的类型,判断软件流程图函数栈中的节点类别,识别确定节点结构;
D:根据节点结构识别整个函数栈结构,结束。
本发明作进一步改进,在步骤C中,对当前节点和栈中节点的处理过程包括:
C1:判断当前节点是否为处理节点,如果是,执行步骤C2,如果否,执行步骤C3;
C2:判断栈中节点是否为判断节点,如果是,该判断节点为while/for结构,如果否,执行步骤C4;
C3:判断当前节点是否为判断节点,如果否,执行步骤C4,如果是,执行步骤C5;
C4:识别当前节点为选择节点或者能够选择返回两个判断节点的判断节点,结束;
C5:判断栈中节点是否为处理节点,如果是,两个节点构成do-while结构,结束,如果否,执行步骤C6;
C6:判断栈中节点是否为判断节点,如果是,在从栈中节点遍历到当前节点时,根据知结构的其中一个判断节点识别另外一个判断节点的结构,结束,如果否,则对当前节点和栈中出现的判断节点构建关系WR,并根据已知结构的其中一个判断节点识别另外一个判断节点的结构,结束,
其中,关系WR定义为:如果判断节点N的一个儿子M在递归栈中,且M也为判断节点,则建立关系WR←(N is Bottom, M is Top)。
本发明作进一步改进,在步骤C4中,如果一个节点的所有分支都遍历完,该节点仍然没有被识别,则当前节点为选择节点或能够选择返回两个判断节点的判断节点。
本发明作进一步改进,当前节点为能够选择返回两个判断节点的判断节点X2时,如果栈中存在判断节点X0和X1,并且判断节点在递归调用时,能够选择返回执行判断节点X0或者判断节点X1,那么判断节点X2的结构被识别为关系WR:Bottom,那么此时X2的结构就能够被识别为do-while结构。
本发明作进一步改进,在步骤C6中,如果栈中节点为判断节点,那么,
假设软件流程图的结构为:判断节点X0的儿子为处理节点A,处理节点A的儿子为判断节点X1,判断节点X1根据判断返回父节点A或判断节点X0执行,当判断节点X0达到一定条件时,结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X1被识别为do-while结构,那么判断节点X0则为while结构;
假设软件流程图的结构为:判断节点X0的儿子为处理节点A和判断节点X1,处理节点A处理后返回判断节点X0,判断节点X1根据判断返回判断节点X0或结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X0被识别为while结构,那么判断节点X1则为do-while结构;
假设软件流程图的结构为:判断节点X0的儿子为判断节点X1,判断节点X1的儿子为处理节点A或返回判断节点X0,处理节点A返回判断节点X1,当判断节点X0达到一定条件时,结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X1被识别为while结构,那么判断节点X0也为while结构。
本发明作进一步改进,在步骤C6中,对当前节点和栈中出现的判断节点构建关系WR时,处理过程如下:
当递归返回时,
如果软件流程图的结构为:判断节点X0的儿子为处理节点A,处理节点A的儿子为判断节点X1,判断节点X1根据判断返回父节点A或判断节点X0执行,当判断节点X0达到一定条件时,结束循环返回,此时,判断节点X1被识别为do-while结构,那么WR关系中的X0则为while结构;
如果软件流程图的结构为:节点X0选择执行处理节点A或处理节点B,然后再执行判断节点X1,判断节点X1根据判断执行节点X0或结束循环返回,此时,节点X0被识别为选择节点,那么判断节点X1为do-while结构;
如果软件流程图的结构为:判断节点X0的儿子为处理节点A和判断节点X1,处理节点A处理后返回判断节点X0,判断节点X1根据判断返回判断节点X0或结束循环返回,此时,判断节点X0被识别为while结构,那么判断节点X1则为do-while结构;
如果软件流程图的结构为:判断节点X0的儿子为判断节点X1,判断节点X1的儿子为处理节点A或返回判断节点X0,处理节点A返回判断节点X1,当判断节点X0达到一定条件时,结束循环返回,此时,判断节点X1被识别为while结构,那么判断节点X0也为while结构。
本发明作进一步改进,在对软件流程图函数栈结构识别过程中,采用基于节点度匹配或基于匹配次数的汇合点识别算法来实现。
本发明作进一步改进,汇合点识别算法对软件流程图的每个节点进行深度遍历,遇到已遍历过的节点则返回。
本发明还提供一种实现所述识别方法的***,包括添加属性并赋值模块:用于为每个节点添加属性InStack,判断当前节点是否有返回,如果是,属性InStack赋值false,结束,如果否,属性InStack赋值true;
判断模块:用于判断节点是否可达,如果否,结束,如果是,判断当前节点的类型;
节点结构识别模块:用于根据当前节点的类型,判断软件流程图函数栈中的节点类别,识别确定节点结构;
函数栈结构识别模块:用于根据节点结构识别整个函数栈结构。
与现有技术相比,本发明的有益效果是:实现了流程图的函数栈结构识别,解决了识别流程图的一个关键问题,能够实现多人协同建模;面向航空、航天、机器人、汽车、通信、医疗、国防等嵌入式软件测试领域,极大的提升各类产品的研制速度,缩短多人建模的研发周期,降低研制成本。
附图说明
图1为本发明方法示意图;
图2为一实施例方法示意图;
图3-图6为两个判断节点的循环结构实施例;
图7和图8为三个判断节点的循环结构实施例;
图9为流程图实施例。
具体实施方式
下面结合附图和实施例对本发明做进一步详细说明。
如图1所示,本发明识别方法包括如下步骤:
A:递归调用时,每次递归过程引起函数调用的栈增长。开始识别处理时,为每个节点添加属性InStack,在对节点递归遍历过程中,判断当前节点是否有返回,如果是,属性InStack赋值false,结束,如果当前节点没有返回,即在函数调用栈中,则属性InStack赋值true。
B:如果一个节点在函数栈中(InStack=true),且当前节点仍然可达该节点,则说明出现了回路。此时,判断当前节点的类型。
C:根据当前节点的类型,判断软件流程图函数栈中的节点类别,识别确定节点结构;
D:根据节点结构识别整个函数栈结构,结束。
具体地,如图2所示,在步骤C中,对当前节点和栈中节点的处理过程包括:
C1:判断当前节点是否为处理节点,如果是,执行步骤C2,如果否,执行步骤C3;
C2:判断栈中节点是否为判断节点,如果是,该判断节点为while/for结构,如果否,执行步骤C4;
C3:判断当前节点是否为判断节点,如果否,执行步骤C4,如果是,执行步骤C5;
C4:识别当前节点为选择节点或者能够选择返回两个判断节点的判断节点,结束;也就是说 ,如果一个节点的所有分支都遍历完,该节点仍然没有被识别,则当前节点为选择节点或能够选择返回两个判断节点的判断节点。
如图7和图8所示,当前节点为能够选择返回两个判断节点的判断节点X2时,如果栈中存在判断节点X0和X1,并且判断节点在递归调用时,能够选择返回执行判断节点X0或者判断节点X1,那么判断节点X2的结构被识别为关系WR:Bottom,那么此时X2的结构就能够被识别为do-while结构。
C5:判断栈中节点是否为处理节点,如果是,两个节点构成do-while结构,结束,如果否,执行步骤C6;
C6:判断栈中节点是否为判断节点,如果是,在从栈中节点遍历到当前节点时,根据知结构的其中一个判断节点识别另外一个判断节点的结构,结束,如果否,则对当前节点和栈中出现的判断节点构建关系WR,并根据已知结构的其中一个判断节点识别另外一个判断节点的结构,结束,
其中,关系WR定义为:如果判断节点N的一个儿子M在递归栈中,且M也为判断节点,则建立关系WR←(N is Bottom, M is Top)。
在步骤C6中,如果栈中节点为判断节点,那么有如下三种情况:
如图3所示,假设软件流程图的结构为:判断节点X0的儿子为处理节点A,处理节点A的儿子为判断节点X1,判断节点X1根据判断返回父节点A或判断节点X0执行,当判断节点X0达到一定条件时,结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X1被识别为do-while结构,那么判断节点X0则为while结构。
如图5所示,假设软件流程图的结构为:判断节点X0的儿子为处理节点A和判断节点X1,处理节点A处理后返回判断节点X0,判断节点X1根据判断返回判断节点X0或结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X0被识别为while结构,那么判断节点X1则为do-while结构。
如图6所示,假设软件流程图的结构为:判断节点X0的儿子为判断节点X1,判断节点X1的儿子为处理节点A或返回判断节点X0,处理节点A返回判断节点X1,当判断节点X0达到一定条件时,结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X1被识别为while结构,那么判断节点X0也为while结构。
在步骤C6中,如果栈中节点不是判断节点,对当前节点和栈中出现的判断节点构建关系WR,当递归返回时,处理过程如下:
如图3所示,如果软件流程图的结构为:判断节点X0的儿子为处理节点A,处理节点A的儿子为判断节点X1,判断节点X1根据判断返回父节点A或判断节点X0执行,当判断节点X0达到一定条件时,结束循环返回,此时,判断节点X1被识别为do-while结构,那么WR关系中的X0则为while结构。
如图4所示,如果软件流程图的结构为:节点X0选择执行处理节点A或处理节点B,然后再执行判断节点X1,判断节点X1根据判断执行节点X0或结束循环返回,此时,节点X0被识别为选择节点,那么判断节点X1为do-while结构。
如图5所示,如果软件流程图的结构为:判断节点X0的儿子为处理节点A和判断节点X1,处理节点A处理后返回判断节点X0,判断节点X1根据判断返回判断节点X0或结束循环返回,此时,判断节点X0被识别为while结构,那么判断节点X1则为do-while结构;
如图6所示,如果软件流程图的结构为:判断节点X0的儿子为判断节点X1,判断节点X1的儿子为处理节点A或返回判断节点X0,处理节点A返回判断节点X1,当判断节点X0达到一定条件时,结束循环返回,此时,判断节点X1被识别为while结构,那么判断节点X0也为while结构。
本例在对软件流程图函数栈结构识别过程中,采用基于节点度匹配或基于匹配次数的汇合点识别算法来实现。在基于节点度匹配的汇合点识别算法中,可以将基于节点度匹配的汇合点识别直接融入一趟递归遍历过程中。
本例的汇合点识别算法具体如下:
算法SBA_Identify能够识别出while/for循环结构。对流程图进行深度遍历,遇到已遍历过则返回,当一个节点形成回路时按照上述方法步骤进行识别,当一个判断节点的所有儿子都遍历完成没有识别为循环,则必为selection(选择节点)。进而根据判断输入的流程图,确定节点的while/for循环结构。
本例的伪代码如下:
Node BeginNode←Begin;//初值为流程图开始节点
Define DSET//存储判断节点
Define TimeIndex=0//do-while结构的层次编号
SBA_Identify (BeginNode)//启动递归过程
SBA_IdentifyCurrentNode
{
//多层do-while嵌套时,生成代码过程中判断节点编号最大的为最外层
CurrentNode.index= TimeIndex++
For each son of CurrentNode
If son is End then continue
If son has been traversed then[1]
If (son.InStack=true) then [2] //生成代码时编号TimeIndex最大的为最外层
If (son is Judgement) and (CurrentNode is process)then [3]
son.type←while/for
if (son is a Top) then[4] //图5
get a Bottom of Top
Bottom.T_father←Top
Release current WR
If(son is a Bottom) then //图6
get the Top of Bottom
Top.type←while/for
Release current WR
If (son is process) and (CurrentNode is Judgement)then[5]
CurrentNode.type←do-while [5-1]
mark son is T_father of CurrentNode [5-2]
if (CurrentNode is a Bottom) then [6]
get the Top of Bottom[6-1]
Top. type←while/for[6-2]
Release current WR
If (son is Judgement) and (CurrentNode is Judgement)then [7]
If CurrentNode.type is do-while then son.type←while/for [8]
Else If son.type is while/for then [9]
CurrentNode.type←do-while
mark son is T_father of CurrentNode
Else If CurrentNode.type is while/for then [9]
Son.type←while/for
else [10] //while嵌套while也在内
CurrentNode.type←do-while [10-1] //while嵌套while也在内,
下一步可以在进行一次正确识别
Build WR←(CurrentNode is Bottom, son is Top) [10-2]
continue
CurrentNode.InStack=true [11]
SBA_Identify(son) [12]
If the inner node ofCurrentNode has been identified then continue[12-1]
IfCurrentNode has been identified as while/for then [12-2]
Son is inner node of CurrentNode [12-3]
CurrentNode.InStack=false [13]
//截止到这里循环结构已经识别完成
If (CurrentNode is Judgement) and (CurrentNode has not been identified) then [14]
if (CurrentNode is not a Bottom) then [15]
CurrentNode.type←selection
if (CurrentNode is a Top) then [15-1]
get the Bottom of Top
Bottom.T_father←Top
Release current WR
Else //说明书附图中图7和图8情形 [16]
CurrentNode.type←do-while //its T_father will be identified laterwhen node X1 is identified
Get a top of CurrentNode whose TimeIndex is smaller according toNodeTimeIndex
Top.type←while //X0 is dentified
Release current WR
如图9所示,作为本发明常见流程图的一个实施例,本例的识别过程如下:
X0→X1→X2→X10,处理X10儿子X1,建立WR(X10,X1),处理X10儿子X0,建立WR(X10,X0),执行[16],X10←do-while,X0←while。返回至X2,继续遍历X0→X1→X2→A→X3,处理X3儿子X2,建立WR(X3,X2),处理X3儿子A,执行[5-1][6],X3←do-while,X2←dwhile,返回至X1。继续遍历X0→X1→X4…,当X1所有节点处理完毕,执行[15][15-1],X1←selection,X10.T_father←X1,其他过程略。
本发明还提供一种实现所述识别方法的***,包括:
添加属性并赋值模块:用于为每个节点添加属性InStack,判断当前节点是否有返回,如果是,属性InStack赋值false,结束,如果否,属性InStack赋值true;
判断模块:用于判断节点是否可达,如果否,结束,如果是,判断当前节点的类型;
节点结构识别模块:用于根据当前节点的类型,判断软件流程图函数栈中的节点类别,识别确定节点结构;
函数栈结构识别模块:用于根据节点结构识别整个函数栈结构。
本发明涉及的所有开发思想、开发算法都是独立研发,识别相对全面。本发明实现了流程图的函数栈结构识别,解决了识别流程图的一个关键问题,能够在此基础上实现多人协同建模。本发明面向航空、航天、机器人、汽车、通信、医疗、国防等嵌入式软件测试领域,极大的提升各类产品的研制速度,缩短多人建模的研发周期,降低研制成本,增强国防单位或科研院所的综合竞争力。
以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明所作的等效变化均在本发明的保护范围内。

Claims (8)

1.基于多人图形建模的流程图函数栈结构识别方法,其特征在于包括如下步骤:
A:开始,为每个节点添加属性InStack,判断当前节点是否有返回,如果是,属性InStack赋值false,结束,如果否,属性InStack赋值true;
B:判断节点是否可达,如果否,结束,如果是,判断当前节点的类型;
C:根据当前节点的类型,判断软件流程图函数栈中的节点类别,识别确定节点结构;
D:根据节点结构识别整个函数栈结构,结束,
在步骤C中,对当前节点和栈中节点的处理过程包括:
C1:判断当前节点是否为处理节点,如果是,执行步骤C2,如果否,执行步骤C3;
C2:判断栈中节点是否为判断节点,如果是,该判断节点为while/for结构,如果否,执行步骤C4;
C3:判断当前节点是否为判断节点,如果否,执行步骤C4,如果是,执行步骤C5;
C4:识别当前节点为选择节点或者能够选择返回两个判断节点的判断节点,结束;
C5:判断栈中节点是否为处理节点,如果是,两个节点构成do-while结构,结束,如果否,执行步骤C6;
C6:判断栈中节点是否为判断节点,如果是,在从栈中节点遍历到当前节点时,根据知结构的其中一个判断节点识别另外一个判断节点的结构,结束,如果否,则对当前节点和栈中出现的判断节点构建关系WR,并根据已知结构的其中一个判断节点识别另外一个判断节点的结构,结束,
其中,关系WR定义为:如果判断节点N的一个儿子M在递归栈中,且M也为判断节点,则建立关系WR←(N is Bottom,M is Top)。
2.根据权利要求1所述的基于多人图形建模的流程图函数栈结构识别方法,其特征在于:在步骤C4中,如果一个节点的所有分支都遍历完,该节点仍然没有被识别,则当前节点为选择节点或能够选择返回两个判断节点的判断节点。
3.根据权利要求2所述的基于多人图形建模的流程图函数栈结构识别方法,其特征在于:当前节点为能够选择返回两个判断节点的判断节点X2时,如果栈中存在判断节点X0和X1,并且判断节点在递归调用时,能够选择返回执行判断节点X0或者判断节点X1,那么判断节点X2的结构被识别为关系WR:Bottom,那么此时X2的结构就能够被识别为do-while结构。
4.根据权利要求1所述的基于多人图形建模的流程图函数栈结构识别方法,其特征在于:在步骤C6中,如果栈中节点为判断节点,那么,
假设软件流程图的结构为:判断节点X0的儿子为处理节点A,处理节点A的儿子为判断节点X1,判断节点X1根据判断返回父节点A或判断节点X0执行,当判断节点X0达到一定条件时,结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X1被识别为do-while结构,那么判断节点X0则为while结构;
假设软件流程图的结构为:判断节点X0的儿子为处理节点A和判断节点X1,处理节点A处理后返回判断节点X0,判断节点X1根据判断返回判断节点X0或结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X0被识别为while结构,那么判断节点X1则为do-while结构;
假设软件流程图的结构为:判断节点X0的儿子为判断节点X1,判断节点X1的儿子为处理节点A或返回判断节点X0,处理节点A返回判断节点X1,当判断节点X0达到一定条件时,结束循环返回,此时,在从判断节点X1遍历到判断节点X0时,判断节点X1被识别为while结构,那么判断节点X0也为while结构。
5.根据权利要求1所述的基于多人图形建模的流程图函数栈结构识别方法,其特征在于:在步骤C6中,对当前节点和栈中出现的判断节点构建关系WR时,处理过程如下:当递归返回时,
如果软件流程图的结构为:判断节点X0的儿子为处理节点A,处理节点A的儿子为判断节点X1,判断节点X1根据判断返回父节点A或判断节点X0执行,当判断节点X0达到一定条件时,结束循环返回,此时,判断节点X1被识别为do-while结构,那么WR关系中的X0则为while结构;
如果软件流程图的结构为:节点X0选择执行处理节点A或处理节点B,然后再执行判断节点X1,判断节点X1根据判断执行节点X0或结束循环返回,此时,节点X0被识别为选择节点,那么判断节点X1为do-while结构;
如果软件流程图的结构为:判断节点X0的儿子为处理节点A和判断节点X1,处理节点A处理后返回判断节点X0,判断节点X1根据判断返回判断节点X0或结束循环返回,此时,判断节点X0被识别为while结构,那么判断节点X1则为do-while结构;
如果软件流程图的结构为:判断节点X0的儿子为判断节点X1,判断节点X1的儿子为处理节点A或返回判断节点X0,处理节点A返回判断节点X1,当判断节点X0达到一定条件时,结束循环返回,此时,判断节点X1被识别为while结构,那么判断节点X0也为while结构。
6.根据权利要求1-5任一项所述的基于多人图形建模的流程图函数栈结构识别方法,其特征在于:在对软件流程图函数栈结构识别过程中,采用基于节点度匹配或基于匹配次数的汇合点识别算法来实现。
7.根据权利要求6所述的基于多人图形建模的流程图函数栈结构识别方法,其特征在于:汇合点识别算法对软件流程图的每个节点进行深度遍历,遇到已遍历过的节点则返回。
8.一种实现权利要求1-7任一项所述的基于多人图形建模的流程图函数栈结构识别方法的***,其特征在于包括:
添加属性并赋值模块:用于为每个节点添加属性InStack,判断当前节点是否有返回,如果是,属性InStack赋值false,结束,如果否,属性InStack赋值true;
判断模块:用于判断节点是否可达,如果否,结束,如果是,判断当前节点的类型;
节点结构识别模块:用于根据当前节点的类型,判断软件流程图函数栈中的节点类别,识别确定节点结构;
函数栈结构识别模块:用于根据节点结构识别整个函数栈结构。
CN201711121178.1A 2017-11-14 2017-11-14 基于多人图形建模的流程图函数栈结构识别方法及*** Active CN107967136B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711121178.1A CN107967136B (zh) 2017-11-14 2017-11-14 基于多人图形建模的流程图函数栈结构识别方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711121178.1A CN107967136B (zh) 2017-11-14 2017-11-14 基于多人图形建模的流程图函数栈结构识别方法及***

Publications (2)

Publication Number Publication Date
CN107967136A CN107967136A (zh) 2018-04-27
CN107967136B true CN107967136B (zh) 2020-07-14

Family

ID=62000139

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711121178.1A Active CN107967136B (zh) 2017-11-14 2017-11-14 基于多人图形建模的流程图函数栈结构识别方法及***

Country Status (1)

Country Link
CN (1) CN107967136B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101241464A (zh) * 2007-02-05 2008-08-13 中兴通讯股份有限公司 一种检测堆栈帧破坏的方法
CN102662644A (zh) * 2012-02-29 2012-09-12 浙江大学 一种使用流程图生成测试案例的方法
CN102915242A (zh) * 2012-09-26 2013-02-06 北京广利核***工程有限公司 一种利用图形化操作实现代码编程的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594589B2 (en) * 2014-09-22 2017-03-14 International Business Machines Corporation Suspending transactional-memory transactions without stack corruption

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101241464A (zh) * 2007-02-05 2008-08-13 中兴通讯股份有限公司 一种检测堆栈帧破坏的方法
CN102662644A (zh) * 2012-02-29 2012-09-12 浙江大学 一种使用流程图生成测试案例的方法
CN102915242A (zh) * 2012-09-26 2013-02-06 北京广利核***工程有限公司 一种利用图形化操作实现代码编程的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于事件流程图的管理信息***建模方法;董东;《河北师范大学学报》;20010330;第25卷(第1期);32-45 *
基于函数划分块及置信度的反汇编优化研究;吴伟民;《计算机应用与软件》;20140131;第31卷(第1期);85-88 *

Also Published As

Publication number Publication date
CN107967136A (zh) 2018-04-27

Similar Documents

Publication Publication Date Title
CN105652833B (zh) 基于双向智能搜索的制造企业车间调度优化方法
CN106200575B (zh) 一种基于Petri网的自动制造***的稳健性控制方法
AU2019204087B2 (en) Data processing graph compilation
CN108021507B (zh) 符号执行的并行路径搜索方法及装置
WO2022143419A1 (zh) 一种计算图的节点融合方法及设备
CN116166405B (zh) 异构场景下的神经网络任务调度策略确定方法及装置
CN114820279B (zh) 基于多gpu的分布式深度学习方法、装置及电子设备
WO2023093689A1 (zh) 一种计算图优化方法、装置及设备
CN108399304A (zh) 一种基于克里金模型的多点加点优化采样方法
CN103617226A (zh) 一种正则表达式匹配方法及装置
CN117271101B (zh) 一种算子融合方法、装置、电子设备及存储介质
CN107967136B (zh) 基于多人图形建模的流程图函数栈结构识别方法及***
US20070094203A1 (en) Rule processing method and apparatus providing exclude cover removal to simplify selection and/or conflict advice
CN112597884A (zh) 手势识别模型的训练方法、手势识别方法及***
Larbi et al. Modeling the scheduling problem of identical parallel machines with load balancing by time petri nets
CN116301826A (zh) Caa开发中调用软件命令进行数据批量处理的方法
CN107122849B (zh) 基于SparkR的产品检测总完工时间极小化方法
US20220207287A1 (en) System and Method of Clustering Machine Learning Flows
Korablyov et al. Dendritic Artificial Immune Network Model for Computing.
US20160104066A1 (en) Optimization method for a computer system
Ma et al. Parallel exact inference on multicore using mapreduce
CN115796228B (zh) 算子融合方法、装置、设备以及存储介质
US20230237097A1 (en) Information processing device, information processing method, and recording medium
CN117273115B (zh) 一种反向计算图的静态生成方法、装置、设备及介质
CN105447001B (zh) 高维数据降维方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant