CN105278945A - 程序可视化装置、程序可视化方法及程序可视化程序 - Google Patents

程序可视化装置、程序可视化方法及程序可视化程序 Download PDF

Info

Publication number
CN105278945A
CN105278945A CN201510303251.1A CN201510303251A CN105278945A CN 105278945 A CN105278945 A CN 105278945A CN 201510303251 A CN201510303251 A CN 201510303251A CN 105278945 A CN105278945 A CN 105278945A
Authority
CN
China
Prior art keywords
module
focus
association
focus degree
data
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
Application number
CN201510303251.1A
Other languages
English (en)
Other versions
CN105278945B (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN105278945A publication Critical patent/CN105278945A/zh
Application granted granted Critical
Publication of CN105278945B publication Critical patent/CN105278945B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明的程序可视化装置针对包含在程序源代码中的模块,通过自动地选择与特定关注点关联的模块,构建表示该程序的图并显示,将该程序可视化。信息处理装置的数据解析单元针对使用模块调用关系图生成单元提取的模块,使用模块调用关系和共用数据使用关系,计算相对于用户输入的关注点的关联度。此时,通过将作为基点的关注点依赖模块的关注点关联度与作用判断表、模块间路径的关注点关联度权重数据中记录的关注点关联度权重相乘等来计算。计算出的关注点关联度使用关注点关联判断噪声修正阈值数据中记录的关注点关联度修正值进行修正。最终获得的模块关注点关联度保存在各模块关注点关联判断数据中,程序图生成控制单元根据该关注点关联度生成程序图。

Description

程序可视化装置、程序可视化方法及程序可视化程序
技术领域
本发明涉及程序可视化装置、程序可视化方法及程序可视化程序。
背景技术
程序在长期使用中由于规格变更、故障对应等而需要修改。这种程序修改被称为重构(refactoring)。在重构时,为了减轻修改负责人的负担、减少修改带来的错误的目的,有自动选择程序内所含的模块并想要通过可视化等来利用的需求。对于该需求,例如已知有下述方法:基于上述重构的关注点计算对象程序中所含的每个模块的复杂度,并选择该复杂度较高的模块。在专利文献1中,为了进一步提高重构时的效果,提出了如下方法:利用模块调用层级的衰减系数及每个调用层级的数据和模块的使用数,对每个模块计算在考虑整个程序的基础上的复杂度,并选择值较高的模块。
现有技术文献
专利文献1:国际公开第WO09/011056号
发明内容
然而,在以专利文献1为代表的以往的方法中,虽然基于重构的关注点能够自动地选择模块,但是基于其他关注点则不能自动选择模块。因此,在基于重构关注点以外的关注点将程序可视化的情况下,需要手动选择对象模块,该选择作业需要耗费工时。
本发明的一个目的在于提供一种程序可视化装置、程序可视化方法和程序可视化程序,针对程序的源代码内所含的模块,通过自动地选择与特定关注点关联的模块,构建表示该程序的图并显示,来将该程序可视化。
为了解决上述及其他问题,本发明的一种方式提供程序可视化装置,其用于以包含在程序的源代码中的模块为单位将该程序可视化,上述程序可视化装置的特征在于,包括:源代码获取单元,其用于获取作为可视化对象的上述源代码;词数据获取单元,其用于获取在上述源代码自身、或者与该源代码关联的其他源代码或数据中记述的词数据;关注点信息存储单元,其将在将上述模块可视化时要关注的关注点信息与针对各关注点信息设定的关注点关联度阈值对应地保存;关键词存储单元,其将上述词数据获取单元基于保存在上述关注点信息存储单元中的关注点信息而从上述源代码获取的上述词数据作为关键词保存;各模块关注点关联判断数据存储单元,其保存针对各上述模块设定的关注点关联度;作用判断表,其将用于计算各上述模块的关注点关联度的项目与关于关注点关联度的作为权重系数的关注点关联度权重数据对应地保存;模块间路径的关注点关联度权重数据存储单元,其将用于计算各上述模块的关注点关联度的模块间调用路径与针对各模块间调用路径设定的上述关注点关联度权重数据对应地保存;模块调用关系提取单元,其用于提取表示包含在上述源代码中的模块的相互调用关系的模块调用关系;数据解析单元,其用于针对提取出的各上述模块,考虑关于以关注点依赖模块为基点的上述模块相互间的调用关系的关注点关联度权重或记录在上述作用判断表中的关于共用数据使用关系的关注点关联度权重,来进行关注点关联度的计算,并将该计算结果保存到上述各模块关注点关联判断数据存储单元中,其中,上述关注点依赖模块为根据与保存在上述关注点信息存储单元中的上述关注点信息对应的关键词而被提取出的模块;模块提取单元,其用于从上述源代码内提取模块;可视化判断单元,其通过比较保存在上述各模块关注点关联判断数据存储单元中的各上述模块的关注点关联度与保存在上述关注点信息存储单元中的针对对应的关键词设定的关注点关联度,进行是否将从上述源代码提取出的上述模块可视化的判断;和显示输出单元,其将上述可视化判断单元判断为进行可视化的上述模块以规定格式输出。
根据本发明的一个方式,能够针对程序源代码中所含的模块,通过自动地选择与特定关注点关联的模块,构建表示该程序的图并显示,来将该程序可视化。
附图说明
图1是具有本发明的一个实施方式涉及的程序可视化装置100的信息处理系统1的硬件结构的一例的图。
图2是图1的程序可视化装置100的软件结构的一例的图。
图3是本实施方式中的关注点表213的一例的图。
图4是本实施方式中的关注点关联判断噪声修正阈值数据表214的一例的图。
图5是本实施方式中的各模块关注点关联判断数据表215的一例的图。
图6是本实施方式中的作用判断表216的一例的图。
图7是本实施方式中的模块间路径的关注点关联度权重数据表217的一例的图。
图8是本实施方式中的程序图生成流程图的一例的图。
图9是本实施方式中的模块关注点关联度计算流程图的一例的图。
图10是本实施方式中虽然相互之间没有调用关系但与关注点依赖模块有作用关系的模块的提取流程图的一例的图。
图11是本实施方式中的模块间路径的关注点关联度权重设定流程图的一例的图。
图12是本实施方式中利用了模块相互间的调用关系的、模块的关注点关联度计算流程的一例的图。
图13是本实施方式中的模块的关注点关联度修正流程图的一例的图。
图14是表示模块调用结构的一例的说明图。
图15是表示可视化后的程序图与关注点关联度变更相应地改变的状态的一例的图。
附图记号说明
100……信息处理装置
101……处理器
102……输入装置
103……辅助存储装置
104……主存储装置
105……显示装置
106……总线
107……通信装置
110……信息装置A
120……信息装置B
130……通信网络
200……源代码获取单元
201……关键词获取单元
202……数据解析单元
203……可视化判断单元
204……绘制指示单元
205……程序图生成控制单元
206……关于项目A的源代码组
207……源代码A
208……关于项目B的源代码组
209……源代码B
211……关键词DB
212……模块调用关系图生成单元
213……关注点表
214……关注点关联判断噪声修正阈值数据表
215……各模块关注点关联判断数据表
216……作用判断表
217……模块间路径的关注点关联度权重数据表
具体实施方式
下面,利用附图对本发明的一个实施方式的程序可视化装置、程序可视化方法和程序可视化程序进行详细说明。
在本实施方式中,说明针对包含多个模块的可视化对象源代码通过生成仅由与特定关注点关联的模块构成的程序图来实现可视化的方法的一例。作为特定的关注点这里以“微处理器”为例,但关注点并不限定于上述。
首先,参考图1对包含本实施方式的信息处理装置100的信息处理系统1进行说明。图1是表示本实施方式涉及的信息处理系统1中所含的信息处理装置100的硬件和系统结构的一例的图。信息处理系统1构成为包括实现本实施方式的主要功能的信息处理装置100、其他信息处理装置即称为网络存储器的可保存数据的信息装置A(110)和信息装置B(120),在它们之间通过例如互联网等通信网络130连接。在本实施方式的信息处理系统1中,在信息装置A、信息装置B中执行用于实现信息处理系统1的功能的数据处理,根据安装在信息处理装置100中的本实施方式的程序可视化功能,执行在安装在信息装置A、B中的程序修改时等所需的可视化处理。
信息处理装置100作为硬件具有:CPU(CentralProcessingUnit,中央处理器)、MPU(MicroProcessingUnit,微处理器)等处理器101、包括键盘、鼠标等数据输入设备的输入装置102、包括硬盘驱动器(HDD)、半导体驱动器(SSD)等存储设备的辅助存储装置103、包括ROM(ReadOnlyMemory,只读存储器)、RAM(RandomAccessMemory,随机访问存储器)等存储设备的主存储装置104、显示屏等显示装置105、以及安装了用于处理器101与通信网络130进行通信的功能的包括网络接口卡(NIC)等的通信装置107。此外,各装置通过总线106连接,在各装置之间可相互地发送接收数据。
接着,对信息处理装置100、信息装置A(110)和信息装置B(120)的软件结构进行说明。图2是表示本实施方式的信息处理装置100、信息装置A(110)和信息装置B(120)的功能块的一例的图。此外,在本实施方式中,设信息处理装置100的所有功能块都为由处理器101执行或操作的软件程序、数据来进行说明,但上述功能块的一部分或全部也可以作为硬件实现。此外,原本除了图2例示的功能块以外还存在进行各功能块的启动、管理等的操作系统(OS)、控制程序等,但在本实施方式中将对这些功能块的协同工作进行适当的说明,很显然OS、控制程序进行在此处适当说明的协同工作所需要的功能块的启动、动作管理,因此省略对这些OS、控制程序的说明和记载。
如图2所示,本实施方式的信息处理装置100作为功能块包括:用于获取处理对象源代码的源代码获取单元200、用于获取源代码解析的关键词的关键词获取单元201(关键词存储单元)、用于解析源代码的数据解析单元202、用于判断是否以包含在源代码中的模块为单位进行可视化的可视化判断单元203、用于执行程序图绘制的绘制指示单元204、用于管理作为可视化处理结果的程序图生成的整体处理的程序图生成控制单元205、保存源代码解析的关键词的关键词数据库(DB)211、用于生成表示源代码中所含的所有模块的调用关系的图的模块调用关系图生成单元212、包含模块可视化的关注点的关注点表213(关注点信息存储单元)、包含用于判断各模块与可视化关注点的关联度的数据的关注点关联判断噪声修正阈值数据表214(关注点关联判断修正信息存储单元)、各模块关注点关联判断数据表215(各模块关注点关联判断数据存储单元)、作用判断表216、以及模块间路径的关注点关联度权重数据表217(模块间路径的关注点关联度权重存储单元)。此外,信息装置A(110)中具有关于由信息处理系统1执行的项目A(图中简称为“PJA”)的源代码组206和源代码A(207)。源代码A(207)由模块这一单位的部分程序构成。此外,信息装置B(120)同样具有关于由信息处理系统1执行的项目B(图中简称为“PJB”)的源代码组208和源代码B(209)。源代码B209与源代码A(207)同样由模块这一单位的部分程序构成。此外,关于项目A的源代码组206和源代码A(207)、关于项目B的源代码组208和源代码B(209)不一定需要配置在上述场所,也可以保存在信息处理装置100、信息装置A(110)和信息装置B(120)中的任一个中。此外,针对上述各功能块和数据组,与信息处理装置100等的数据处理内容相关联地在下面依次说明。
在此,对本实施方式的信息处理装置100的可视化处理中使用的数据种类进行说明。首先对关注点表213进行说明。图3中表示关注点表213的一个结构例。该关注点表213由系统管理员等在信息处理装置100的运行开始前预先设定并保存在适当的存储区域内。在关注点表213中保存了表示处理对象程序中可视化的模块的关注点的词数据(worddata,字数据)和选择与该关注点关联的模块时所用的关注点关联度的阈值。在图3的例子中,作为表示关注点的词,采用分类和与分类相关的关键词对数据进行整理。例如,在微处理器这一分类下包含了SH(SuperH(注册商标))、ARM(注册商标)等属于微处理器分类的下级关键词等。此外,字节序这一分类下包含表示字节数据的排列顺序类别的LITTLE_ENDIAN(低位优先)、BIG_ENDIAN(高位优先)等关键词。这些分类和关键词在作为信息处理装置100的功能块的关键词获取单元201获取在源代码或关于源代码的开发/维护数据等中设定的宏、关键词信息等并保存到关键词DB211时使用。关注点关联度的阈值在选择与可视化处理的关注点相关联的模块时使用。关于关注点关联度的计算在后面说明,按每个模块计算关注点关联度。该模块与关注点的关联度用于与关注点表213记录的阈值相比较,来判断是否将该模块可视化。此外,与该关注点关联的模块的选择不仅用于判断是否可视化,也能够用于强调显示特定模块等其他控制。
接着,对关注点关联判断噪声修正阈值数据表214进行说明。图4表示关注点关联判断噪声修正阈值数据表214的一个结构例。该关注点关联判断噪声修正阈值数据表214由系统管理员等在信息处理装置100的运行开始前预先设定并保存在适当的存储区域内。关注点关联判断噪声修正阈值数据表214基于以下目的使用:即将本应为关注点关联度为0的模块但算出的关注点关联度比0大这样的、计算出的关注点关联度比本应有的值大的模块判断为噪声,并修正其关注点关联度。关注点关联判断噪声修正阈值数据表214中保存了噪声修正判断项目、条件、关注点、阈值和关注点关联度修正值等各项目。在图4的例子中,作为这些判断项目设定有调用源侧非关注点关联路径数、调用源侧非关注点关联路径相对于全部路径的比率(%)、以及从关注点依赖模块起的调用层数。在该判断项目中也能够设定各项目的前提条件。在图4的例子中,“调用源侧非关注点关联路径数”和“调用源侧非关注点关联路径相对于全部路径的比率(%)”的项目中,附加了为“对关注点关联度权重大于0的模块间路径进行跟踪,在调用目标侧(被调用侧)无法到达关注点关联模块且在调用源侧可到达关注点关联模块”的状况下的项目这一条件。对该判断项目和前提条件在后面详细说明。在未满足该条件的情况下,对于该判断项目判断为伪,即并非噪声修正的对象。
此外,在图4的例子中,作为用户指定的、表示模块的关注点的分类、关键词,列举了SH、微处理器和LITTLE_ENDIAN,并如图所示分别设定了阈值。在此,对关注点关联模块进行说明。关注点关联模块指以下(1)~(4)四种类型的模块。
(1)以注释或宏等形式直接记述了关于上述关注点的关键词的模块。这种类型的模块为关注点关联模块,也能够称为关注点依赖模块。
(2)在调用目标模块以直接或间接的形式具有关注点依赖模块的模块。这种类型的模块由于使用关注点依赖模块这一点而能够称为关注点关联模块。但本类型由于存在还包含不具有使用关注点依赖模块的必然性的模块的可能性,因此需要从可视化对象中排除这样的模块。
(3)在调用源以直接或间接的形式具有关注点依赖模块的模块。这种类型的模块由于被关注点依赖模块使用这一点而能够称为关注点关联模块。但本类型中存在还包含被通用地使用的模块,需要排除这样的模块。
(4)对关注点关联模块使用的数据进行代入的模块。由于为通过数据相互作用的关系,因此可称为关注点关联模块。但本类型中存在还包含仅引用共用数据的关系的模块的可能性,此时需要作为不相互作用的模块加以排除。
在本实施例中,为了简单起见,将关注点关联度为0的模块判断为非关注点关联模块,将关注点关联度大于0的模块判断为关注点关联模块。也可以不限定于此,能够将关注点关联度不到某阈值的模块判断为非关注点关联模块,将关注点关联度在某阈值以上的模块判断为关注点关联模块。
此外,在图4的例子中,作为关注点关联判断噪声修正项目列举了调用源侧非关注点关联路径数、调用源侧非关注点关联路径相对于全部路径的比率(%)、以及从关注点依赖模块起的调用层数。调用源侧非关注点关联路径的数目为,从判断对象模块回溯到调用源侧的最开始的模块时,该路径上存在的所有模块都是非关联模块的路径的数目。一般地,被与关注点不关联的模块使用得越多,判断对象模块为非关注点关联的可能性越高。调用源侧非关注点关联路径相对于全部路径的比率(%)为,从判断对象模块回溯到调用源侧的最开始的模块时,调用源侧非关注点关联路径数相对于存在的所有路径的比率。一般地,被与关注点不关联的模块使用得越多,非关注点关联路径的比率越高,判断对象模块为非关注点关联的可能性越高。从关注点依赖模块起的调用层数为判断对象模块与从该模块起最近的关注点依赖模块之间的调用层数。一般地,由于关注点关联模块彼此为较近的调用关系,所以距关注点依赖模块越远,则判断对象模块为非关注点关联的可能性越高。在本实施例中,作为关注点关联判断噪声修正项目的判断为真时的关注点关联修正值使用0,将该模块作为非关注点关联模块处理。
接着,对各模块关注点关联判断数据表215进行说明。图5表示各模块关注点关联判断数据表215的一个结构例。各模块关注点关联判断数据表215由系统管理员等在信息处理装置100的运行开始前预先设定并保存在适当的存储区域内。各模块关注点关联判断数据表215中保存对可视化对象程序中所含的各模块计算出的关注点关联度。在图5的例子中,针对作为对各模块意味着关注点的关键词或分类的SH、微处理器等,记录了作为可视化对象源代码内的模块的模块A、模块B、以及模块C或模块D的关注点关联度。关注点关联度的值为0~1的范围的数值,在非关注点关联的情况下为0,关注点关联越强则数值越大。
接着,对作用判断表216进行说明。图6表示作用判断表216的一个结构例。作用判断表216由系统管理员等在信息处理装置100的运行开始前预先设定并保存在适当的存储区域内。作用判断表216中,保存了用于通过检查判断对象模块是否与关注点关联模块通过数据的共用使用而相互作用来判断模块之间是否存在关联的项目。这些判断项目根据判断状况而适当使用,根据是否是存在模块调用关系时被限定的项目来分类。作为被限定于模块调用关系的项目,例如能够列举“是否通过引用传递接收变量并向该变量进行了代入”以及“是否通过变量接收返回值并使用了返回值”的项目。此外,作为不限定于模块调用关系的项目,例如能够列举“是否对关注点关联模块使用的全局变量进行了代入”、“是否对关注点关联模块使用的文件进行了代入”的项目。针对“是否通过变量接收返回值并使用了返回值”的项目,通过限定于用例如可作为在中断处理等中使用的标志(flag)而使用的变量接收该返回值来使用的情况、在错误值检查中使用的情况等,能够以更高精度判断对程序修改等负责人而言更有意义的作用关系。作用判断表216中在每个判断项目中记录了按关注点的关注点关联度权重数据(以下简称为“关注点关联度权重”)。该关注点关联度权重为在计算模块的关注点关联度时或者在设定模块间的调用路径的关注点关联度权重时使用的值,对此在后面说明。
接着,对模块间路径的关注点关联度权重数据表217进行说明。图7表示模块间路径的关注点关联度权重数据表217的一例。模块间路径的关注点关联度权重数据表217由系统管理员等在信息处理装置100的运行开始前预先设定并保存在适当的存储区域内。模块间路径的关注点关联度权重数据表217中,按程序可视化时的每个关注点记录针对模块间的调用路径设定的关注点关联度权重。模块间路径的关注点关联度权重数据表217中记录的关注点关联度权重利用在图6的作用判断表216中记录的关注点关联度权重进行设定,对于其处理内容在后面说明。
接着,对通过本实施方式的信息处理装置100将程序可视化的处理进行说明。图8表示信息处理装置100对安装在图2的信息装置A(110)中的源代码A(207)进行可视化处理的处理流程的一例。
根据来自信息处理装置100的输入装置102的指示等,程序图生成控制单元205开始生成程序图(S800)。在本实施方式中示出了作为程序图并非将程序内的所有模块可视化、而是生成仅由与“微处理器”关联的模块构成的程序图的例子。
首先,程序图生成控制单元205通过输入装置102等接受源代码组206中要可视化的源代码的指定。在本实施方式中,作为可视化对象源代码,指定了信息装置A的源代码A。如果指定了可视化对象源代码,则源代码获取单元200经由通信装置107从关于项目A(PJA)的源代码组206中获取作为可视化对象的源代码A(S801)。在预测到源代码组206的规模巨大、源代码A的检索需要时间的情况下,能够根据用户指示将预测到要使用的文件预先移动或拷贝到例如信息处理装置100等能够高速检索的存储区域。
接着,关键词获取单元201获取关于在S801中获取的可视化对象源代码A所属的项目A的源代码组206中设定的宏、关键词信息,并保存在关键词DB211中(S802)。此时,也可以参考关注点表213的关键词的分类,保存到关键词DB211中。这样,能够例如如作为关键词的SH与作为包含其的分类的微处理器一样,包含了关键词的上层概念而集中。此外,在本例中,作为关键词获取单元201获取的关键词,列举了源代码内记述的宏、关键词,但并不限定于上述,例如能够使用变量名、函数名等各种记述内容。进一步地,作为获取关键词的对象,并不限定于关于可视化对象源代码A所属的项目A的源代码组206,还能够使用关于与可视化对象无关的源代码B(209)所属的项目B(PJB)的源代码组208等各种源代码及关于其的开发/维护数据。
然后,程序图生成控制单元205经由输入装置102接受保存在关键词DB211中的关注点(关键词/分类)的指定。此时,通过使用分类的概念,不仅能够将一个关键词,还能将相关的多个关键词一并用于模块选择。在本例中,用户指定作为分类的微处理器作为关注点。此外,程序图生成控制单元205从输入装置102接收关注点关联判断噪声修正项目的指定。在本例中,作为关注点关联判断噪声修正项目,假定有作为关注点关联判断噪声修正阈值数据表214中列举的项目的调用源侧非关注点关联路径数、调用源侧非关注点关联路径相对于全部路径的比率(%)、以及从关注点依赖模块起的调用层数。在此,用户指定调用源侧非关注点关联路径数作为关注点关联判断噪声修正项目。此外,作为关注点关联判断噪声修正项目并不限定于上述列举的项目,并且作为噪声去除项目,并不限定于仅一个选择,也能够同时使用多个项目。此外,关注点关联判断噪声修正项目不一定要由用户输入,能够考虑如自动地优先选择使用率高的项目一样的各种选择方法。
然后,模块调用关系图生成单元212生成在S801中用户指定的可视化对象源代码A内定义的模块或关于在源代码A内调用的模块的调用关系图(S804)。此时,不仅考虑从与源代码A相关的模块直接调用的模块、以及直接调用与源代码A相关的模块的模块,还包含从与源代码A相关的模块间接调用的模块和间接调用与源代码A相关的模块的模块来生成调用关系图。此时,也可进一步地考虑源代码编译时指定的编译选项(compileroption)、#pragma等内容。
然后,数据解析单元202针对在S804中生成的模块调用关系图中所含的所有模块,进行关注点关联度的计算,将结果保存在各模块关注点关联判断数据表215中(S805)。此外,本处理内容在后面详细说明。
然后,程序图生成控制单元205在S801中获取的源代码A中所含的尚未进行可视化判断的模块中获取一个模块作为可视化判断对象模块(S806)。接着,可视化判断单元203判断是否将该模块可视化(S807)。此时,将各模块关注点关联判断数据表215中保存的每个模块的关注点关联度与关注点表213中保存的在S803中用户指定的关注点的阈值进行比较,在判断为前者的值大于后者的值的情况下(S807,是),接着绘制指示单元204显示该模块(S808)。在判断为关注点关联度的值比阈值小的情况下(S807,否),绘制指示单元204不显示该模块(S809)。
然后,程序图生成控制单元205判断在S801中获取的源代码A中是否仍有未进行可视化判断的模块(S810)。在判断为有未进行可视化判断的模块的情况下(S810,是),程序图生成控制单元205返回S806的处理。在判断为没有未进行可视化判断的模块的情况下(S810,否),程序图生成控制单元205结束程序图生成处理(S811)。通过以上的程序图生成处理,能够生成包含可视化对象程序中与关注点关联度相应的模块的程序图。
接着,对图8例示的程序图生成处理中的模块的关注点关联度计算处理进行说明。图9中表示模块的关注点关联度计算处理(图8的S805)的处理流程的例子。当在S900中开始处理时,首先数据解析单元202将与在S804中生成的模块调用关系图相关的所有模块的名称记录到各模块关注点关联判断数据表215,从与在S804中生成的模块调用关系图相关的所有模块中提取关注点依赖模块(S901)。此时,本例中利用关于源代码A所属的项目A的源代码组206的所有源代码,在作为在S803中用户指定的关注点指定了关键词的情况下提取包含该关键词的记述的模块,或者在指定了分类的情况下提取有关注点表213中记录的一个或多个分类内关键词中的任一个关键词的记述的模块,作为关注点依赖模块。在本例中,假定用户指定了微处理器分类的情况。在关注点表213中微处理器分类中记录了SH和ARM这两个关键词,因此提取有这些关键词中的任一个的记述的模块作为关注点依赖模块。对于在S901中提取的关注点依赖模块,在各模块关注点关联判断数据表215的关注点关联度中记录1。在此作为记录的关注点关联度也可以记录1以外的值。此外,在提取关注点依赖模块的本处理中使用的源代码组并不限定于关于可视化对象源代码A所属的项目A的源代码组206,如果其他项目的源代码例如关于项目B的源代码组208能够使用,则也可适当地使用。
然后,数据解析单元202以在S901中提取出的关注点依赖模块(各模块关注点关联判断数据表215中记录的关注点关联度为1的关注点关联模块)为基点,并不限定于是否相互有调用关系,提取与该模块有通过共用数据的作用关系的模块,作为关注点关联模块(S902)。本处理内容在后面详细说明。
然后,数据解析单元202设定与在S804中生成的模块调用关系图相关的所有模块之间存在的调用路径的关注点关联度权重(S903)。本处理内容在后面详细说明。
然后,数据解析单元202利用模块的调用关系进行模块的关注点关联度计算(S904)。本处理内容在后面详细说明。
接着,数据解析单元202进行在S904中计算出的模块关注点关联度的修正(S905)。本处理内容在后面详细说明。通过以上的处理,能够对关注点依赖模块及与其有调用关系的模块计算作为是否进行可视化的判断指标的关注点关联度。
图10表示提取虽然相互没有调用关系但与关注点依赖模块有通过共用数据的作用关系的模块作为关注点关联模块时的一例的流程图。本流程是对图9例示的模块的关注点关联度计算处理中S902的处理的详细化。此外,图10的例子中以关注点依赖模块为基点进行S902的处理,但也能够以关注点关联度被判断为一定阈值以上的模块为基点进行S902的处理。
当在图10的S1000中开始本处理时,首先数据解析单元202选择一个仍未进行S901的处理的关注点依赖模块(A)(S1001)。在图10的例子中,该模块为各模块关注点关联判断数据表215中记录的、关注点关联度被判断为1的模块。
然后,数据解析单元202提取并不限定于相互是否有调用关系、而是与模块(A)有作用关系的模块(S1002)。S1002中提取的模块在计算出模块关注点关联度后,将该值记录在各模块关注点关联判断数据表215中。此外,作为此时的判断项目,使用在作用判断表216中记录的“不限定于调用关系”的状况下使用的项目。在图10的例子中,在判断中使用上述中“是否对关注点关联模块使用的全局变量进行了代入”的项目。在本处理中提取的模块的关注点关联度,使用有作用关系的模块的关注点关联度乘以作用判断表216记录的关注点关联度权重所得的值,并将该计算值记录在各模块关注点关联判断数据表215中。在图10的例子中,根据图6的例子,将微处理器依赖模块的关注点关联度1乘以关注点关联度权重0.8而得到的数值0.8作为关注点关联度。在此,假定了由用户指定微处理器这一分类的情况,但判断项目并不限定于本例中使用的项目,也能够使用“是否对关注点关联模块使用的文件进行了代入”等其他项目,或者也能够一起使用多个判断项目。
然后,数据解析单元202判断在图9的S901中提取的关注点依赖模块中是否仍有未进行S901的处理的模块(S1003)。在判断为有未进行S901的处理的模块的情况下(S1003,否),数据解析单元202返回S1001并获取未处理的关注点依赖模块。在判断为所有的关注点依赖模块都进行了S901的处理的情况下(S1003,是),数据解析单元202离开本处理流程,进入图9的S902的处理。通过以上的处理流程,能够提取不限定于调用关系而与关注点依赖模块有作用关系的模块。
然后,对图9例示的模块的关注点关联度计算处理流程中的模块间路径的关注点关联度权重设定处理进行说明。图11表示利用模块之间的调用关系以及通过共用数据的直接或间接的作用关系来进行与在图8的S804中生成的模块调用关系图相关的所有模块之间存在的调用路径的关注点关联权重设定时的流程的例子。本流程将图9的S903的处理详细化。作为本处理流程的判断项目,使用图6的作用判断表216中记录的“限定于调用关系”的状况下所使用的项目。通过使用这些项目,对模块间路径设定利用了调用关系的、作为表示模块间通过数据的作用关系的程度的指标的关注点关联度权重,能够用于后面进行的每个模块的关注点关联度计算。
当在S1100中开始处理时,数据解析单元202在与图8的S804中生成的模块调用关系图相关的所有模块中选择一个还未进行S903的处理的模块(B)(S1101)。接着,数据解析单元202进行所选择的模块(B)与其调用目标模块(B1)之间的模块间路径的关注点关联度权重设定。此外,这时在图11的例子中,作为权重设定所用的项目,使用图6的作用判断表216中记录的“限定于调用关系”的状况下使用的项目。在本例中,使用“是否通过引用传递来接收变量并对该变量进行了代入”的项目。即,数据解析单元202判断模块(B)的调用目标模块(B1)是否为通过引用传递从(B)接收变量并向该变量进行代入的模块,在判断为是通过引用传递从模块(B)接收变量并向该变量进行代入的模块的情况下(S1102,是),作为模块(B)-(B1)间的路径的关注点关联度权重,使用图6的作用判断表216记录的关注点关联度权重。由于这里关注点为微处理器,根据图6作为关注点关联度权重,将0.8记录到模块间路径的关注点关联度权重数据表217中(S1103)。在判断为并非通过引用传递从模块(B)接收变量并向该变量进行代入的模块的情况下(S1102,否),作为模块间路径的关注点关联度权重使用0作为权重,记录到模块间路径的关注点关联度权重数据表217中(S1104)。当对所有的调用目标模块的判断结束时,数据解析单元202前进至S1105的处理。此外,本例中设判断为并非通过引用传递从模块(B)接收变量并向该变量进行代入的模块的情况下的关注点关联度权重为0,但也能够使用其他值。
接着,数据解析单元202进行在S1101中获取的模块(B)与其调用源模块(B0)之间的模块间路径的关注点关联度权重设定。此外,这时作为权重设定所用的项目,使用图6的作用判断表216中记录的“限定于调用关系”的状况下使用的项目。在本例中,使用图6的“是否通过变量接收返回值并加以使用”的项目。在判断为通过变量接收返回值并加以使用的情况下(S1105,是),数据解析单元202使用图6的作用判断表216记录的关注点关联度权重作为该模块间路径的关注点关联度权重。即,在图6的例子中,由于关注点为微处理器,所以作为关注点关联度权重在模块间路径的关注点关联度权重数据表217中记录0.5(S1106)。在判断为通过变量接收返回值但并未加以使用的情况下(S1105,否),在本例中数据解析单元202使用0作为该模块间路径的关注点关联度权重,记录到模块间路径的关注点关联度权重数据表217中(S1107)。
当所有的调用目标模块的判断结束时,数据解析单元202前进至S1108。此外,S1102、S1105的判断处理中判断结果为伪的情况下的关注点关联度权重在图11的例子中设定为0,但也能够使用其他值。此外,在S1103、S1104、S1106、S1107中,将关注点关联权重记录到模块间路径的关注点关联度权重数据表217中时,也能够想到存在已经记录有值的情况。此时,能够考虑使用已记录的值与本次的值中更大的值、或设定两个值的平均值等处理。在本例中,在这种情况下使用更大的值。此外,在本例中,如S1102、S1105一样进行到调用目标模块的路径和到调用源模块的路径的关注点关联度设定,但不一定需要两者都进行。
然后,数据解析单元202判断与在图8的S804中生成的模块调用关系图相关的所有模块中是否有未进行S903的处理的模块(S1108)。在判断为有未进行S903的处理的模块的情况下(S1108,是),数据解析单元202返回S1101的处理,获取下一模块(B)。在判断为对所有的模块都进行了S903的处理的情况下(S1108,否),数据解析单元202离开本处理流程,前进至图9的S904。
接着,对利用调用关系的模块的关注点关联度计算处理进行说明。图12表示在图9的S904中对与在图8的S804中生成的模块调用关系图相关的所有模块进行的模块关注点关联度计算处理的处理流程的一例。
在S1200中开始处理时,首先数据解析单元202获取各模块关注点关联判断数据表215中记录的模块中关注点关联度的值为规定阈值以上的所有模块(C)(S1201)。在本例中,获取关注点关联度的数值为1以上的所有模块、即关注点依赖模块。
然后,数据解析单元202获取各模块关注点关联判断数据表215中没有记录关注点关联度的一个模块作为计算关注点关联度的对象模块(S1202)。
然后,数据解析单元202从在S1202中获取的对象模块开始沿模块间路径的关注点关联度权重数据表217记录的关注点关联度权重的数值大于0的模块间路径跟踪,判断在调用目标侧或调用源侧方向上是否能到达模块(C)(S1203)。以后将这些可到达的模块(C)全都一并称为“可到达模块”。在判断为在调用目标侧或调用源侧方向上能到达模块(C)的情况下(S1203,是),数据解析单元202前进至步骤S1204。在步骤S1204中,数据解析单元202计算对象模块的关注点关联度,并记录到各模块关注点关联判断数据表215中。这时可考虑多个关注点关联度的计算方法。在本例中,对所有的可到达模块进行将可到达的模块(C)的关注点关联度与已经到达了的所有调用路径的关注点关联度权重相乘的计算,取这些计算结果之和作为对象模块的关注点关联度。
在判断为在调用目标侧或调用源侧方向上不能到达模块(C)的情况下(S1203,否),数据解析单元202将对象模块的关注点关联度设定为0,并记录到各模块关注点关联判断数据表215中。此外,模块(C)相对于关联度计算对象模块的调用层数并不一定需要是第一层调用目标或第一层调用源的模块,也可以为从调用目标或从调用源起的第二层以后的模块。图14表示该调用层数的详细内容。如图14所示,将直接调用对象模块的模块定义为第一层调用源的模块,将直接调用第一层调用源的模块定义为第二层调用源的模块。同样地,从对象模块被直接调用的模块为第一层调用目标的模块,从第一层调用目标的模块被直接调用的模块为第二层调用目标的模块。
然后,数据解析单元202判断是否存在各模块关注点关联判断数据表215中没有记录关注点关联度的模块(S1206)。在判断为存在各模块关注点关联判断数据表215中没有记录关注点关联度的模块的情况下(S1206,是),数据解析单元202通过S1202获取下一关联度计算对象模块。在判断为不存在各模块关注点关联判断数据表215中没有记录关注点关联度的模块的情况下(S1206,否),数据解析单元202离开图12的处理流程,前进至图9的S905。
接着,对模块的关注点关联度的修正处理进行说明。图13表示各模块关注点关联判断数据表215中记录的所有模块的关注点关联度的修正处理的处理流程的例子。本处理流程将图9的S905详细化。
在S1300中开始处理时,数据解析单元202选择与在图8的S804中生成的模块调用关系图相关的所有模块中未记录在列表中的一个模块,其中该列表是为了掌握在S1301中选择的模块而生成的。然后,将本处理中选择的模块追加到上述列表(S1301)。
然后,数据解析单元202对在S1301中选择的对象模块,判断是否进行各模块关注点关联判断数据表215中记录的关注点关联度的修正。具体而言,如图13所示,这一系列的修正处理在S1302~S1304的流程中进行。作为本例所用的是否进行修正的判断项目,使用关注点关联判断噪声修正阈值数据表214中记录的项目。在本例中,通过调用源侧存在的非关注点关联的路径数的项目进行判断,但也能够使用除此之外的判断项目。此外,根据关注点关联判断噪声修正阈值数据表214,对本判断项目指定了条件,需要从在S1301中选择的对象模块开始,沿着关注点关联度权重大于0的模块间路径跟踪,在调用目标侧无法到达关注点关联度比0大的模块,并且在调用源侧能够到达关注点关联度比0大的模块。这是因为在本例中使非关注点关联的定义为关注点关联度为0。在使非关注点关联的定义为模块的关注点关联度为某阈值以下的情况下,上述条件成为:在调用目标侧无法到达关注点关联度比该阈值大的模块,并且在调用源侧能够到达关注点关联度比该阈值大的模块。数据解析单元202判断是否上述条件成立并且在调用源侧存在非关注点关联的路径(S1302)。在判断为上述条件成立并且在调用源侧存在非关注点关联的路径的情况下(S1302,是),数据解析单元202前进至S1302。在判断为上述条件不成立或者在调用源侧不存在非关注点关联的路径的情况下(S1302,否),数据解析单元202不进行关注点关联度的修正,前进至步骤S1305。
然后,数据解析单元202对于在S1302中的判断为真的模块,判断在图8的S803中用户指定的关注点关联判断噪声修正项目的值是否为关注点关联判断噪声修正阈值数据214中记录的阈值以上(S1303)。在判断为关注点关联判断噪声修正项目的值为关注点关联判断噪声修正阈值数据214中记录的阈值以上的情况下(S1303,是),数据解析单元202将作为处理对象的模块作为关注点关联度的修正对象,前进至S1304。在判断为关注点关联判断噪声修正项目的值未达到关注点关联判断噪声修正阈值数据214中记录的阈值的情况下(S1303,否),数据解析单元202不进行关注点关联度的修正,前进至步骤S1305。此外,在本例中,由于在图8的S803中假定用户指定微处理器作为分类,并且用户指定“调用源侧非关注点关联路径数”作为关注点关联判断噪声修正项目,因此从关注点关联判断噪声修正阈值数据表214使用的阈值为1。即,只要在对象模块的调用源侧存在一条非关注点关联路径,就成为关注点关联度的修正对象。
然后,数据解析单元202对在S1302、S1303中选择的对象模块进行各模块关注点关联判断数据表215中记录的关注点关联度的修正。在修正中使用在判断是否进行修正时使用的、关注点关联判断噪声修正阈值数据表214记录的项目的关注点关联度修正值。在本例中,由于在图8的S803中假定用户指定微处理器作为分类,并且用户指定调用源侧非关注点关联路径数作为关注点关联判断噪声修正项目,因此修正值为0。数据解析单元202将记录在各模块关注点关联判断数据表215中的对象模块的关注点关联度乘以修正值0所得的值作为对象模块的关注点关联度,记录到各模块关注点关联判断数据表215中(S1304)。
然后,数据解析单元202判断本次该处理中是否有进行了修正的模块(S1305)。在判断为本次该处理中有进行了修正的模块的情况下(S1305,是),数据解析单元1305清空对象模块列表,前进至S1301(S1306)。在判断为本次该处理中没有进行了修正的模块的情况下(S1305,否),数据解析单元1305前进至S1307。
在S1307中,数据解析单元202判断与在图8的S804中生成的模块调用关系图相关的所有模块中是否有未记录在列表中的模块,其中该列表是为了掌握该在S1301中选择的模块而生成的。在判断为有未记录在该列表中的模块的情况下(S1307,是),数据解析单元202前进至S1301。在判断为没有未记录在该列表中的模块的情况下(S1307,否),数据解析单元202离开本处理流程,从图9的S906前进至图8的S806。
如上所述,根据本实施方式的信息处理装置100,解决了如下问题,即能够自动地选择重构关注点下的模块而不能选择其他关注点下的模块、因此需要人工选择对象模块、模块选择中耗费工时的问题,通过利用模块的调用关系与共用数据的使用关系,自动地选择源代码内所含的与特定关注点相关联的模块来构建、显示程序图,能够减少可视化工时。
图15表示通过本实施方式的信息处理装置100可视化的程序的例子。图15中例示的程序图1500表示构成对象程序的模块和模块间的数据路径。在利用本发明的可视化方法生成的程序图中,通过改变关注点关联度的阈值或关注点关联判断噪声修正阈值,能够改变其显示的模块。根据使用本程序图的目的、意图不同,在图中以何种程度包含关注点关联度、噪声模块的想法也不同。因此,例如如图15所示,作为关注点表213中记录的关注点关联度的阈值的替代,通过调整关注点关联度阈值滑动条1501将其值用作阈值,能够根据程序图使用的目的、意图来适当地更新程序图。此外,在本实施例中,将模块的关注点关联度用于是否显示模块,但并不限定于上述,能够考虑用于是否强调显示模块等各种使用方法。
此外,本发明并不限定于上述实施方式,而是包含了各种变形例。例如,上述实施方式是为了对本发明简单易懂地说明而进行的详细说明,并非限定于必须具备所说明的全部的结构。此外,能够将实施方式的结构的一部分替换成其他的结构,或者也能够在某实施方式的结构中添加其他结构。

Claims (12)

1.一种程序可视化装置,其用于以包含在程序的源代码中的模块为单位将该程序可视化,所述程序可视化装置的特征在于,包括:
源代码获取单元,其用于获取作为可视化对象的所述源代码;
词数据获取单元,其用于获取在所述源代码自身、或者与该源代码关联的其他源代码或数据中记述的词数据;
关注点信息存储单元,其将在将所述模块可视化时要关注的关注点信息与针对各关注点信息设定的关注点关联度阈值对应地保存;
关键词存储单元,其将所述词数据获取单元基于保存在所述关注点信息存储单元中的关注点信息而从所述源代码获取的所述词数据作为关键词保存;
各模块关注点关联判断数据存储单元,其保存针对各所述模块设定的关注点关联度;
作用判断表,其将用于计算各所述模块的关注点关联度的项目与关于关注点关联度的作为权重系数的关注点关联度权重数据对应地保存;
模块间路径的关注点关联度权重数据存储单元,其将用于计算各所述模块的关注点关联度的模块间调用路径与针对各模块间调用路径设定的所述关注点关联度权重数据对应地保存;
模块调用关系提取单元,其用于提取表示包含在所述源代码中的模块的相互调用关系的模块调用关系;
数据解析单元,其用于针对提取出的各所述模块,考虑关于以关注点依赖模块为基点的所述模块相互间的调用关系的关注点关联度权重或记录在所述作用判断表中的关于共用数据使用关系的关注点关联度权重,来进行关注点关联度的计算,并将该计算结果保存到所述各模块关注点关联判断数据存储单元中,其中,所述关注点依赖模块为根据与保存在所述关注点信息存储单元中的所述关注点信息对应的关键词而被提取出的模块;
模块提取单元,其用于从所述源代码内提取模块;
可视化判断单元,其通过比较保存在所述各模块关注点关联判断数据存储单元中的各所述模块的关注点关联度与保存在所述关注点信息存储单元中的针对对应的关键词设定的关注点关联度,进行是否将从所述源代码提取出的所述模块可视化的判断;和
显示输出单元,其将所述可视化判断单元判断为进行可视化的所述模块以规定格式输出。
2.如权利要求1所述的程序可视化装置,其特征在于,包括:
关注点关联判断修正信息存储单元,其将针对各所述模块设定的所述关注点关联度与用于对是否将该模块可视化的基准进行修正的判断项目、判断条件、所述关注点信息、判断阈值、以及关注点关联度修正值对应地作为关注点关联判断修正信息保存;和
关注点关联度修正单元,其针对计算出所述关注点关联度的模块,将计算出的所述关注点关联度的值与从该关注点关联判断修正信息存储单元获取的阈值或用户指定的阈值比较并获取对应的关注点关联度修正值,使用该关注点关联度修正值来修正所述关注点关联度,并将修正结果保存到所述各模块关注点关联判断信息存储单元中。
3.如权利要求1所述的程序可视化装置,其特征在于:
所述关注点关联度修正单元,针对在调用目标或调用源中存在所述关注点关联模块的模块,将所述关注点关联判断修正项目的值与从所述关注点关联判断修正信息存储单元获取的阈值或用户指定的阈值比较,在所述关注点关联判断修正项目的值比从所述关注点关联判断修正信息存储单元获取的阈值或用户指定的阈值大的情况下,进行所述关注点关联度的修正,在所述关注点关联判断修正项目的值比所述任一阈值小的情况下,不进行所述关注点关联度的修正。
4.如权利要求3所述的程序可视化装置,其特征在于:
所述关注点关联度修正单元,使用以各所述关注点依赖模块为基准的至调用源侧模块的非关注点关联路径数、所述非关注点关联路径相对于至调用源侧模块的全部路径的比率或从所述关注点依赖模块起的调用层数作为关注点关联判断修正项目,在所述关注点关联判断修正项目的值比从该关注点关联判断修正信息存储单元获取的阈值或用户指定的阈值大的情况下,进行所述关注点关联度的修正,在所述关注点关联判断修正项目的值比所述任一阈值小的情况下,不进行所述关注点关联度的修正。
5.如权利要求1所述的程序可视化装置,其特征在于:
所述数据解析单元,对于在所述关注点依赖模块的调用目标或调用源侧存在1个关注点关联模块的所述模块,将针对到达该关注点关联模块为止存在的全部调用路径设定的所述关注点关联度权重系数与针对该关注点关联模块计算出的所述关注点关联度相乘,来计算所述关注点关联度。
6.如权利要求5所述的程序可视化装置,其特征在于:
所述数据解析单元,对于在调用目标或调用源侧存在多个关注点关联模块的模块,通过将基于各关注点关联模块计算出的关注点关联度全部相加,来计算关注点关联度。
7.如权利要求1所述的程序可视化装置,其特征在于:
所述数据解析单元判断多个所述模块是否使用共用数据,并使用与该判断结果对应的关注点关联度权重系数来计算各所述模块的关注点关联度。
8.如权利要求7所述的程序可视化装置,其特征在于:
所述数据解析单元在判断多个所述模块是否使用共用数据时,使用与各所述模块的调用关系无关的共用数据使用判断项目或与各所述模块的调用关系相关的所述共用数据使用判断项目,在使用与各所述模块的调用关系相关的所述共用数据使用判断项目的情况下,针对所述模块间的调用路径设定关注点关联度权重。
9.如权利要求6所述的程序可视化装置,其特征在于:
所述数据解析单元,使用多个所述模块是否向共用的全局变量进行了代入、是否向共用文件或DB进行了写入、是否通过引用传递来接收变量并向该变量进行了代入、或者是否通过变量接收返回值并使用了返回值的判断基准作为多个所述模块是否使用共用数据的判断项目,在满足任一判断基准的情况下,使用与各项目对应的关注点关联度权重,计算各所述模块的关注点关联度。
10.如权利要求1所述的程序可视化装置,其特征在于:
所述数据解析单元在判断多个所述模块是否使用共用数据时,在使用与所述模块相互间的调用关系无关的共用数据使用判断项目之后,使用与所述模块相互间的调用关系相关的所述共用数据使用判断项目。
11.一种程序可视化方法,其用于以包含在程序的源代码中的模块为单位将该程序可视化,所述程序可视化方法的特征在于:
由具有处理器和存储器的计算机执行下述步骤:
获取作为可视化对象的所述源代码的步骤;
获取在所述源代码自身、与该源代码关联的其他源代码或数据中记述的词数据的词数据获取步骤;
将在将所述模块可视化时要关注的关注点信息与针对各关注点信息设定的关注点关联度阈值对应地保存的步骤;
将在所述词数据获取步骤中基于被保存的所述关注点信息而从所述源代码获取的所述词数据作为关键词保存的步骤;
保存针对各所述模块设定的关注点关联度的步骤;
将用于计算各所述模块的关注点关联度的项目与关于关注点关联度的作为权重系数的关注点关联度权重对应地保存的步骤;
将用于计算各所述模块的关注点关联度的模块间调用路径与针对各模块间调用路径设定的所述关注点关联度权重数据对应地保存的步骤;
提取表示包含在所述源代码中的模块的相互调用关系的模块调用关系的步骤;
针对提取出的各所述模块,考虑关于以关注点依赖模块为基点的所述模块相互间的调用关系的关注点关联度权重数据或记录在所述作用判断表中的关于共用数据使用关系的关注点关联度权重数据,来进行关注点关联度的计算并保存该计算结果的步骤,其中,所述关注点依赖模块为根据与所述保存的所述关注点信息对应的关键词而被提取出的模块;
从所述源代码内提取模块的步骤;
通过比较所述保存的各所述模块的关注点关联度与所述保存的针对对应的关键词设定的关注点关联度,进行是否将从所述源代码提取出的所述模块可视化的判断的步骤;和
将判断为进行可视化的所述模块以规定格式输出的步骤。
12.一种程序可视化程序,其用于以包含在程序的源代码中的模块为单位将该程序可视化,所述程序可视化程序的特征在于:
使具有处理器和存储器的计算机执行下述步骤:
获取作为可视化对象的所述源代码的步骤;
获取在所述源代码自身、与该源代码关联的其他源代码或数据中记述的词数据的步骤;
将在将所述模块可视化时要关注的关注点信息与针对各关注点信息设定的关注点关联度阈值对应地保存的步骤;
将基于被保存的所述关注点信息而从所述源代码获取的所述词数据作为关键词保存的步骤;
保存针对各所述模块设定的关注点关联度的步骤;
将用于计算各所述模块的关注点关联度的项目与关于关注点关联度的作为权重系数的关注点关联度权重数据对应地保存的步骤;
将用于计算各所述模块的关注点关联度的模块间调用路径与针对各模块间调用路径设定的所述关注点关联度权重数据对应地保存的步骤;
提取表示包含在所述源代码中的模块的相互调用关系的模块调用关系的步骤;
针对提取出的各所述模块,考虑关于以关注点依赖模块为基点的所述模块相互间的调用关系的关注点关联度权重数据或记录在所述作用判断表中的关于共用数据使用关系的关注点关联度权重数据,来进行关注点关联度的计算并保存该计算结果,其中,所述关注点依赖模块为根据与所述保存的所述关注点信息对应的关键词而被提取出的模块的步骤;
从所述源代码内提取模块的步骤;
通过比较所述保存的各所述模块的关注点关联度与所述保存的针对对应的关键词设定的关注点关联度,进行是否将从所述源代码提取出的所述模块可视化的判断的步骤;和
将判断为进行可视化的所述模块以规定格式输出的步骤。
CN201510303251.1A 2014-06-05 2015-06-05 程序可视化装置和程序可视化方法 Expired - Fee Related CN105278945B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014116420A JP6253521B2 (ja) 2014-06-05 2014-06-05 プログラム可視化装置、プログラム可視化方法、及びプログラム可視化プログラム
JP2014-116420 2014-06-05

Publications (2)

Publication Number Publication Date
CN105278945A true CN105278945A (zh) 2016-01-27
CN105278945B CN105278945B (zh) 2018-07-13

Family

ID=54769628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510303251.1A Expired - Fee Related CN105278945B (zh) 2014-06-05 2015-06-05 程序可视化装置和程序可视化方法

Country Status (3)

Country Link
US (1) US9658834B2 (zh)
JP (1) JP6253521B2 (zh)
CN (1) CN105278945B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111338686A (zh) * 2020-02-12 2020-06-26 中国平安人寿保险股份有限公司 一种软件构建方法、设备、服务器及可读存储介质
CN112585547A (zh) * 2019-03-13 2021-03-30 欧姆龙株式会社 分析装置、分析方法以及分析程序

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6444911B2 (ja) * 2016-02-26 2018-12-26 株式会社日立製作所 支援システム、支援方法、および支援プログラム
US10594574B2 (en) * 2016-11-07 2020-03-17 Hewlett Packard Enterprise Development Lp Middlebox modeling
CN106775683B (zh) * 2016-11-30 2020-06-19 华南理工大学 一种图形化编程控制与存储系统
WO2019102786A1 (ja) 2017-11-21 2019-05-31 三菱電機株式会社 ソースコード分割装置、ソースコード解析装置、ソースコード分割方法及びソースコード分割プログラム
JP7013349B2 (ja) * 2018-09-18 2022-01-31 株式会社日立製作所 着目経路作成装置、着目経路作成方法、及び着目経路作成プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004754A (zh) * 2009-09-01 2011-04-06 商业对象软件有限公司 关系数据库的导航和可视化
US8307326B2 (en) * 2007-07-19 2012-11-06 Fujitsu Limited Method and apparatus for supporting application enhancement
CN103530425A (zh) * 2013-11-01 2014-01-22 哈尔滨商业大学 基于对象关联映射的Android终端访问远程数据库代码生成系统和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04278632A (ja) * 1991-03-07 1992-10-05 Hitachi Ltd ソフトウェア変換・再構成方法
JP2010204877A (ja) * 2009-03-03 2010-09-16 Hitachi Ltd ソフトウェア開発支援装置およびソフトウェア開発支援方法
JP2010282441A (ja) * 2009-06-04 2010-12-16 Sharp Corp モジュール間依存強度算出装置、モジュール間依存強度測定方法およびモジュール間依存強度測定プログラム
JP5687122B2 (ja) * 2011-04-26 2015-03-18 三菱電機株式会社 ソフトウェア評価装置、ソフトウェア評価方法およびシステム評価装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307326B2 (en) * 2007-07-19 2012-11-06 Fujitsu Limited Method and apparatus for supporting application enhancement
CN102004754A (zh) * 2009-09-01 2011-04-06 商业对象软件有限公司 关系数据库的导航和可视化
CN103530425A (zh) * 2013-11-01 2014-01-22 哈尔滨商业大学 基于对象关联映射的Android终端访问远程数据库代码生成系统和方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112585547A (zh) * 2019-03-13 2021-03-30 欧姆龙株式会社 分析装置、分析方法以及分析程序
CN112585547B (zh) * 2019-03-13 2024-02-06 欧姆龙株式会社 分析装置、分析方法以及记录介质
CN111338686A (zh) * 2020-02-12 2020-06-26 中国平安人寿保险股份有限公司 一种软件构建方法、设备、服务器及可读存储介质

Also Published As

Publication number Publication date
CN105278945B (zh) 2018-07-13
JP6253521B2 (ja) 2017-12-27
US20150355904A1 (en) 2015-12-10
JP2015230582A (ja) 2015-12-21
US9658834B2 (en) 2017-05-23

Similar Documents

Publication Publication Date Title
CN105278945A (zh) 程序可视化装置、程序可视化方法及程序可视化程序
CN101601012B (zh) 具有场景支持的面向生成器图的编程框架
CN101617292B (zh) 面向生成器图的编程和执行
CN109670267B (zh) 一种数据处理方法和装置
Ripley et al. Manual for SIENA version 4.0
CN102138139B (zh) 基于图的计算中的数据日志记录
CN106815131B (zh) 一种基于Unity引擎的游戏资源检查方法和系统
US9128966B2 (en) Determining a storage location based on frequency of use
CN107728874A (zh) 提供用户快捷操作的方法、装置及设备
CN111814951B (zh) 调试深度神经网络
CN101794224B (zh) 一种基于性质规约模式的软件运行时性质监测方法
US20050125401A1 (en) Wizard for usage in real-time aggregation and scoring in an information handling system
CN101589366A (zh) 面向生成器图形的编程框架中的并行化和植入
CN106649120A (zh) 一种数据获取方法、分析方法及系统
CN103905231B (zh) 对设备类型统一管理的方法和装置
CN112860777B (zh) 数据处理方法、装置及设备
CN113420009B (zh) 一种基于大数据的电磁数据分析装置、系统及方法
CN103488674A (zh) 计算系统和计算系统的执行控制方法
CN103984554B (zh) 软件设计文档的生成方法及装置
CN104866598A (zh) 基于可配置模板的异构数据库集成方法
CN104714831B (zh) 一种检测虚拟机中的寄生进程的方法和装置
CN116974554A (zh) 代码数据处理方法、装置、计算机设备和存储介质
CN106599241A (zh) 一种gis软件中针对大数据的可视化管理方法
US8433729B2 (en) Method and system for automatically generating a communication interface
US20130091448A1 (en) Transformative user interfaces

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
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: 20180713