CN101617293A - 模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质 - Google Patents
模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质 Download PDFInfo
- Publication number
- CN101617293A CN101617293A CN200780050850A CN200780050850A CN101617293A CN 101617293 A CN101617293 A CN 101617293A CN 200780050850 A CN200780050850 A CN 200780050850A CN 200780050850 A CN200780050850 A CN 200780050850A CN 101617293 A CN101617293 A CN 101617293A
- Authority
- CN
- China
- Prior art keywords
- piece
- node
- castable
- information
- restructuring procedure
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
使计算机作为句法分析部、宏块分析部、接合节点重构部、同一部分融合重构部、近似部分融合重构部、中间语言重构部发挥功能。句法分析部对源代码进行句法分析。宏块分析部将该程序分割成多个块,在各块中的用于识别语句的变量的编号上附加表示在该语句中唯一的编号的虚拟部分,对运算模式进行虚拟化。接合节点重构部提取与子程序块直接相关的节点。同一部分融合重构部对于在程序的多个部分被调用的子程序,进行前处理之间以及后处理之间的融合。近似部分融合重构部将构造相似的多个子程序统合为同族的子程序。
Description
技术领域
本发明涉及能够从已有的资源中生成可再利用的模组的模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质。
背景技术
图18是示出以往的软件开发处理流程的图。如图18所示,当开发新的软件时,首先利用设计辅助工具,从用自然语言描述的新开发计划书1制作设计计划书2(步骤S1901)。在此,对新开发计划书1以及已经登记的工具和部件(已登记部件工具)3进行对比,组合已登记部件工具3以使其适合新开发计划书1。
接下来,基于设计计划书2进行编码处理(步骤S1902)。然后对编码而得的代码进行调试处理(步骤S1903)。在调试处理中,进行分析源代码4的句法的句法分析(parser)处理(步骤S1911)、分析源代码4的结构的结构分析处理(步骤S1912)、以及删除冗余代码等的代码级别的最优化处理(步骤S1913),从而生成执行代码5。
在最优化处理中,执行常数传播或函数内嵌(inlining)、或者循环展开(loop unrolling)等公知的处理。程序的结构本身不被改变。编码处理和调试处理的一部分由软件开发人员人工进行。这里,人工进行是指不是由设计辅助工具等计算机执行的自动处理,而是由开发人员逐一经过试运行错误和确认来进行处理的意思。
在调试处理之后,利用执行代码5进行测试(步骤S1904),生成开发成果物6。该开发成果物6作为已有资源7来再利用。当再利用该已有资源7以及别处使用过并取得了实际成效的资源8时,如果这些资源7、8的规格发生了变更,就需要软件开发人员人工制作改造计划书9。
已公知有一种面向对象的框架系统,该系统使用创新的框架体系结构来提供第一面向对象操作系统。提供该面向对象框架系统的装置包括:进行面向对象应用程序处理的操作系统装置、常驻于操作系统装置中的对面向对象应用程序进行标准化的框架处理装置(例如,参考专利文献1)。
专利文件1:日本专利文件特表平8-505721号公报。
发明内容
发明要解决的问题
然而,在上述传统的软件开发处理中,当再利用在别处使用并取得了实际成效的资源来改造已有资源时,需要开发人员人工分析所提供的源代码或文档类来制作改造计划书。因此会产生如下的问题。首先,人工进行的分析结果中可能含有错误。并且,当对于在已有的资源以及在别处使用并取得了实绩成效的资源中通用的部分进行模组化时,开发人员可能无法充分地提取通用部分。如果通用部分的提取不充分,在别处取得了实际成效的资源中新的部分就会变多,对该新部分进行调试处理和测试所消耗的时间和精力就会增加。另外,上述专利文件1所公开的面向对象的框架系统并不是从已有资源自动生成可再利用的模组的系统。
本发明就是鉴于上述问题而完成的,其目的在于,提供一种不通过开发人员的人工操作而从已有资源自动生成可再利用的模组的模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质。
用于解决问题的手段
为了解决上述问题,达到上述目的,本发明的特征在于,使计算机起到句法分析部、宏块分析部、接合节点重构部、同一部分融合重构部、近似部分融合重构部、以及中间语言重构部的功能。句法分析部对程序的源代码进行句法分析,输出该分析信息。
宏块分析部基于从句法分析部输出的句法分析信息,通过程序的结构分析将该程序分割成多个块。并且,宏块分析部在各块中的用于识别语句的变量的编号上,附加表示在该语句中唯一的编号的虚拟部分,并输出该附加信息和块的结构信息。用于识别各语句的变量的编号由表示在整个源代码中唯一的编号的低位部分以及包含在该语句中唯一的编号的虚拟部分的高位部分的组合表示。通过如此表示用于识别各语句的变量的编号,能够对各块的运算模式进行虚拟化。
接合节点重构部基于从宏块分析部输出的结构信息以及附加信息,关注被定义为子程序的一个块。并且,接合节点重构部对于父辈块内的节点,以与处理顺序相反的方向(下面称作反向)进行搜索,并且,对于继承块内的节点,按照处理顺序的方向(下面称作正向)进行搜索,由此提取与该关注块直接相关的节点。其中,父辈块是指处理顺序在该关注块之前并且通过被依次处理而到达该关注块的块。继承块是指处理顺序在该关注块之后并且从该关注块被依次处理的块。
在整个程序中,接合节点重构部所关注的块(子程序)有时在多个部分被调用。同一部分融合重构部对于这样的使用同一关注块的多个部分,进行父辈块内的节点之间的比较,并将该父辈块相融合。同样地,同一部分融合重构部对于这样的多个部分,进行继承块内的节点之间的比较,并将该继承块相融合。然后,同一部分融合重构部输出作为其结果而获得的融合块信息。
另外,在整个程序中有时存在结构相似的块(子程序)。近似部分融合重构部对于这样的不同的每个关注块,进行融合块信息之间的比较,将具有相同或相似的融合块信息的多个关注块定义为同类的子程序。并且,近似部分融合重构部将相同或相似的融合块信息相融合,输出作为其结果而获得的抽象化代码信息。中间语言重构部基于从近似部分融合重构部输出的抽象化代码信息以及从句法分析部输出的分析信息,输出被通用化了的部件的信息。
根据本发明,当由同一部分融合重构部以及近似部分融合重构部判断节点的相同性时,通过在用于识别语句的变量的编号中掩蔽低位部分而只比较高位部分(虚拟部分),能够容易地判断相同性。因此,能够由计算机自动提取相同或相似的块。另外,在进行通常的句法分析或结构分析时,或者由接合节点重构部提取对于关注块的依存节点时,掩蔽高位部分(虚拟部分)而只参考低位部分来作为用于识别语句的变量的编号,由此能够进行与以往同样的处理。
本发明的模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质可获得不通过开发人员的人工操作就能够从已有资源自动生成可再利用的模组的效果。
附图说明
图1是示出本发明实施方式的模组生成装置的硬件构成的图;
图2是示出本发明实施方式的模组生成装置的功能性构成的图;
图3是示出本发明实施方式的模组生成处理的流程的图;
图4是示出在宏块分析过程中被分类的项目的图;
图5是示意性地示出基于图4的分类表来分割程序的示例的图;
图6是示出宏块分析处理的流程的图;
图7是示出接合节点重构处理的流程的图;
图8是用于说明接合节点重构处理的图;
图9是用于说明接合节点重构处理的图;
图10是示出同一部分融合重构处理的流程的图;
图11是用于说明同一部分融合重构处理的图;
图12是用于说明同一部分融合重构处理的图;
图13是用于说明同一部分融合重构处理的图;
图14是示出近似部分融合重构处理的流程的图;
图15是用于说明近似部分融合重构处理的图;
图16是用于说明近似部分融合重构处理的图;
图17是示出应用了本发明实施方式的模组生成处理的软件开发处理的流程的图;
图18是示出传统的软件开发处理的流程的图。
标号说明
11句法分析部
12宏块分析部
13接合节点重构部
14同一部分融合重构部
15近似部分融合重构部
16中间语言重构部
具体实施方式
下面,基于附图,对本发明涉及的模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质的实施例进行详细的说明。但本发明并不通过该实施例来限定。
(模组生成装置的硬件构成)
图1是示出本发明实施方式的模组生成装置的硬件构成的图。如图1所示,模组生成装置包括:CPU 101、ROM 102、RAM 103、HDD(硬盘驱动器)104、HD(硬盘)105、FDD(软盘驱动器)106、作为可装卸记录介质的一个示例的FD(软盘)107、显示器108、I/F(接口)109、键盘110、鼠标111、扫描仪112、打印机113。另外,各构成部通过数据总线100分别连接。
这里,CPU 101负责对模组生成装置整体进行控制。ROM 102中记录有引导程序(boot program)等程序。RAM 103被用作CPU 101的工作区。HDD 104依照CPU 101的控制来控制对于HD 105的数据的读/写。HD 105记录在HDD 104的控制下写入的数据。
FDD 106依照CPU 101的控制来控制对于FD 107的数据的读/写。FD107记录在FDD 106的控制下写入的数据,或者将记录在FD 107中的数据读取到模组生成装置中。
可装卸记录介质除了FD 107之外,也可以是CD-ROM(CD-R、CD-RW)、MO、DVD(Digital Versatile Disk,多功能数码光盘)、存储卡等。显示器108显示光标(cursor)、图标(icon)、工具箱、文件、图像、功能信息等数据。该显示器108可以采用CRT、TFT液晶显示器、等离子显示器等。
I/F 109通过通信线路连接在因特网等网络114上,并经由该网络114而与其他装置连接。并且,I/F 109担任网络114与内部间的接口,控制从外部装置的数据输入或者向外部装置的数据输出。I/F 109例如可以采用调制解调器或LAN适配器等。
键盘110具有用于输入文字、数字以及各种指示等的键,进行数据的输入。另外,也可以是触摸屏式的输入板或小键盘等。鼠标111进行光标的移动或范围选择、或者窗口的移动或尺寸变更等。只要是具有同样功能的定点设备,也可以是轨迹球(track ball)或控制杆(joystick)。
扫描仪112光学地读取图像,将图像数据读入模组生成装置内。扫描仪112也可以具有OCR功能。另外,打印机113对图像数据或文件数据进行打印。打印机113可以采用激光打印机或喷墨式打印机。
(模组生成装置的功能性构成)
图2是示出本发明实施方式的模组生成装置的功能性构成的图。如图2所示,模组生成装置包括:句法分析(parsing)部11、宏块(macroblocking)分析部12、接合节点重构部13、同一部分融合重构部14、近似部分融合重构部15以及中间语言重构部16。
句法分析部11对程序的源代码进行句法分析。宏块分析部12进行程序的结构分析,并将该程序分割成多个块。另外,宏块分析部12在分割后的各块中的用于识别语句的变量的编号上,附加用于表示该语句中的唯一的编号的虚拟部分,从而扩展用于识别语句的变量的编号。
例如,宏块分析部12将传统的在整个源代码中唯一的编号作为低位比特部,并对其附加上述虚拟部分作为高位比特部。通过如此扩展编号,用于识别语句的变量的编号以高位部分和低位部分的组合来表示,能够对各块的运算模式进行虚拟化。
接合节点重构部13关注被定义为子程序(sub routing)的一个块。并且,接合节点重构部13对该关注块的父辈块内的节点进行反向搜索,提取从关注块能够反向不间断地追溯的节点,作为与关注块直接相关的节点。
接合节点重构部13对该关注块的继承块中的节点进行正向搜索。并且,接合节点重构部13提取从关注块正向连接的节点,作为与关注块直接相关的节点,其中所述连接的节点是指:将关注块的处理接过来的节点,如果存在进一步接过上述节点的处理的节点,则为该节点,以此类推。
当提取节点时,接合节点重构部13掩蔽高位部分(虚拟部分)而只参考低位部分以作为用于识别语句的变量的编号。同一部分融合重构部14关于整个程序中调用接合节点重构部13所关注的子程序的块的多个部分,对父辈块内的节点进行比较,将相同或相似的父辈块相融合。
另外,同一部分融合重构部14关于继承块,也同样地对继承块内的节点进行比较,并将相同或相似的继承块相融合。同一部分融合重构部14在判断节点的相同性时,掩蔽低位部分而只参考高位部分(虚拟部分)以作为用于识别语句的变量的编号。
近似部分融合重构部15将存在于整个程序中的结构相似的多个子程序的块定义为同类的子程序。并且,近似部分融合重构部15关于所述被定义为同类子程序的多个子程序的块,与同一部分融合重构部14同样地对各父辈块进行融合并对各继承块进行融合。
近似部分融合重构部15在关于同类的子程序判断节点的相同性时,掩蔽低位部分而只参考高位部分(虚拟部分)以作为用于识别语句的变量的编号。中间语言重构部16基于近似部分融合重构部15的输出信息,输出部件化了的源代码或通用化了的部件的信息。
图2所示的例子被构成为:设有多组接合节点重构部13和同一部分融合重构部14的组,并且各组的输出信息被综合后传递给近似部分融合重构部15。也就是说,根据输入到句法分析部11的源代码的结构来进行多个处理。
上述的句法分析部11、宏块分析部12、接合节点重构部13、同一部分融合重构部14、近似部分融合重构部15以及中间语言重构部16的功能具体来说,例如通过由CPU 101执行记录在图1所示的ROM 102、RAM103、HD 105等记录介质中的程序、或者由I/F 109来实现。
(模组生成处理顺序)
图3是示出本发明实施方式的模组生成处理的流程的图。如图3所示,当源代码21被输入到句法分析部11中从而开始了模组生成处理时,首先,句法分析部11执行作为一般编译器的结构中的初始阶段的句法分析过程(步骤S301)。通过该句法分析步骤,获得作为中间生成信息的句法分析信息22。
接下来,宏块分析部12基于句法分析信息22,执行宏块分析(结构分析)过程(步骤S302)。通过宏块分析过程,获得作为中间生成信息的结构信息和附加信息23。接下来,接合节点重构部13基于结构信息和附加信息23进行接合节点重构过程(步骤S303)。
接下来,同一部分融合重构部14基于结构信息和附加信息23执行同一部分融合重构过程(步骤S304)。通过该同一部分融合重构过程,获得作为中间生成信息的融合块信息24。接下来,近似部分融合重构部15基于融合块信息24,执行近似部分融合重构过程(步骤S305)。通过该近似部分融合重构过程,获得中间生成信息的抽象化代码信息25。对于宏块分析过程、接合节点重构过程、同一部分融合重构过程以及近似部分融合重构过程,将在后面进行详细说明。
接下来,中间语言重构部16基于抽象化代码信息25以及句法分析信息22,执行中间语言重构过程(步骤S306)。在该中间语言重构过程中,对于通过步骤S301~S305的各步骤中的处理而生成的中间语言,进行综合的重构和信息整理。另外,在中间语言重构过程中,还能够与预处理器功能协作基于重构后的中间语言来输出源代码。因此,通过该过程,作为部件化了的源代码或通用化了的部件的信息,能够获得作为源代码21的分析结果的模组信息26、通过被通用化而可再利用的通用部分模组27。
(宏块分析过程中的处理)
在宏块分析过程中,宏块分析部12进行用于一般的并列处理的编译器所进行的块分割。图4示出了在宏块分析过程中被分类的项目。如图4所示,通常,程序被分类为运算代入处理(A)、循环(B)、条件分支(C)以及无条件跳转(D)。运算代入处理(A)在源代码中以通常的数学式来表述。另外,无条件跳转(D)在源代码中以子程序调用(subrouting call)来表述。
图5是示意性地示出基于图4的分类表而分割程序的示例的图。分割后的各块内的字母(A、B、C以及D)相当于图4的分类表的左栏的字母。图5为一个示例,运算代入处理(A)、循环(B)、条件分支(C)以及无条件跳转(D)的出现顺序和出现次数等并不被限定。
图6是示出宏块分析处理的流程的图。如图6所示,当宏块分析部12开始了宏块分析处理时,首先,准备作为句法分析信息22而获得的中间语言程序(E)(步骤S601)。并且,逐行读取中间语言程序(E)。当语句的种类为代入句或者运算句时(步骤S602:A),进行下面的步骤S603~S606的处理。
在记述有代入或运算的语句的期间(步骤S603:是),逐行执行。一旦一系列的代入或运算语句的块结束(步骤S603:否),则将该块定义为代入块(步骤S604)。接下来,制作表,执行语句的变量的虚拟化处理(步骤S605)。对于该虚拟化处理,将在后面进行详细说明。并且,制作语句流图(flow graph)(步骤S606)、返回步骤S602。
当中间语言程序(E)的语句类型为循环时(步骤S602:B),执行下面的步骤S607~S610的处理。当语句的类型为循环时,该行中记述有循环的头代码。将程序的终端定义为循环终端(步骤S607),再次调用中间语言程序(E)(步骤S608),定义为循环块(步骤S609)。
在步骤S608中再次调用中间语言程序(E)是因为循环块中有可能还存在循环块的缘故。然后,制作输入输出变量表(步骤S610)、返回步骤S602。当中间语言程序(E)的语句类型为条件分支时(步骤S602:C),制作控制结构表(步骤S611),返回步骤S602。
当中间语言程序(E)的语句类型为跳转命令时(步骤S602:D),执行以下步骤S612~S615的处理。将程序的终端定义为返回代码(步骤S612),再次调用中间语言程序(E)(步骤S613),定义为子块(步骤S614)。在步骤S613中再次调用中间语言程序(E)是因为子块中有可能还存在子块的缘故。然后,制作输入输出变量表(步骤S615),返回步骤S602。
在步骤S602中,当中间语言程序(E)的语句表示程序的终端时,结束处理(步骤S616)。由此,可获得由按任务分割和分类的处理块、输入输出变量表以及控制结构等构成的流图,作为结构信息和附加信息23。
(语句变量的虚拟化处理)
进行变量的虚拟化处理的目的在于:通过将通常的结构分析中的语句的中间语言表述如下进行扩展而使得在后面的处理中容易进行结构比较。例如,当在源代码中存在如下式1所示的表述时,在通常的中间语言表述中,如式2~4所示,为变量分配固定的编号。
A=b+c+1 ...(式1)
V0←V1+V2 ...(式2)
V3←V0+C1 ...(式3)
V4←V3 ...(式4)
此时,当存在如下式5所示那样的同样的运算·代入表述时,生成如式6~式8所示的中间语言。其中,X、m以及n在源代码中已出现过,并在中间语言表述中已被取号。此时,难以简单地比较下面的式6~式8和上面的式2~式4。
X=m+n+1 ...(式5)
V11←V5+V6 ...(式6)
V12←V11+C1 ...(式7)
V8←V12 ...(式8)
因此,在本实施例中,通过表示在整个源代码中唯一的编号的低位部分(与传统表述相同)以及由表示在该语句中唯一的编号的虚拟部分组成的高位部分的组合来表示作为表述变量的V(Variable)的后缀的编号,低位部分虚拟部分高位部分,由此进行虚拟化。例如,当变量表使用16比特进行表述时,将其扩展为32位。并且,将低位的16比特定义为在中间语言表述中唯一的编号(传统表述),将高位的16比特定义为在该语句中唯一的编号。
由此,上述的式2~式4可以用下式9~式11来表示。另外,上述的式6~式8可以用下式12~式14来表示。其中,在式9~式14中,用{}表示的值是保存在高位16比特中的虚拟化的相对编号。
V{00}00←V{01}01+V{02}02 ...(式9)
V{03}03←V{00}00+C{01}01 ...(式10)
V{04}04←V{03}03 ...(式11)
V{00}11←V{01}05+V{02}06 ...(式11)
V{03}12←V{00}11+C{01}01 ...(式12)
V{04}08←V{03}12 ...(式13)
在上式9~式14中,当掩蔽V或C的后缀的低位16比特而只参考高位16比特时,可知式9~式11和式12~式14相同。通过上述的宏块分析处理,结构信息和附加信息23是通过宏任务(macro-tasking)划分的块结构、以通过上述虚拟化处理而扩展定义的语句图(statement graph)表示的中间语言。当进行传统的一般的句法分析或者依存关系分析时,掩蔽V或C的后缀的高位16比特,只参考低位16比特。
(接合节点重构过程中的处理)
图7是示出接合节点重构处理的流程的图。如图7所示,当接合节点重构部13开始进行接合节点重构处理时,首先,基于获得的作为结构信息和附加信息23的流图,关注子程序块MTn(步骤S701)。
并且,判断该子程序块MTn和与该子程序块MTn处于依存关系的其他块MTm之间的依存关系(步骤S702)。子程序块MTn的父辈块和继承块已在上述的宏块分析过程中生成。
当块MTm为父辈块时(步骤S702:父辈块),关注块MTm的所有的终端语句Sx(步骤S703)。然后,判断在终端语句Sx中被定义的变量的集合和在子块MTn中使用的变量的集合的交集(Sx∩In(MTn))(步骤S704)。
当该交集为空集Φ时(步骤S704:Φ),对于块MTm内的节点,从在步骤S701中所关注的子块MTn反向进行语句图的搜索(节点搜索),并制作列表(步骤S705)。然后,将在步骤S705中搜索到的节点作为进行与子程序块MTn无关的处理的节点而从块MTm中分割出去(步骤S706)。
另一方面,当上述交集(Sx∩In(MTn))不是空集时(步骤S704:≠Φ),对于块MTm内的节点,从在步骤S701中所关注的子程序块MTn反向进行节点搜索,制作直接逐渐依存至子程序块MTn的节点的列表(步骤S707)。另外,在步骤S702中,当块MTm为继承块时(步骤S702:继承块),关注块MTm的所有的开始语句Sx(步骤S708)。
然后,判断在开始语句Sx中使用的变量的集合和在子程序块MTn中被定义的变量的集合的交集(Sx∩Out(MTn))(步骤S709)。当该交集(Sx∩Out(MTn))不是空集时(步骤S709:≠Φ),对于块MTm内的节点,从在步骤S701中所关注的子程序块MTn正向进行节点搜索,并制作从子程序块MTn直接逐渐依存而来的节点的列表(步骤S710)。
另一方面,当在步骤S709中上述交集(Sx∩Out(MTn))为空集Φ时(步骤S709:Φ),对于块MTm内的节点,从在步骤S701中所关注的子程序块MTn正向进行语句图的搜索(节点搜索),并制作列表(步骤S711)。然后,将在步骤S711中搜索到的节点作为进行与子块MTn无关的处理的节点而从块MTm中分割出去(步骤S712)。
对所有子程序块MTn进行上述步骤S701~S712的处理。由此可以获得将子块MTn、父辈块内的通过步骤S707所提取的节点群、继承块内的通过步骤S710所提取的节点群作为子程序块MTn的抽象化块而融合了的块(以下,称作融合块)28。MT表示宏任务(macro task)。
图8和图9是用于说明接合节点重构处理的图。在图8中,标号31为子程序块,标号32为父辈块,标号33为继承块。在父辈块32中,用虚线包围的节点群34,直接逐渐依存到子程序块31。逐渐依存到别的块的节点群35作为进行与子块31无关的处理的节点而从父辈块32分割出去。
另外,在继承块33中,用虚线包围的节点群36从子程序块31直接逐渐依存而来。从别的块逐渐依存而来的节点群37作为进行与子块31无关的处理的节点而从继承块33分割出去。因此,在如图8所示的结构中,如图9所示,融合块38为用粗实线包围的部分。
(同一部分融合重构过程中的处理)
在一般的程序中,子程序可能在多个位置被调用。因此,在同一部分融合重构过程中,同一部分融合重构部14基于通过上述接合节点重构处理而获得的融合块28的信息,对于在程序的多个位置被调用的同一个子程序块,进行接合节点的比较,进一步将相同或相似的融合块相融合。
此时,只参考通过语句变量的虚拟化处理而扩展的变量的后缀中的例如高位16比特(虚拟部分)。在一般的程序表述的情况下,难以对与子程序块接合的节点的相同性进行比较。但是,像本实施例这样,通过对比较对象的后缀的虚拟部分进行比较,即使在程序中表述不同也能够容易地提取相同部分。
图10是示出同一部分融合重构处理的流程的图。如图10所示,当同一部分融合重构部14开始了同一部分融合重构处理时,首先准备所有的处理块(步骤S1001)。然后,逐个读取处理块,判断该处理块是否为子程序块(步骤S1002)。当不是子程序块时(步骤S1002:否),转入下一步的处理。
当是子程序块时(步骤S1002:是),进行紧跟其后的块的属性检索(步骤S1003)。然后,判断所读入的处理块是否为在同一个应用程序的其他位置被调用的相同的子程序(步骤S1004)。当是相同的子程序时(步骤S1004:是),对融合块进行再融合(步骤S1005),返回步骤S1002。否则(步骤S1004:否),返回步骤S1003。
图11~图13是用于说明同一部分融合重构处理的图。在图11中,标号41为子程序A的块,标号42为其融合块。在该融合块42中,父辈块侧包括:向反方向由节点N1、节点N2和节点N3按此顺序连接的节点群、以及节点N4。在融合块42中,继承块侧包括:向正方向,由节点N5和节点N6按此顺序连接的节点群、由节点N7和节点N8按此顺序连接的节点群、由节点N7和节点N9按此顺序连接的节点群。节点N8和节点N9是节点N7的分支。
另外,在图12中,标号43是在同一个应用程序的其他位置被调用的子程序A的块,标号44为其融合块。在该融合块44中,父辈块侧包括:向反方向,由节点N1、节点N2和节点N3按此顺序连接的节点群、由节点N10和节点N11按此顺序连接的节点群。在融合块44中,继承块侧包括:向正方向,由节点N5和节点N6按此顺序连接的节点群、节点N12、由节点13和节点N14按此顺序连接的节点群。
此时,如果对子程序A的块41的融合块42和在同一个应用程序的其他位置被调用的子程序A的块43的融合块44进行融合,则如图13所示,能够获得以节点N3、节点N4以及节点N11为参数、并且以节点N6、节点N8、节点N9、节点N12以及节点N14为返回值的子程序A抽象化代码API(Application Program Interface,应用程序接口)45。如上所述,通过融合最终与同一个子块接合的节点,能够更加简单地表述程序。
通常,当某一个子程序块在程序中的多个位置被调用时,有时在文档中没有清楚地记载:对于子程序块的前处理(父辈块处理)和后处理(继承块处理)在各个位置为同样的处理。此时,开发人员难以提取作为在多个位置中同样的处理的前处理(父辈块处理)和后处理(继承块处理)。
但是,在本实施例中,通过扩展语句变量的后缀,能够容易地生成对于所关注的子程序通用的前处理和后处理的包装代码(wrapping code)(抽象化代码)。并且,由于能够收集源代码中的同一节点,因此能够缩小代码本身。
(近似部分融合重构过程中的处理)
图14和图15是用于说明近似部分融合重构处理的图。在图14中,标号46为子程序B的块,标号47为该子程序B的抽象化代码API。在对于子程序B的前处理和后处理中,与图13所示的对于子程序A的块41的前处理和后处理不同点在于以下两点。
第一点是,以在图14中用虚线包围的由节点N15以及节点N16组成的节点群48来代替节点N4。第二点是,在图14中用虚线包围的节点群49中,不存在从节点N7分出的节点N9。如此,在不同的子程序中有时也进行近似的前处理或后处理。
作为具体事例,例如有:在运动图像处理的子程序中,对于MPEG(Moving Picture Experts Group)-1、MPEG-2、以及MPEG-4等运动图像处理子程序进行运动图像处理的前处理和后处理等。此时,用于输出的图像帧缓冲器的前处理、图像输出后的滤波处理等后处理是通用的。
近似部分融合重构部15自动提取这样的程序间的相似性。此时,近似部分融合重构部15通过对比较对象的后缀的虚拟部分进行比较,即使在源代码中表述不同,只要运算结构相同,就认为是相同的。
另外,近似部分融合重构部15将编成组的各块的包装代码(抽象化块)相融合。此时,近似部分融合重构部15将节点的连续关系相同的节点群看作同一个节点群融合为一个。对于节点的连续关系相同至中间的节点群,通过插入分支处理来实现进一步的融合。
例如,在图13和图14所示例子的情况下,如图15所示,近似部分融合重构部15将子程序A的块41和子程序B的块46统合为同族子程序51。并且,近似部分融合重构部15插入分支处理52,当使用子程序A时经由节点N4,当使用子程序B时经由节点N15和节点N16。
另外,近似部分融合重构部15插入分支处理53,当使用子程序A时经由节点N7以及从其分支出的节点N8或节点N9,当使用子程序B时经由节点N7和节点N8。由此获得子程序(AB群)的抽象化代码AIP54,作为对于同族子程序51的抽象化代码API。
图16是示出近似部分融合重构处理的流程的图。如图16所示,当近似部分融合重构部15开始近似部分融合重构处理时,首先准备所有子块(步骤S1601)。这里,根据获得的作为抽象化代码信息25的融合块的语句节点结构,关注某个子程序块MTn的抽象化块,将包含在其中的语句节点的集合设为Nn。
同样地,作为用于与子程序块MTn进行比较的子程序块,关注其他子程序块MTm的抽象化块,将包含在其中的语句节点的集合设为Nm。然后,判断集合Nn和集合Nm的交集(Nn∩Nm)(步骤S1602)。当集合Nn和集合Nm的交集不是空集Φ时(步骤S1602:≠Φ),逐个增加得分s(步骤S1603)。
在对子程序块MTn和子程序块MTm的所有组合进行了比较后,获得了总得分29。在步骤S1602中,当所述交集(Nn∩Nm)为空集Φ时(步骤S1602:Φ),在子程序块MTn和另一个不同的子程序块MTm之间进行同样的操作。在所有的子程序块之间进行以上的处理。
根据对嵌入的开发环境的要求,预先设定对总得分的阈值。然后,将总得分大于等于阈值的组合的子程序块编成组并作为同族子程序。按照经验,通过将总得分大于等于1、即至少具有一个相同的相当于前处理或后处理的代入及运算节点的子程序编成组,可以得到期望的效果。
这样,通过将不同子程序的块的同一节点相融合,能够缩小源代码本身。另外,通过该近似部分融合重构处理,能够从被分类为近似块的子程序中提取依赖于硬件规格的子程序。
例如,当被分类的子程序为设备驱动器时,对于设备驱动器的代码来说,相当于其前处理和后处理的包装代码(抽象化代码)对于从更上层调用包装代码的块隐藏硬件的差异。也就是说,通过近似部分融合重构处理而融合的包装代码起到与通常的设备驱动器的包装代码相同的作用。
根据实施例,通过扩展语句变量的后缀,在同一部分融合重构过程和近似部分融合重构过程中判断节点的相同性时,能够容易地判断相同性,因此能够由计算机自动地提取相同或相似的块。从而。不通过开发人员的人工操作,由计算机就能够从已有资源中自动生成可再利用的模组。
另外,作为源代码21能够输入多个源代码。此时,在同一部分融合重构过程和近似部分融合重构过程中,可以横跨多个源代码判断节点的相同性。通过输入多个源代码,能够获得可在多个代码中通用的部件,因此能够获得更大的效果。
图17是示出应用了上述模组生成处理的软件开发处理的流程的图。如图17所示,最终通过模组生成处理(步骤S1701)从已有资源61或在别处已取得实际成效的资源62中获得模组信息26和通用部分模组27,这些信息作为已登记部件工具63被嵌入在已有的开发环境中。开发人员不用开发无用的代码而是再利用从已有代码中机械地提取的部件,并通过设计辅助工具基于新的改造开发计划书64制作设计计划书65(步骤S1702)、进行编码处理(步骤S1703)。
然后,经过调试处理(步骤S1704)以及测试(步骤S1705),获得开发成果物66。从而,能够节约在后工序中的调试处理或测试中耗费的时间和精力。开发成果物66再次成为模组生成处理的对象。当这样做时,需要由开发人员人工进行的只有编码处理,因此能够缩短软件开发所需的周期。
为了调查根据上述实施例所获得的效果的程度,本发明的发明人进行了监视摄像系统、电视电话系统以及多媒体重放系统的各应用程序的开发。首先,按照传统的开发过程开发了监视摄像系统。此时,在调试过程和测试过程中,在约每100行的源代码中检测出了一个错误(bug)。
通过上述的模组生成处理对上述监视摄像系统的开发成果物进行了源代码分析,提取出了约100种的块。当使用提取出的块开发了电视电话系统时,在约每600行的源代码中检测出了一个错误,监视摄像系统的开发成果物与电视电话系统的开发成果物之间约有80%的代码是通用的。
进一步,通过上述的模组生成处理对监视摄像系统的开发成果物和电视电话系统的开发成果物进行了源代码分析,并利用该分析结果开发了多媒体重放系统,结果,在约每1000行的源代码中检测出了一个错误。并且,三个系统的开发成果物之间约有60%的代码是通用的。
之后,通过上述的模组生成处理对三个系统的开发成果物进行源代码分析,并利用该分析结果开发了对多媒体重放系统增加了功能的新系统,结果,错误发生次数为约每5000行的源代码中出现一个。并且,该新系统的开发成果物中约有90%的代码是通用的。
产业上的实用性
如上所述,本发明的模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质是对软件的开发设计有用的,特别是适于通过嵌入在用于生成已嵌入的库(library)等的链接规则的开发辅助环境、框架、或lint等的源代码检查程序等中来再利用已有资源开发新软件。
Claims (20)
1.一种模组生成装置,其特征在于,包括:
句法分析部,对程序的源代码进行句法分析,输出该分析信息;
宏块分析部,基于从所述句法分析部输出的句法分析信息,通过所述程序的结构分析将所述程序分割成多个块,并输出作为其结果而获得的块的结构信息以及用于对各块的运算模式进行虚拟化的附加信息;
接合节点重构部,基于从所述宏块分析部输出的结构信息以及附加信息,关注被定义为子程序的一个块,对于处理顺序在该关注块之前并且通过被依次处理而到达该关注块的父辈块内的节点,以与处理顺序相反的方向进行搜索,并且,对于处理顺序在该关注块之后并且从该关注块被依次处理的继承块内的节点,按照处理顺序的方向进行搜索,由此提取与该关注块直接相关的节点;
同一部分融合重构部,对于由所述接合节点重构部从整个程序中提取的使用所述关注块的多个部分,进行所述关注块的父辈块内的节点之间的比较,将该父辈块相融合,并且,进行所述关注块的继承块内的节点之间的比较,将该继承块相融合,并输出作为其结果而获得的融合块信息;
近似部分融合重构部,对于由所述接合节点重构部从整个程序中提取的不同的每个关注块,进行从所述同一部分融合重构部输出的融合块信息之间的比较,将具有相同或相似的融合块信息的多个所述关注块定义为同类的子程序,并且,进一步将相同或相似的融合块信息相融合,输出作为其结果而获得的抽象化代码信息;
中间语言重构部,输出基于从所述近似部分融合重构部输出的抽象化代码信息以及从所述句法分析部输出的分析信息而被通用化了的部件的信息。
2.如权利要求1所述的模组生成装置,其特征在于,
所述宏块分析部通过在各块中的用于识别语句的变量的编号上附加表示在该语句中唯一的编号的虚拟部分,来以表示在所述整个源代码中唯一的编号的低位部分和包含所述虚拟部分的高位部分的组合表示用于识别各语句的变量的编号,以作为用于虚拟化各块的运算模式的所述附加信息。
3.如权利要求2所述的模组生成装置,其特征在于,
所述同一部分融合重构部基于所述虚拟部分来识别变量,由此进行所述父辈块内的节点间的比较以及所述继承块内的节点间的比较。
4.如权利要求2所述的模组生成装置,其特征在于,
所述近似部分融合重构部基于所述虚拟部分来识别变量,由此进行所述融合块信息之间的比较。
5.一种模组生成方法,其特征在于,包括:
句法分析过程,对程序的源代码进行句法分析,获得该分析信息;
宏块分析过程,基于通过所述句法分析过程获得的句法分析信息,通过所述程序的结构分析将所述程序分割成多个块,并作为其结果而获得块的结构信息以及用于对各块的运算模式进行虚拟化的附加信息;
通用化过程,基于通过所述宏块分析过程获得的结构信息以及利用附加信息而虚拟化了的运算模式,进行部件的通用化。
6.如权利要求5所述的模组生成方法,其特征在于,
所述通用化过程包括接合节点重构过程,所述接合节点重构过程基于通过所述宏块分析过程获得的结构信息以及附加信息,关注被定义为子程序的一个块,对于处理顺序在该关注块之前并且通过被依次处理而到达该关注块的父辈块内的节点,以与处理顺序相反的方向进行搜索,并且,对于处理顺序在该关注块之后并且从该关注块被依次处理的继承块内的节点,按照处理顺序的方向进行搜索,由此提取与该关注块直接相关的节点。
7.如权利要求6所述的模组生成方法,其特征在于,
所述通用化过程还包括同一部分融合重构过程,所述同一部分融合重构过程对于通过所述接合节点重构过程从整个程序中提取的使用所述关注块的多个部分,进行所述关注块的父辈块内的节点之间的比较,将该父辈块相融合,并且,进行所述关注块的继承块内的节点之间的比较,将该继承块相融合,并作为其结果而获得融合块信息。
8.如权利要求7所述的模组生成方法,其特征在于,
所述通用化过程还包括近似部分融合重构过程,所述近似部分融合重构过程对于通过所述接合节点重构过程从整个程序中提取的不同的每个关注块,进行通过所述同一部分融合重构过程而获得的融合块信息之间的比较,将具有相同或相似的融合块信息的多个所述关注块定义为同类的子程序,并且,进一步将相同或相似的融合块信息相融合,并作为其结果而获得抽象化代码信息。
9.如权利要求8所述的模组生成方法,其特征在于,
所述通用化过程还包括中间语言重构过程,所述中间语言重构过程基于通过所述近似部分融合重构过程获得的抽象化代码信息以及通过所述句法分析过程获得的分析信息,获得被通用化了的部件的信息。
10.如权利要求9所述的模组生成方法,其特征在于,
在所述宏块分析过程中,通过在各块中的用于识别语句的变量的编号上附加表示在该语句中唯一的编号的虚拟部分,来以在表示所述整个源代码中唯一的编号的低位部分以及包含所述虚拟部分的高位部分的组合表示用于识别各语句的变量的编号,以作为用于虚拟化各块的运算模式的所述附加信息。
11.如权利要求10所述的模组生成方法,其特征在于,
在所述同一部分融合重构过程中,基于所述虚拟部分来识别变量,由此进行所述父辈块内的节点间的比较以及所述继承块内的节点间的比较。
12.如权利要求10所述的模组生成方法,其特征在于,
在所述近似部分融合重构过程中,基于所述虚拟部分来识别变量,由此进行所述融合块信息之间的比较。
13.一种模组生成程序,用于使计算机执行以下过程:
句法分析过程,对程序的源代码进行句法分析,获得该分析信息;
宏块分析过程,基于通过所述句法分析过程获得的句法分析信息,通过所述程序的结构分析将所述程序分割成多个块,并作为其结果而获得块的结构信息以及用于对各块的运算模式进行虚拟化的附加信息;
接合节点重构过程,基于通过所述宏块分析过程获得的结构信息以及附加信息,关注被定义为子程序的一个块,对于处理顺序在该关注块之前并且通过被依次处理而到达该关注块的父辈块内的节点,以与处理顺序相反的方向进行搜索,并且,对于处理顺序在该关注块之后并且从该关注块被依次处理的继承块内的节点,按照处理顺序的方向进行搜索,由此提取与该关注块直接相关的节点;
同一部分融合重构过程,对于通过所述接合节点重构过程从整个程序中提取的使用所述关注块的多个部分,进行所述关注块的父辈块内的节点之间的比较,将该父辈块相融合,并且,进行所述关注块的继承块内的节点之间的比较,将该继承块相融合,并作为其结果而获得融合块信息;
近似部分融合重构过程,对于通过所述接合节点重构过程从整个程序中提取的不同的每个关注块,进行通过所述同一部分融合重构过程而获得的融合块信息之间的比较,将具有相同或相似的融合块信息的多个所述关注块定义为同类的子程序,并且,进一步将相同或相似的融合块信息相融合,并作为其结果而获得抽象化代码信息;
中间语言重构过程,基于通过所述近似部分融合重构过程获得的抽象化代码信息以及通过所述句法分析过程获得的分析信息,获得被通用化了的部件的信息。
14.如权利要求13所述的模组生成程序,其特征在于,
在所述宏块分析过程中,通过在各块中的用于识别语句的变量的编号上附加表示在该语句中唯一的编号的虚拟部分,来以表示在所述整个源代码中唯一的编号的低位部分以及包含所述虚拟部分的高位部分的组合来表示用于识别各语句的变量的编号,以作为用于虚拟化各块的运算模式的所述附加信息。
15.如权利要求14所述的模组生成程序,其特征在于,
在所述同一部分融合重构过程中,基于所述虚拟部分来识别变量,由此进行所述父辈块内的节点间的比较以及所述继承块内的节点间的比较。
16.如权利要求14所述的模组生成程序,其特征在于,
在所述近似部分融合重构过程中,基于所述虚拟部分来识别变量,由此进行所述融合块信息之间的比较。
17.一种计算机可读的记录介质,其中记录有用于使计算机执行以下过程的模组生成程序:
句法分析过程,对程序的源代码进行句法分析,获得该分析信息;
宏块分析过程,基于通过所述句法分析过程获得的句法分析信息,通过所述程序的结构分析将所述程序分割成多个块,并作为其结果而获得块的结构信息以及用于对各块的运算模式进行虚拟化的附加信息;
接合节点重构过程,基于通过所述宏块分析过程获得的结构信息以及附加信息,关注被定义为子程序的一个块,对于处理顺序在该关注块之前并且通过被依次处理而到达该关注块的父辈块内的节点,以与处理顺序相反的方向进行搜索,并且,对于处理顺序在该关注块之后并且从该关注块被依次处理的继承块内的节点,按照处理顺序的方向进行搜索,由此提取与该关注块直接相关的节点;
同一部分融合重构过程,对于通过所述接合节点重构过程从整个程序中提取的使用所述关注块的多个部分,进行所述关注块的父辈块内的节点之间的比较,将该父辈块相融合,并且,进行所述关注块的继承块内的节点之间的比较,将该继承块相融合,并作为其结果而获得融合块信息;
近似部分融合重构过程,对于通过所述接合节点重构过程从整个程序中提取的不同的每个关注块,进行通过所述同一部分融合重构过程而获得的融合块信息之间的比较,将具有相同或相似的融合块信息的多个所述关注块定义为同类的子程序,并且,进一步将相同或相似的融合块信息相融合,并作为其结果而获得抽象化代码信息;
中间语言重构过程,基于通过所述近似部分融合重构过程获得的抽象化代码信息以及通过所述句法分析过程获得的分析信息,获得被通用化了的部件的信息。
18.如权利要求17所述的计算机可读的记录介质,其特征在于,
在所述宏块分析过程中,通过在各块中的用于识别语句的变量的编号上附加表示在该语句中唯一的编号的虚拟部分,来以表示在所述整个源代码中唯一的编号的低位部分以及包含所述虚拟部分的高位部分的组合来表示用于识别各语句的变量的编号,以作为用于虚拟化各块的运算模式的所述附加信息。
19.如权利要求18所述的计算机可读的记录介质,其特征在于,
在所述同一部分融合重构过程中,基于所述虚拟部分来识别变量,由此进行所述父辈块内的节点间的比较以及所述继承块内的节点间的比较。
20.如权利要求18所述的计算机可读的记录介质,其特征在于,
在所述近似部分融合重构过程中,基于所述虚拟部分来识别变量,由此进行所述融合块信息之间的比较。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2007/053676 WO2008120287A2 (ja) | 2007-02-27 | 2007-02-27 | モジュール生成装置、モジュール生成方法、モジュール生成プログラムおよび該プログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101617293A true CN101617293A (zh) | 2009-12-30 |
CN101617293B CN101617293B (zh) | 2013-05-15 |
Family
ID=39808791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200780050850.0A Expired - Fee Related CN101617293B (zh) | 2007-02-27 | 2007-02-27 | 模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8286150B2 (zh) |
JP (1) | JP4959784B2 (zh) |
CN (1) | CN101617293B (zh) |
WO (1) | WO2008120287A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013108161A1 (en) * | 2012-01-16 | 2013-07-25 | International Business Machines Corporation | Manipulating source code patches |
CN107562463A (zh) * | 2017-09-11 | 2018-01-09 | 上海航天控制技术研究所 | 一种Ada编程语言的子程序规格化定义及调用方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8473911B1 (en) * | 2010-07-23 | 2013-06-25 | Xilinx, Inc. | Documentation generation from a computer readable symbolic representation |
US8898646B2 (en) * | 2010-12-22 | 2014-11-25 | Intel Corporation | Method and apparatus for flexible, accurate, and/or efficient code profiling |
US9830134B2 (en) * | 2015-06-15 | 2017-11-28 | Qualcomm Incorporated | Generating object code from intermediate code that includes hierarchical sub-routine information |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1805368A (zh) * | 2005-01-14 | 2006-07-19 | 华为技术有限公司 | 通过半永久连接广播数据的方法 |
CN1858699A (zh) * | 2005-10-10 | 2006-11-08 | 华为技术有限公司 | 电子信息系统的软件子系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08505721A (ja) | 1992-12-23 | 1996-06-18 | タリジェント インコーポレイテッド | オブジェクト指向フレームワーク・システム |
US6546553B1 (en) * | 1998-10-02 | 2003-04-08 | Microsoft Corporation | Service installation on a base function and provision of a pass function with a service-free base function semantic |
US7386834B2 (en) * | 2002-06-28 | 2008-06-10 | Sun Microsystems, Inc. | Undo/redo technique for token-oriented representation of program code |
-
2007
- 2007-02-27 WO PCT/JP2007/053676 patent/WO2008120287A2/ja active Application Filing
- 2007-02-27 JP JP2009507281A patent/JP4959784B2/ja not_active Expired - Fee Related
- 2007-02-27 CN CN200780050850.0A patent/CN101617293B/zh not_active Expired - Fee Related
-
2009
- 2009-08-18 US US12/543,013 patent/US8286150B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1805368A (zh) * | 2005-01-14 | 2006-07-19 | 华为技术有限公司 | 通过半永久连接广播数据的方法 |
CN1858699A (zh) * | 2005-10-10 | 2006-11-08 | 华为技术有限公司 | 电子信息系统的软件子系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013108161A1 (en) * | 2012-01-16 | 2013-07-25 | International Business Machines Corporation | Manipulating source code patches |
GB2513058A (en) * | 2012-01-16 | 2014-10-15 | Ibm | Manipulating Source Code Patches |
CN104054051B (zh) * | 2012-01-16 | 2017-05-31 | 国际商业机器公司 | 操纵源代码补丁的装置和方法 |
CN107562463A (zh) * | 2017-09-11 | 2018-01-09 | 上海航天控制技术研究所 | 一种Ada编程语言的子程序规格化定义及调用方法 |
CN107562463B (zh) * | 2017-09-11 | 2020-10-27 | 上海航天控制技术研究所 | 一种Ada编程语言的子程序规格化定义及调用方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4959784B2 (ja) | 2012-06-27 |
JPWO2008120287A1 (ja) | 2010-07-15 |
US8286150B2 (en) | 2012-10-09 |
CN101617293B (zh) | 2013-05-15 |
WO2008120287A2 (ja) | 2008-10-09 |
US20090307672A1 (en) | 2009-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11829739B2 (en) | Blackbox matching engine | |
US10324695B2 (en) | Method for transforming first code instructions in a first programming language into second code instructions in a second programming language | |
US20190108001A1 (en) | Correction of code errors using machine learning | |
CN103294475A (zh) | 基于图形化业务场景和领域模板的业务自动生成系统和方法 | |
CN103440201A (zh) | 动态污点分析装置及其在文件格式逆向解析中的应用 | |
CN101866315B (zh) | 软件开发工具的测试方法及系统 | |
CN101617293B (zh) | 模组生成装置、模组生成方法、模组生成程序以及记录有该程序的记录介质 | |
CN108027748A (zh) | 指令集模拟器及其模拟器生成方法 | |
CN106776326B (zh) | 一种数据分析模型的建模方法及系统 | |
CN107622017B (zh) | 一种通用自动化软件测试的解析方法 | |
US10146530B1 (en) | Simulating and evaluating code branch merge | |
CN102707938B (zh) | 表形式软件规格制作支援方法及装置 | |
US20230088670A1 (en) | Reverse compiler | |
CN114546836A (zh) | 基于下推自动机引导的公共组件库自动化测试方法及装置 | |
US20060277510A1 (en) | Verification support device, verification support method, and computer product | |
Autili et al. | Towards a graphical tool for refining user to system requirements | |
Essebaa et al. | Model-based testing from model driven architecture: A novel approach for automatic test cases generation | |
CN110727428B (zh) | 一种转换业务逻辑层代码的方法、装置和电子设备 | |
Jordan et al. | Autoarx: Digital twins of living architectures | |
Ignaim et al. | A systematic reuse-based approach for customized cloned variants | |
Nishimoto et al. | Easy-going development of event-driven applications by iterating a search-select-superpose loop | |
Zapalowski et al. | The WGB method to recover implemented architectural rules | |
CN117806980B (zh) | 一种基于大语言模型的测试用例自动生成装置 | |
Grünbacher et al. | Feature-oriented clone and pull operations for distributed development and evolution | |
Poitou et al. | Formal architecture modeling for documenting and assessing Aeronautics Maintenance: A case study |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130515 Termination date: 20180227 |