WO2016092677A1 - モジュール分割支援装置、方法、及びプログラム - Google Patents

モジュール分割支援装置、方法、及びプログラム Download PDF

Info

Publication number
WO2016092677A1
WO2016092677A1 PCT/JP2014/082884 JP2014082884W WO2016092677A1 WO 2016092677 A1 WO2016092677 A1 WO 2016092677A1 JP 2014082884 W JP2014082884 W JP 2014082884W WO 2016092677 A1 WO2016092677 A1 WO 2016092677A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
category
keyword
function
indivisible
Prior art date
Application number
PCT/JP2014/082884
Other languages
English (en)
French (fr)
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/082884 priority Critical patent/WO2016092677A1/ja
Priority to US15/504,515 priority patent/US10025558B2/en
Priority to JP2016563360A priority patent/JP6178023B2/ja
Priority to CN201480081121.1A priority patent/CN106575225B/zh
Publication of WO2016092677A1 publication Critical patent/WO2016092677A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/721Modular inversion, reciprocal or quotient calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Definitions

  • the present invention relates to a module division support apparatus, a module division support method, and a module division support program for determining whether a module in a source code, for example, function division is possible.
  • Patent Document 1 proposes a method for determining whether or not a function to be determined should be separated from a file using a function evaluation rule (such as similarity of function names included in a file).
  • the module visualization determination of the present invention has the following means.
  • One aspect of the present invention is a module division that divides a module (for example, a group of functions / elements such as a function, a variable, and a macro) in a source code using an input device, an output device, an arithmetic device, and a storage device.
  • the computing device can use the keyword category table and the indivisible degree calculation item list stored in the storage device or input from the input device.
  • the keyword category table includes a plurality of sets of keywords and category data corresponding to the keywords. For example, a function related to a keyword can be used as a category. When the parts having the same or related functions are combined into one file as much as possible, the readability of the source code is improved. For this reason, it is easy to organize the source code by classifying keywords by focusing on functions.
  • the keyword itself may be used as the category. In this case, keywords and categories correspond one-on-one. Although a more detailed analysis is possible, the examination of the results may be complicated. Further, the category may be hierarchized into two or more.
  • the indivisible degree calculation item list includes a set of information on the indivisible degree calculation items between the first category and the second category of the categories, and information regarding the calculation method of the indivisible degree calculation items.
  • the indivisible degree calculation item and its calculation method can define various rules based on empirical rules.
  • the computing device includes a source code acquisition unit, a keyword acquisition unit, a data analysis unit, and a module division determination unit.
  • the source code acquisition unit acquires a group of source codes and a source code to be visualized, which are stored in the storage device or input from the input device.
  • the keyword acquisition unit identifies a keyword included in the module for each module in the group of source codes, and creates keyword usage data for each module.
  • the keyword usage data for each module is a statistically aggregated relationship between keywords appearing in a group of modules of source code. In a group of source codes, the more data, the better the statistical accuracy, but the larger the data processing amount.
  • the group of source codes is a set having a large relationship with the source code to be visualized. As a typical example, it is desirable to use a set of source codes belonging to a database or project to which a source code to be visualized belongs as a group of source codes.
  • the data analysis unit uses the calculation method stored in the indivisible degree calculation item list, the data stored in the keyword use data for each module, and the information related to the category corresponding to the keyword included in the keyword category table.
  • the indivisible degree for the category and the second category is calculated, and indivisible degree data is created.
  • the inseparability between categories associated with keywords is databased as indivisible data.
  • the module division determination unit identifies a keyword that exists in each module in the source code to be visualized, and corresponds to the first category and the second category having an inseparability below a predetermined threshold among the modules. Identify modules with keyword sets. This identified module is a candidate to be considered for partitioning.
  • entity or information processing apparatus that makes the indivisible data into a database may be separate from the entity or information processing apparatus that determines module division.
  • the data analysis unit when a function is used as a category, the data analysis unit, as an indivisible degree, relates to the degree of association between the first function and the second function, or between the first function and the second function. Calculate the percentage of usage order.
  • the threshold value can be input from the input device by the operator each time. In this case, the threshold and the changed result can be confirmed in real time. Alternatively, a threshold value may be added in advance to each set of information in the indivisible degree calculation item list.
  • the categories for keywords included in modules in the source code to be visualized are not limited to two, and there may be three or more categories.
  • the module may be determined as a module that can be divided. Such a module is presumed to contain many unrelated parts, and it is desirable to consider division preferentially.
  • a module narrowing judgment list defining a narrowing condition can be used.
  • the module division determination unit can reduce the processing amount by performing the process of specifying the module corresponding to the narrowing-down condition.
  • Various conditions can be determined empirically as narrowing conditions.
  • Specific examples of module refinement conditions include the number of functions used or the number of keywords, the maximum number of lines between functions or keywords, LOC (Lines Of Code), the complexity that can be measured with various indicators, the number of revisions, and the last revision. It is possible to use the elapsed time, the number of people involved in the development, or the development level, experience, ability, etc. of the developer.
  • module narrowing items that define narrowing conditions and module narrowing determination data that describes the module narrowing threshold for each item are provided.
  • the data analysis unit calculates a module narrowing value according to the module narrowing item, and compares the module narrowing value with the module narrowing threshold value.
  • the module division determination is performed when the module narrowing value is equal to or greater than the module narrowing threshold, and the module division determination is not performed when the module narrowing value is less than the threshold.
  • a plurality of threshold values used for module division determination can be used, and various determination conditions can be combined. For example, even a module that is determined to be a module that can be divided by a single threshold value may be a module in which a plurality of function sets having a high degree of indivisibleness are inherently included.
  • the module division determination unit has a function of extracting a set of functions having a high indivisible degree and determining an indivisible degree of the set of functions having a high indivisible degree. For this reason, it is conceivable to determine a module that can be divided when the inseparability between function sets is less than a predetermined threshold, and to determine a module that cannot be divided.
  • Another aspect of the present invention is to acquire a source code acquisition unit for acquiring a source code to be visualized and a keyword described in the source code or development maintenance data related to the project to which the source code belongs.
  • a keyword acquisition unit Further, a keyword category table in which keywords described in the module or function names to which the keywords belong is collected is used. Further, the keyword acquisition unit uses the keyword-specific data for each module that stores data related to the keyword usage for each acquired module while referring to the keyword category table. Also, an indivisible degree calculation item for functions and keywords, an indivisible degree calculation method, and an indivisible degree calculation item list in which thresholds are summarized are used.
  • the separability is calculated using the separability data that stores the calculated value of the separability calculation item, the keyword usage data by module, and the separability calculation method described in the separability calculation item list.
  • a data analysis unit that stores the calculation result in the indivisible data is used.
  • a module division determination unit that performs module division determination by comparing the indivisible degree with a threshold acquired from the indivisible degree calculation item list or a threshold input by the user is provided.
  • the device configuration described above may be configured by a single computer, or any part of the input device, output device, processing device, and storage device may be configured by another computer connected via a network. Also good. The idea of the invention is equivalent and unchanged.
  • functions equivalent to those configured by software can also be realized by hardware such as FPGA (Field Programmable Gate Array) and ASIC (Application Specific Integrated Circuit). Such an embodiment is also included in the scope of the present invention.
  • a function indivisible degree is calculated using information on the function used by the module, and whether or not the module can be divided using the indivisible degree.
  • notations such as “first”, “second”, and “third” are attached to identify the constituent elements, and do not necessarily limit the number or order.
  • a number for identifying a component is used for each context, and a number used in one context does not necessarily indicate the same configuration in another context. Further, it does not preclude that a component identified by a certain number also functions as a component identified by another number.
  • FIG. 1 is a diagram illustrating an example of the hardware and system configuration of the information processing apparatus 100 according to the first embodiment of the present invention.
  • a central processing unit 101 As the hardware of the information processing apparatus 100, a central processing unit 101, an input device 102 such as a keyboard and a mouse, a secondary storage device 103, a main storage device 104, a display device 105 such as a display, and a communication device 107 are included. Each device is connected by a bus 106, and data can be transmitted and received between the devices.
  • various information devices A110 and B120 such as an information processing device and a network storage that can store data. Between these, for example, a communication network such as the Internet 130 is connected.
  • FIG. 2 is a diagram illustrating an example of functional blocks of the information processing apparatus 100, the information apparatus A110, and the information apparatus B120 according to the first embodiment of the present invention.
  • all the functional blocks of the information processing apparatus 100 are described as software programs and data executed or operated by the central processing unit 101, but some or all of them are realized as hardware. May be.
  • the information processing apparatus 100 includes a source code acquisition unit 200, a keyword acquisition unit 201, a data analysis unit 202, a function division determination unit 203, a drawing, as illustrated in FIG.
  • the information device A110 has a source code group 206 and a source code A207 related to the project A.
  • the source code A207 is composed of partial programs such as functions and variables.
  • the information device B120 includes a source code group 208 and a source code B209 related to the project B.
  • the source code B209 is composed of partial programs such as functions and variables. Note that the source code group 206, the source code A207, the source code group 208, and the source code B209 related to the project A are not necessarily located in the above-described places, and the information processing apparatus 100, the information apparatus A110, and the information apparatus B120 are not necessarily located. Or any other accessible information processing apparatus.
  • FIG. 3 shows an example of the keyword category table 212.
  • the keyword category table 212 stores a keyword 3001 described in the function and a function name 3002 to which the keyword belongs.
  • SCI0, SCI1, ITU, and CMT are described as keywords.
  • the function name to which SCI0 and SCI1 belong is described as communication, and the function name to which ITU and CMT belong is described as a timer.
  • the keyword category table 212 can be created by a software vendor. Alternatively, the software user may categorize the keywords by himself / herself.
  • the keyword acquisition unit 201 acquires macro and keyword information set in the source code and development / maintenance data related to the source code, and stores the information in the function-specific keyword use data 213. Used when. Information stored in the function-specific keyword use data 213 will be described later.
  • FIG. 4 shows an example of function-specific keyword use data 213.
  • the function-specific keyword use data 213 stores data 4002 related to the use of the keyword 3001 for each function 4001 included in the source code group related to the project A of the information device A, for example.
  • the keyword acquisition unit 201 describes the number of times of use of the keyword 3001 described in the keyword category table 212 for each function. The number of times a keyword is used is counted once for each sentence in which the keyword is used, or once when the keyword is used y times between x rows, or multiple counting methods. Can be considered. Such a counting process can be automatically performed by searching and extracting the keywords shown in the keyword category table 212 with respect to the source code of each function.
  • the data to be stored is not limited to the number of times the keyword is used, and any data can be stored. What kind of data is stored may be determined in advance by the system, or may be determined flexibly based on information such as user input. In this example, data on the number of times of use is stored in units of keywords 3001, but the data is not limited to units of keywords, and may be stored in units of functions 3002.
  • FIG. 5 shows an example of the indivisible degree calculation item list 214.
  • the indivisible degree calculation item list 214 stores an item 5001 used for calculating the indivisible degree of the function, an indivisible degree calculation method 5002 for the item, and an indivisible degree threshold 5003 for the item.
  • the user selects the item 5001 used in the indivisible degree calculation.
  • the indivisible degree calculation method 5002 stored in the indivisible degree calculation item list 214 (FIG. 5) and the data stored in the function-specific keyword use data 213 (FIG. 4)
  • the indivisible degree calculation item 5001 selected by the user is used.
  • the degree is calculated, and the calculated indivisible degree is stored in the indivisible degree data 215 (FIG. 6).
  • the calculation indivisible degree is used when determining whether or not the function division determination target function can be divided.
  • indivisible degree calculation item 5001 “function relevance” and “ratio of function use order” are listed.
  • “Function relevance (relationship between function A and function B)” indicates the number of functions belonging to the keyword belonging to function A and the keyword belonging to function B, the keyword belonging to function A or the keyword belonging to function B. Calculate by dividing by the number of functions used.
  • Ratio of use order of function is the number of functions that use function B after function A, and the function B is used after function A, or It is calculated by dividing by the number of functions that use function A later.
  • “function relevance” and “ratio of function use order” which are the indivisible degree calculation items 5001, 0.7 and 0.5 are described as the threshold 5003, respectively.
  • “function relevance” is used as an indivisible degree calculation item.
  • the function uses the function A, the function B, and the function C
  • the inseparability for each of the function A and the function B, the function B and the function C, and the function A and the function C is calculated.
  • a function that uses a smaller function is determined to be divisible.
  • the items used in calculating the indivisible degree are not limited to using one by one, and a plurality of items may be used simultaneously.
  • the indivisible degree calculation item list 214 as shown in FIG. 5 is set and created in advance.
  • An example of the calculation method is not limited to that shown in FIG. 5, and any method that can evaluate the relevance or closeness of functions can be used.
  • the inseparability of two functions is calculated as the calculation method.
  • the inseparability of three or more functions may be calculated. For example, if the relevance of three functions A, B, and C is to be calculated, “(number of functions using keywords related to function A, keywords related to function B, and keywords related to function C) / (keywords related to function A or The number of functions using the keyword related to the function B or the keyword related to the function C) ”. The same applies when the function is 4 or more.
  • the threshold value is also set in advance, but may be changed or selected at the time of calculation, as will be described later.
  • FIG. 6 shows an example of the separability data 215 calculated by the separability calculation method shown in FIG. 5 based on the function-specific keyword use data 213 shown in FIG.
  • the indivisible degree data 215 the calculated value of the indivisible degree calculation item 5001 designated by the user is stored.
  • the method of calculating the indivisible degree is as described in FIG. In this example, it is assumed that the division level calculation item to be used is “relevance level of function”, and a separability value 6001 is stored in a table format that can represent the relevance level between functions.
  • the degree of association between category A (communication function) and category B (timer function) is shown.
  • the calculated values are collectively shown by category, but can also be shown for each keyword.
  • the storage format or display method of the calculated value is not limited to the left, and may be stored / displayed in an arbitrary format.
  • FIG. 7 shows an example of the function refinement determination list 216.
  • the function refinement determination list 216 lists an item 7001 used for narrowing down the function division determination target functions. If the number of division determination target functions is enormous, it takes time to complete all the division determinations. Therefore, the determination time is shortened by narrowing down the determination target functions using the function narrowing determination list 216. By using the determination conditions shown in FIG. 7, it is possible to extract a suitable one as a function division examination target.
  • items 7001 include “number of used functions / keywords”, “maximum number of lines between functions / keywords”, “LOC”, “complexity”, “number of corrections”, “period since last correction”. , And “Number of people involved in development”, and users can use the items they like.
  • the function refinement determination list 216 is set in advance based on an empirical rule or the like. For example, a function with a large number of corrections is often complex and should be divided. In addition, functions that have a large number of developers are often complex and should be divided.
  • a threshold 7002 is set for each item. If the value of the item is equal to or greater than the threshold, the item is determined as a division determination target. If the item value is less than the threshold, the item is excluded from the division determination target.
  • items that can be used for function narrowing are not limited to the above.
  • FIG. 8 shows a flowchart as an example when the information processing apparatus 100 visualizes the source code A207 (see FIG. 2) stored in the information processing apparatus A110 in order to support the function division.
  • Process 800 The program diagram creation control unit 205 starts creating a program diagram.
  • an example is shown in which it is determined whether or not a function can be divided with respect to a function in the program, and a program diagram in which the function that can be divided is highlighted is shown.
  • the user designates a source code to be visualized from the source code group 206.
  • the source code A207 is designated as the visualization source code.
  • the source code obtaining unit 200 obtains the source code A 207 to be visualized from the source code group 206 related to the project A via the communication device 107. If the source code group 206 is huge and it takes a long time to search for the source code A 207, a place where a high-speed search such as the information processing apparatus 100 can be performed in advance for a file that is likely to be used according to a user instruction. It is also possible to move or copy to.
  • the keyword acquisition unit 201 acquires keyword information such as a macro set in the source code group 206 related to the project A to which the visualization target source code A 207 specified by the user in the process 801 belongs, and functions-specific keyword use data 213 ( (See FIG. 4).
  • the number of keywords used for each function is stored.
  • data can be stored in consideration of the general concept of the keyword such as SCI0 that is the keyword and communication that is a function to which the keyword belongs.
  • the keywords acquired by the keyword acquisition unit 201 are macros and keywords described in the source code, but are not limited to the left.
  • the target for acquiring the keyword is not limited to the source code group 206 related to the project A to which the visualization target source code A 207 belongs, but includes various source code groups 208 related to the project B to which the source code B 209 irrelevant to the visualization target belongs. Source code and related development / maintenance data can be used.
  • Process 803 Using the input device 102, the user designates an item for narrowing down the function to be divided and a “function indivisible degree” item to be calculated to determine whether to divide the function later. . Items that can be used for narrowing down the division determination target functions are described in advance in the function narrowing determination list 216 (see FIG. 7), and the user may designate items from the function narrowing determination list 216.
  • the function refinement determination list 216 includes “number of used functions / keywords”, “maximum number of lines between functions / keywords”, “LOC”, “complexity”, “number of corrections”, “last modification” ”Period” and “number of people involved in the development”, and it is assumed that the user specifies “number of used functions / keywords” as a narrowing item in this process.
  • indivisible degree calculation item list 214 as the indivisible degree calculation item 5001, “function relevance” and “ratio of function use order” are described. "Is specified by the user.
  • the narrowing items and the indivisible degree calculation items are not limited to being used one by one, but a plurality of items can be used simultaneously.
  • the data analysis unit 202 uses the data stored in the separability calculation method list 214 (see FIG. 5) stored in the separability calculation item list 214 (see FIG. 5) and the function-specific keyword use data 213 (see FIG. 4).
  • the indivisible degree of the indivisible degree calculation item selected is calculated and stored in the indivisible degree data 215 (see FIG. 6).
  • the inseparability is used later in determining whether to divide the function. Since it is assumed in the process 803 that the user has specified “functional relevance” as the “indivisible degree” item, it is inseparable using the “functional relevance degree” calculation formula described in the indivisible degree calculation item list 214. Calculate the degree.
  • “Function relevance” is an index indicating how much a plurality of functions are related to each other. The higher this value, the easier the functions are used simultaneously. In other words, if the degree of relevance of functions is high, these functions should be used simultaneously as one process, and can be said to be inseparable as a process.
  • the “relationship between function A and function B” indicates the number of functions belonging to the keyword belonging to function A and the keyword belonging to function B, It can be calculated by dividing by the total number of functions that use the keyword belonging to function B.
  • Process 805 In process 805 and subsequent steps, division determination is performed for the function included in the source code A207 that is the visualization target.
  • the program diagram creation control unit 205 acquires, as a function division determination target function, one of the functions that are included in the source code A207 that is the visualization target acquired in the process 801 and has not yet been subjected to function division determination.
  • Process 806 The function division determination unit 203 determines whether or not to perform the division determination of the function division determination target function acquired in the process 805. In this determination, it is assumed that “use function / number of keywords” is used among the items described in the function narrowing determination list 216. If the determination is true, the process proceeds to process 807. If the determination is false, the process proceeds to process 809. This process will be described in detail later.
  • the function division determination unit 203 determines whether or not the function can be divided. In this determination, it is assumed that “function relevance” is used among the items described in the indivisible degree calculation item list 214 (FIG. 5). In the determination, for all combinations of functions used in the function included in the source code A207, the “function relevance” data value and the “function relevance” described in the indivisible degree calculation item list 214 are used. Compare the threshold of the item. For example, if all the “relevance levels of functions” exceed a threshold value, it is determined that division is not possible (unsuitable division). In the example of FIG.
  • the degree of association between the functions “communication” and “timer” is 0.8, and if there are only two functions to be evaluated, the threshold value is exceeded, so that this function cannot be divided (false). To do. Although not shown in FIG. 6, there are other functions (for example, “I / O”), and if the degree of association between the functions “I / O” and “timer” falls below a threshold, it can be divided (true). To do. If the determination is true, the process proceeds to process 808. If the determination is false, the process proceeds to process 809. The details of this process will be described later. In the above example, one threshold is used, but it is also possible to set a threshold separately according to the combination of functions and perform a logical operation on the result determined for each combination of functions.
  • Process 808 The drawing instruction unit 204 highlights the function as a function that can be divided. At this time, a function or keyword whose indivisible degree is below the threshold may be displayed together.
  • Process 809 The drawing instruction unit 204 does not highlight the function as a function that cannot be divided.
  • Process 810 The program diagram creation control unit 205 determines whether or not there is a function that has not yet been subjected to the function division determination in the source code A207 acquired in the process 801. If there is a function for which function division determination has not been performed, the process proceeds to process 805. If there is no function for which function division determination has not been performed, the process proceeds to process 811.
  • Process 811 The program diagram creation control unit 205 ends the program diagram creation.
  • FIG. 9 is a flowchart showing an example of determining whether to perform function division determination in the process 806 of FIG. In process 803, it is assumed that the user has designated “used function / number of keywords” among items described in the function narrowing determination list 216 (FIG. 7) as the narrowing items for the division determination target function. . In this example, one item is used as a condition, but a plurality of items may be used.
  • Process 900 The data analysis unit 202 analyzes the number of functions and keywords used in the function. Then, the function division determination unit 203 compares the “used function / keyword count” with the threshold value of the “used function / keyword count” item described in the function narrowing determination list 216, and the former value is greater than or equal to the latter value. If so, the process proceeds to process 807. If the former value is smaller than the latter value, the process proceeds to step 809.
  • FIG. 10 shows a flowchart as an example when performing function division determination in the process 807 of FIG.
  • process 803 it is assumed that the user has designated the “degree of function relevance” among the items described in the indivisible degree calculation item list 214 (FIG. 5) as the “indivisible degree” item.
  • the user has designated the “degree of function relevance” among the items described in the indivisible degree calculation item list 214 (FIG. 5) as the “indivisible degree” item.
  • one item is used as a condition, but a plurality of items may be used.
  • Process 1000 The data analysis unit 202 acquires keyword data of the determination target function from the function-specific keyword use data 213 (FIG. 4). Then, using this data, the “function relevance” data value described in the indivisible data 215 (FIG. 6) is obtained for all combinations of functions used in the function. Then, the function division determination unit 203 sets the “function relevance” data value and “function relevance” described in the indivisible degree calculation item list 214 (FIG. 5) for all functions used in the function. “Compare the threshold value of the item. At this time, if there is a function in which all the former values are lower than the latter values, the process proceeds to processing 808. If there is no function in which all the former values are lower than the latter values, the processing proceeds to step 809.
  • Fig. 11 shows an example of the screen when changing the atomic threshold.
  • squares in the figure indicate functions, and arrows connecting the squares indicate calling, writing, and the like.
  • the idea of how much a separable function is included is different.
  • the threshold of the indivisible degree calculation item 5001 described in the indivisible degree calculation item list 214 (FIG. 5) instead of 5003, as shown in FIG. 11, by adjusting the inseparability threshold slider 1101 and using the value as a threshold, it may be possible to appropriately rewrite the program diagram according to the purpose and intention.
  • a gray node 1102 indicates a function that is determined to be splittable.
  • the inseparability threshold is 0.8
  • the six functions are emphasized as separable.
  • the inseparability threshold slider is changed to 0.1 by operating the separability threshold, the lower function of FIG. Thus, only three functions are highlighted as separable.
  • FIG. 12 shows an example of a function having a high division priority.
  • the function shown in FIG. 12 the receiveMessage function, uses the A function, the B function, the C function, and the D function.
  • the A function and the B function have an atomicity of 0.8
  • the A function and the C function have an atomicity of 0.2
  • D function are indivisible degree 0.2
  • B function and C function are indivisible degree 0.2
  • B function and D function are indivisible degree 0.2
  • C function and D function are indivisible degree 0.7.
  • Fig. 13 shows another example of changing the atomic threshold.
  • the inseparability threshold slider has two or more axes. By having two axes, it is possible to set a first threshold for selecting a set of highly indivisible functions and a second threshold for separating a set of highly indivisible functions from each other. .
  • the upper stage 1101a of the indivisible degree threshold slider is used for selecting a function group having a high indivisible degree. Based on the threshold value of the upper slider 1101a, a function having at least one function set having an indivisible degree equal to or greater than the threshold value in the function is extracted.
  • the lower stage 1101b of the inseparability threshold slider is used to separate a set of high indivisible functions. Based on the threshold value of the lower slider 1101b, a function having at least one function set having an inseparability less than the threshold value is extracted from the functions extracted by the upper slider. That is, it can be seen from the upper slider that there is a highly functional set of functions in the function. In addition, it can be seen from the lower slider that there is a set of functions with low inseparability in the function. That is, it can be seen that the function is bipolar (or multipolar) in the function. Using these two sliders, first, a function having a set of highly indivisible functions is selected, and then a function having a separable function set is selected.
  • the function having a high indivisible degree is 0.6 or more, that is, a set of A function and B function, and a set of C function and D function. It is possible to extract the function having this.
  • the function is displayed as a white square, and the others are displayed as gray squares.
  • the relevance between the A function and B function set and the C function and D function set is as small as 0.2.
  • the function shown in gray in the upper part of FIG. 13 is a function that has no function group with an atomic degree of 0.6 or more.
  • the lower slider 1101b is operated and changed to 0.25.
  • the determination target based on the threshold value of the lower slider is limited to a function (indicated by a white square in the upper part of FIG. 13) having a function set with an indivisible degree of 0.6 or more depending on the setting of the upper slider. Then, among the functions indicated by white squares in the upper part of FIG. 13, a function having a function set with an indivisible degree of less than 0.25 is extracted.
  • the function in FIG. 12 is a function to be separated because the inseparability 0.2 of the B function and the C function is less than the threshold value.
  • some of the functions indicated by white squares in the upper part of FIG. 13 are changed to gray squares. This function changed from white to gray is a function whose function is bipolar (multipolar).
  • the threshold judgment target of the lower slider is the inseparability between all functions. However, it may be narrowed down to the indivisible degree between the set of A function and B function having a high indivisible degree extracted by the upper slider and the set of C function and D function. By specifying the function (keyword) to be determined, detailed examination becomes possible.
  • the threshold values of the two sliders can be set to threshold values that are effective only for the inseparable degree between specific functions from the beginning. For example, regardless of the result of the setting of the upper stage 1101a of the slider, the lower stage slider can be set as a threshold for the indivisible degree between the B function and the C function in FIG.
  • the ratio of function usage order can be used as the indivisible degree of functions.
  • the order of use of functions is determined, such as using the B function after using the A function.
  • FIG. 12 assuming that the indivisible degree is relative to “ratio of use order of functions”, the B function is used after the A function is used, and the D function is used after the C function is used.
  • the ratio is 0.8 and 0.7, respectively.
  • the ratio of using the C function after using the B function is 0.2.
  • the inseparability threshold when the inseparability threshold is set, the inseparability of the A function and the B function and the inseparability of the C function and the D function are not less than the threshold 0.6, so Selected as a set of highly indivisible functions. Furthermore, since the inseparability of the B function and the C function is less than the threshold value 0.25, the set of the A function and the B function and the set of the C function and the D function are to be divided.
  • the function call relation diagram is described as a program diagram as a program diagram, as shown in FIG. 11 and FIG. 13, the function itself determined to be splittable is highlighted, and the inside of the function is not expressed.
  • a visualization method is conceivable in which a group of inseparable functions is colored within the function.
  • the visualization method is not limited to the one described in this example including the left.
  • the indivisible degree is used depending on whether or not the function is highlighted.
  • the present invention is not limited to the left, and various usage methods are conceivable.
  • the present invention is not limited to the above-described embodiment, and includes various modifications.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.
  • DESCRIPTION OF SYMBOLS 100 Information processing apparatus 101 Central processing unit 102 Input apparatus 103 Secondary storage apparatus 104 Main storage apparatus 105 Display apparatus 106 Bus 107 Communication apparatus 110 Information apparatus A 120 Information device B DESCRIPTION OF SYMBOLS 130 Communication network 200 Source code acquisition part 201 Keyword acquisition part 202 Data analysis part 203 Function division

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

モジュールが利用する機能に関する情報を活用して、分割可能なモジュールを自動で抽出する、モジュール分割支援装置、モジュール分割支援方法、及びモジュール分割支援プログラムを提供する。 情報処理装置のキーワード取得部は、モジュールが利用している機能に関するデータをモジュール別キーワード使用データへ収集し、データ解析部は、データと、不可分度算出項目リストに格納されたユーザ指定の不可分度算出項目算出方法を用いて、不可分度を算出し、不可分度を不可分度データへ格納する。そして、モジュール分割判定部が、分割判定対象モジュールに対し、ユーザ指定の不可分度算出項目に関係する機能に関する不可分度と、不可分度算出項目リストに格納された閾値とを比較する事で、モジュール分割可能か否かを判定する。

Description

モジュール分割支援装置、方法、及びプログラム
 本発明は、ソースコード内のモジュール、例えば関数分割が可能か否かを判定する、モジュール分割支援装置、モジュール分割支援方法、及びモジュール分割支援プログラムに関する。
 ファイルが適切に設計されず、関数が不適切なファイルに配置されている事があり、ソース可読性低下の原因となっている。特許文献1では、関数の評価ルール(ファイル内に含まれる関数名の類似度等)を用いて、判定対象の関数をファイルから分離するべきか否かを判定する方法が提案されている。
特開2007/219586
 しかしながら、特許文献1の方法では、関数内の解析を行わない為、関数の分割が可能か否かを判断する事が出来ず、関数レベルでのソース可読性を向上させる事が出来なかった。
 上記課題を解決する為に、本発明のモジュール可視化判定は以下の手段を有するものである。
 本発明の一側面は、入力装置、出力装置、演算装置、および記憶装置を用いて、ソースコード中のモジュール(例えば、関数、変数、マクロ等のひとまとまりの機能・要素)を分割するモジュール分割支援方法、あるいは、そのための装置、およびプログラムである。
 演算装置は、記憶装置に記憶された、あるいは、入力装置から入力される、キーワードカテゴリ表と不可分度算出項目リストを利用可能である。キーワードカテゴリ表は、キーワードと、キーワードに対応するカテゴリのデータの組を複数組含む。例えば、カテゴリとして、キーワードに関連する機能を利用することができる。同じまたは関連する機能を有する部分は、なるべく一つのファイルに纏めたほうが、ソースコードの可読性は向上する。このため、機能に着目してキーワードを分類することで、ソースコードの整理がしやすくなる。あるいは、カテゴリとして、キーワードそのものを用いてもよい。この場合は、キーワードとカテゴリが一対一に対応する。より詳細な分析が可能となるが、結果の検討が煩雑になる場合もある。また、カテゴリを2以上に階層化してもよい。
 不可分度算出項目リストは、カテゴリのうち第1のカテゴリと第2のカテゴリの間の不可分度算出項目と、不可分度算出項目の算出方法に関する情報の組を含む。不可分度算出項目とその算出方法は、経験則に基づいて種々のルールを定めることができる。
 演算装置は、ソースコード取得部と、キーワード取得部と、データ解析部と、モジュール分割判定部を備える。
 ソースコード取得部は、記憶装置に記憶された、あるいは、入力装置から入力される、一群のソースコードおよび可視化対象となるソースコードを取得する。キーワード取得部は、一群のソースコード中のモジュール毎に、モジュールに含まれるキーワードを特定して、モジュール別キーワード使用データを作成する。モジュール別キーワード使用データは、一群のソースコードのモジュール中に出現するキーワード間の関連性を、統計的に集計したものである。一群のソースコードは、データが多いほど統計的精度は向上するが、データ処理量は大きくなる。また、一群のソースコードは、可視化対象となるソースコードと関連性の大きい集合であることが好ましい。典型的な例としては、可視化対象となるソースコードが属する、データベースまたはプロジェクトに属するソースコードの集合を一群のソースコードとして利用することが望ましい。
 データ解析部は、不可分度算出項目リストに格納された算出方法と、モジュール別キーワード使用データに格納されたデータと、キーワードカテゴリ表に含まれるキーワードに対応するカテゴリに関する情報を用いて、第1のカテゴリと第2のカテゴリについての不可分度を算出し、不可分度データを作成する。
 以上のソースコード取得部とデータ解析部による処理によって、キーワードに関連づけられたカテゴリ相互の不可分度が、不可分度データとしてデータベース化される。
 モジュール分割判定部は、可視化対象となるソースコード中の各モジュール内に存在するキーワードを特定し、各モジュールのうち、所定閾値を下回る不可分度を有する第1のカテゴリと第2のカテゴリに対応するキーワードの組を有するモジュールを特定する。この特定されたモジュールが、分割を検討すべき候補となる。
 なお、不可分度データをデータベース化する主体もしくは情報処理装置は、モジュール分割を判定する主体もしくは情報処理装置と別個であってもよい。
 本発明の好ましい具体例では、カテゴリとして機能を用いた場合、データ解析部は、不可分度として、第1の機能と第2の機能の関連度、または、第1の機能と第2の機能の利用順の割合、を算出する。
 閾値については、その都度オペレータが入力装置から入力することができる。この場合、閾値と変化させた結果をリアルタイムで確認することができる。または、不可分度算出項目リストの各情報の組に、あらかじめ閾値を付随させておいてもよい。
 可視化対象となるソースコード中のモジュールに含まれるキーワードに対するカテゴリは、2つとは限らず、3以上ある場合もある。この場合、あるモジュールが含むキーワードに対応したカテゴリ同士の不可分度が、全て前記所定閾値を下回る場合、当該モジュールを分割可能なモジュールと判定してもよい。このようなモジュールは、関連性のない部分が多く含まれることが推測され、優先的に分割を検討することが望ましい。
 本発明の好ましい具体例では、可視化対象となるソースコード中のモジュールを絞り込むために、絞り込み条件を定義したモジュール絞り込み判定リストを利用可能とする。モジュール分割判定部は、絞り込み条件に該当するモジュールについて特定する処理を行うことにより、処理量を少なくすることができる。絞り込み条件としては、種々の条件を経験的に定めておくことができる。モジュール絞り込み条件の具体的な例としては、使用機能あるいはキーワード数、機能あるいはキーワード間の最大行間数、LOC(Lines Of Code)、種々の指標で測定できる複雑度、修正回数、最後に修正してから経過した時間、開発に関わった人数、または開発者の開発レベル、経験、能力等を利用することができる。
 より具体的な例では、モジュール分割判定対象モジュールを絞り込むために、絞り込み条件を規定するモジュール絞り込み項目、と項目毎にモジュール絞り込みの閾値を記載したモジュール絞り込み判定データ、を備える。データ解析部は、モジュール絞り込み項目に従いモジュール絞り込みの値を算出し、モジュール絞り込みの値と、モジュール絞り込みの閾値と、を比較する。モジュール絞り込みの値が、モジュール絞り込みの閾値以上である場合に、モジュール分割判定を行い、閾値未満である場合に、モジュール分割判定を行わないように構成することができる。
 なお、モジュール分割判定に用いる閾値は複数用いることができ、判定条件も種々のものを組み合わせることができる。例えば、単一の閾値では分割可能なモジュールと判定されるモジュールであっても、不可分度の高い機能の組が複数別個に内在するモジュールである場合がある。本発明の他の好適な例では、モジュール分割判定部は、該不可分度の高い機能の組を抽出するとともに、当該不可分度の高い機能の組同士の不可分度を判定する機能を有する。このため、機能の組同士の不可分度が、所定閾値未満である場合に分割可能なモジュールと判定し、それ以外を分割可能でないモジュールと判定することが考えられる。
 また、本発明の他の観点は、可視化対象のソースコードを取得するソースコード取得部と、ソースコード、またはソースコードが属するプロジェクトに関係するソースコードや開発保守データに記述されているキーワードを取得するキーワード取得部とを備える。また、モジュール内に記述されるキーワードまたはキーワードが属する機能名を纏めたキーワードカテゴリ表を用いる。また、キーワード取得部が、キーワードカテゴリ表を参考にしつつ、取得したモジュール毎のキーワード使用に関するデータを格納するモジュール別キーワード使用データを用いる。また、機能やキーワードの不可分度算出項目、不可分度の算出方法、及び閾値を纏めた不可分度算出項目リストを用いる。また、不可分度算出項目の算出値を格納した不可分度データと、モジュール別キーワード使用データと、不可分度算出項目リストに記載された不可分度算出方法と、を利用して、不可分度の算出を行い、算出結果を該不可分度データに格納するデータ解析部を用いる。また、不可分度と、不可分度算出項目リストから取得した閾値またはユーザが入力した閾値とを比較して、モジュールの分割判定を行うモジュール分割判定部を備える。
 以上で説明した装置構成は、単体のコンピュータで構成してもよいし、あるいは、入力装置、出力装置、処理装置、記憶装置の任意の部分が、ネットワークで接続された他のコンピュータで構成されてもよい。発明の思想としては等価であり、変わるところがない。
 本実施例中、ソフトウエアで構成した機能と同等の機能は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)などのハードウエアでも実現できる。そのような態様も本願発明の範囲に含まれる。
 本発明によれば、ソースコード内に含まれるモジュールに対し、該モジュールが利用する機能に関する情報を活用して機能の不可分度を算出し、該不可分度を用いて分割が可能なモジュールか否かを判定する事で、モジュールレベルでのソース可読性向上を支援する事が出来る。上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
実施例におけるハードウェア構成の例を示すブロック図である。 実施例における例を示す機能ブロック図である。 実施例におけるキーワードカテゴリ表の例を示す表図である。 実施例における関数別キーワード使用データの例を示す表図である。 実施例における不可分度算出項目リストの例を示す表図である。 実施例における不可分度データの例を示す表図である。 実施例における関数絞り込み判定リストの例を示す表図である。 実施例における関数分割を支援するためのプログラム図作成フローチャートの一例を示すフロー図である。 実施例における分割判定対象関数絞り込みフローチャートの一例を示すフロー図である。 実施例における関数分割判定フローチャートの一例を示すフロー図である。 不可分度変更に応じて可視化図が変化する一例を示す平面図である。 分割優先度の高い関数の一例を示す平面図である。 不可分度変更に応じて可視化図が変化する一例を示す平面図である。
 以下、本発明による関数分割支援装置、関数分割支援方法、及び関数分割支援プログラムに関する一実施形態を、図面を用いて詳細に説明する。
 ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
 以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
 本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
 図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
 本明細書において単数形で表される構成要素は、特段文脈で明らかに示されない限り、複数形を含むものとする。
 本実施例1では、複数の関数を含む可視化対象ソースコードに対して、分割可能だと判定した関数を強調したプログラム図を生成する方法の一例を記す。プログラム図の種類は複数考えられるが、本例では、プログラム図として関数の呼出関係図をベースにして記載している。
 図1は、本発明の実施例1に係る情報処理装置100のハードウェア及びシステム構成の一例を示す図である。情報処理装置100のハードウェアとして、中央処理装置101、キーボードやマウス等の入力装置102、二次記憶装置103、主記憶装置104、ディスプレイ等の表示装置105、及び通信装置107を有する。尚、各装置は、バス106によって接続され、各装置間で相互にデータの送受信が可能である。また、情報処理装置100の他に、情報処理装置やネットワークストレージといった、データを保存する事が可能な種々の情報装置A110と情報装置B120があり、これらの間が、例えば、インターネット等の通信ネットワーク130により接続されている。
 図2は、本発明の実施例1に係る情報処理装置100、情報装置A110、及び情報装置B120の機能ブロックの一例を示す図である。尚、本実施例においては、情報処理装置100の機能ブロックの全てが中央処理装置101によって実行または操作されるソフトウェアプログラムやデータであるものとして説明するが、一部または全ては、ハードウェアとして実現されても良い。
 また、本来は、これらの機能ブロックに加え、各機能ブロックの起動や管理等を行うOS(Operating System)や制御プログラム等が存在するが、本実施例では、これらの機能ブロックの連携動作を適宜説明することとし、OSや制御プログラムがここで適宜説明された連携動作に必要となる機能ブロックの起動や動作管理を行う事は自明であるので、これらのOSや制御プログラムについては説明及び記載を省略する。
 さて、本発明の実施例1に係る情報処理装置100は、機能ブロックとして、図2に示すように、ソースコード取得部200、キーワード取得部201、データ解析部202、関数分割判定部203、描画指示部204、プログラム図作成制御部205、キーワードカテゴリ表212、関数別キーワード使用データ213、不可分度算出項目リスト214、不可分度データ215、及び関数絞り込み判定データ216を有する。
 情報装置A110は、プロジェクトAに関するソースコード群206、及びソースコードA207を有する。ソースコードA207は、関数や変数等の部分的プログラムで構成されている。
 情報装置B120は、プロジェクトBに関するソースコード群208、及びソースコードB209を有する。ソースコードB209は、関数や変数等の部分的プログラムで構成されている。尚、プロジェクトAに関するソースコード群206、ソースコードA207、プロジェクトBに関するソースコード群208、及びソースコードB209は必ずしも上述の場所にある必要はなく、情報処理装置100、情報装置A110、及び情報装置B120、あるいは他のアクセス可能な情報処理装置のいずれに格納されていても良い。
 図3に、キーワードカテゴリ表212の一例を示す。キーワードカテゴリ表212には、関数内に記述されるキーワード3001と、該キーワードが属する機能名3002が格納される。本例では、キーワードとして、SCI0、SCI1、ITU、及びCMTを記載している。また、SCI0とSCI1が属する機能名を通信、ITUとCMTが属する機能名をタイマ、として記載している。キーワードカテゴリ表212は、ソフトウェアベンダーが作成することができる。あるいは、ソフトウェアユーザが自分でキーワードのカテゴリ分けをして作成してもよい。これらキーワードや機能名は、キーワード取得部201が、ソースコードやソースコードに関する開発・保守データ等で設定されているマクロやキーワード情報を取得し、該情報を、関数別キーワード使用データ213に格納する際に用いる。関数別キーワード使用データ213に格納する情報に関しては後述する。
 図4に、関数別キーワード使用データ213の一例を示す。関数別キーワード使用データ213には、例えば情報装置AのプロジェクトAに関するソースコード群に含まれる、関数4001毎のキーワード3001使用に関するデータ4002が格納される。本例では、キーワード取得部201が、関数毎に、キーワードカテゴリ表212に記載されているキーワード3001の使用回数を記載するものとする。キーワードの使用回数は、キーワードが使用されている文単位で一回とカウントしたり、x行数の間にy回キーワードが使用している場合に一回とカウントしたり、と複数のカウント方法が考えられる。このようなカウント処理は、各関数のソースコードに対して、キーワードカテゴリ表212に示すキーワードを検索し、抽出することで自動的に行うことができる。尚、格納するデータは、キーワードの使用回数に限定されず、どのようなデータも格納可能である。どのようなデータを格納するかを、予めシステムで決めておいても良いし、ユーザ入力等の情報をもとに柔軟に決定する事も考えられる。また、本例ではキーワード3001単位で使用回数のデータを格納しているが、キーワード単位に限定されるものではなく、機能3002単位で格納しても良い。
 図5に、不可分度算出項目リスト214の一例を示す。不可分度算出項目リスト214には、機能の不可分度算出で利用する項目5001、該項目の不可分度算出方法5002、及び該項目の不可分度閾値5003が格納される。
 本例では、不可分度算出で利用する項目5001はユーザが選択するものとする。不可分度算出項目リスト214(図5)に格納された不可分度算出方法5002と関数別キーワード使用データ213(図4)に格納されたデータを用いて、ユーザが選択した不可分度算出項目5001の不可分度を算出し、該算出不可分度を不可分度データ215(図6)に格納する。
 該算出不可分度は、関数分割判定対象関数が分割可能か否かを判定する際に利用する。本例では、不可分度算出項目5001の例として、“機能の関連度”と“機能の利用順の割合”の二つを挙げている。
 “機能の関連度(機能Aと機能Bの関連度)”は、機能Aに属するキーワード及び機能Bに属するキーワードを利用する関数の数、を、機能Aに属するキーワードまたは機能Bに属するキーワードを使用する関数の数で除算する事で算出する。
 “機能の利用順の割合(機能Aの後に機能Bを利用する割合)”は、機能Aの後に機能Bを利用する関数の数を、機能Aの後に機能Bを利用する、または機能Bの後に機能Aを利用する関数の数で除算する事で算出する。
 不可分度算出項目5001である“機能の関連度”と“機能の利用順の割合”に関して、それぞれ、閾値5003として、0.7と0.5が記載されている。本例では、不可分度算出項目として“機能の関連度”を使用する。関数が機能A、機能B、機能Cを使用している場合、機能Aと機能B、機能Bと機能C、機能Aと機能Cのそれぞれに対する不可分度を算出し、該不可分度が全て該閾値よりも小さい機能を使用している関数は分割可能と判定する。尚、不可分度算出で利用する項目は、一つずつの利用に限らず、複数の項目を同時に利用する事も考えられる。
 図5のような、不可分度算出項目リスト214は、予め設定して作成しておく。算出方法の例は、図5に限るものではなく、機能相互の関連性もしくは密接性を評価できるものであればよい。図5の例では、算出方法として2つの機能の不可分度を算出したが、3つ以上の機能の不可分度を算出してもよい。例えば、3つの機能A,B,Cの関連度を算出するのであれば、「(機能Aに関するキーワード及び機能Bに関するキーワード及び機能Cに関するキーワードを利用する関数の数)/(機能Aに関するキーワードまたは機能Bに関するキーワードまたは機能Cに関するキーワードを利用する関数の数)」で計算することができる。機能が4以上の場合でも同様である。また、閾値も予め設定しておくが、後に説明するように、算出時に変更または選択できるようにしておいてもよい。
 図6に、図4に示した関数別キーワード使用データ213を基に、図5に示した不可分度算出方法で算出した不可分度データ215の一例を示す。不可分度データ215には、ユーザが使用を指定した不可分度算出項目5001の算出値を格納する。該不可分度の算出方法は、図5で説明した通りである。本例では、利用する不可分度算出項目が“機能の関連度”である場合を想定しており、機能同士の関連度を表現可能な表形式で、不可分度の値6001を格納している。図5の例では、カテゴリA(通信機能)とカテゴリB(タイマ機能)の関連度を示している。図5の例では、算出値はカテゴリで纏めて示しているが、キーワード毎に示すこともできる。尚、算出値の格納形式あるいは表示方式は左記に限定されず、任意の形式で格納・表示して良い。
 図6ではタイマと通信の2つの機能についてのみ示しているが、後に説明するように、分割可能か否かの判定においては、判定対象関数で使用している全ての機能(3以上ある場合もある)の組み合わせに関し、図6の不可分度データを取得する。
 図7に、関数絞り込み判定リスト216の一例を示す。関数絞り込み判定リスト216には、関数分割判定対象関数を絞り込むために利用する項目7001を挙げている。もし分割判定対象関数の数が膨大であれば、分割判定が全て終了するのに時間が掛かるため、関数絞り込み判定リスト216を用いて判定対象の関数を絞り込む事で、判定時間を短縮する。図7の判定条件を用いることで、関数分割の検討対象として適するものを抽出することができる。
 本例では、項目7001として、“使用機能/キーワード数”、“機能/キーワード間最大行間数”、“LOC”、“複雑度”、“修正回数”、“最後に修正してからの期間”、及び“開発に関わった人数”を挙げており、ユーザは好きな項目を利用出来る。関数絞り込み判定リスト216は、経験則等に基づいてあらかじめ設定しておく。例えば、修正回数が多い関数は、構成が複雑で分割をしたほうがよい場合が多い。また、開発人員が多い関数も、構成が複雑で分割をしたほうがよい場合が多い。それぞれの項目に対して閾値7002を設定しており、項目の値が閾値以上であれば、分割判定対象とし、項目の値が閾値未満であれば、分割判定対象から外す。尚、無論、関数絞り込みで用いる事が出来る項目は上記に限定されるものではない。
 図8に、情報処理装置100で、関数分割を支援するために、情報処理装置A110に格納されている、ソースコードA207(図2参照)を可視化する際の一例である、フローチャートを示す。
 処理800:プログラム図作成制御部205が、プログラム図作成を開始する。本実施例1では、プログラム中の関数に対して、関数が分割可能か否かの判定を行うものとし、分割可能な関数を強調表示したプログラム図を作成する例を示す。
 処理801:入力装置102を用いて、ソースコード群206の中から可視化するソースコード、をユーザが指定する。本実施例では可視化ソースコードとしてソースコードA207、を指定したものとする。ユーザが可視化対象ソースコードを指定すると、ソースコード取得部200が、通信装置107を介し、プロジェクトAに関するソースコード群206の中から、可視化対象であるソースコードA207を取得する。もしソースコード群206が巨大で、ソースコードA207の検索に時間が掛かりそうな場合には、ユーザ指示により、予め、使いそうなファイルを、例えば情報処理装置100といった高速な検索が可能となる場所へ移動またはコピーしておく事も考えられる。
 処理802:キーワード取得部201が、処理801でユーザ指定した可視化対象ソースコードA207が属するプロジェクトAに関するソースコード群206で設定されているマクロ等のキーワード情報を取得し、関数別キーワード使用データ213(図4参照)に格納する。
 本例では、関数毎の、キーワード使用数を格納する。この際、キーワードカテゴリ表212(図3参照)によるキーワードの分類を参考にして、関数別キーワード使用データ213へ格納していく事も考えられる。このようにする事で、例えば、キーワードであるSCI0と、それが属する機能である通信といったように、キーワードの上位概念まで考慮してデータを格納する事が出来る。
 尚、本例では、キーワード取得部201が取得するキーワードとして、ソースコード内に記述されるマクロやキーワードを挙げているが、左記に限定される事は無い。更に、キーワードを取得する対象として、可視化対象ソースコードA207が属するプロジェクトAに関するソースコード群206に限定されず、可視化対象と関係の無いソースコードB209が属するプロジェクトBに関するソースコード群208等、様々なソースコードやそれに関する開発・保守データを利用可能である。
 処理803:入力装置102を用いて、分割判定対象関数を絞り込む為の項目と、後に関数を分割するか否かの判定を行うために算出する“機能の不可分度”項目を、ユーザが指定する。分割判定対象関数の絞り込みで利用可能な項目は、予め、関数絞り込み判定リスト216(図7参照)に記載しておき、ユーザは関数絞り込み判定リスト216から項目を指定する事も考えられる。
 また、不可分度算出で利用可能な項目は、予め、関数不可分度算出項目リスト214(図5参照)に記載しておき、ユーザは関数不可分度算出項目リスト214から項目を指定する事も考えられる。本例では、関数絞り込み判定リスト216に、“使用機能/キーワード数”、“機能/キーワード間最大行間数”、“LOC”、“複雑度”、“修正回数”、“最後に修正してからの期間”、及び“開発に関わった人数”を記載しており、本処理で“使用機能/キーワード数”を、ユーザが絞り込み項目として指定したものとする。
 また、不可分度算出項目リスト214に、不可分度算出項目5001として、“機能の関連度”と、“機能の利用順の割合”の二つを記載しており、本処理で“機能の関連度”をユーザが指定したものとする。尚、絞り込み項目や不可分度算出項目は、一つずつの利用に限らず、複数の項目を同時に利用する事もできる。
 処理804:データ解析部202が、不可分度算出項目リスト214(図5参照)に格納された不可分度算出方法と関数別キーワード使用データ213(図4参照)に格納されたデータを用いて、ユーザが選択した不可分度算出項目の不可分度を算出し、不可分度データ215(図6参照)へ格納する。該不可分度は、後に関数を分割するか否かの判定で用いる。処理803にて、“不可分度”項目として、ユーザが“機能の関連度”を指定したと想定している為、不可分度算出項目リスト214記載の“機能の関連度”算出式を用いて不可分度を算出する。
 “機能の関連度”は、複数の機能が互いにどれだけの関連性があるかを示す指標であり、この値が高い程、それらの機能は同時に利用されやすい事を示す。換言すると、機能の関連度が高ければ、それらの機能は一つの処理として同時に利用されるべきであり、処理として不可分であると言える。不可分度算出項目リスト214(図5)によると、“機能Aと機能Bの関連度”は、機能Aに属するキーワード及び機能Bに属するキーワードを利用する関数の数を、機能Aに属するキーワードまたは機能Bに属するキーワードを使用する関数の総数で除算する事で、算出する事が出来る。
 処理805:処理805以下では、可視化対象であるソースコードA207に含まれる関数について、分割判定を行う。プログラム図作成制御部205が、処理801で取得した可視化対象であるソースコードA207に含まれる、未だ関数分割判定を行っていない関数の内、一つの関数を関数分割判定対象関数として取得する。
 処理806:関数分割判定部203が、処理805で取得した関数分割判定対象該関数の分割判定を行うか否かを判定する。本判定では、関数絞り込み判定リスト216に記載された項目のうち、“使用機能/キーワード数”を使用するものと想定している。判定が真であれば、処理807へ進む。判定が偽であれば、処理809へ進む。尚、本処理は後に詳述する。
 処理807:関数分割判定部203が、該関数は分割可能か否かを判定する。本判定では、不可分度算出項目リスト214(図5)に記載された項目のうち、“機能の関連度”を使用するものと想定している。判定においては、ソースコードA207に含まれる関数で使用している、全ての機能の組み合わせに対して、”機能の関連度”データ値と、不可分度算出項目リスト214記載の“機能の関連度”項目の閾値とを比較する。例えば、全ての”機能の関連度”が、閾値を上回れば、分割不可(分割不適切)と判定する。図6の例では、機能”通信”と”タイマ”の関連度は0.8であり、評価すべき機能がこの2つだけであれば、閾値0.7を超えるため、この関数は分割不可(偽)とする。また、図6には示していないが、他の機能(例えば”I/O”)があり、機能”I/O”と”タイマ”の関連度が、閾値を下回れば分割可(真)とする。判定が真であれば、処理808へ進む。判定が偽であれば、処理809へ進む。尚、本処理内容は後に詳述する。なお、上記の例では閾値を1つとしたが、機能の組み合わせに応じて、閾値を別個に設定し、機能の組み合わせ毎に判定した結果を論理演算することも可能である。
 処理808:描画指示部204が、該関数を分割可能な関数として強調表示する。また、このとき、不可分度が閾値を下回った機能またはキーワードを併せて表示してもよい。
 処理809:描画指示部204が、該関数を分割可能でない関数として強調表示しない。
 処理810:プログラム図作成制御部205が、処理801で取得したソースコードA207に未だ関数分割判定を行っていない関数があるか否かを判定する。関数分割判定を行っていない関数がある場合は、処理805へ進む。関数分割判定をしていない関数が無い場合は、処理811へ進む。
 処理811:プログラム図作成制御部205が、プログラム図作成を終了する。
 図9に、図8の処理806において、関数の分割判定を行うか否かを判定する際の一例であるフローチャートを示す。処理803にて、分割判定対象関数の絞り込み項目として、関数絞り込み判定リスト216(図7)に記載されている項目のうち、ユーザが“使用機能/キーワード数”を指定した事を想定している。この例では条件として一つの項目を用いたが、複数項目を用いてもよい。
 処理900:データ解析部202が、関数で使われている機能やキーワードの数を解析する。そして、関数分割判定部203が、該“使用機能/キーワード数”と、関数絞り込み判定リスト216記載の“使用機能/キーワード数”項目の閾値と、を比較し、前者の値が後者の値以上であれば、処理807へ進む。前者の値が後者の値より小さければ、処理809へ進む。
 図10に、図8の処理807において、関数の分割判定を行う際の一例であるフローチャートを示す。処理803にて、“不可分度”項目として、不可分度算出項目リスト214(図5)に記載されている項目のうち、ユーザが“機能の関連度”を指定した事を想定している。この例では条件として一つの項目を用いたが、複数項目を用いてもよい。
 処理1000:データ解析部202が、関数別キーワード使用データ213(図4)より、判定対象関数のキーワードデータを取得する。そして、該データを利用して、該関数で使用している全ての機能の組み合わせに関し、不可分度データ215(図6)記載の“機能の関連度”データ値を取得する。そして、関数分割判定部203が、関数で使用している全ての機能に対して、該“機能の関連度”データ値と、不可分度算出項目リスト214(図5)記載の“機能の関連度”項目の閾値とを比較する。この際、全ての前者の値が後者の値よりも低い機能があれば、処理808へ進む。全ての前者の値が後者の値よりも低い機能がなければ処理809へ進む。
 本実施例の効果として、上述した特許文献1に存在した課題、すなわち関数内を解析しない為、関数の分割を行う事が出来ず、ソース可読性を向上出来なかった、という課題を解決する。つまり、関数が利用する機能に着目して、該機能同士の関連度を算出し、これらを関数不可分度として利用する事で、対象関数が分割可能か否かを自動で判定し、該判定結果を用いて、分割可能な関数を強調したプログラム図を構築・表示する事で、ソース可読性を向上させるための支援を行う事が出来る。
 本実施例の方法を利用して作成するプログラム図は、不可分度の閾値を変更すれば、分割可能として強調表示される関数が変わる。
 図11に不可分度の閾値を変更する際の画面例を示す。例えば、図中の四角は関数を示し、四角同士を接続する矢印は、呼び出しや書き込み等を示す。本プログラム図を利用する目的や意図に応じて、分割可能関数をどの程度含めるかの考え方は異なる為、例えば、不可分度算出項目リスト214(図5)に記載された不可分度算出項目5001の閾値5003の代わりに、図11で示すように、不可分度閾値スライダ1101を調整してその値を閾値として利用する事で、目的や意図に応じて、プログラム図を適宜作り替える事も考えられる。
 図11で示すプログラム図の中で、灰色のノード1102は分割可能だと判定された関数を示している。図11上図のように、不可分度閾値が0.8の時には6つの関数が分割可能として強調されているが、不可分度閾値スライダを操作して、0.1へと変更した場合には、図11下図のように3つの関数だけが分割可能として強調表示される。
 処理1000や図11で行った関数分割判定では、関数内で利用している機能のうち、その関数内の他の機能との関連度が閾値未満であるような機能(分離対象機能)が一つでもあれば、関数分割可能と判定した。ここで、もし関数分割可能であると判定される関数が多い場合等では、分割可能関数を分割優先度の高いものへと絞り込みたい場合がある。
図12に分割優先度の高い関数の一例を示す。図12に示す関数、receiveMessage関数は、A機能、B機能、C機能、及びD機能を利用しており、A機能とB機能は不可分度0.8、A機能とC機能は不可分度0.2、A機能とD機能は不可分度0.2、B機能とC機能は不可分度0.2、B機能とD機能は不可分度0.2、C機能とD機能は不可分度0.7である。このように、不可分度の高い複数の機能の組(A機能及びB機能、とC機能及びD機能)が、二極化(多極化)している関数は分割優先度が高い。次に、このような、機能が二極化している関数を抽出する例を説明する。
 図13に不可分度の閾値を変更する別の例を示す。図12のような場合を分析するために、例えば、図13で示すように、不可分度閾値スライダは二軸以上あると好ましい。二軸ある事で、不可分度の高い機能の組を選別するための第一の閾値と、不可分度の高い機能の組同士を分離するための第二の閾値と、をそれぞれ設定する事が出来る。図13において、不可分度閾値スライダの上段1101aは、高い不可分度の機能の組を選ぶ為に利用するものである。上段スライダ1101aの閾値により、関数内に閾値以上の不可分度を有する機能の組が一つでも存在する関数が抽出される。不可分度閾値スライダの下段1101bは、高い不可分度の機能の組同士を分離する為に利用するものである。下段スライダ1101bの閾値により、上段スライダで抽出した関数のうち、関数内に閾値未満の不可分度を有する機能の組が一つでも存在する関数が抽出される。すなわち、上段スライダにより、関数内に不可分度の高い機能の組が存在することが分かる。また、下段スライダにより、関数内に不可分度の低い機能の組が存在することが分かる。すなわち、当該関数内には、機能が二極化(あるいは多極化)していることが分かる。この2つのスライダを利用し、まず不可分度の高い機能の組を有する関数を選別した上で、更にその中から分離可能な機能の組が存在する関数を選別する。
 図12の関数を用いて説明すると、図13の上段スライダ1101aの設定では、不可分度の高い機能として、0.6以上の機能、つまり、A機能とB機能の組と、C機能とD機能の組の存在が分かり、これを有する関数を抽出出来る。図13の上段の図では、不可分度が0.6以上の機能の組が一つでもあった場合、関数は白い四角で表示され、それ以外は灰色の四角で示される。しかし、下段スライダ1101bは0に設定されているため、A機能とB機能の組と、C機能とD機能の組の間の関連度(B機能とC機能の関連度)は0.2という小さい値であっても、分離対象関数とならない。よって、分離対象とならない関数は、図13上段で白い四角で示される。また、図13上段に灰色で示されている関数は、不可分度が0.6以上の機能の組が一つもない関数ということになる。
 ここで、下段スライダ1101bを操作し、0.25に変更する。ここで下段スライダの閾値による判定対象は、上段スライダの設定により0.6以上の不可分度の機能の組を持つ関数(図13上段で白い四角で示される)に限定される。すると、図13上段で白い四角で示された関数のうち、0.25未満の不可分度の機能の組を有する関数が抽出される。図12の関数では、B機能とC機能の不可分度0.2が閾値未満であるため、分離対象の関数となる。図13下段においては、図13上段で白い四角で示された関数のうち、いくつかが灰色の四角に変更されている。この、白から灰色に変更された関数が、機能が二極化(多極化)している関数である。
 上述の説明では、下段スライダの閾値の判定対象を、全ての機能の間の不可分度としている。しかし、上段スライダで抽出した高い不可分度を有するA機能とB機能の組と、C機能とD機能の組の間の不可分度に絞ってもよい。判定する機能(キーワード)を特定することで、詳細な検討が可能になる。また、図13の例では、2つのスライダの閾値は、最初から特定の機能相互の不可分度のみに有効な閾値としておくこともできる。例えば、スライダの上段1101aの設定による結果にかかわらず、最初から下段スライダを、図12のB機能とC機能の間の不可分度に対する閾値として設定することもできる。
 関数の分割判定では、機能の不可分度として、機能の利用順の割合を利用する事も出来る。複数の機能を利用するにあたり、A機能を利用した後にB機能を利用する、というように、機能の利用順番が決まっている場合がある。図12を例に、不可分度を“機能の利用順の割合”に対するものと想定して説明すると、A機能を利用した後にB機能を利用、またC機能を利用した後にD機能を利用、する割合は、それぞれ0.8、0.7である。また、B機能を利用した後にC機能を利用する割合は、0.2である。ここで、図13下図のように、不可分度閾値を設定した場合、A機能とB機能の不可分度と、C機能とD機能の不可分度は、閾値0.6以上であるため、これらは関数内の不可分度の高い機能の組として選別される。更に、B機能とC機能の不可分度は、閾値0.25未満であるため、A機能とB機能の組と、C機能とD機能の組は分割対象となる。
 本例では、プログラム図として関数の呼出関係図をベースに記載したため、図11や図13に示すように、分割可能と判定した関数自体を強調表示しており、関数内部を表現していない。しかし、分割可能と判定した関数の内部を可視化したい事も考えられる。その際には、例えば、図12に記載しているように、関数の内部で、不可分な機能の組に色を付けておく、といった可視化方法が考えられる。もちろん、可視化方法は、左記含む、本例記載のものに限定されるものではない。
 尚、本実施例では、不可分度を、関数を強調表示するか否かで利用する事としたが、左記に限らず、様々な利用法が考えられる。
 本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
 組込装置等、ソフトウェアを動作させる装置に適用出来る。
 100 情報処理装置
 101 中央処理装置
 102 入力装置
 103 二次記憶装置
 104 主記憶装置
 105 表示装置
 106 バス
 107 通信装置
 110 情報装置A
 120 情報装置B
 130 通信ネットワーク
 200 ソースコード取得部
 201 キーワード取得部
 202 データ解析部
 203 関数分割判定部
 204 描画指示部
 205 プログラム図作成制御部
 206 プロジェクトAに関するソースコード群
 207 ソースコードA
 208 プロジェクトBに関するソースコード群
 209 ソースコードB
 212 キーワードカテゴリ表
 213 関数別キーワード使用データ
 214 不可分度算出項目リスト
 215 不可分度データ
 216 関数絞り込み判定データ

Claims (15)

  1.  入力装置、出力装置、演算装置、および記憶装置を有し、ソースコード中のモジュールを分割するモジュール分割支援装置であって、
     前記演算装置は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、キーワードカテゴリ表と不可分度算出項目リストを利用可能であり、
     前記キーワードカテゴリ表は、キーワードと、前記キーワードに対応するカテゴリのデータの組を複数組含み、
     前記不可分度算出項目リストは、前記カテゴリのうち第1のカテゴリと第2のカテゴリの間の不可分度算出項目と、前記不可分度算出項目の算出方法に関する情報の組を含み、
     前記演算装置は、ソースコード取得部と、キーワード取得部と、データ解析部と、モジュール分割判定部を備え、
      前記ソースコード取得部は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、一群のソースコードおよび可視化対象となるソースコードを取得し、
      前記キーワード取得部は、前記一群のソースコード中のモジュール毎に、当該モジュールに含まれる前記キーワードを特定して、モジュール別キーワード使用データを作成し、
      前記データ解析部は、前記不可分度算出項目リストに格納された前記算出方法と、前記モジュール別キーワード使用データに格納されたデータと、前記キーワードカテゴリ表に含まれるキーワードに対応するカテゴリに関する情報を用いて、前記第1のカテゴリと第2のカテゴリについての不可分度を算出し、不可分度データを作成し、
      前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュール内に存在する前記キーワードを特定し、前記各モジュールのうち、所定閾値を下回る前記不可分度を有する第1のカテゴリと第2のカテゴリに対応するキーワードの組を有するモジュールを特定する、
     ことを特徴とするモジュール分割支援装置。
  2.  請求項1において、
     前記カテゴリは、前記キーワードが関連する機能名であり、
     前記データ解析部は、前記不可分度として、前記第1のカテゴリと第2のカテゴリの関連度、または、前記第1のカテゴリと第2のカテゴリの利用順の割合、を算出する、
     ことを特徴とするモジュール分割支援装置。
  3.  請求項1において、
     前記モジュール分割判定部は、前記所定閾値として、前記入力装置から入力される閾値、または、前記不可分度算出項目リストの各情報の組に付随する閾値を用いる、
     ことを特徴とするモジュール分割支援装置。
  4.  請求項1において、
     前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュールのうち、あるモジュールが含むキーワードに対応したカテゴリ同士の不可分度が、全て前記所定閾値を下回る場合、当該モジュールを分割可能なモジュールと判定し、それ以外を分割可能でないモジュールと判定する、
     ことを特徴とするモジュール分割支援装置。
  5.  請求項1において、
     前記可視化対象となるソースコード中のモジュールを絞り込むために、絞り込み条件を定義したモジュール絞り込み判定リストを利用可能であり、
     前記モジュール分割判定部は、前記絞り込み条件に該当するモジュールについて、前記モジュールを特定する処理を行う、
     ことを特徴とするモジュール分割支援装置。
  6.  入力装置、出力装置、演算装置、および記憶装置を用いて、ソースコード中のモジュールを分割するモジュール分割支援方法であって、
     前記演算装置は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、キーワードカテゴリ表と不可分度算出項目リストを利用可能であり、
     前記キーワードカテゴリ表は、キーワードと、前記キーワードに対応するカテゴリのデータの組を複数組含み、
     前記不可分度算出項目リストは、前記カテゴリのうち第1のカテゴリと第2のカテゴリの間の不可分度算出項目と、前記不可分度算出項目の算出方法に関する情報の組を含み、
     前記演算装置は、ソースコード取得部と、キーワード取得部と、データ解析部と、モジュール分割判定部を備え、
      前記ソースコード取得部は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、一群のソースコードおよび可視化対象となるソースコードを取得し、
      前記キーワード取得部は、前記一群のソースコード中のモジュール毎に、当該モジュールに含まれる前記キーワードを特定して、モジュール別キーワード使用データを作成し、
      前記データ解析部は、前記不可分度算出項目リストに格納された前記算出方法と、前記モジュール別キーワード使用データに格納されたデータと、前記キーワードカテゴリ表に含まれるキーワードに対応するカテゴリに関する情報を用いて、前記第1のカテゴリと第2のカテゴリについての不可分度を算出し、不可分度データを作成し、
      前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュール内に存在する前記キーワードを特定し、前記各モジュールのうち、所定閾値を下回る前記不可分度を有する第1のカテゴリと第2のカテゴリに対応するキーワードの組を有するモジュールを特定する、
     ことを特徴とするモジュール分割支援方法。
  7.  請求項6において、
     前記カテゴリは、前記キーワードが関連する機能名であり、
     前記データ解析部は、前記不可分度として、前記第1のカテゴリと第2のカテゴリの関連度、または、前記第1のカテゴリと第2のカテゴリの利用順の割合、を算出する、
     ことを特徴とするモジュール分割支援方法。
  8.  請求項6において、
     前記モジュール分割判定部は、前記所定閾値として、前記入力装置から入力される閾値、または、前記不可分度算出項目リストの各情報の組に付随する閾値を用いる、
     ことを特徴とするモジュール分割支援方法。
  9.  請求項6において、
     前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュールのうち、あるモジュールが含むキーワードに対応したカテゴリ同士の不可分度が、全て前記所定閾値を下回る場合、当該モジュールを分割可能なモジュールと判定し、それ以外を分割可能でないモジュールと判定する、
     ことを特徴とするモジュール分割支援方法。
  10.  請求項6において、
     前記可視化対象となるソースコード中のモジュールを絞り込むために、絞り込み条件を定義したモジュール絞り込み判定リストを利用可能であり、
     前記モジュール分割判定部は、前記絞り込み条件に該当するモジュールについて、前記モジュールを特定する処理を行う、
     ことを特徴とするモジュール分割支援方法。
  11.  入力装置、出力装置、演算装置、および記憶装置を有する情報処理装置に、ソースコード中のモジュールを分割する処理を実行させるモジュール分割支援プログラムであって、
     前記演算装置は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、キーワードカテゴリ表と不可分度算出項目リストを利用可能であり、
     前記キーワードカテゴリ表は、キーワードと、前記キーワードに対応するカテゴリのデータの組を複数組含み、
     前記不可分度算出項目リストは、前記カテゴリのうち第1のカテゴリと第2のカテゴリの間の不可分度算出項目と、前記不可分度算出項目の算出方法に関する情報の組を含み、
     前記演算装置を、ソースコード取得部と、キーワード取得部と、データ解析部と、モジュール分割判定部を備えるごとく機能させ、
      前記ソースコード取得部は、前記記憶装置に記憶された、あるいは、前記入力装置から入力される、一群のソースコードおよび可視化対象となるソースコードを取得し、
      前記キーワード取得部は、前記一群のソースコード中のモジュール毎に、当該モジュールに含まれる前記キーワードを特定して、モジュール別キーワード使用データを作成し、
      前記データ解析部は、前記不可分度算出項目リストに格納された前記算出方法と、前記モジュール別キーワード使用データに格納されたデータと、前記キーワードカテゴリ表に含まれるキーワードに対応するカテゴリに関する情報を用いて、前記第1のカテゴリと第2のカテゴリについての不可分度を算出し、不可分度データを作成し、
      前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュール内に存在する前記キーワードを特定し、前記各モジュールのうち、所定閾値を下回る前記不可分度を有する第1のカテゴリと第2のカテゴリに対応するキーワードの組を有するモジュールを特定する、
     ことを特徴とするモジュール分割支援プログラム。
  12.  請求項11において、
     前記カテゴリは、前記キーワードが関連する機能名であり、
     前記データ解析部は、前記不可分度として、前記第1のカテゴリと第2のカテゴリの関連度、または、前記第1のカテゴリと第2のカテゴリの利用順の割合、を算出する、
     ことを特徴とするモジュール分割支援プログラム。
  13.  請求項11において、
     前記モジュール分割判定部は、前記所定閾値として、前記入力装置から入力される閾値、または、前記不可分度算出項目リストの各情報の組に付随する閾値を用いる、
     ことを特徴とするモジュール分割支援プログラム。
  14.  請求項11において、
     前記モジュール分割判定部は、前記可視化対象となるソースコード中の各モジュールのうち、あるモジュールが含むキーワードに対応したカテゴリ同士の不可分度が、全て前記所定閾値を下回る場合、当該モジュールを分割可能なモジュールと判定し、それ以外を分割可能でないモジュールと判定する、
     ことを特徴とするモジュール分割支援プログラム。
  15.  請求項11において、
     前記可視化対象となるソースコード中のモジュールを絞り込むために、絞り込み条件を定義したモジュール絞り込み判定リストを利用可能であり、
     前記モジュール分割判定部は、前記絞り込み条件に該当するモジュールについて、前記モジュールを特定する処理を行う、
     ことを特徴とするモジュール分割支援プログラム。
PCT/JP2014/082884 2014-12-11 2014-12-11 モジュール分割支援装置、方法、及びプログラム WO2016092677A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/JP2014/082884 WO2016092677A1 (ja) 2014-12-11 2014-12-11 モジュール分割支援装置、方法、及びプログラム
US15/504,515 US10025558B2 (en) 2014-12-11 2014-12-11 Module division assistance device, module division assistance method, and module division assistance program
JP2016563360A JP6178023B2 (ja) 2014-12-11 2014-12-11 モジュール分割支援装置、方法、及びプログラム
CN201480081121.1A CN106575225B (zh) 2014-12-11 2014-12-11 模块划分辅助装置、方法和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/082884 WO2016092677A1 (ja) 2014-12-11 2014-12-11 モジュール分割支援装置、方法、及びプログラム

Publications (1)

Publication Number Publication Date
WO2016092677A1 true WO2016092677A1 (ja) 2016-06-16

Family

ID=56106924

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/082884 WO2016092677A1 (ja) 2014-12-11 2014-12-11 モジュール分割支援装置、方法、及びプログラム

Country Status (4)

Country Link
US (1) US10025558B2 (ja)
JP (1) JP6178023B2 (ja)
CN (1) CN106575225B (ja)
WO (1) WO2016092677A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019012674A1 (ja) * 2017-07-13 2019-01-17 株式会社日立製作所 プログラムの統合解析管理装置及びその統合解析管理方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579370B2 (en) * 2018-08-03 2020-03-03 EMC IP Company LLC Method to disintegrate a monolith service to microservices
WO2020129432A1 (ja) * 2018-12-21 2020-06-25 日本電信電話株式会社 分散処理支援装置、分散処理支援方法およびプログラム
CN113139867B (zh) * 2021-04-30 2024-03-08 中国银行股份有限公司 微服务模块的划分方法、装置、设备及可读存储介质
CN115113921B (zh) * 2022-08-29 2022-11-08 云账户技术(天津)有限公司 代码重构价值的评估方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290639A (ja) * 2000-04-07 2001-10-19 Hitachi Ltd ソフトウェア再構成方式
JP2004295425A (ja) * 2003-03-26 2004-10-21 Mitsubishi Electric Corp モジュール構造化支援装置
JP2007219586A (ja) * 2006-02-14 2007-08-30 Matsushita Electric Ind Co Ltd ソースコード解析装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4445177A (en) * 1981-05-22 1984-04-24 Data General Corporation Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions
JP3375766B2 (ja) * 1994-12-27 2003-02-10 松下電器産業株式会社 文字認識装置
US5809500A (en) * 1997-02-26 1998-09-15 Century Technology Services, Inc. System for converting programs and databases to correct year 2000 processing errors
US7617210B2 (en) * 2007-02-28 2009-11-10 Goldman Sachs & Co. Global inventory warehouse
JP5238635B2 (ja) * 2009-07-29 2013-07-17 京セラ株式会社 情報処理装置及びアプリケーションプログラムの起動方法
CN102193859B (zh) * 2010-03-03 2014-09-10 深圳市世纪光速信息技术有限公司 一种代码分析方法及系统
CN102779170B (zh) * 2012-06-25 2015-01-07 北京奇虎科技有限公司 一种识别网页正文楼层的系统和方法
US9182947B2 (en) * 2013-06-06 2015-11-10 International Business Machines Corporation Program source code navigation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290639A (ja) * 2000-04-07 2001-10-19 Hitachi Ltd ソフトウェア再構成方式
JP2004295425A (ja) * 2003-03-26 2004-10-21 Mitsubishi Electric Corp モジュール構造化支援装置
JP2007219586A (ja) * 2006-02-14 2007-08-30 Matsushita Electric Ind Co Ltd ソースコード解析装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019012674A1 (ja) * 2017-07-13 2019-01-17 株式会社日立製作所 プログラムの統合解析管理装置及びその統合解析管理方法
JPWO2019012674A1 (ja) * 2017-07-13 2019-07-25 株式会社日立製作所 プログラムの統合解析管理装置及びその統合解析管理方法

Also Published As

Publication number Publication date
CN106575225A (zh) 2017-04-19
JPWO2016092677A1 (ja) 2017-04-27
US10025558B2 (en) 2018-07-17
CN106575225B (zh) 2019-07-02
US20170242661A1 (en) 2017-08-24
JP6178023B2 (ja) 2017-08-09

Similar Documents

Publication Publication Date Title
US11030167B2 (en) Systems and methods for providing data quality management
JP6178023B2 (ja) モジュール分割支援装置、方法、及びプログラム
US11023534B2 (en) Classification method and a classification device for service data
JP6741216B2 (ja) ログ分析システム、方法およびプログラム
US20060004528A1 (en) Apparatus and method for extracting similar source code
JPWO2016151618A1 (ja) 予測モデル更新システム、予測モデル更新方法および予測モデル更新プログラム
WO2019023982A1 (en) MULTIDIMENSIONAL INDUSTRIAL KNOWLEDGE GRAPH
US20150026635A1 (en) Method for generating control-code by a control-code-diagram
US20170300819A1 (en) Time-Series Prediction Apparatus and Time-Series Prediction Method
JPWO2018079225A1 (ja) 自動予測システム、自動予測方法および自動予測プログラム
JPWO2014064777A1 (ja) 文書評価支援システム、及び文書評価支援方法
JP5775417B2 (ja) ユーザインタフェース自動分析評価システム及びユーザインタフェース自動分析評価方法
JP6453502B1 (ja) 特許調査支援方法
US20180365341A1 (en) Three-Dimensional Cad System Device, and Knowledge Management Method Used in Three-Dimensional Cad
Ziegenbein et al. Machine learning algorithms in machining: A guideline for efficient algorithm selection
JPWO2017046906A1 (ja) データ分析装置および分析方法
JPWO2018235841A1 (ja) グラフ構造解析装置、グラフ構造解析方法、及びプログラム
KR102217092B1 (ko) 애플리케이션의 품질 정보 제공 방법 및 장치
KR102113834B1 (ko) Pls-da를 기반으로 하는 db의 웹서비스 구현 방법
JP6852004B2 (ja) データ解析システム、データ解析方法、及びプログラム
CN109284354B (zh) 脚本搜索方法、装置、计算机设备及存储介质
JP6771314B2 (ja) 予測不可データ判定システム及び予測不可データ判定方法
JP5714472B2 (ja) 製品情報管理装置、方法、及びプログラム
JP2020166443A (ja) データ加工方法レコメンドシステム、データ加工方法レコメンド方法、及びデータ加工方法レコメンドプログラム
US20200285463A1 (en) Evaluation of developer organizations

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: 14907625

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016563360

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15504515

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14907625

Country of ref document: EP

Kind code of ref document: A1