公开/公告号CN103443766A
专利类型发明专利
公开/公告日2013-12-11
原文格式PDF
申请/专利权人 日立公共系统工程公司;
申请/专利号CN201280016907.6
发明设计人 吉田浩一;
申请日2012-03-29
分类号G06F9/44(20060101);
代理机构11228 北京汇泽知识产权代理有限公司;
代理人武君
地址 日本东京都江东区
入库时间 2024-02-19 21:44:33
法律状态公告日
法律状态信息
法律状态
2022-04-22
专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F 9/44 专利号:ZL2012800169076 变更事项:专利权人 变更前:日立社会信息服务有限公司 变更后:日立社会信息服务有限公司 变更事项:地址 变更前:日本东京都江东区 变更后:日本东京都品川区南大井6丁目26番3号
专利权人的姓名或者名称、地址的变更
2018-10-12
专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/44 变更前: 变更后: 申请日:20120329
专利权人的姓名或者名称、地址的变更
2017-04-05
授权
授权
2014-05-07
实质审查的生效 IPC(主分类):G06F9/44 申请日:20120329
实质审查的生效
2014-03-26
著录事项变更 IPC(主分类):G06F9/44 变更前: 变更后: 申请日:20120329
著录事项变更
2013-12-11
公开
公开
查看全部
技术领域
本发明涉及程序的影响范围设定装置,和利用该装置的影响范围的特定方法及受影响程序的提取方法。
背景技术
在大规模修改系统时,伴随程序的修改,针对其它的程序的影响要求提高调查的精度和作业效率。
在过去,为了调查影响,采用以“方法的调用关系”为中心的影响的调查方法。
在专利文献1(JP特开2006—277127号)中记载到,针对作为设计上的逻辑结构的模块,文件,函数,源代码的层级结构的每个而应进行比较的项目,进行定义、比较。
在专利文献2(JP特开2009—157505号)中记载到,在过去,规定分析规则,根据它,进行变更的影响分析;由于在该方法中,规则的制定需要花费时间,故存储记载有针对源代码的每个变更对象项目所假定的所有验证方法的影响分析图。
发明内容
在过去的基于方法的调用关系调查影响中,具有必须提取大量的没有影响的类/方法,指定跟踪调用关系的层级等问题。
另外,在存储影响分析图的方法中,具有构建该影响分析图需要花费许多的时间等问题。
本发明的目的在于针对上述问题,不用提取无影响的类和方法,就可以用机械方式设定影响的范围,在大规模修改系统时,可谋求提高影响调查的精度和作业效率。
本发明提供一种程序的影响范围设定装置,其特征在于:
对程序的源代码进行句法分析,分析为抽象语法树,检索形成该抽象语法树的表达式;
根据已检索的表达式,按照表达式的依赖关系,形成表达式的连接;
形成针对源代码的表达式与表达式的连接的依赖关系图表,设定处于依赖关系的影响波及范围。
本发明提供一种程序的影响波及范围设定装置,其特征在于:
对程序的源代码进行句法分析,分析为抽象语法树;
检索形成抽象语法树的表达式;
根据已检索的表达式,按照表达式的依赖关系,形成表达式的连接;
针对多个源代码,分别形成已检索的表达式的连接;
在多个源代码所具有的检索的表达式相同时,该表达式构成各自的源代码所共用的表达式;
包括该共用的表达式和表达式的连接的组合,形成而共用针对多个源代码的表达式与表达式的连接的依赖关系图表,设定处于依赖关系的影响波及范围。
另外,本发明还提供一种程序的影响波及范围的特定方法,该方法涉及采用上述程序的影响波及范围设定装置的影响范围的特定方法,其特征在于:
如果在上述依赖关系图表上,指定构成基点的表达式,则通过跟踪相对构成基点的表达式的依赖关系,指定特定影响波及范围。
本发明还提供一种受影响波及程序的提取方法,该方法涉及采用上述程序的影响波及范围设定装置的受影响波及程序的提取方法,其特征在于:
在于上述依赖关系图表上,指定构成基点的表达式时,通过跟踪相对构成基点的表达式的依赖关系,将具有表达式和表达式的连接的程序作为受影响波及的程序而抽取。
另外,在本发明中,输入源代码,但是,在这里,按照包括字节代码的概念而使用。字节代码指通过按照不依赖于特定的操作系统(OS),硬件而定义的命令而描述的可执行程序,为位于作为人画的设计图的源代码和实际上可在计算机中运行的本地代码的中间的形式,在这里,作为源代码而对待,是没有关系的。
本发明具有以下优点:按照本发明,由于象上述那样,通过源代码的句法分析,赋予表达式之间的依赖关系,进行影响波及范围的设定和指定,故不用提取没有影响的类(class)/方法(method),就可根据表达式,以机械方式设定影响波及的范围,在大规模修改系统时,可谋求提高影响调查的精度和作业效率。
附图说明
图1为通过方框表示本发明的实施例的结构图;
图2为表示本实施例所采用的引擎的结构图;
图3为表示本实施例的处理流程图;
图4为表示句法的分析例子的图;
图5为表示赋予表达式之间的依赖关系的例子的图;
图6为表示基于影响波及范围的设定的依赖关系图表的图;
图7为在图6中添加类和方法关系的图;
图8为表示图6所示的表达式和表达式的连接的具体例子的图;
图9为表示跟踪依赖关系的影响波及调查的例子的图;
图10为表示影响波及范围的结果的图;
图11为表示已有例子的影响波及的结果的图;
图12为表示已有例子的影响波及的结果的图;
图13为表示已有例子的影响波及的结果的图;
图14为表示本实施例的影响波及的结果的图。
标号的说明:
标号1表示输入单元;
标号2表示运算处理单元;
标号3表示输出单元;
标号4表示数据库;
标号5表示程序;
标号6表示构成基点的表达式;
标号7表示图像显示器;
标号8表示画面;
标号100表示程序的影响波及范围设定装置。
具体实施方式
下面结合附图及本发明的实施例对本发明作进一步详细的说明。
图1为通过方框表示的本发明的实施例的程序的影响范围设定装置结构图。
在图1中,程序的影响范围设定装置100由输入单元1,运算处理单元2,输出单元3和数据库4构成。
在输入单元1中,从外部,输入在大规模修改系统时,构成修改对象的程序5和构成基点的表达式6。
运算处理单元2包括下述处理单元(功能):
·源代码的句法分析(即,语法分析)
·抽象语法树分析
·表达式检索
·表达式连接的形成
·共用表达式的提取
·表达式的依赖关系
·图表的形成
·影响范围的设定
·影响范围的特定
输出单元3输出:
·依赖关系的跟踪
·已设定的影响范围
·已特定的影响范围,将其显示于画面显示器7的画面8中。
数据库4保存通过借助运算处理单元2而演算处理的方式形成的表达式的依赖关系图表(即,数据)。
对运算处理单元2进行说明。
源代码的句法分析单元对程序的源代码进行句法分析。
抽象语法树分析单元根据句法分析,将其分析为作为层级结构的抽象语法树。
表达式检索单元对形成抽象语法树的表达式进行检索。针对表现为抽象语法树的全部的注释(行,表达式),分析依赖关系,检索表达式。
表达式连接制作单元根据已检索的表达式,按照表达式的依赖关系,形成表达式的连接。表达式的连接针对多个源代码而形成。
共用表达式的提取单元相同时,将该表达式作为各个源代码所共用的源代码而提取。
表达式的依赖关系图表的形成单元按照与其它的程序的关系,针对包括共用的表达式和按照依赖关系而连接的表达式的组合的多个源代码,形成表达式的依赖关系图表。
影响范围设定单元根据依赖关系图表,设定处于依赖关系的影响范围。
影响范围特定单元根据已设定的影响范围,特定影响范围。
图2表示采用本实施例的引擎的结构。
引擎由语言依赖部分和语言非依赖部分构成。(1)在句法分析时,采用各种插件,比如,A分析插件,B分析插件,C分析插件。也可为1个插件。
象图2所示的那样,进行句法分析,对提取的语法树进行解析,(2)进行依赖关系分析。通过该分析,形成依赖关系,接着,(3)进行影响分析。通过该分析,形成影响结果。
图3表示处理的流程。
针对源代码,(1)进行语法分析(S1)。对仅使用源代码而缺乏的型信息,也可通过条形码等的补充信息进行补充。在这里所说的补充指仅对使用源代码而缺乏的信息进行补充的信息。指比如,Java语言的class或jar文件的信息。
(1)根据句法分析,形成抽象语法树(S2),(2)进行依赖关系分析(S3)。通过该分析结果,形成依赖关系(S4),根据影响的基点,(3)进行影响分析(S5)。通过该分析结果,形成影响结果(S6)。
图4表示通过源代码的句法分析单元和抽象语法树分析单元,分析源代码的语法,分析而形成抽象语法树。在这里,为了接近通过人员的眼睛而追踪的情况,分析源代码的各表达式的意思,将其结果变换为抽象语法树。分析抽象语法树,根据表达式用语,检索表达式。
图5表示表达式之间的依赖关系。
比如,方法调用句与调用方的方法宣言有关。象这样,不仅是方法调用,而且针对变量的利用和宣言等的全部的表达式,提供连接。将其称为依赖关系。
依赖关系用作跟踪影响的路线。
图6为表示影响范围的设定和影响范围的特定。
在图6中,记载有以表达式1和表达式2为基点的源代码的一系列的表达式的连接。
以表达式1为起点的源代码和以表达式2为起点的源代码,如果表达式5相同,则形成各自的源代码所共用的表达式。
表达式5连接有表达式7,表达式8,在表达式7上连接有表达式9。
象图所示的那样,表达式5,表达式7,表达式9在与其他的程序的关系上,形成各自的源代码所共用的表达式的连接。
包括共用的表达式和按照依赖关系而连接的表达式的组合,形成针对多个源代码的表达式的依赖关系图表,设定影响范围。影响范围的调查通过跟踪表达式的依赖关系而进行。目前,在构成起点的源代码的内部,形成以针对表达式2的源代码为基点的源代码。特定通过指定构成基点的表达式2,跟踪构成基点的表达式的依赖关系的方式设定的影响范围。
图7表示在图6所示的的状态,类,方法关系的图。
在图7中,表达式属于类,方法。
于是,可通过跟踪表达式,特定所属的类,方法。比如,表达式1属于类A的方法α。
图8通过具体例子而表示图6所示的表达式和表达式的连接。
在图8中,按照源代码的表达式单位,表示影响的路径,从表达式用语中,自动提取影响对象的表达式。
图9表示跟踪依赖关系的影响调查的例子。
图9表示特定按照Uselnfo类定义的name特性所波及的影响范围的例子。在本例子中,伴随name特性所具有的值的变更,特定必须修改或测试的范围。比如,为按照通过10位而表示的方式修正通过过去的3位表示的值的场合。
图9的说明如下述。
调查按照Uselnfo类的区域而定义的name特性的变更的影响。
(Uselnfo类的影响)
1. name特性在getName()方法和setName(String)方法中使用。
由于通过getName()方法的return句,将name特性退回,故影响getName()方法的调用程序。
Utility类的makeKey(Date,String)方法。
2.由于在setName(String)方法中,将setName(String)方法的参数的值改写为name特性,故对name特性的变更没有影响,没有被波及。
(Utility类的影响)
1.由于对userInfo.getName()的值产生影响,故影响到保存采用该值的计算结果的string变量。
2.由于string变量过渡到encryption.encrypt(String)方法,故影响到作为其计算结果的encryptedString变量,与encrypt(String)方法。
encryption类的encrypt(String)方法。
3.由于encryptedString变量为makeKey(Date,String)方法的返回值,故影响到makeKey(Date,String)方法的调用程序。
Logic类的logic()方法。
(encryption类的影响)
1.由于对encrypt(String)方法的string参数,产生影响,故对采用该值的表达式(process(string))的参数,产生影响。
2.由于对process(String)方法string的参数,产生影响,故对采用该值的(return string)表达式产生影响。由于对return句,产生影响,故对process(String)方法的返回值,产生影响,影响到process(String)方法的调用程序。
Encryption类的encrypt(String)方法(3)。
3. 通过return句,将encrypted String变量退还,故影响到encrypt(String)方法的调用程序。
Utility类的makeKey(Date,String)方法。
(Logic类的影响)
由于对Utility类的makeKey(Date,String)的返回值产生影响,故对设定该值的key变量产生影响。
由于Key变量不在此后使用,故在这里,影响结束。
图10通过处于调用关系的影响调查的比较而表示本实施例的影响范围调查的结果。在调用关系的影响调查方法中,由于大量地提取没有影响的类/方法,故需要人来判断跟踪到哪里,必须聚焦。相对该情况,在本实施例中,由于经过影响调查的结果为必要充分的结果,故不必判断跟踪到哪里。
按照本实施例,通过表达式单位对语法进行分析,可获得
·可分析表达式之间的依赖关系
·可分析处理的流程
的特征。由此,可跟踪所影响的表达式,比如,可解决以“调用关系”为中心的影响调查的问题。另外,象图6,图7所示的那样,可以机械方式判断影响的终接点。即使在无头绪码这样的情况下,仍可提取必要的表达式关系。
图11~图14具体地表示本实施例的影响范围调查的结果与处于调用关系的影响调查的比较。
图11~图13表示基于已有调用关系的影响调查的结果。具体内容在这些附图中描述。
图14为表示基于本实施例的影响调查的结果。
因此,根据这些比较,按照本实施例,无需大量提取无影响的类和方法,就可通过跟踪表达式和表达式的连接的依赖关系,特定影响范围。
象这样,本实施例可提高在大规模修改系统时所实施的影响调查的精度和作业效率。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
机译: 受影响范围通知设备,受影响范围通知系统,受影响范围通知方法和程序
机译: 影响范围识别程序,影响范围识别方法以及影响范围识别装置
机译: 用于指定用户网络和服务的受影响范围的装置和方法,以及程序