WO2015145539A1 - Device for creating abstract diagram of program and program for creating abstract diagram of program - Google Patents

Device for creating abstract diagram of program and program for creating abstract diagram of program Download PDF

Info

Publication number
WO2015145539A1
WO2015145539A1 PCT/JP2014/058068 JP2014058068W WO2015145539A1 WO 2015145539 A1 WO2015145539 A1 WO 2015145539A1 JP 2014058068 W JP2014058068 W JP 2014058068W WO 2015145539 A1 WO2015145539 A1 WO 2015145539A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
abstraction
program
data
abstracted
Prior art date
Application number
PCT/JP2014/058068
Other languages
French (fr)
Japanese (ja)
Inventor
大輔 福井
玄太 是木
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/058068 priority Critical patent/WO2015145539A1/en
Priority to JP2016509639A priority patent/JP6087473B2/en
Publication of WO2015145539A1 publication Critical patent/WO2015145539A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Definitions

  • the present invention relates to a technique for visualizing the structure and behavior of a program.
  • program diagrams such as flowcharts and sequence diagrams to understand the structure and behavior of programs.
  • the program diagram can be generated from the source code of the program using a commercially available visualization tool.
  • a program diagram is generated for a complex program, the program diagram is also complicated and is not suitable for the purpose of understanding the outline of the entire program.
  • Patent Document 1 proposes a method in which a developer visualizes only a specific module by manually setting a module to be visualized in advance. In this way, by showing only the necessary modules in the program diagram, it becomes possible to facilitate understanding of the outline of the entire program.
  • an object of the present invention is to provide a program abstract diagram creation device that can easily create a simplified program diagram without requiring manual settings by a user or a developer and can illustrate the relationship between modules. And providing a program abstract diagram creation program.
  • a program abstract diagram creation device that displays an abstract diagram of an evaluation target program in accordance with a specified input of abstraction is provided with at least a module configuration and reference data from the source code of the evaluation target program.
  • An abstract diagram creation processing unit that creates source code analysis data having call module data and module-specific importance data having at least importance data for each module for each evaluation viewpoint, or reads already created data Accepting the user-specified abstraction level, the threshold level of the importance of the module to be visualized corresponding to the abstraction level, the abstraction level determination unit that sets the threshold value of LCOM, and the module level
  • An abstraction target module that selects a module whose importance is equal to or higher than the threshold as an abstraction target module
  • a determination module an external data access determination module that determines whether or not the abstraction target module refers to external data, and the abstraction target module that references the external data
  • a first abstraction processing unit that abstracts the other non-abstraction modules referring to the external data together as one new abstraction module, and the abstraction target module refers to the external data
  • a second abstraction processing unit that abstracts the abstraction target module and other non-abstraction modules called by the abstraction target module as one new abstraction module.
  • the abstract diagram creation processing unit calculates a degree of lack of cohesion (LCOM) of the new abstraction module, and the degree of lack of cohesion is the threshold value. If the threshold value is not exceeded, the abstract module is registered, and a flag is set with the non-abstract modules collected in the registered new abstract module as an abstracted module Then, the registered new abstraction module is set as the next abstraction target module, the process proceeds to the external data access determination unit, and if the degree of cohesiveness exceeds the threshold, the abstraction module When the abstraction target module determination unit determines that there is no non-abstraction module to be selected as the abstraction target module, the module abstraction processing is performed.
  • the abstract diagram creation processing unit refers to the abstracted flag and calls only the non-abstracted module as a node. And configured to output the abstract view of the full format.
  • FIG. 1 is an example of the hardware configuration of the present invention.
  • a central processing unit 101 As hardware of the program abstract diagram creation device (information processing device) 100, a central processing unit 101, an input device 102 such as a keyboard and a mouse, a secondary storage device 103 such as a hard disk, a main storage device 104 such as DRAM, a display, etc.
  • a display device 105 and a communication device 107 are included.
  • Each component device is connected by a bus 106, and data can be transmitted and received between the component devices.
  • the program abstract diagram creation apparatus (information processing apparatus) 100 can be connected to another information processing apparatus 110 having the same hardware configuration via a communication network 120 such as the Internet.
  • a communication network 120 such as the Internet.
  • FIG. 2 shows an example of the software configuration of the present invention.
  • the program abstract diagram creation program 200 is a program for creating a program abstract diagram according to the present invention, which is stored in the secondary storage device 103 of the program abstract diagram creation device 100, loaded into the main storage device 104, and central processing.
  • the abstract diagram creation processing unit 201 When executed by the apparatus 101, the abstract diagram creation processing unit 201, the abstraction level determination unit 202, the abstraction target module determination unit 203, the external data access determination unit 204, the data access abstraction processing unit 205, and the control flow abstraction processing unit 206
  • Each function unit includes an abstracted data processing unit 207 and an LCOM threshold determination unit 208. Details of the processing contents of the program abstract diagram creation program 200 will be described with reference to FIG.
  • the database program 209 is a general database program that can store arbitrary data.
  • the database program 209 stores source code analysis data 210, module importance data 211, and abstract module registration data 212.
  • the source code analysis data 210 will be described in detail with reference to FIG.
  • the module-specific importance data 211 will be described in detail with reference to FIG.
  • the use of the database program 209 is not essential, and instead, the source code analysis data 210, the module importance data 211, and the abstract module registration data 212 may be stored as file data in the secondary storage device 103.
  • the program abstract diagram creation program 200 and the database program 209 are programs stored in the secondary storage device 103 of the information processing device, and are read into the main storage device 104 by the central processing unit 101 and executed.
  • An OS Operating System
  • these programs may be executed on the same information processing apparatus 100 or 110, or may be separately executed on different information processing apparatuses 100 and 110 via the network 120.
  • FIG. 3 is an example of a database table representing the source code analysis data 210.
  • the result of analyzing the source code using a commercially available source code analysis tool or the like is stored here. Since there are various commercially available analysis tools and means for storing analysis results in the database, description thereof is omitted here.
  • the module column 301 of the source code analysis data table 210 in FIG. 3 is a column for storing the identifier of the module.
  • the module identifier is assumed to be a combination of a function name and a file name, but is not limited to this, and can be arbitrarily determined by the developer. For example, it is possible to define a single library as a module instead of a function unit.
  • the module identifier may be data that can uniquely identify the module.
  • the reference data column 302 is a column for storing an identifier of external data referred to by the module.
  • External data refers to, for example, C language global variables, files, communication sockets, databases, and the like.
  • the definition of the external data is not limited to this, and any data that the module uses for processing may be used.
  • the identifier of the external data only needs to be able to uniquely identify the data such as a global variable name.
  • a method of storing the identifier of the external data group in another table and storing the reference of the table in the column 302 is generally used.
  • the calling module column 303 is a column for storing an identifier of another module called by the module.
  • this call relationship indicates a function call. That is, the identifier of the module called by the module is stored in the column 303.
  • the definition of the call relationship is not limited to this, and may include a reference relationship.
  • FIG. 4 is an example of a database table representing module-specific importance data 211.
  • the importance by module is a numerical value representing the value and importance of the module from a certain point of view.
  • this calculation method varies depending on the viewpoint, a technique for visualizing a module based on software metrics (hereinafter referred to as metrics) such as module complexity, aggregation degree, and number of code lines has been proposed.
  • metrics software metrics
  • the following method of calculating the importance in consideration of the test execution results can be considered.
  • the importance M of the module is calculated by the mathematical formula shown in Equation 1.
  • the importance level M is calculated using general metrics of the source code.
  • the importance T of the module is calculated according to Equation 2.
  • the importance T is an importance calculated using the value of the importance M and the unit test code metrics.
  • the value of cyclic complexity which is a general software metric, can be used as importance. It is also possible to arbitrarily determine the importance of a module according to the subjectivity of the developer. In the present invention, a module to be abstracted is determined using the importance value calculated in this way. This is an easy-to-understand expression process for determining a module to be abstracted, and is limited to this method. It is not a thing. For example, it may be possible to abstract a module extracted at random without using an index of importance.
  • the evaluation viewpoint column 401 of the module importance level data table 211 in FIG. 4 is a column for storing the importance level calculation viewpoint of the module. For example, when it is desired to abstract a module that is important for understanding the structure of the source code, a method of determining a module having a high importance whose column 401 value is “structure understanding” as an abstraction target can be considered. By calculating and storing the importance for each type of viewpoint in this way, it is possible to determine the module to be abstracted from various viewpoints.
  • the module column 402 is a column for storing a module identifier. The module identifier is as described in the description of the column 301.
  • the importance column 403 is a column for storing the importance of the module described above. Although it is assumed that modules with high or low importance are determined as abstraction targets, the present invention is not limited to this method.
  • FIG. 5 shows a flowchart of the evaluation target program abstract diagram creation processing when the user creates an abstract diagram of the evaluation target program and performs analysis in the program abstract diagram creation device of this embodiment.
  • the abstract diagram creation processing unit 201 receives a general program call operation such as a user GUI operation or an API call from another module, and starts processing. Enter the source code of the specified program to be evaluated and, if necessary, the test code.
  • step S502 the abstract diagram creation processing unit 201 analyzes the source code of the evaluation target program using a known source code analysis tool or the like, creates a source code analysis data table 210, creates a database, and main memory Store in device 104. If the source code analysis data table 210 is already registered in the database, it is read out to the main storage device 104.
  • step S503 the abstract diagram creation processing unit 201 calculates the module-specific importance data 211 for each evaluation viewpoint and stores it in the database.
  • the viewpoint specified by the user is used as the evaluation viewpoint, and the importance is calculated for all modules stored in the source code analysis data table 210 and stored in the database and the main storage device 104. If the module-specific importance data 211 is already registered in the database, it is read out to the main storage device 104.
  • the abstract diagram creation processing unit 201 creates the source code analysis data 210 and the module-specific importance data 211 or obtains it from the database program 209 and stores it in the main storage device 104 in steps S502 and S503. This is not necessary when data is already stored in the main storage device 104. In addition, there is a method of storing these data in the main storage device 104 at the time of starting the processing, and a method of reading from the database program 209 as necessary.
  • the source code analysis data 210 or the module-specific importance data 211 is simply described, it indicates data stored in the main storage device 104.
  • the abstraction level determination unit 202 receives an instruction to specify the abstraction level or end the program abstract drawing creation process by a user GUI operation or the like.
  • the degree of abstraction is the degree of abstraction of the program abstract diagram expressed as a numerical value. The higher the degree of abstraction, the higher the degree of abstraction of the module that is visualized. Therefore, the higher the degree of abstraction, the more visible the module.
  • the threshold of importance and the threshold of LCOM described later are set high.
  • the value of the abstraction level is determined by, for example, a user GUI operation using a slide bar described in FIG. 10, but the determination method is not limited.
  • the developer can freely determine the correspondence between the abstraction level and the module importance level threshold or LCOM threshold.
  • these correspondences are hard-coded in advance in the program logic of the abstraction level determination unit 202.
  • the correspondences can be changed later using a setting file or the like. it can.
  • step S505 the abstract diagram creation processing unit 201 proceeds to step S506 when the user designates a new level of abstraction, and terminates the process when the user designates the end of the program abstract diagram creation processing.
  • step S506 abstract module registration processing for abstracting the module of the evaluation target program according to the abstract level is executed.
  • FIG. 6 shows a flowchart of abstraction module registration processing.
  • step S601 the abstracted flags corresponding to all the modules registered in the source code analysis data 210 of the evaluation target program are initialized.
  • step S602 the abstraction target module determination unit 203 determines whether there is a module that has not been abstracted yet. When the process proceeds from step S601, all modules are not abstracted. When the process proceeds from step S608 described later, it is determined whether there is a module that has not been abstracted yet. Whether or not a module has already been abstracted is determined by a truth value set in the abstracted flag for each module. This true / false value is stored in the abstracted flag on the main storage device 104 by the abstracted data processing unit 207 in step S610 described later. The abstraction target module determination unit 203 determines the presence of a non-abstracted module by reading the true / false value of the abstracted flag stored in the main storage device 104. If there is a module that has not been abstracted yet, the process proceeds to step S603, and if not, the process proceeds to END.
  • step S603 the abstraction target module determination unit 203 selects a module to be abstracted from the module group determined not to be abstracted yet in step S602.
  • the determination is made using the importance of the module.
  • the importance value stored in the column 403 of the module importance data table 211 and the importance threshold determined in step S504 only modules whose importance in the evaluation viewpoint designated by the user is equal to or higher than the threshold are selected. Select as a module to be abstracted. If there is no abstraction target module, that is, if the importance of all the non-abstraction modules is less than the threshold, it is determined that there are no remaining modules to be abstracted, and the process proceeds to END.
  • this processing is only an example, and for example, it may be possible to select the module having the highest importance as the abstraction target module from the remaining non-abstraction modules.
  • the process proceeds to step S604.
  • step S604 the external data access determination unit 204 determines whether the module selected as the abstraction target in step S603 or the module group abstracted in steps S605 and S606 described later refers to external data. judge. Whether the module refers to external data can be determined by reading the value of the external data identifier stored in the column 302 of the source code analysis data table 210. If the module refers to external data, the process proceeds to step S605. If not, the process proceeds to step S606.
  • step S605 the data access abstraction processing unit 205 performs abstraction from the viewpoint of data access.
  • the abstraction from the viewpoint of data access is the abstraction by combining the abstraction target module determined to refer to the external data in step S604 and the other module group referring to the same external data.
  • the value of the external data identifier stored in the column 302 of the source code analysis data 210 is read, and another module storing the same identifier as that identifier in the column 302 is determined by the value of the module identifier in the column 301. Can be executed.
  • a specific example of this abstraction processing will be described with reference to FIG.
  • the abstraction target module When there are multiple other modules that refer to the same external data as the abstraction target module, it is assumed that all of them are abstracted together. For example, only the module with the highest importance value is abstracted. It is possible to make it. In this method, the module can be abstracted with a finer granularity, but the processing speed decreases.
  • step S606 the control flow abstraction processing unit 206 performs abstraction from the viewpoint of control flow.
  • the abstraction from the viewpoint of the control flow represents a process of abstracting another module group called from among the abstraction target modules into the abstraction target module.
  • the calling relationship between modules can be determined by reading the value of the calling module identifier stored in the column 303 of the source code analysis data table 210.
  • a specific example of this abstraction processing will be described with reference to FIG.
  • step S607 the LCOM threshold value determination unit 208 calculates the LCOM value of the new abstract module that is abstracted and collected in step S605 or step S606.
  • LCOM is an abbreviation for “Lack of Cohesion in Methods” and is a numerical value indicating the degree of lack of cohesion.
  • the degree of cohesion is an index representing the strength of the relationship between the functional elements and information elements in the module, and LCOM is one of the software metrics that has been conventionally known. Details of LCOM will be described with reference to FIG.
  • step S608 the LCOM threshold value determination unit 208 determines that the abstraction is not appropriate when the LCOM value of the new abstract module exceeds the threshold value, and returns to step S602 without registering the abstract module. The other non-abstraction module is determined and the next abstraction target module is selected. If not, it is determined that the abstraction is appropriate, and the process proceeds to step S609.
  • step S609 the abstract diagram creation processing unit 201 registers the new abstract module summarized and summarized in the abstract module registration data table 212 shown in FIG.
  • the abstract module column 701 “module 801” with a new name is registered by the system, and in the included module (module included in the abstract module) column 702, the abstracted module is imported.
  • the identifier “Module A, Module B” is stored, and the identifier “Data A” of the data captured by abstraction is stored in the column 703 of the included data (data included in the abstraction module), and the column of the reference data 704 stores data referenced by Module A and Module B outside the module 801, and the column 705 of the calling module stores Module A and Module B calling a module outside the module 801.
  • the module identifier is stored.
  • step S610 the abstracted data processing unit 207, for example, marks the abstracted flag “Module A, Module B” as abstracted (a true / false value indicating that it has already been abstracted), and newly An abstracted flag of “module 801” is additionally installed, and its value (true / false value) is set to an initial value (unfinished).
  • the abstracted flag can be stored in a database or a file, it is assumed that the abstracted flag is stored in the main storage device 104 in this embodiment.
  • step S611 the new abstract module summarized and summarized is set as the next abstraction target module, and the process proceeds to step S604.
  • the abstract diagram creation processing unit 201 displays the abstract diagram of the evaluation target program on the display device 105, for example, in a call graph format as shown in FIG.
  • the call graph is a directed graph representing a calling relationship between program modules (subroutines).
  • a call graph node is selected by selecting only a module whose abstracted flag value (true / false value) is an initial value (uncompleted) from the source code analysis data 210 and the abstract module registration data 212. Is displayed, the edge of the call graph is displayed from the data in the column of the calling module, and an abstract diagram of the evaluation target program is displayed.
  • the abstraction level determination unit 202 waits for an instruction to specify the abstraction level or to terminate the program abstraction diagram creation process by a user GUI operation or the like.
  • FIG. 8 is a diagram for explaining the calculation formula of LCOM and the characteristics indicated by the value of LCOM.
  • Equation 3 in FIG. 8 is an LCOM calculation formula.
  • the calculation formula of LCOM is widely known, and there are some variations. In this embodiment, the calculation formula of Formula 3 is illustrated, but the present invention is not limited to this.
  • FIG. 8 illustrates a Java language program. The value of LCOM ranges from 0 to 1. The closer the value is to 0, the better the design, and the closer the value is to 1, the worse the design.
  • FIG. 8 (a) shows a Java class that is well designed.
  • the class 811 one variable fieldA is defined, and two methods respectively access fieldA. For this reason, the class 811 cannot be divided into a plurality of parts and is designed well.
  • FIG. 8B shows a Java class that is considered badly designed.
  • class 812 two variables fieldA and fieldB are defined. Only method methodA is accessed for fieldA, and only method methodB is accessed for fieldB. Since this class 812 can be divided into two, it is considered a bad design.
  • LCOM is a metric that can be used to determine whether the design is good or bad, depending on the relationship between variables and methods.
  • the abstraction from the viewpoint of data access and the abstraction from the viewpoint of control flow are performed, and the abstraction is advanced step by step while judging the value of LCOM. It is possible to proceed with abstraction while maintaining as high a state as possible.
  • Abstract module the value of LCOM, which is a metric for object-oriented languages, is calculated.
  • FIG. 9 is a schematic diagram illustrating the abstraction process from step S604 to step S611 in FIG. 6 in an easy-to-understand manner.
  • Data A 901 and Data B 906 in the figure represent general external data such as program global variables, files, and databases. These correspond to the external data indicated by the identifier stored in the column 302 of the source code analysis data 210.
  • Module A 902, Module B 903, Module C 904, and Module D 905 represent modules. These correspond to the modules indicated by the identifiers stored in the column 301 and the column 303 of the source code analysis data 210 and the column 402 of the module-specific importance data 211.
  • a double line 907 represents a reference relationship from the module to the external data.
  • An arrow 908 represents a calling relationship from module to module.
  • Reference numerals 801, 802, and 803 denote new modules (abstraction modules) obtained by abstracting together the module group included in each dotted line.
  • step S604 it is assumed that the threshold of LCOM is determined to be 0.4 in step S504, and the module to be abstracted is determined to be ModuleA 902 in step S603.
  • step S604 it is determined whether Module A 902 is accessing external data. Since Module A 902 refers to Data A 901, the process proceeds to step S605.
  • step S605 abstraction by data access is performed.
  • ModuleA 902 and Module B 903 referencing DataA 901 are abstracted as one module 801.
  • step S607 the LCOM value of the new abstracted module 801 is calculated.
  • the value of LCOM is 0.
  • step S608 since the LCOM value of the module 801 is smaller than the threshold value, the process proceeds to step S609, and the data of the module 801 is registered in the abstract module registration data table 212 shown in FIG.
  • step S610 the Moodle A 902 and the Module B 903 are set as abstracted.
  • an abstracted flag of the module 801 is additionally installed with an initial value.
  • step S611 the module 801 is set as the next abstraction target module, and the process returns to step S604.
  • step S604 it is determined whether the module 801 is accessing external data. Since the module 801 does not access external data, the process proceeds to step S606. Next, abstraction by the control flow is performed in step S606. Here, since the module 801 is calling ModuleC904, the module 801 and ModuleC904 are abstracted as one module 802. Next, in step S607, the LCOM value of the new abstracted module 802 is calculated.
  • ModuleA 902 and Module B 903 constituting module 802 refer to the same external data DataA 901, but since Module C 904 does not refer to DataA 901, the LCOM value of module 802 increases to 0.3 (this value is accurately calculated). It is an example to make the explanation easy to understand).
  • step S608 since the LCOM value of the module 802 is smaller than the threshold value, the process proceeds to step S609, and the data of the module 802 is registered in the abstract module registration data table 212 shown in FIG.
  • step S610 Module C904 is newly set as abstracted.
  • an abstracted flag of the module 802 is additionally installed with an initial value.
  • step S611 the module 802 is set as the next abstraction target module, and the process returns to step S604.
  • step S604 a new abstract module 803 is abstracted by combining the module 802, DataB 906, and Module D 905 into one.
  • the LCOM value of the module 803 is 0.5, which exceeds the threshold value. Therefore, in step S608, the module 803 is not registered and the process proceeds to step S602. Therefore, in this embodiment, by abstracting the module ModuleA 902 up to the abstract module 802 is generated. It is possible to automate the creation of an abstract diagram by repeating the above processing until there are no abstraction target modules.
  • FIG. 10 is a screen example of a program abstract diagram creation apparatus to which the present invention is applied.
  • the user can determine the module abstraction level by moving the slider for setting the module abstraction level to the left or right by dragging the mouse (step S504).
  • the threshold of importance of the module to be abstracted and the threshold of LCOM are determined, and an abstract diagram of the program as shown in FIG. 10 can be generated by performing processing according to the method of the present invention.
  • the abstract diagram of the program to be evaluated is generated by the abstract diagram creation processing unit 201 from the source code analysis data 210 and the abstract module registration data 212.
  • the abstract flag value (true / false value) is the initial value (unfinished).
  • Module is selected to display the call graph node, and the call graph edge is displayed from the call module column data.
  • an abstract diagram of a program can be generated without requiring manual settings by a user or a developer.
  • this invention is not limited to an above-described Example, Various modifications are included.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
  • Each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • Information such as programs, tables, and files that realize each function can be stored in a recording device such as a memory, a hard disk, or an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
  • the lines and dotted lines in the figure indicate what is considered necessary for the explanation, and not all lines and dotted lines are necessarily shown.
  • Program abstract diagram creation device (information processing device) 101 Central processing unit 102 Input device 103 Secondary storage device 104 Main storage device 105 Display device 106 Bus 107 Communication device 110 Another information processing device 120 Communication network 200 Program abstract diagram creation program 201 Abstract diagram creation processing unit 202 Abstraction level determination unit 203 Abstraction target module determination unit 204 External data access determination unit 205 Data access abstraction processing unit 206 Control flow abstraction processing unit 207 Abstracted data processing unit 208 LCOM threshold determination unit 209 Database program 210 Source code analysis data 211 By module Importance data 212 Abstract module registration data 801, 802, 803 A new module (abstract module) that is an abstraction of a group of modules 901 DataA 902 ModuleA 903 ModuleB 904 ModuleC 905 ModuleD 906 DataB 907 Double line indicating reference relationship from module to external data 908 Arrow indicating call relationship from module to module

Abstract

 The present invention provides a device for creating an abstract diagram of a program, the device creating a program diagram that is simplified in order to facilitate the understanding of the outline of a complicated program, without requiring manual settings by a user or a developer. In this device, a group of other modules that reference the same external data (e.g., global variables and file data) as that referenced by a module is abstracted as one module. When no external data exists that is referenced by a module, a group of other modules called from among modules is abstracted as one module. Module abstraction is performed by calculating the degree of a lack of cohesiveness in the abstracted module and repeating the abstraction process until this value exceeds a threshold value, and an abstract diagram of the program to be evaluated is outputted.

Description

プログラム抽象図作成装置、及びプログラム抽象図作成プログラムProgram abstract diagram creation device and program abstract diagram creation program
 本発明は、プログラムの構造や挙動を可視化する技術に関する。 The present invention relates to a technique for visualizing the structure and behavior of a program.
 プログラムの構造や挙動を理解する方法として、フローチャートやシーケンス図といったプログラム図を利用する方法がある。プログラム図は市販の可視化ツールを用いてプログラムのソースコードから生成することが可能である。しかし、複雑なプログラムを対象としてプログラム図を生成した場合、当該プログラム図も複雑なものとなり、プログラム全体の概要を理解する目的には適さなかった。 There are methods of using program diagrams such as flowcharts and sequence diagrams to understand the structure and behavior of programs. The program diagram can be generated from the source code of the program using a commercially available visualization tool. However, when a program diagram is generated for a complex program, the program diagram is also complicated and is not suitable for the purpose of understanding the outline of the entire program.
 この問題を解決するため、例えば特許文献1では、可視化するモジュールを開発者が予め手動で設定することで、特定のモジュールのみを可視化する方法が提案されている。このように、必要なモジュールのみをプログラム図に図示することで、プログラム全体の概要理解を容易化することが可能となる。 In order to solve this problem, for example, Patent Document 1 proposes a method in which a developer visualizes only a specific module by manually setting a module to be visualized in advance. In this way, by showing only the necessary modules in the program diagram, it becomes possible to facilitate understanding of the outline of the entire program.
特開平5-257666号公報JP-A-5-257666
 しかしながら、特許文献1記載の方法では、可視化するモジュールを開発者が予め手動で設定する必要があるため、複雑なプログラムへの適用は困難であった。
  例えば複雑なプログラムの簡略化されたフローチャートを作成する場合、複雑に関連するモジュール群の中から一部の重要なモジュール群を手作業で抽出しなければならない。さらに、フローチャートを作成するにはモジュール間の関連を図示できなければならないが、この関連を手作業で抽出するには多くの時間を要する。
However, in the method described in Patent Document 1, it is difficult for a developer to manually set a module to be visualized in advance, so that it is difficult to apply to a complicated program.
For example, when a simplified flowchart of a complex program is created, some important module groups must be manually extracted from the complex group of modules. Furthermore, to create a flowchart, it is necessary to be able to illustrate the relationship between modules, but it takes a lot of time to manually extract this relationship.
 そこで、本発明の課題は、ユーザや開発者の手作業による設定を必要とすることなく簡略化されたプログラム図を容易に作成可能で、かつモジュール間の関連を図示可能なプログラム抽象図作成装置、及びプログラム抽象図作成プログラムを提供することにある。 Therefore, an object of the present invention is to provide a program abstract diagram creation device that can easily create a simplified program diagram without requiring manual settings by a user or a developer and can illustrate the relationship between modules. And providing a program abstract diagram creation program.
 上記課題を解決する為に本発明では、評価対象プログラムの抽象図を抽象度の指定入力に応じて表示するプログラム抽象図作成装置を、前記評価対象プログラムのソースコードより、少なくともモジュール構成、参照データ、呼出モジュールのデータを有するソースコード解析データと、及び少なくとも評価観点別のモジュール毎の重要度データを有するモジュール別重要度データとを作成し、または既作成のデータを読み込む抽象図作成処理部と、ユーザ指定の抽象度を受付けて、抽象度に対応した可視化するモジュールの重要度の閾値と、LCOMの閾値を設定する抽象度判定部と、未だ抽象化されていないモジュールの中から、モジュールの重要度が前記閾値以上となるモジュールを抽象化対象モジュールとして選択する抽象化対象モジュール判定部と、前記抽象化対象モジュールが外部データを参照しているかどうかを判定する外部データアクセス判定部と、前記抽象化対象モジュールが外部データを参照している場合、前記抽象化対象モジュールと、前記外部データを参照している他の前記未抽象化モジュールとを一つの新しい抽象化モジュールとして纏めて抽象化する第1の抽象化処理部と、前記抽象化対象モジュールが外部データを参照していない場合、前記抽象化対象モジュールと、前記抽象化対象モジュールが呼び出す他の未抽象化モジュールとを一つの新しい抽象化モジュールとして纏めて抽象化する第2の抽象化処理部と、を備え、前記抽象図作成処理部が、前記新しい抽象化モジュールの凝集性欠如の度合い(LCOM)を算出し、前記凝集性欠如の度合いが前記閾値を超えるか否かを判定し、前記閾値を超えない場合、前記抽象化モジュールを登録して、該登録した新たな抽象化モジュールに纏められた前記未抽象化モジュールを抽象化済モジュールとしてフラグを設定し、前記登録した新たな抽象化モジュールを次の抽象化対象モジュールに設定して、前記外部データアクセス判定部へ移行し、前記凝集性欠如の度合いが前記閾値を超える場合は、前記抽象化モジュールを登録せずに前記抽象化対象モジュール判定部へ移行し、前記抽象化対象モジュール判定部が、抽象化対象モジュールとして選択すべき未抽象化モジュールが無くなったと判定した場合には、モジュール抽象化処理を終了し、前記抽象図作成処理部が、抽象化済のフラグを参照して、未抽象化のモジュールのみをノードとするコールグラフ形式の抽象図を出力するように構成した。 In order to solve the above-described problems, in the present invention, a program abstract diagram creation device that displays an abstract diagram of an evaluation target program in accordance with a specified input of abstraction is provided with at least a module configuration and reference data from the source code of the evaluation target program. An abstract diagram creation processing unit that creates source code analysis data having call module data and module-specific importance data having at least importance data for each module for each evaluation viewpoint, or reads already created data Accepting the user-specified abstraction level, the threshold level of the importance of the module to be visualized corresponding to the abstraction level, the abstraction level determination unit that sets the threshold value of LCOM, and the module level An abstraction target module that selects a module whose importance is equal to or higher than the threshold as an abstraction target module A determination module, an external data access determination module that determines whether or not the abstraction target module refers to external data, and the abstraction target module that references the external data And a first abstraction processing unit that abstracts the other non-abstraction modules referring to the external data together as one new abstraction module, and the abstraction target module refers to the external data A second abstraction processing unit that abstracts the abstraction target module and other non-abstraction modules called by the abstraction target module as one new abstraction module. The abstract diagram creation processing unit calculates a degree of lack of cohesion (LCOM) of the new abstraction module, and the degree of lack of cohesion is the threshold value. If the threshold value is not exceeded, the abstract module is registered, and a flag is set with the non-abstract modules collected in the registered new abstract module as an abstracted module Then, the registered new abstraction module is set as the next abstraction target module, the process proceeds to the external data access determination unit, and if the degree of cohesiveness exceeds the threshold, the abstraction module When the abstraction target module determination unit determines that there is no non-abstraction module to be selected as the abstraction target module, the module abstraction processing is performed. The abstract diagram creation processing unit refers to the abstracted flag and calls only the non-abstracted module as a node. And configured to output the abstract view of the full format.
 本発明によれば、評価対象プログラムのソースコード内のモジュール群を予め開発者やユーザが手作業で設定することなく、簡略化されたプログラム図を構築・表示する事が可能となる。上記した以外の効果については実施例の説明により明らかにする。 According to the present invention, it is possible to construct and display a simplified program diagram without manually setting a module group in the source code of the evaluation target program in advance by a developer or a user. Effects other than those described above will be clarified in the description of the embodiments.
本発明のプログラム抽象図作成装置が実装される情報処理装置のハードウェア構成図の例である。It is an example of the hardware block diagram of the information processing apparatus with which the program abstract drawing production apparatus of this invention is mounted. 本発明のプログラム抽象図作成プログラム、データベースプログラムのソフトウェア構成、データテーブル構成の例を示す図である。It is a figure which shows the example of the program abstract drawing preparation program of this invention, the software structure of a database program, and a data table structure. ソースコード解析データ210を記憶するデータベーステーブルの例を示す図である。It is a figure which shows the example of the database table which memorize | stores the source code analysis data. モジュール別重要度データ211を記憶するデータベーステーブルの例を示す図である。It is a figure which shows the example of the database table which memorize | stores the importance data 211 by module. プログラム抽象図作成処理を示したフローチャートである。It is the flowchart which showed the program abstract drawing creation processing. 抽象化モジュール登録処理を示したフローチャートである。It is the flowchart which showed the abstraction module registration process. 抽象化モジュール登録データ212を記憶するデータベーステーブルの例を示す図である。It is a figure which shows the example of the database table which memorize | stores the abstraction module registration data. 凝集性が欠如した度合いを表すソフトウェアメトリクスLCOMの計算式と、LCOMの値が示す特徴について説明した図である。It is the figure explaining the characteristic which the calculation formula of the software metrics LCOM showing the degree of lack of cohesiveness, and the value of LCOM show. 抽象化モジュール登録処理のステップS604からステップS611までの抽象化プロセスを分かり易く例示した概略図である。It is the schematic which illustrated in an easy-to-understand manner the abstraction process from step S604 to step S611 of abstraction module registration processing. 本発明を適用したプログラム抽象図作成装置の画面例である。It is an example of a screen of the program abstract diagram creation apparatus to which the present invention is applied.
 以下、本発明によるプログラム抽象図作成装置、プログラム抽象図作成方法、及びプログラム抽象図作成プログラムに関する一実施形態を、図面を用いて詳細に説明する。 Hereinafter, an embodiment of a program abstract diagram creation apparatus, a program abstract diagram creation method, and a program abstract diagram creation program according to the present invention will be described in detail with reference to the drawings.
 本実施例では、C言語で書かれたソースコードを対象としたモジュール抽象図作成方法の例を説明する。 In this embodiment, an example of a module abstract diagram creation method for source code written in C language will be described.
 図1は、本発明のハードウェア構成の例である。プログラム抽象図作成装置(情報処理装置)100のハードウェアとして、中央演算装置101、キーボードやマウス等の入力装置102、ハードディスク等の二次記憶装置103、DRAM等の主記憶装置104、ディスプレイ等の表示装置105、及び通信装置107を有する。尚、各構成装置は、バス106によって接続され、各構成装置間で相互にデータの送受信が可能である。また、プログラム抽象図作成装置(情報処理装置)100は、同様のハードウェア構成を持つ別の情報処理装置110と、インターネット等の通信ネットワーク120を介して接続できる。上記はハードウェア構成の一例であり、これに限定するものではない。 FIG. 1 is an example of the hardware configuration of the present invention. As hardware of the program abstract diagram creation device (information processing device) 100, a central processing unit 101, an input device 102 such as a keyboard and a mouse, a secondary storage device 103 such as a hard disk, a main storage device 104 such as DRAM, a display, etc. A display device 105 and a communication device 107 are included. Each component device is connected by a bus 106, and data can be transmitted and received between the component devices. Further, the program abstract diagram creation apparatus (information processing apparatus) 100 can be connected to another information processing apparatus 110 having the same hardware configuration via a communication network 120 such as the Internet. The above is an example of the hardware configuration, and the present invention is not limited to this.
 図2は、本発明のソフトウェア構成の例である。プログラム抽象図作成プログラム200は、本発明に係るプログラム抽象図を作成するプログラムであり、プログラム抽象図作成装置100の二次記憶装置103に記憶されており、主記憶装置104にロードされて中央演算装置101により実行されて、抽象図作成処理部201、抽象度判定部202、抽象化対象モジュール判定部203、外部データアクセス判定部204、データアクセス抽象化処理部205、制御フロー抽象化処理部206、抽象化済データ処理部207、LCOM閾値判定部208といった各機能部を構成する。プログラム抽象図作成プログラム200の処理内容については図5で詳細を述べる。 FIG. 2 shows an example of the software configuration of the present invention. The program abstract diagram creation program 200 is a program for creating a program abstract diagram according to the present invention, which is stored in the secondary storage device 103 of the program abstract diagram creation device 100, loaded into the main storage device 104, and central processing. When executed by the apparatus 101, the abstract diagram creation processing unit 201, the abstraction level determination unit 202, the abstraction target module determination unit 203, the external data access determination unit 204, the data access abstraction processing unit 205, and the control flow abstraction processing unit 206 Each function unit includes an abstracted data processing unit 207 and an LCOM threshold determination unit 208. Details of the processing contents of the program abstract diagram creation program 200 will be described with reference to FIG.
 データベースプログラム209は、任意のデータを格納可能な一般的なデータベースプログラムであり、本実施例ではソースコード解析データ210、モジュール別重要度データ211、および抽象化モジュール登録データ212を格納する。ソースコード解析データ210は図3で詳細を述べる。モジュール別重要度データ211は図4で詳細を述べる。データベースプログラム209の利用は必須ではなく、代わりに二次記憶装置103にソースコード解析データ210、モジュール別重要度データ211、および抽象化モジュール登録データ212をファイルデータとして格納してもよい。 The database program 209 is a general database program that can store arbitrary data. In this embodiment, the database program 209 stores source code analysis data 210, module importance data 211, and abstract module registration data 212. The source code analysis data 210 will be described in detail with reference to FIG. The module-specific importance data 211 will be described in detail with reference to FIG. The use of the database program 209 is not essential, and instead, the source code analysis data 210, the module importance data 211, and the abstract module registration data 212 may be stored as file data in the secondary storage device 103.
 プログラム抽象図作成プログラム200およびデータベースプログラム209は、情報処理装置の二次記憶装置103に保管されるプログラムであり、中央演算装置101によって主記憶装置104に読み込まれ、実行されるプログラムである。これらのプログラムの実行にはOS(Operating System)等が関与するが、これは公知の技術であるため、説明及び記載は省略する。また、これらのプログラムは同じ情報処理装置100または110上で実行されてもよく、ネットワーク120を介した別の情報処理装置100および110上でそれぞれ別に実行されてもよい。 The program abstract diagram creation program 200 and the database program 209 are programs stored in the secondary storage device 103 of the information processing device, and are read into the main storage device 104 by the central processing unit 101 and executed. An OS (Operating System) is involved in the execution of these programs, but since this is a known technique, description and description are omitted. In addition, these programs may be executed on the same information processing apparatus 100 or 110, or may be separately executed on different information processing apparatuses 100 and 110 via the network 120.
 図3は、ソースコード解析データ210を表すデータベーステーブルの例である。ここには、市販のソースコード解析ツール等を用いてソースコードを解析した結果を格納する。利用する市販の解析ツール、および解析結果のデータベースへの格納手段は様々であるため、ここでは説明を省略する。 FIG. 3 is an example of a database table representing the source code analysis data 210. The result of analyzing the source code using a commercially available source code analysis tool or the like is stored here. Since there are various commercially available analysis tools and means for storing analysis results in the database, description thereof is omitted here.
 図3のソースコード解析データテーブル210のモジュールのカラム301は、モジュールの識別子を格納するカラムである。本実施例では、モジュールの識別子は関数名とファイル名の組み合わせなどを想定するが、これに限定するものではなく、開発者が任意に決定できる。例えば関数単位ではなく、一つのライブラリをモジュールと定義することも可能である。モジュールの識別子は、モジュールを一意に識別可能なデータであればよい。 The module column 301 of the source code analysis data table 210 in FIG. 3 is a column for storing the identifier of the module. In the present embodiment, the module identifier is assumed to be a combination of a function name and a file name, but is not limited to this, and can be arbitrarily determined by the developer. For example, it is possible to define a single library as a module instead of a function unit. The module identifier may be data that can uniquely identify the module.
 参照データのカラム302は、モジュールが参照する外部データの識別子を格納するカラムである。外部データとは、例えばC言語のグローバル変数、ファイル、通信ソケット、およびデータベース等を指す。但し、外部データの定義はこれに限定するものではなく、モジュールが処理に利用するデータであればよい。例えば、ある文字列データを返すWebサービスを外部データと定義することも可能である。外部データの識別子は、グローバル変数名など、データを一意に識別可能であればよい。一つのモジュールが複数の外部データを参照している場合、別のテーブルに外部データ群の識別子を格納し、カラム302にそのテーブルの参照を格納する方式が一般に用いられる。 The reference data column 302 is a column for storing an identifier of external data referred to by the module. External data refers to, for example, C language global variables, files, communication sockets, databases, and the like. However, the definition of the external data is not limited to this, and any data that the module uses for processing may be used. For example, it is possible to define a Web service that returns certain character string data as external data. The identifier of the external data only needs to be able to uniquely identify the data such as a global variable name. When one module refers to a plurality of external data, a method of storing the identifier of the external data group in another table and storing the reference of the table in the column 302 is generally used.
 呼出モジュールのカラム303は、モジュールが呼び出す別のモジュールの識別子を格納するカラムである。本実施例では、この呼び出し関係は関数コールを指す。つまり、モジュールが呼び出している先のモジュールの識別子がカラム303に格納される。但し、呼び出し関係の定義はこれに限定するものではなく、参照関係などを含んでもよい。一つのモジュールが複数のモジュールを呼び出している場合、別のテーブルに呼び出し先モジュール群の識別子を格納し、カラム303にそのテーブルの参照を格納する方式が一般に用いられる。 The calling module column 303 is a column for storing an identifier of another module called by the module. In this embodiment, this call relationship indicates a function call. That is, the identifier of the module called by the module is stored in the column 303. However, the definition of the call relationship is not limited to this, and may include a reference relationship. When one module calls a plurality of modules, a method is generally used in which the identifier of the callee module group is stored in another table and the reference of the table is stored in the column 303.
 図4は、モジュール別重要度データ211を表すデータベーステーブルの例である。モジュール別の重要度とは、ある観点におけるモジュールの価値、重要性を数値で表したものである。この算出方法は観点により異なるが、従来よりモジュールの複雑度や凝集度、コード行数等のソフトウェアメトリクス(以下、メトリクス)に基づいてモジュールを可視化する技術が提案されている。 FIG. 4 is an example of a database table representing module-specific importance data 211. The importance by module is a numerical value representing the value and importance of the module from a certain point of view. Although this calculation method varies depending on the viewpoint, a technique for visualizing a module based on software metrics (hereinafter referred to as metrics) such as module complexity, aggregation degree, and number of code lines has been proposed.
 それらの一般的な公知のメトリクスを用いて、例えばソースコードの構造理解という観点では、更にテストの実施実績を考慮して重要度を算出する以下の方式が考えられる。
  まず、表1に示すメトリクスを基に、数1に示す数式によりモジュールの重要度Mを算出する。重要度Mはソースコードの一般的なメトリクスを用いて算出する。
Using these commonly known metrics, for example, from the viewpoint of understanding the structure of the source code, the following method of calculating the importance in consideration of the test execution results can be considered.
First, based on the metrics shown in Table 1, the importance M of the module is calculated by the mathematical formula shown in Equation 1. The importance level M is calculated using general metrics of the source code.
Figure JPOXMLDOC01-appb-M000001
Figure JPOXMLDOC01-appb-M000001
 次に、数2によりモジュールの重要度Tを算出する。重要度Tは重要度Mの値と単体テストコードのメトリクスを用いて算出する重要度である。 Next, the importance T of the module is calculated according to Equation 2. The importance T is an importance calculated using the value of the importance M and the unit test code metrics.
Figure JPOXMLDOC01-appb-M000002
Figure JPOXMLDOC01-appb-M000002
Figure JPOXMLDOC01-appb-T000003
Figure JPOXMLDOC01-appb-T000003
 また、ソースコードの複雑さという観点では、一般的なソフトウェアメトリクスである循環的複雑度の値を重要度として用いることができる。また、開発者の主観により任意にモジュールの重要度を決定することも可能である。本発明では、このように算出された重要度の値を用いて抽象化するモジュールを決定するが、これは抽象化するモジュールを決定するプロセスを分かり易く表現したものであり、この方式に限定するものではない。例えば、重要度の指標を用いずにランダムに抽出されたモジュールを抽象化することも考えられる。 Also, from the viewpoint of source code complexity, the value of cyclic complexity, which is a general software metric, can be used as importance. It is also possible to arbitrarily determine the importance of a module according to the subjectivity of the developer. In the present invention, a module to be abstracted is determined using the importance value calculated in this way. This is an easy-to-understand expression process for determining a module to be abstracted, and is limited to this method. It is not a thing. For example, it may be possible to abstract a module extracted at random without using an index of importance.
 図4のモジュール別重要度データテーブル211の評価観点のカラム401は、モジュールの重要度の算出観点を格納するカラムである。例えば、ソースコードの構造を理解するために重要なモジュールを抽象化したい場合、カラム401の値が“構造理解”である重要度の高いモジュールを抽象化対象として決定する方式が考えられる。このように観点の種類毎に重要度を算出して格納しておくことで、抽象化するモジュールを様々な観点から決定することができる。
  モジュールのカラム402は、モジュールの識別子を格納するカラムである。モジュールの識別子についてはカラム301の説明で述べた通りである。
  重要度のカラム403は、前述したモジュールの重要度を格納するカラムである。重要度の高いモジュール、または低いモジュールが抽象化対象として決定されることを想定しているが、この方式に限定するものではない。
The evaluation viewpoint column 401 of the module importance level data table 211 in FIG. 4 is a column for storing the importance level calculation viewpoint of the module. For example, when it is desired to abstract a module that is important for understanding the structure of the source code, a method of determining a module having a high importance whose column 401 value is “structure understanding” as an abstraction target can be considered. By calculating and storing the importance for each type of viewpoint in this way, it is possible to determine the module to be abstracted from various viewpoints.
The module column 402 is a column for storing a module identifier. The module identifier is as described in the description of the column 301.
The importance column 403 is a column for storing the importance of the module described above. Although it is assumed that modules with high or low importance are determined as abstraction targets, the present invention is not limited to this method.
 図5は、本実施例のプログラム抽象図作成装置において、ユーザが評価対象プログラムの抽象図を作成して解析を行う場合に、評価対象プログラム抽象図作成処理のフローチャートを表している。
  ステップS501において、抽象図作成処理部201はユーザのGUI操作や他のモジュールからのAPIコールといった一般的なプログラム呼び出し操作を受け、処理を開始する。指定された評価対象プログラムのソースコード、および必要な場合はテストコードを入力する。
FIG. 5 shows a flowchart of the evaluation target program abstract diagram creation processing when the user creates an abstract diagram of the evaluation target program and performs analysis in the program abstract diagram creation device of this embodiment.
In step S501, the abstract diagram creation processing unit 201 receives a general program call operation such as a user GUI operation or an API call from another module, and starts processing. Enter the source code of the specified program to be evaluated and, if necessary, the test code.
 ステップS502において、抽象図作成処理部201は、公知技術のソースコード解析ツール等を用いて前記評価対象プログラムのソースコードを解析して、ソースコード解析データテーブル210を作成してデータベース、および主記憶装置104に記憶する。既に、データベースにソースコード解析データテーブル210が登録されている場合には、主記憶装置104に読み出す。 In step S502, the abstract diagram creation processing unit 201 analyzes the source code of the evaluation target program using a known source code analysis tool or the like, creates a source code analysis data table 210, creates a database, and main memory Store in device 104. If the source code analysis data table 210 is already registered in the database, it is read out to the main storage device 104.
 ステップS503において、抽象図作成処理部201は、前記した評価観点別のモジュール別重要度データ211を算出して、データベースに格納する。評価観点はユーザによって指定された観点を使用し、前記ソースコード解析データテーブル210に記憶される全てのモジュールに対して重要度を算出して、データベース、および主記憶装置104に記憶する。既に、データベースにモジュール別重要度データ211が登録されている場合には、主記憶装置104に読み出す。 In step S503, the abstract diagram creation processing unit 201 calculates the module-specific importance data 211 for each evaluation viewpoint and stores it in the database. The viewpoint specified by the user is used as the evaluation viewpoint, and the importance is calculated for all modules stored in the source code analysis data table 210 and stored in the database and the main storage device 104. If the module-specific importance data 211 is already registered in the database, it is read out to the main storage device 104.
 抽象図作成処理部201が、ソースコード解析データ210およびモジュール別重要度データ211を作成して、またはデータベースプログラム209から取得して、主記憶装置104に記憶する前記ステップS502,S503の処理は、既にデータが主記憶装置104に記憶されている場合は不要である。また、処理の開始時にこれらのデータを一度に主記憶装置104に記憶する方式もあれば、必要に応じてデータベースプログラム209から読み込む方式もある。以下、単にソースコード解析データ210またはモジュール別重要度データ211と記載した場合は、主記憶装置104に記憶したデータのことを指す。 The abstract diagram creation processing unit 201 creates the source code analysis data 210 and the module-specific importance data 211 or obtains it from the database program 209 and stores it in the main storage device 104 in steps S502 and S503. This is not necessary when data is already stored in the main storage device 104. In addition, there is a method of storing these data in the main storage device 104 at the time of starting the processing, and a method of reading from the database program 209 as necessary. Hereinafter, when the source code analysis data 210 or the module-specific importance data 211 is simply described, it indicates data stored in the main storage device 104.
 ステップS504において、抽象度判定部202はユーザのGUI操作などにより、抽象度の指定、またはプログラム抽象図作成処理の終了の指示を受付ける。抽象度とは、数値で表されたプログラム抽象図の抽象化の度合いであり、抽象度が高いほど可視化されるモジュールの抽象化の度合いを高め、そのために、抽象度が高いほど可視化されるモジュールの重要度の閾値と、後述するLCOMの閾値を高く設定する。 In step S504, the abstraction level determination unit 202 receives an instruction to specify the abstraction level or end the program abstract drawing creation process by a user GUI operation or the like. The degree of abstraction is the degree of abstraction of the program abstract diagram expressed as a numerical value. The higher the degree of abstraction, the higher the degree of abstraction of the module that is visualized. Therefore, the higher the degree of abstraction, the more visible the module. The threshold of importance and the threshold of LCOM described later are set high.
 抽象度の値は、例えば図10で説明するスライドバー等を用いてユーザのGUI操作などにより決定されるが、決定方法は限定しない。抽象度の値と、モジュールの重要度の閾値やLCOMの閾値との対応は開発者が自由に決定できる。これらの対応関係は、本実施例では抽象度判定部202のプログラムロジックにあらかじめハードコーディングされていることを想定するが、例えば設定ファイル等を用いて対応関係を後から変更可能にすることも想定できる。 The value of the abstraction level is determined by, for example, a user GUI operation using a slide bar described in FIG. 10, but the determination method is not limited. The developer can freely determine the correspondence between the abstraction level and the module importance level threshold or LCOM threshold. In the present embodiment, it is assumed that these correspondences are hard-coded in advance in the program logic of the abstraction level determination unit 202. However, for example, it is assumed that the correspondences can be changed later using a setting file or the like. it can.
 ステップS505において、抽象図作成処理部201は、ユーザが新たな抽象度を指定した場合にはステップS506へ移行し、ユーザがプログラム抽象図作成処理の終了を指定した場合には処理を終了する。 In step S505, the abstract diagram creation processing unit 201 proceeds to step S506 when the user designates a new level of abstraction, and terminates the process when the user designates the end of the program abstract diagram creation processing.
 ステップS506において、抽象度に従って前記評価対象プログラムのモジュールを抽象化する抽象化モジュール登録処理を実行する。図6に抽象化モジュール登録処理のフローチャートを示す。
  ステップS601において、評価対象プログラムのソースコード解析データ210に登録されている全てのモジュールに対応する抽象化済フラグを初期化する。
In step S506, abstract module registration processing for abstracting the module of the evaluation target program according to the abstract level is executed. FIG. 6 shows a flowchart of abstraction module registration processing.
In step S601, the abstracted flags corresponding to all the modules registered in the source code analysis data 210 of the evaluation target program are initialized.
 ステップS602において、未だ抽象化されていないモジュールが存在するかどうかを抽象化対象モジュール判定部203が判定する。ステップS601からこの処理に移行した場合、全てのモジュールが抽象化されていない状態にある。後述するステップS608からこの処理に移行した場合、まだ抽象化されていないモジュールが存在するかどうかを判定する。モジュールが既に抽象化されているか否かは、モジュール毎の抽象化済フラグに設定されている真偽値により決定する。この真偽値は後述するステップS610で抽象化済データ処理部207が主記憶装置104上の抽象化済フラグに記憶する。
  抽象化対象モジュール判定部203は、主記憶装置104に記憶された抽象化済フラグの真偽値を読み込むことで抽象化されていないモジュールの存在を判定する。未だ抽象化されていないモジュールが存在する場合はステップS603に、存在しない場合はENDに移行する。
In step S602, the abstraction target module determination unit 203 determines whether there is a module that has not been abstracted yet. When the process proceeds from step S601, all modules are not abstracted. When the process proceeds from step S608 described later, it is determined whether there is a module that has not been abstracted yet. Whether or not a module has already been abstracted is determined by a truth value set in the abstracted flag for each module. This true / false value is stored in the abstracted flag on the main storage device 104 by the abstracted data processing unit 207 in step S610 described later.
The abstraction target module determination unit 203 determines the presence of a non-abstracted module by reading the true / false value of the abstracted flag stored in the main storage device 104. If there is a module that has not been abstracted yet, the process proceeds to step S603, and if not, the process proceeds to END.
 ステップS603において、ステップS602で未だ抽象化されていないと判定されたモジュール群の中から抽象化の対象となるモジュールを抽象化対象モジュール判定部203が選択する。選択方法は様々だが、本実施例ではモジュールの重要度を用いて判定する。モジュール別重要度データテーブル211のカラム403に格納されている重要度の値と、ステップS504で決定した重要度の閾値を基に、ユーザが指定した評価観点における重要度が閾値以上のモジュールのみを抽象化対象のモジュールとして選択する。
  抽象化対象のモジュールが存在しない場合、つまり全ての未抽象化モジュールの重要度が閾値未満の場合、抽象化すべきモジュールは残っていないと判定してENDに移行する。但し、この処理は一例であり、例えば残された未抽象化モジュールの中から最も重要度の高いモジュールを抽象化対象モジュールとして選択することも考えられる。抽象化対象モジュールが存在する場合、ステップS604に移行する。
In step S603, the abstraction target module determination unit 203 selects a module to be abstracted from the module group determined not to be abstracted yet in step S602. There are various selection methods, but in this embodiment, the determination is made using the importance of the module. Based on the importance value stored in the column 403 of the module importance data table 211 and the importance threshold determined in step S504, only modules whose importance in the evaluation viewpoint designated by the user is equal to or higher than the threshold are selected. Select as a module to be abstracted.
If there is no abstraction target module, that is, if the importance of all the non-abstraction modules is less than the threshold, it is determined that there are no remaining modules to be abstracted, and the process proceeds to END. However, this processing is only an example, and for example, it may be possible to select the module having the highest importance as the abstraction target module from the remaining non-abstraction modules. When the abstraction target module exists, the process proceeds to step S604.
 ステップS604において、ステップS603で抽象化対象として選択されたモジュールか、または後述するステップS605、およびステップS606で抽象化されたモジュール群が外部データを参照しているかどうかを外部データアクセス判定部204が判定する。モジュールが外部データを参照しているかどうかの判定は、ソースコード解析データテーブル210のカラム302に格納される外部データ識別子の値を読み込むことで判定できる。モジュールが外部データを参照している場合はステップS605に進み、参照していない場合はステップS606に進む。 In step S604, the external data access determination unit 204 determines whether the module selected as the abstraction target in step S603 or the module group abstracted in steps S605 and S606 described later refers to external data. judge. Whether the module refers to external data can be determined by reading the value of the external data identifier stored in the column 302 of the source code analysis data table 210. If the module refers to external data, the process proceeds to step S605. If not, the process proceeds to step S606.
 ステップS605において、データアクセス抽象化処理部205がデータアクセス観点での抽象化を行うステップである。
  データアクセス観点での抽象化とは、ステップS604で外部データを参照していると判定された抽象化対象モジュールと、同じ外部データを参照している他のモジュール群を一つに纏めて抽象化する処理を表す。この処理は、ソースコード解析データ210のカラム302に格納される外部データ識別子の値を読み込み、その識別子と同じ識別子をカラム302に格納する別のモジュールをカラム301のモジュール識別子の値で判定することにより実行できる。この抽象化処理の具体例は図9で説明する。
  抽象化対象モジュールと同じ外部データを参照している他のモジュールが複数存在する場合、これらを全て纏めて抽象化することを想定しているが、例えば重要度の値が最も高いモジュールのみを抽象化することも考えられる。この方式では、より細かい粒度でモジュールの抽象化を行うことができる一方、処理速度は低下する。
In step S605, the data access abstraction processing unit 205 performs abstraction from the viewpoint of data access.
The abstraction from the viewpoint of data access is the abstraction by combining the abstraction target module determined to refer to the external data in step S604 and the other module group referring to the same external data. Represents the processing to be performed. In this process, the value of the external data identifier stored in the column 302 of the source code analysis data 210 is read, and another module storing the same identifier as that identifier in the column 302 is determined by the value of the module identifier in the column 301. Can be executed. A specific example of this abstraction processing will be described with reference to FIG.
When there are multiple other modules that refer to the same external data as the abstraction target module, it is assumed that all of them are abstracted together. For example, only the module with the highest importance value is abstracted. It is possible to make it. In this method, the module can be abstracted with a finer granularity, but the processing speed decreases.
 ステップS606において、制御フロー抽象化処理部206が制御フロー観点での抽象化を行う。
  制御フロー観点での抽象化とは、抽象化対象モジュールの中から呼ばれる他のモジュール群を、抽象化対象モジュールに取り込む形で抽象化する処理を表す。モジュール間の呼び出し関係はソースコード解析データテーブル210のカラム303に格納される呼出モジュール識別子の値を読み込むことで判定できる。この抽象化処理の具体例は図9で説明する。
  抽象化対象モジュールの中から呼ばれる他のモジュールが複数存在する場合、これらを全て纏めて抽象化することを想定しているが、例えば重要度の値が最も高いモジュールのみを抽象化することも考えられる。この方式では、より細かい粒度でモジュールの抽象化を行うことができる一方、処理速度は低下する。
In step S606, the control flow abstraction processing unit 206 performs abstraction from the viewpoint of control flow.
The abstraction from the viewpoint of the control flow represents a process of abstracting another module group called from among the abstraction target modules into the abstraction target module. The calling relationship between modules can be determined by reading the value of the calling module identifier stored in the column 303 of the source code analysis data table 210. A specific example of this abstraction processing will be described with reference to FIG.
When there are multiple other modules called from the abstraction target modules, it is assumed that all of them are abstracted together. For example, it is also possible to abstract only the module with the highest importance value. It is done. In this method, the module can be abstracted with a finer granularity, but the processing speed decreases.
 ステップS607において、LCOM閾値判定部208は、ステップS605またはステップS606で抽象化されて纏められた新たな抽象化モジュールのLCOM値を算出する。
  LCOMとは、“Lack of Cohesion in Methods”の略であり、凝集性が欠如した度合いを表す数値である。凝集度とは、モジュール内の機能要素と情報要素間の関連性の強さを表す指標であり、LCOMは従来より知られているソフトウェアメトリクスの1つである。LCOMの詳細については図8で説明する。
In step S607, the LCOM threshold value determination unit 208 calculates the LCOM value of the new abstract module that is abstracted and collected in step S605 or step S606.
LCOM is an abbreviation for “Lack of Cohesion in Methods” and is a numerical value indicating the degree of lack of cohesion. The degree of cohesion is an index representing the strength of the relationship between the functional elements and information elements in the module, and LCOM is one of the software metrics that has been conventionally known. Details of LCOM will be described with reference to FIG.
 ステップS608において、LCOM閾値判定部208は、新たな抽象化モジュールのLCOM値が閾値を超えた場合は、抽象化が適切ではないと判定して、抽象化モジュールは登録せずにステップS602に戻り、その他の未抽象化モジュールを判定して、次の抽象化対象モジュールを選択する。超えなかった場合は、抽象化が適切であると判定してステップS609へ移行する。 In step S608, the LCOM threshold value determination unit 208 determines that the abstraction is not appropriate when the LCOM value of the new abstract module exceeds the threshold value, and returns to step S602 without registering the abstract module. The other non-abstraction module is determined and the next abstraction target module is selected. If not, it is determined that the abstraction is appropriate, and the process proceeds to step S609.
 ステップS609において、抽象図作成処理部201は、前記抽象化されて纏められた新たな抽象化モジュールを、図7に示す抽象化モジュール登録データテーブル212に登録する。抽象化モジュールのカラム701には、システムが新たな名前を付けた「モジュール801」が登録され、内包モジュール(抽象化モジュールに含まれるモジュール)のカラム702には、抽象化して取り込まれたモジュールの識別子「Module A, Module B」が格納され、内包データ(抽象化モジュールに含まれるデータ)のカラム703には、抽象化して取り込まれたデータの識別子「Data A」が格納され、参照データのカラム704には、Module A, Module Bがモジュール801の外部に参照しているデータがあれば格納し、呼出モジュールのカラム705は、Module A, Module Bがモジュール801の外部にあるモジュールを呼び出していればそのモジュールの識別子を格納する。 In step S609, the abstract diagram creation processing unit 201 registers the new abstract module summarized and summarized in the abstract module registration data table 212 shown in FIG. In the abstract module column 701, “module 801” with a new name is registered by the system, and in the included module (module included in the abstract module) column 702, the abstracted module is imported. The identifier “Module A, Module B” is stored, and the identifier “Data A” of the data captured by abstraction is stored in the column 703 of the included data (data included in the abstraction module), and the column of the reference data 704 stores data referenced by Module A and Module B outside the module 801, and the column 705 of the calling module stores Module A and Module B calling a module outside the module 801. For example, the module identifier is stored.
 ステップS610において、抽象化済データ処理部207は、例えば「Module A, Module B」の抽象化済フラグを抽象化済にマーク(既に抽象化されたことを示す真偽値)して、新たに「モジュール801」の抽象化済フラグを追加設置して、その値(真偽値)は初期値(未済)とする。抽象化済フラグはデータベースやファイルに保管することもできるが、本実施例では主記憶装置104に記憶することを想定する。
  ステップS611において、前記抽象化されて纏められた新たな抽象化モジュールを次の抽象化対象モジュールに設定して、ステップS604へ移行する。
In step S610, the abstracted data processing unit 207, for example, marks the abstracted flag “Module A, Module B” as abstracted (a true / false value indicating that it has already been abstracted), and newly An abstracted flag of “module 801” is additionally installed, and its value (true / false value) is set to an initial value (unfinished). Although the abstracted flag can be stored in a database or a file, it is assumed that the abstracted flag is stored in the main storage device 104 in this embodiment.
In step S611, the new abstract module summarized and summarized is set as the next abstraction target module, and the process proceeds to step S604.
 図5のステップS507において、抽象図作成処理部201は、評価対象プログラムの抽象図を図10に示すように例えばコールグラフ形式に、表示装置105に表示する。
  コールグラフは、プログラムのモジュール(サブルーチン)同士の呼び出し関係を表現した有向グラフである。本実施例では、ソースコード解析データ210、および抽象化モジュール登録データ212の中より、抽象化済フラグの値(真偽値)が初期値(未済)のモジュールのみを選択してコールグラフのノードを表示し、呼出モジュールのカラムのデータよりコールグラフのエッジを表示して、評価対象プログラムの抽象図を表示する。
  抽象図を表示した後、ステップS504へ移行して、抽象度判定部202はユーザのGUI操作などにより、抽象度の指定、またはプログラム抽象図作成処理の終了の指示を受付け待ち状態となる。
In step S507 of FIG. 5, the abstract diagram creation processing unit 201 displays the abstract diagram of the evaluation target program on the display device 105, for example, in a call graph format as shown in FIG.
The call graph is a directed graph representing a calling relationship between program modules (subroutines). In the present embodiment, a call graph node is selected by selecting only a module whose abstracted flag value (true / false value) is an initial value (uncompleted) from the source code analysis data 210 and the abstract module registration data 212. Is displayed, the edge of the call graph is displayed from the data in the column of the calling module, and an abstract diagram of the evaluation target program is displayed.
After the abstract diagram is displayed, the process proceeds to step S504, and the abstraction level determination unit 202 waits for an instruction to specify the abstraction level or to terminate the program abstraction diagram creation process by a user GUI operation or the like.
 図8はLCOMの計算式と、LCOMの値が示す特徴について説明した図である。
  図8の数3はLCOMの計算式である。LCOMの計算式は広く一般に知られており、いくつかバリエーションが存在する。本実施例では数3の計算式を例示するが、これに限らない。LCOMはオブジェクト指向言語向けのソフトウェアメトリクスであるため、図8ではJava言語のプログラムを例示する。LCOMの値は0から1の範囲をとり、値が0に近づくほど良い設計とされ、値が1に近づくほど悪い設計とされる。
FIG. 8 is a diagram for explaining the calculation formula of LCOM and the characteristics indicated by the value of LCOM.
Equation 3 in FIG. 8 is an LCOM calculation formula. The calculation formula of LCOM is widely known, and there are some variations. In this embodiment, the calculation formula of Formula 3 is illustrated, but the present invention is not limited to this. Since LCOM is a software metric for object-oriented languages, FIG. 8 illustrates a Java language program. The value of LCOM ranges from 0 to 1. The closer the value is to 0, the better the design, and the closer the value is to 1, the worse the design.
 図8(a)は良い設計とされるJavaクラスを示す。クラス811では一つの変数fieldAが定義されており、二つのメソッドがそれぞれfieldAにアクセスしている。そのためクラス811は複数に分割できず、良い設計とされる。
  図8(b)は悪い設計とされるJavaクラスを示す。クラス812では二つの変数fieldAおよびfieldBが定義されており、fieldAに対してはメソッドmethodAのみが、fieldBに対してはメソッドmethodBのみがアクセスしている。このクラス812は二つに分割できると考えられるため、悪い設計とされる。
FIG. 8 (a) shows a Java class that is well designed. In the class 811, one variable fieldA is defined, and two methods respectively access fieldA. For this reason, the class 811 cannot be divided into a plurality of parts and is designed well.
FIG. 8B shows a Java class that is considered badly designed. In class 812, two variables fieldA and fieldB are defined. Only method methodA is accessed for fieldA, and only method methodB is accessed for fieldB. Since this class 812 can be divided into two, it is considered a bad design.
 このように、変数とメソッドの関係により計算値の大小が変化し、設計の良し悪しを判定できるメトリクスがLCOMである。図6で述べたように、データアクセス観点での抽象化と制御フロー観点での抽象化を行い、LCOMの値を判定しながら段階的に抽象化を進めることで、抽象化されたモジュールの品質を可能な限り高い状態に維持しながら抽象化を進めることが可能となる。抽象化され、一つに纏められるモジュール群を一つのオブジェクト(抽象化モジュール)と仮定することで、オブジェクト指向言語向けのメトリクスであるLCOMの値を計算している。 As described above, LCOM is a metric that can be used to determine whether the design is good or bad, depending on the relationship between variables and methods. As described in FIG. 6, the abstraction from the viewpoint of data access and the abstraction from the viewpoint of control flow are performed, and the abstraction is advanced step by step while judging the value of LCOM. It is possible to proceed with abstraction while maintaining as high a state as possible. By assuming a group of modules that are abstracted and grouped together as one object (abstract module), the value of LCOM, which is a metric for object-oriented languages, is calculated.
 図9は図6のステップS604からステップS611までの抽象化プロセスを分かり易く例示した概略図である。図のDataA901およびDataB906は、プログラムのグローバル変数やファイル、データベースといった一般的な外部データを表す。これらはソースコード解析データ210のカラム302に格納される識別子が指し示す外部データに相当する。ModuleA902、ModuleB903、ModuleC904、ModuleD905はモジュールを表す。これらはソースコード解析データ210のカラム301、カラム303、およびモジュール別重要度データ211のカラム402に格納される識別子が指し示すモジュールに相当する。907の二重線はモジュールから外部データへの参照関係を表す。908の矢印はモジュールからモジュールへの呼び出し関係を表す。801、802、803は、それぞれの点線が包含するモジュール群を纏めて抽象化した新たなモジュール(抽象化モジュール)であることを表す。 FIG. 9 is a schematic diagram illustrating the abstraction process from step S604 to step S611 in FIG. 6 in an easy-to-understand manner. Data A 901 and Data B 906 in the figure represent general external data such as program global variables, files, and databases. These correspond to the external data indicated by the identifier stored in the column 302 of the source code analysis data 210. Module A 902, Module B 903, Module C 904, and Module D 905 represent modules. These correspond to the modules indicated by the identifiers stored in the column 301 and the column 303 of the source code analysis data 210 and the column 402 of the module-specific importance data 211. A double line 907 represents a reference relationship from the module to the external data. An arrow 908 represents a calling relationship from module to module. Reference numerals 801, 802, and 803 denote new modules (abstraction modules) obtained by abstracting together the module group included in each dotted line.
 ここで図9を用いてステップS604からステップS611までの抽象化プロセスを簡潔に記す。まず、ステップS504でLCOMの閾値は0.4に、ステップS603で抽象化対象モジュールはModuleA902に決定していると仮定する。次に、ステップS604でModuleA902が外部データにアクセスしているかどうかを判定する。ModuleA902はDataA901を参照していることから、ステップS605に移行する。
  次に、ステップS605でデータアクセスによる抽象化を実施する。ここで、DataA901を参照しているModuleA902およびModuleB903を一つのモジュール801として抽象化する。
  次に、ステップS607において、抽象化した新たなモジュール801のLCOM値を算出する。ここでモジュール801を構成するModuleA902およびModuleB903は、同じ外部データDataA901を参照していることから、LCOMの値は0となる。
Here, the abstraction process from step S604 to step S611 will be briefly described with reference to FIG. First, it is assumed that the threshold of LCOM is determined to be 0.4 in step S504, and the module to be abstracted is determined to be ModuleA 902 in step S603. In step S604, it is determined whether Module A 902 is accessing external data. Since Module A 902 refers to Data A 901, the process proceeds to step S605.
In step S605, abstraction by data access is performed. Here, ModuleA 902 and Module B 903 referencing DataA 901 are abstracted as one module 801.
In step S607, the LCOM value of the new abstracted module 801 is calculated. Here, since Module A 902 and Module B 903 constituting module 801 refer to the same external data DataA 901, the value of LCOM is 0.
 次に、ステップS608において、モジュール801のLCOM値が閾値より小さいので、ステップS609へ移行して、図7に示す抽象化モジュール登録データテーブル212へモジュール801のデータを登録する。
  次に、ステップS610において、MoudleA902およびModuleB903を抽象化済として設定する。および、モジュール801の抽象化済フラグを初期値で追加設置する。
  次に、ステップS611において、モジュール801を次の抽象化対象モジュールに設定して、ステップS604に戻る。
Next, in step S608, since the LCOM value of the module 801 is smaller than the threshold value, the process proceeds to step S609, and the data of the module 801 is registered in the abstract module registration data table 212 shown in FIG.
Next, in step S610, the Moodle A 902 and the Module B 903 are set as abstracted. In addition, an abstracted flag of the module 801 is additionally installed with an initial value.
Next, in step S611, the module 801 is set as the next abstraction target module, and the process returns to step S604.
 次に、ステップS604において、モジュール801が外部データにアクセスしているかどうかを判定する。モジュール801は外部データへアクセスしていないことから、ステップS606に移行する。
  次に、ステップS606で制御フローによる抽象化を実施する。ここで、モジュール801はModuleC904を呼び出していることから、モジュール801とModuleC904を一つのモジュール802として抽象化する。
  次に、ステップS607において、抽象化した新たなモジュール802のLCOM値を算出する。ここで、モジュール802を構成するModuleA902およびModuleB903は、同じ外部データDataA901を参照するが、ModuleC904はDataA901を参照していないことから、モジュール802のLCOM値は上昇し、0.3(この値は正確に算出したものではなく、説明を分かり易くするための一例である)となる。
Next, in step S604, it is determined whether the module 801 is accessing external data. Since the module 801 does not access external data, the process proceeds to step S606.
Next, abstraction by the control flow is performed in step S606. Here, since the module 801 is calling ModuleC904, the module 801 and ModuleC904 are abstracted as one module 802.
Next, in step S607, the LCOM value of the new abstracted module 802 is calculated. Here, ModuleA 902 and Module B 903 constituting module 802 refer to the same external data DataA 901, but since Module C 904 does not refer to DataA 901, the LCOM value of module 802 increases to 0.3 (this value is accurately calculated). It is an example to make the explanation easy to understand).
 次に、ステップS608において、モジュール802のLCOM値が閾値より小さいので、ステップS609へ移行して、図7に示す抽象化モジュール登録データテーブル212へモジュール802のデータを登録する。
  次に、ステップS610において、新たにModuleC904を抽象化済として設定する。および、モジュール802の抽象化済フラグを初期値で追加設置する。
  次に、ステップS611において、モジュール802を次の抽象化対象モジュールに設定して、ステップS604に戻る。
Next, in step S608, since the LCOM value of the module 802 is smaller than the threshold value, the process proceeds to step S609, and the data of the module 802 is registered in the abstract module registration data table 212 shown in FIG.
Next, in step S610, Module C904 is newly set as abstracted. In addition, an abstracted flag of the module 802 is additionally installed with an initial value.
Next, in step S611, the module 802 is set as the next abstraction target module, and the process returns to step S604.
 同様に、ステップS604からステップS608を繰り返すことにより、モジュール802、DataB906およびModuleD905を一つに纏めて新たな抽象化モジュール803が抽象化される。ここでは、モジュール803のLCOM値は0.5となり、閾値を超える。そのため、ステップS608において、モジュール803を登録することはせずにステップS602へ移行する。
  よって、本実施例ではモジュールModuleA902を抽象化することで抽象化モジュール802までが生成される。上記処理を抽象化対象モジュールが無くなるまで繰り返すことで抽象図の作成を自動化できる。
Similarly, by repeating step S604 to step S608, a new abstract module 803 is abstracted by combining the module 802, DataB 906, and Module D 905 into one. Here, the LCOM value of the module 803 is 0.5, which exceeds the threshold value. Therefore, in step S608, the module 803 is not registered and the process proceeds to step S602.
Therefore, in this embodiment, by abstracting the module ModuleA 902 up to the abstract module 802 is generated. It is possible to automate the creation of an abstract diagram by repeating the above processing until there are no abstraction target modules.
 図10は本発明を適用したプログラム抽象図作成装置の画面例である。図に示すように、ユーザは、モジュール抽象度を設定するためのスライダーをマウスドラッグ等で左右に動かすことで、モジュールの抽象度を決定できる(ステップS504)。これにより抽象化するモジュールの重要度の閾値と、LCOMの閾値が決定され、本発明方式に従って処理を行うことで、図10に示すようなプログラムの抽象図を生成できる。
  評価対象プログラムの抽象図は、抽象図作成処理部201が、前記ソースコード解析データ210、および抽象化モジュール登録データ212の中より、抽象化済フラグの値(真偽値)が初期値(未済)のモジュールのみを選択してコールグラフのノードを表示し、呼出モジュールのカラムのデータよりコールグラフのエッジを表示して行う。
  本発明によれば、ユーザや開発者の手作業による設定を必要とすることなくプログラムの抽象図を生成できる。
FIG. 10 is a screen example of a program abstract diagram creation apparatus to which the present invention is applied. As shown in the figure, the user can determine the module abstraction level by moving the slider for setting the module abstraction level to the left or right by dragging the mouse (step S504). Accordingly, the threshold of importance of the module to be abstracted and the threshold of LCOM are determined, and an abstract diagram of the program as shown in FIG. 10 can be generated by performing processing according to the method of the present invention.
The abstract diagram of the program to be evaluated is generated by the abstract diagram creation processing unit 201 from the source code analysis data 210 and the abstract module registration data 212. The abstract flag value (true / false value) is the initial value (unfinished). ) Module is selected to display the call graph node, and the call graph edge is displayed from the call module column data.
According to the present invention, an abstract diagram of a program can be generated without requiring manual settings by a user or a developer.
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
  また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
  また、図中の線や点線は説明上必要と考えられるものを示しており、必ずしも全ての線や点線を図示しているとは限らない。
In addition, this invention is not limited to an above-described Example, Various modifications are included. For example, the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.
Each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. Information such as programs, tables, and files that realize each function can be stored in a recording device such as a memory, a hard disk, or an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
Also, the lines and dotted lines in the figure indicate what is considered necessary for the explanation, and not all lines and dotted lines are necessarily shown.
100 プログラム抽象図作成装置(情報処理装置)
101 中央演算装置
102 入力装置
103 二次記憶装置
104 主記憶装置
105 表示装置
106 バス
107 通信装置
110 別の情報処理装置
120 通信ネットワーク
200 プログラム抽象図作成プログラム
201 抽象図作成処理部
202 抽象度判定部
203 抽象化対象モジュール判定部
204 外部データアクセス判定部
205 データアクセス抽象化処理部
206 制御フロー抽象化処理部
207 抽象化済データ処理部
208 LCOM閾値判定部
209 データベースプログラム
210 ソースコード解析データ
211 モジュール別重要度データ
212 抽象化モジュール登録データ
801,802,803 モジュール群を纏めて抽象化した新たなモジュール(抽象化モジュール)
901 DataA
902 ModuleA
903 ModuleB
904 ModuleC
905 ModuleD
906 DataB
907 モジュールから外部データへの参照関係を表す二重線
908 モジュールからモジュールへの呼び出し関係を表す矢印
100 Program abstract diagram creation device (information processing device)
101 Central processing unit 102 Input device 103 Secondary storage device 104 Main storage device 105 Display device 106 Bus 107 Communication device 110 Another information processing device 120 Communication network 200 Program abstract diagram creation program 201 Abstract diagram creation processing unit 202 Abstraction level determination unit 203 Abstraction target module determination unit 204 External data access determination unit 205 Data access abstraction processing unit 206 Control flow abstraction processing unit 207 Abstracted data processing unit 208 LCOM threshold determination unit 209 Database program 210 Source code analysis data 211 By module Importance data 212 Abstract module registration data 801, 802, 803 A new module (abstract module) that is an abstraction of a group of modules
901 DataA
902 ModuleA
903 ModuleB
904 ModuleC
905 ModuleD
906 DataB
907 Double line indicating reference relationship from module to external data 908 Arrow indicating call relationship from module to module

Claims (12)

  1.  評価対象プログラムの抽象図を抽象度の指定入力に応じて表示するプログラム抽象図作成装置であって、
     前記評価対象プログラムのソースコードより、少なくともモジュール構成、参照データ、呼出モジュールのデータを有するソースコード解析データと、及び少なくとも評価観点別のモジュール毎の重要度データを有するモジュール別重要度データとを作成し、または既作成の前記データを読み込む抽象図作成処理部と、
     ユーザ指定の抽象度を受付けて、抽象度に対応した可視化するモジュールの重要度の閾値と、LCOMの閾値を設定する抽象度判定部と、
     未だ抽象化されていないモジュールの中から、モジュールの重要度が前記閾値以上となるモジュールを抽象化対象モジュールとして選択する抽象化対象モジュール判定部と、
     前記抽象化対象モジュールが外部データを参照しているかどうかを判定する外部データアクセス判定部と、
     前記抽象化対象モジュールが外部データを参照している場合、前記抽象化対象モジュールと、前記外部データを参照している他の前記未抽象化モジュールとを一つの新しい抽象化モジュールとして纏めて抽象化する第1の抽象化処理部と、
     前記抽象化対象モジュールが外部データを参照していない場合、前記抽象化対象モジュールと、前記抽象化対象モジュールが呼び出す他の未抽象化モジュールとを一つの新しい抽象化モジュールとして纏めて抽象化する第2の抽象化処理部と、を備え、
     前記抽象図作成処理部が、前記新しい抽象化モジュールの凝集性欠如の度合い(LCOM)を算出し、前記凝集性欠如の度合いが前記閾値を超えるか否かを判定し、前記閾値を超えない場合、前記抽象化モジュールを登録して、該登録した新たな抽象化モジュールに纏められた前記未抽象化モジュールを抽象化済モジュールとしてフラグを設定し、前記登録した新たな抽象化モジュールを次の抽象化対象モジュールに設定して、前記外部データアクセス判定部へ移行し、前記凝集性欠如の度合いが前記閾値を超える場合は、前記抽象化モジュールを登録せずに前記抽象化対象モジュール判定部へ移行し、
     前記抽象化対象モジュール判定部が、抽象化対象モジュールとして選択すべき未抽象化モジュールが無くなったと判定した場合には、モジュール抽象化処理を終了し、
     前記抽象図作成処理部が、抽象化済のフラグを参照して、未抽象化のモジュールのみをノードとするコールグラフ形式の抽象図を出力することを特徴とするプログラム抽象図作成装置。
    A program abstract diagram creation device that displays an abstract diagram of a program to be evaluated in response to a specified input of abstraction level,
    Source code analysis data having at least module configuration, reference data, and calling module data, and at least module-specific importance data having importance data for each module for each evaluation viewpoint are created from the source code of the evaluation target program. Or an abstract diagram creation processing unit that reads the already created data,
    Accepting the user-specified abstraction level, the threshold level of importance of the module to be visualized corresponding to the abstraction level, and the abstraction level determination unit for setting the LCOM threshold value,
    An abstraction target module determination unit that selects, as an abstraction target module, a module whose module importance is equal to or higher than the threshold value from modules that have not yet been abstracted;
    An external data access determination unit that determines whether the abstraction target module refers to external data;
    When the abstraction target module refers to external data, the abstraction target module and the other non-abstraction modules referring to the external data are combined into one new abstraction module for abstraction. A first abstraction processing unit,
    When the abstraction target module does not refer to external data, the abstraction target module and other non-abstraction modules called by the abstraction target module are collectively abstracted as one new abstraction module. Two abstraction processing units,
    When the abstract diagram creation processing unit calculates the degree of lack of cohesiveness (LCOM) of the new abstraction module, determines whether the degree of lack of cohesiveness exceeds the threshold, and does not exceed the threshold , Registering the abstraction module, setting a flag as the abstracted module for the non-abstracted modules collected in the registered new abstraction module, and setting the registered new abstraction module as the next abstraction The module is set to be an abstraction target module, and the process proceeds to the external data access determination unit. If the degree of cohesiveness exceeds the threshold value, the abstraction module is not registered and the process proceeds to the abstraction target module determination part And
    When the abstraction target module determination unit determines that there is no non-abstraction module to be selected as the abstraction target module, the module abstraction processing is terminated.
    A program abstract diagram creation device, wherein the abstract diagram creation processing unit refers to an abstracted flag and outputs a call graph format abstract diagram having only non-abstracted modules as nodes.
  2.  請求項1記載のプログラム抽象図作成装置において、
     前記抽象化対象モジュール判定部が、前記未抽象化モジュールの中から抽象化対象モジュールを選択する場合に、前記未抽象化モジュールの重要度を判定し、前記重要度の最も高い前記未抽象化モジュールを前記抽象化対象モジュールとして選択することを特徴とするプログラム抽象図作成装置。
    The program abstract diagram creation device according to claim 1,
    When the abstraction target module determination unit selects an abstraction target module from the non-abstraction modules, the importance level of the non-abstraction module is determined, and the non-abstraction module having the highest importance level is determined. Is selected as the abstraction target module.
  3.  請求項1記載のプログラム抽象図作成装置において、
     前記抽象図作成処理部が、前記抽象化モジュールを登録する場合に、少なくとも抽象化モジュールの識別子、内包モジュールの識別子、内包データの識別子、参照データの識別子、呼出モジュールの識別子の各データ項目を有するデータテーブルに登録し、新たに登録した該抽象化モジュールの抽象化済フラグを未抽象化の初期値で追加設置することを特徴とするプログラム抽象図作成装置。
    The program abstract diagram creation device according to claim 1,
    When the abstract diagram creation processing unit registers the abstract module, it has at least data items of an abstract module identifier, an included module identifier, an included data identifier, a reference data identifier, and a calling module identifier. An apparatus for creating a program abstract diagram, characterized in that an abstracted flag of a newly registered abstract module registered in a data table is additionally installed with a non-abstracted initial value.
  4.  請求項1乃至3のいずれかの請求項に記載のプログラム抽象図作成装置において、
     前記外部データは、グローバル変数、ファイルデータ、データベースに格納されるデータ、通信ソケットからの入力データ、関数からの返り値、であることを特徴とするプログラム抽象図作成装置。
    In the program abstract drawing creation apparatus according to any one of claims 1 to 3,
    2. The program abstract diagram creation apparatus according to claim 1, wherein the external data is global variables, file data, data stored in a database, input data from a communication socket, and a return value from a function.
  5.  請求項1乃至3のいずれかの請求項に記載のプログラム抽象図作成装置において、
     前記第1の抽象化処理部が、前記抽象化対象モジュールと、前記抽象化対象モジュールが参照している前記外部データを参照している他の複数の前記未抽象化モジュールとを一つのモジュールとして抽象化する場合に、前記他の複数の未抽象化モジュールの重要度を判定し、前記抽象化対象モジュールと、前記重要度の最も高い前記未抽象化モジュールとを一つのモジュールとして抽象化することを特徴とするプログラム抽象図作成装置。
    In the program abstract drawing creation apparatus according to any one of claims 1 to 3,
    The first abstraction processing unit sets the abstraction target module and a plurality of other non-abstraction modules referring to the external data referred to by the abstraction target module as one module. In the case of abstraction, the importance of the other plurality of non-abstraction modules is determined, and the abstraction target module and the non-abstraction module having the highest importance are abstracted as one module. A program abstract diagram creation device characterized by the above.
  6.  請求項1乃至3のいずれかの請求項に記載のプログラム抽象図作成装置において、
     前記第2の抽象化処理部が、前記抽象化対象モジュールと、前記抽象化対象モジュールが呼び出す他の複数の前記未抽象化モジュールとを一つのモジュールとして抽象化する場合に、前記他の複数の未抽象化モジュールの重要度を判定し、前記抽象化対象モジュールと、前記重要度の最も高い前記未抽象化モジュールとを一つのモジュールとして抽象化することを特徴とするプログラム抽象図作成装置。
    In the program abstract drawing creation apparatus according to any one of claims 1 to 3,
    When the second abstraction processing unit abstracts the abstraction target module and the plurality of other non-abstraction modules called by the abstraction target module as one module, the other plural An apparatus for creating a program abstract diagram, characterized by determining the importance of a non-abstraction module and abstracting the abstraction target module and the non-abstraction module having the highest importance as one module.
  7.  評価対象プログラムの抽象図を、コンピュータを用いて抽象度の指定入力に応じて表示するプログラム抽象図作成プログラムであって、
     前記コンピュータによる処理ステップとして、
     前記評価対象プログラムのソースコードより、少なくともモジュール構成、参照データ、呼出モジュールのデータを有するソースコード解析データと、及び少なくとも評価観点別のモジュール毎の重要度データを有するモジュール別重要度データとを作成し、または既作成のデータを読み込む処理ステップと、
     ユーザ指定の抽象度を受付けて、抽象度に対応した可視化するモジュールの重要度の閾値と、LCOMの閾値を設定する抽象度判定ステップと、
     未だ抽象化されていないモジュールの中から、モジュールの重要度が前記閾値以上となるモジュールを抽象化対象モジュールとして選択する抽象化対象モジュール判定ステップと、
     前記抽象化対象モジュールが外部データを参照しているかどうかを判定する外部データアクセス判定ステップと、
     前記抽象化対象モジュールが外部データを参照している場合、前記抽象化対象モジュールと、前記外部データを参照している他の前記未抽象化モジュールとを一つの新しい抽象化モジュールとして纏めて抽象化する第1の抽象化処理ステップと、
     前記抽象化対象モジュールが外部データを参照していない場合、前記抽象化対象モジュールと、前記抽象化対象モジュールが呼び出す他の未抽象化モジュールとを一つの新しい抽象化モジュールとして纏めて抽象化する第2の抽象化処理ステップと、
     前記新しい抽象化モジュールの凝集性欠如の度合い(LCOM)を算出し、前記凝集性欠如の度合いが前記閾値を超えるか否かを判定し、前記閾値を超えない場合、前記抽象化モジュールを登録して、該登録した新たな抽象化モジュールに纏められた前記未抽象化モジュールを抽象化済モジュールとしてフラグを設定し、前記登録した新たな抽象化モジュールを次の抽象化対象モジュールに設定して、前記外部データアクセス判定部へ移行し、前記凝集性欠如の度合いが前記閾値を超える場合は、前記抽象化モジュールを登録せずに前記抽象化対象モジュール判定部へ移行する処理ステップと、
     前記抽象化対象モジュール判定ステップにおいて、抽象化対象モジュールとして選択すべき未抽象化モジュールが無くなったと判定した場合には、モジュール抽象化処理を終了し、前記抽象化済のフラグを参照して、未抽象化のモジュールのみをノードとするコールグラフ形式の抽象図を出力するステップと、を有することを特徴とするプログラム抽象図作成プログラム。
    A program abstract diagram creation program for displaying an abstract diagram of a program to be evaluated according to a specified input of an abstraction level using a computer,
    As a processing step by the computer,
    Source code analysis data having at least module configuration, reference data, and calling module data, and at least module-specific importance data having importance data for each module for each evaluation viewpoint are created from the source code of the evaluation target program. Or processing steps to load already created data,
    An abstraction level determining step for accepting a user-specified abstraction level and setting a threshold level of importance of a module to be visualized corresponding to the abstraction level and a threshold value of LCOM;
    An abstraction target module determination step of selecting, as an abstraction target module, a module whose module importance is equal to or higher than the threshold value from among modules not yet abstracted;
    An external data access determination step of determining whether the abstraction target module refers to external data;
    When the abstraction target module refers to external data, the abstraction target module and the other non-abstraction modules referring to the external data are combined into one new abstraction module for abstraction. A first abstraction processing step,
    When the abstraction target module does not refer to external data, the abstraction target module and other non-abstraction modules called by the abstraction target module are collectively abstracted as one new abstraction module. Two abstraction processing steps;
    Calculate the degree of lack of cohesiveness (LCOM) of the new abstraction module, determine whether the degree of lack of cohesiveness exceeds the threshold, and register the abstraction module if the threshold is not exceeded A flag is set as the abstracted module for the non-abstracted modules collected in the registered new abstraction module, and the registered new abstraction module is set as a next abstraction target module, When the process proceeds to the external data access determination unit and the degree of lack of cohesion exceeds the threshold value, the processing step of transferring to the abstraction target module determination unit without registering the abstraction module;
    If it is determined in the abstraction target module determination step that there is no non-abstraction module to be selected as the abstraction target module, the module abstraction process is terminated, and the abstracted flag is referred to And a step of outputting an abstract diagram in a call graph format having only the abstraction module as a node.
  8.  前記抽象化対象モジュール判定ステップにおいて、前記未抽象化モジュールの中から抽象化対象モジュールを選択する場合に、前記未抽象化モジュールの重要度を判定し、前記重要度の最も高い前記未抽象化モジュールを前記抽象化対象モジュールとして選択することを特徴とする請求項7記載のプログラム抽象図作成プログラム。 In the abstraction target module determination step, when an abstraction target module is selected from the non-abstraction modules, the importance of the non-abstraction module is determined, and the non-abstraction module having the highest importance is determined. 8. The program abstract diagram creation program according to claim 7, wherein: is selected as the abstraction target module.
  9.  請求項7記載のプログラム抽象図作成プログラムにおいて、
     前記抽象化モジュールを登録する場合に、少なくとも抽象化モジュールの識別子、内包モジュールの識別子、内包データの識別子、参照データの識別子、呼出モジュールの識別子の各データ項目を有するデータテーブルに登録し、新たに登録した該抽象化モジュールの抽象化済フラグを未抽象化の初期値で追加設置することを特徴とするプログラム抽象図作成プログラム。
    The program abstract diagram creation program according to claim 7,
    When registering the abstraction module, register it in a data table having at least data items of an abstraction module identifier, an inclusion module identifier, an inclusion data identifier, a reference data identifier, and a calling module identifier, and newly A program abstract diagram creation program characterized by additionally installing an abstracted flag of the registered abstract module with an initial value of non-abstraction.
  10.  請求項7乃至9のいずれかの請求項に記載のプログラム抽象図作成プログラムにおいて、
     前記外部データは、グローバル変数、ファイルデータ、データベースに格納されるデータ、通信ソケットからの入力データ、関数からの返り値、であることを特徴とするプログラム抽象図作成プログラム。
    In the program abstract diagram creation program according to any one of claims 7 to 9,
    A program abstract diagram creation program characterized in that the external data is global variables, file data, data stored in a database, input data from a communication socket, and a return value from a function.
  11.  請求項7乃至9のいずれかの請求項に記載のプログラム抽象図作成プログラムにおいて、
     前記第1の抽象化処理ステップにおいて、前記抽象化対象モジュールと、前記抽象化対象モジュールが参照している前記外部データを参照している他の複数の前記未抽象化モジュールとを一つのモジュールとして抽象化する場合に、前記他の複数の未抽象化モジュールの重要度を判定し、前記抽象化対象モジュールと、前記重要度の最も高い前記未抽象化モジュールとを一つのモジュールとして抽象化することを特徴とするプログラム抽象図作成プログラム。
    In the program abstract diagram creation program according to any one of claims 7 to 9,
    In the first abstraction processing step, the abstraction target module and a plurality of other non-abstraction modules referring to the external data referred to by the abstraction target module as one module In the case of abstraction, the importance of the other plurality of non-abstraction modules is determined, and the abstraction target module and the non-abstraction module having the highest importance are abstracted as one module. A program abstract diagram creation program characterized by
  12.  請求項7乃至9のいずれかの請求項に記載のプログラム抽象図作成プログラムにおいて、
     前記第2の抽象化処理ステップにおいて、前記抽象化対象モジュールと、前記抽象化対象モジュールが呼び出す他の複数の前記未抽象化モジュールとを一つのモジュールとして抽象化する場合に、前記他の複数の未抽象化モジュールの重要度を判定し、前記抽象化対象モジュールと、前記重要度の最も高い前記未抽象化モジュールとを一つのモジュールとして抽象化することを特徴とするプログラム抽象図作成プログラム。
    In the program abstract diagram creation program according to any one of claims 7 to 9,
    In the second abstraction processing step, when the abstraction target module and the plurality of other non-abstraction modules called by the abstraction target module are abstracted as one module, the other plural A program abstract diagram creation program characterized by determining the importance of a non-abstraction module and abstracting the abstraction target module and the non-abstraction module having the highest importance as one module.
PCT/JP2014/058068 2014-03-24 2014-03-24 Device for creating abstract diagram of program and program for creating abstract diagram of program WO2015145539A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2014/058068 WO2015145539A1 (en) 2014-03-24 2014-03-24 Device for creating abstract diagram of program and program for creating abstract diagram of program
JP2016509639A JP6087473B2 (en) 2014-03-24 2014-03-24 Program abstract diagram creation device and program abstract diagram creation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/058068 WO2015145539A1 (en) 2014-03-24 2014-03-24 Device for creating abstract diagram of program and program for creating abstract diagram of program

Publications (1)

Publication Number Publication Date
WO2015145539A1 true WO2015145539A1 (en) 2015-10-01

Family

ID=54194141

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/058068 WO2015145539A1 (en) 2014-03-24 2014-03-24 Device for creating abstract diagram of program and program for creating abstract diagram of program

Country Status (2)

Country Link
JP (1) JP6087473B2 (en)
WO (1) WO2015145539A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019160008A (en) * 2018-03-15 2019-09-19 三菱電機株式会社 Program analyzer and program analysis method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305762A (en) * 1999-04-19 2000-11-02 Nec Corp Method for displaying module structural drawing by simplification/detailing and system therefor and information recording medium
US20070162903A1 (en) * 2006-01-06 2007-07-12 Babb Robert G Ii Systems and methods for identifying and displaying dependencies
JP2010204877A (en) * 2009-03-03 2010-09-16 Hitachi Ltd Software development support device and software development support method
JP2012194876A (en) * 2011-03-17 2012-10-11 Mizuho Information & Research Institute Inc Module analysis system, module analysis method, and module analysis program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305762A (en) * 1999-04-19 2000-11-02 Nec Corp Method for displaying module structural drawing by simplification/detailing and system therefor and information recording medium
US20070162903A1 (en) * 2006-01-06 2007-07-12 Babb Robert G Ii Systems and methods for identifying and displaying dependencies
JP2010204877A (en) * 2009-03-03 2010-09-16 Hitachi Ltd Software development support device and software development support method
JP2012194876A (en) * 2011-03-17 2012-10-11 Mizuho Information & Research Institute Inc Module analysis system, module analysis method, and module analysis program

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019160008A (en) * 2018-03-15 2019-09-19 三菱電機株式会社 Program analyzer and program analysis method
JP7038577B2 (en) 2018-03-15 2022-03-18 三菱電機株式会社 Program analyzer and program analysis method

Also Published As

Publication number Publication date
JPWO2015145539A1 (en) 2017-04-13
JP6087473B2 (en) 2017-03-01

Similar Documents

Publication Publication Date Title
CN107665228B (en) Associated information query method, terminal and equipment
NL2010546C2 (en) Method and apparatus for automatically generating a test script for a graphical user interface.
US10360027B2 (en) Automatically extracting a model for the behavior of a mobile application
JP6758274B2 (en) Automatic process control hardware engineering with schema-represented requirements
JP6253521B2 (en) Program visualization device, program visualization method, and program visualization program
US20170075665A1 (en) Program information generation system, method, and computer program
JP2012181821A (en) Logic diagram retrieval device
JP6087473B2 (en) Program abstract diagram creation device and program abstract diagram creation program
US11030362B2 (en) Modeling and cooperative simulation of systems with interdependent discrete and continuous elements
JP2016514326A (en) Method and system for analyzing a trace timeline of computer system activity
US8056050B2 (en) Method and system for guided inconsistency resolution in a model-driven software environment
CN109918445A (en) Digging mine device and method based on block chain
JP6172159B2 (en) Program setting device and program setting method
JP2017167732A (en) Circuit design verification apparatus and program
US8098249B2 (en) Apparatus and method for automatic scaling of tick marks
US10157056B2 (en) Device, method, and program for visualizing dependent portions of program
JP6581788B2 (en) Block diagram management apparatus, block diagram management method and program
WO2015145538A1 (en) Program chart creation device, program chart creation method, and program chart creation program
CN110413605A (en) A kind of method and apparatus of data visualization
JP2014032466A (en) Complexity calculation device, complexity calculation method, and complexity calculation program
JP2018045546A (en) Information generation system, device, method, and program
JP7091726B2 (en) Information processing equipment, programs and information processing methods
JPWO2019092778A1 (en) Display program, display method and display device
JP2018160034A (en) Information presentation device, information presentation method and program
Job Analysis of Software Complexity Using Object Oriented Design Metrics in Java Application

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14887208

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016509639

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14887208

Country of ref document: EP

Kind code of ref document: A1