WO2010147010A1 - モジュール分類解析システム、モジュール分類解析方法およびモジュール分類解析プログラム - Google Patents

モジュール分類解析システム、モジュール分類解析方法およびモジュール分類解析プログラム Download PDF

Info

Publication number
WO2010147010A1
WO2010147010A1 PCT/JP2010/059579 JP2010059579W WO2010147010A1 WO 2010147010 A1 WO2010147010 A1 WO 2010147010A1 JP 2010059579 W JP2010059579 W JP 2010059579W WO 2010147010 A1 WO2010147010 A1 WO 2010147010A1
Authority
WO
WIPO (PCT)
Prior art keywords
module
information
axis
stack
layer
Prior art date
Application number
PCT/JP2010/059579
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 日本電気株式会社
Publication of WO2010147010A1 publication Critical patent/WO2010147010A1/ja

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 software reverse engineering technique, and more specifically, from a model (data) representing a relation between modules acquired by reverse engineering, relation information and module relation diagram in which the relation between modules is classified from the viewpoint of the layer structure. And a module classification analysis program.
  • the layer structure classification includes three axes: a functional axis, a layer axis, and a stack axis.
  • the function axis represents a structure in which the role of software is classified from the viewpoint of function. For example, a function structure in which functions in the structured analysis design method are detailed in stages, or a function group extracted by use case modeling in the object-oriented analysis design method is arranged hierarchically or in parallel.
  • the layer axis is a hierarchical structure in which modules constituting software are classified by processing roles.
  • Various classifications have been proposed, but they are mainly classified into a presentation layer having a user interface role, a business layer having a business logic role, and a data access layer having a data access role.
  • application software modules created in the Java language are classified into a client layer, a presentation layer, a business layer, and an integration layer as standard structures defined by J2EE.
  • Microsoft's The application software module created by NET Framework is the Application Architecture for.
  • a stack axis is a structure that classifies software libraries that depend on when software is executed.
  • a library in which standards such as Java language J2SE and J2EE are implemented has a hierarchical structure of a J2SE library, a J2EE library, an application framework, and an application in order from the lowest layer when the upper level is an application.
  • the software having a layer structure can be represented by a three-dimensional structure in which each of the function axis, the layer axis, and the stack axis has a hierarchical structure.
  • the modules constituting the software belong to one of the hierarchical classifications of each axis. In reverse engineering, it is possible to detect the relationship between modules by analyzing the source code using a static analysis technique.
  • the static analysis technique cannot detect information about which class the function axis, layer axis, and stack axis belong to. As a result, it is necessary to manually classify the modules obtained by reverse engineering into three axes, that is, the function axis, the layer axis, and the stack axis, and to plot the classified relationship information.
  • the software test phase and maintenance phase in many situations, as a preparatory work to identify the extent to which the cause of failure and the correction of the failure will affect, drawing for understanding the structure of the relationship between modules create.
  • the cause of the failure is obvious and the range of correction is limited, it may not be necessary to understand the structure.However, if the module structure is complex and the cause of the failure is unclear or the range of correction is wide, There is a need to understand the module structure using a drawing in which relational information classified by three axes of function axis, layer axis and stack axis is created and combined from two axes to two axes. Furthermore, in the maintenance phase, modification, redevelopment, etc., it is ideal to prepare a drawing that combines two axes so that the module structure can be grasped correctly in advance.
  • the static analysis technology is also called static code analysis technology, source code analysis technology, program analysis technology, or the like.
  • This technique is a technique for performing analysis without executing software, and is a technique for detecting a call relationship (dependency relationship) between modules.
  • this technique is a technique for detecting an inheritance relationship.
  • the technology for detecting the call relationship and the inheritance relationship is provided as a development tool having many reverse engineering functions.
  • the integrated development environment NetBeans developed by an open source project has a function of analyzing a Java source code, detecting a call relationship and an inheritance relationship, and generating a class diagram and a sequence diagram (http: /// www.netbeans.org/index.html).
  • the UML modeling tool JUDE has a function of analyzing a Java and C ++ source code, detecting a call relationship and an inheritance relationship, and generating a class diagram (http: //www.change-vision). .Com /).
  • techniques for detecting call relations and inheritance relations using static analysis techniques are described in Patent Documents 1 to 3, for example. JP 2008-225519 A JP 2008-052424 A JP 2008-015665 A
  • the present invention solves the above-mentioned problems, finds characteristics in the structure of the software, and from the model obtained by the static analysis technology, each module has three axes of the layer structure, the functional axis, the layer axis, and the stack axis.
  • a module classification analysis system for analyzing and classifying to which one it belongs.
  • the present invention also provides a module classification analysis system that generates a module structure diagram expressed in two or three axes from the result of analysis and classification.
  • a module classification analysis system is a stack structure analyzer that analyzes a model obtained by static analysis of software and directory structure information of the software, and detects a stack to which each module of the software belongs, Analyzing the detected stack and the directory structure information, including at least a layer structure analyzer that detects a layer to which the module belongs, and if necessary, analyzing the detected stack and layer and the directory structure information, A function structure analyzer for classifying the function to which the module belongs is additionally provided.
  • the module classification analysis system includes a drawing generator that generates a module-related diagram that combines two or three of the stack axis, the layer axis, and the functional axis from the analysis result. It is characterized by having.
  • category analysis system which analyzes and classify
  • FIG. 1 is a block diagram illustrating a configuration of a module relation diagram generation system (module classification analysis system) according to an embodiment.
  • FIG. 2 is a flowchart showing the operation of the stack structure analyzer 110.
  • FIG. 3 is a flowchart showing the operation of the layer structure analyzer 120.
  • FIG. 4 is a flowchart showing the operation of the functional structure analyzer 130.
  • FIG. 5 is a flowchart showing the operation of the drawing generator 140.
  • FIG. 6 is an explanatory diagram showing an example of directory structure information classified in the order of layers and functions.
  • FIG. 7 is an explanatory diagram illustrating an example of static analysis model information.
  • FIG. 1 is a block diagram illustrating a configuration of a module relation diagram generation system (module classification analysis system) according to an embodiment.
  • FIG. 2 is a flowchart showing the operation of the stack structure analyzer 110.
  • FIG. 3 is a flowchart showing the operation of the layer structure analyzer 120.
  • FIG. 4 is a
  • FIG. 8 is an explanatory diagram exemplifying a module relation list obtained as a result of executing step A03 of the stack structure analyzer for directory structure information.
  • FIG. 9 is an explanatory diagram illustrating an inheritance source list of inheritance relationships obtained as a result of executing step A04 of the stack structure analyzer for directory structure information.
  • FIG. 10 is an explanatory diagram illustrating module affiliation relationship information and axis classification information obtained as a result of executing directory structure information by a stack structure analyzer.
  • FIG. 11 is an explanatory diagram illustrating module affiliation relationship information and axis classification information obtained as a result of directory structure information being executed by a layer structure analyzer.
  • FIG. 12 is an explanatory diagram illustrating module affiliation relationship information and axis classification information obtained as a result of directory structure information being executed by the functional structure analyzer.
  • FIG. 13 is an explanatory diagram illustrating a module structure of functions displayed on the stack axis and the layer axis generated by the drawing generator.
  • FIG. 14 is an explanatory view exemplifying a module structure of layers displayed by the stack axis and function axis generated by the drawing generator.
  • FIG. 15 is an explanatory diagram illustrating the module structure of the stack displayed on the function axis and the layer axis generated by the drawing generator.
  • FIG. 16 is an explanatory diagram showing an example of directory structure information classified in order of function and layer.
  • FIG. 17 is a block diagram illustrating a configuration example of a module relation diagram generation system (module classification analysis system).
  • FIG. 1 is a block diagram illustrating a configuration of a module relation diagram generation system according to an embodiment.
  • the module classification analysis system of the present invention is referred to as a module related diagram generation system in order to describe a system that can perform generation of a module related diagram.
  • the module relation diagram generation system according to the embodiment includes a static analysis model information DB 100, a directory structure information DB 101, an axis classification information DB 102, a module affiliation relation information DB 103, and a drawing information DB 104 as databases.
  • the static analysis model information DB 100 stores static analysis model information that is a model representing a relationship between modules obtained by static analysis of a source code defined by a description of a plurality of files.
  • the directory structure information DB 101 stores directory structure information indicating a directory structure of source code defined by a description of a plurality of files.
  • the axis classification information DB 102 stores hierarchical information in the stack structure, hierarchical information in the layer structure, and functional classification information, which are axis classification information to which each module belongs.
  • the module affiliation relation information DB 103 stores hierarchical information in the stack structure, hierarchical information in the layer structure, and functional classification information, which are module affiliation relation information to which each module belongs.
  • the drawing information DB 104 stores drawing information on the relationship between the stack structure and the layer structure between modules, the relationship between the stack structure and the function between modules, and the relationship between the layer structure and the function between modules.
  • the stack structure analyzer 110 reads information from the static analysis model information DB 100 and the directory structure information DB 101, analyzes the inheritance relationship of the modules and the directory structure in which the modules are stored, and stores in the stack structure to which each module belongs. Are detected, and axis classification information and module affiliation relation information are created as hierarchy information in the stack structure.
  • the layer structure analyzer 120 reads the axis classification information, module affiliation relationship information, and static analysis model information of each module, analyzes them together with the directory structure information of the plurality of files, and analyzes the hierarchy within the layer structure to which each module belongs. And the detected information is added and updated in the axis classification information DB 102 and the module affiliation relation information DB 103 as hierarchical information in the layer structure.
  • the functional structure analyzer 130 reads the axis classification information and module affiliation relation information of each module, analyzes the hierarchical information and directory structure information in the layer structure, functionally classifies each module, and functions the classified information. As axis classification information, the axis classification information DB 102 and the module affiliation relation information DB 103 are additionally updated.
  • the drawing generator 140 records static analysis model information stored in the static analysis model information DB 100, hierarchical information in the stack structure to which each module belongs, hierarchical information in the layer structure, and functional classification information.
  • the relationship between the relationship between the stack structure and the layer structure between modules, the relationship between the stack structure and the function between modules, and the relationship between the layer structure and the function between modules A diagram showing the relationship is generated and sent to the drawing information DB 104.
  • the drawing generator 140 can acquire drawing information generated from the drawing information DB 104 in response to an operator's request, and display the drawing information on a display screen or print it on paper via a printer.
  • Each of these analyzers and generators generally operates as follows.
  • the stack structure analyzer 110 reads the static analysis model information from the static analysis model information DB 100, reads the directory structure information from the directory structure information DB 101, and has inheritance relations for all modules in the read static analysis model. Analysis is performed, the inheritance relationship of each module and the directory structure in which each module is stored are analyzed, the hierarchy in the stack structure to which each module belongs is detected as the axis classification of the stack, and the axis classification information DB 102 The module name and axis classification are written in the module affiliation relation information DB 103.
  • the layer structure analyzer 120 acquires the static analysis model information and the directory structure information from the static analysis model information DB 100 and the directory structure information DB 101, and creates the stack structure analyzer 110 from the axis classification information DB 102 and the module affiliation relation information DB 103.
  • Axis classification information and module affiliation relationship information is read, layer structure analysis is performed on all modules described in the module affiliation relationship information, and the extracted directory is used as the layer axis classification representing the hierarchy in the layer structure.
  • the axis classification of each module layer in the module affiliation relation information DB 103 is updated with the detected directory name.
  • the functional structure analyzer 130 acquires the static analysis model information and the directory structure information from the static analysis model information DB 100 and the directory structure information DB 101, and creates the layer structure analyzer DB 120 from the axis classification information DB 102 and the module affiliation relation information DB 103.
  • Axis classification information and module affiliation relationship information is read, functional structure analysis is performed for all modules described in the module affiliation relationship information, and the extracted directory is used as the functional axis classification for the function axis classification.
  • the axis classification of the function of each module in the module affiliation relation information DB 103 is updated with the detected directory name.
  • the stack structure analyzer 110, the layer structure analyzer 120, and the functional structure analyzer 130 write and update the detected results (information) in the axis classification information DB 102 in a timely manner.
  • 110 is passed to the layer structure analyzer 120
  • the stack structure analyzer 120 is passed to the functional structure analyzer 130.
  • the functional structure analyzer 130 summarizes the detection results of the stack structure analyzer 110 and the layer structure analyzer 120
  • the axis classification information DB 102 and the module affiliation relation information DB 103 may be written and updated.
  • the layer structure analyzer 120 and the functional structure analyzer 130 do not read the axis classification information from the axis classification information DB 102, but the layer structure analyzer 120 reads the axis classification information passed from the stack structure analyzer 110.
  • the functional structure analyzer 130 reads the axis classification information passed from the layer structure analyzer 120.
  • the layer structure analyzer 120 and the functional structure analyzer 130 do not read the module affiliation relationship information from the module affiliation relationship information DB 103, but the layer structure analyzer 120 receives the module affiliation relationship information passed from the stack structure analyzer 110.
  • the functional structure analyzer 130 reads the module affiliation relation information passed from the layer structure analyzer 120.
  • the axis classification information required by the layer structure analyzer 120 and the functional structure analyzer 130 does not use the axis classification information in the axis classification information DB 102 written by the stack structure analyzer 110 but in the module affiliation relationship information DB 103.
  • Axis classification information required by each of the layer structure analyzer 120 and the functional structure analyzer 130 may be extracted from the recorded module affiliation relationship information and used.
  • the drawing creator 140 acquires static analysis model information from the static analysis model information DB 100, and obtains the axis classification information and module affiliation relation information created by the functional structure analyzer 130 from the axis classification information DB 102 and the module affiliation relation information DB 103. Read and create 3 types of drawing data combining 2 axes out of 3 axes. That is, a drawing is generated that shows at least one of the relationship between the module stack structure and the layer structure, the relationship between the stack structure and the function, and the relationship between the layer structure and the function.
  • the number of drawings to be generated is a + b + c at the maximum when the number of functional axis classifications is a, the number of layer classifications is b, and the number of stack classifications is c. Since the drawing shows the related information, it can be shown in the form of a table. The figure here also includes a tabular representation.
  • the stack structure analyzer 110 in FIG. 1 will be described with reference to FIG.
  • the stack structure analyzer 110 reads directory structure information (step A01).
  • the stack structure analyzer 110 reads static analysis model information (step A02).
  • Step A01 and step A02 may be reversed.
  • the stack structure analyzer 110 extracts all module associations in the read static analysis model information and creates a module association list without duplication (step A03). Furthermore, the stack structure analyzer 110 creates a module list of inheritance sources of inheritance relationships from the module association list (step A04). If the number of modules in the created list is not zero (Yes in step A05), the stack structure analyzer 110 performs processing for determining the stack structure using the characteristics 1 and 2 of the software structure shown below.
  • a module that exists in the directory structure information is called an internal library
  • a module that does not exist is called an external library.
  • Characteristic 1) The internal library has a dependency relationship based on the inheritance relationship with the external library.
  • the external library can be defined as a root module having an inheritance relationship with a module positioned at the lowest level of the stack axis.
  • Characteristic 2 The internal library is a module that provides a common function of software. The internal library has an inheritance relationship with the external library and the remaining non-internal library modules.
  • the operation of the stack structure determination process using the characteristics 1 and 2 is as follows.
  • the stack structure analyzer 110 extracts one module from the list (step A06), and checks whether the extracted module exists in the directory structure information read in step A01 (step A07).
  • step A11 determines that the stack is an external library
  • step A11 sets a pair of the corresponding module name and “external library” in the module affiliation relationship information. To do.
  • step A08 determines that the module is an internal library, and sets all modules in the directory to which the module belongs as an internal library, and matches the module affiliation relationship information.
  • a pair of module name and “internal library” is set (step A09).
  • the stack structure analyzer 110 writes the set pair in the module affiliation relation information DB 103, and returns to the process of step A05 (step A10).
  • the stack structure analyzer 110 creates a list of non-inheritance source modules from the static analysis model information (step A12). For all non-inheritance source modules, a pair of “application” representing the corresponding module name and the highest module is set (step A13) and written to the module affiliation relation information DB 103 (step A14). Finally, the stack structure analyzer 110 writes the stack axis classification “external library”, “internal library”, and “application” in the axis classification information DB 102 (step A15).
  • the module relation diagram generation system estimates an appropriate stack structure of module affiliation relation information and axis classification information using static analysis model information and directory structure information. Can be obtained.
  • the layer structure analyzer 120 in FIG. 1 will be described with reference to FIG.
  • the layer structure analyzer 120 reads directory structure information (step B01 in FIG. 3), and then reads module affiliation relationship information (step B02). Step B01 and step B02 may be reversed.
  • the layer structure analyzer 120 extracts the module list of the lowest stack from the read module affiliation relationship information (step B03).
  • the layer structure analyzer 120 performs the layer structure determination process using the software management characteristic 3 shown below.
  • the internal library is stored so that the directory structure for storing the internal library represents the layer structure for ease of manual management.
  • the operation of the layer structure determination process using this characteristic 3 is as follows.
  • the layer structure analyzer 120 searches and acquires all directory names to which the listed modules belong (step B04).
  • the layer structure analyzer 120 checks whether the directory names are the same, and if they are the same (Yes in step B05), the upper layer directory name is assumed to be a directory representing the layer structure, and is replaced with the upper layer directory name.
  • Process step B06
  • the layer structure analyzer 120 writes the directory name as the layer structure name in the axis classification information 102 (Step B07).
  • the layer structure analyzer 120 reads the static analysis model information, and writes the external library from which each module is inherited into the module affiliation relationship information 103 as the same axis classification (step B08). Furthermore, the layer structure analyzer 120 reads the static analysis model information and checks whether a module having a child class exists. If a child class exists, the layer structure analyzer 120 uses the same layer structure name as the parent class. The relation information is updated (step B09). As the layer structure analyzer 120 operates in this manner, the module relation diagram generation system receives the directory structure information, the module affiliation relationship information and the axis classification information created by the stack structure analyzer 110, and the static analysis model information. The layer structure can be added to the module affiliation relation information and the axis classification information.
  • the functional structure analyzer 130 reads directory structure information (step C01), and then reads module affiliation relation information (step C02). Note that the order of step C01 and step C02 may be reversed.
  • the functional structure analyzer 130 creates a list in which modules whose stacks are applications are selected from the read module affiliation relationship information (step C03).
  • the functional structure analyzer 130 performs processing for determining the functional structure using the software management characteristic 4 shown below.
  • a module of a program that is not an external library or an internal library is stored so that the directory structure in which the module is stored represents the function classification of the module for ease of manual management.
  • the operation of the function structure determination process using this characteristic 4 is as follows.
  • the functional structure analyzer 130 checks whether the number of modules included in the created list is zero (step C04). If not, one module is extracted from the list, and the directory name to which the module belongs is the module affiliation relationship information. If it is already registered in the layer, it is replaced with the upper directory name (step C05), and the directory name to which the extracted module group belongs is written in the module affiliation relation information DB 101 as the function axis classification name (step C06). This is repeated for all modules included in the created list until there are no unanalyzed modules.
  • the functional structure analyzer 130 reads the static analysis model information for the module whose module affiliation relation information stack is an application, the stack depends on another module which is an application, and the function name is If they are different, the function name of the dependency source is replaced and updated (step C07).
  • the function of the module affiliation relation information is taken out and added to the axis classification information as a list without duplication (step C08).
  • the stack structure analyzer 110, the layer structure analyzer 120, and the functional structure analyzer 130 write and update the detected results in the axis classification information DB 102.
  • the stack structure analyzer 120 is further passed to the functional structure analyzer 130.
  • the functional structure analyzer 130 collects the detection results of the stack structure analyzer 110 and the layer structure analyzer 120 and stores the axis classification information DB 102. You may update by writing. In this case, the layer structure analyzer 120 and the functional structure analyzer 130 do not read the axis classification information from the axis classification information DB 102, but the layer structure analyzer 120 reads the axis classification information passed from the functional structure analyzer 110. The functional structure analyzer 130 reads the axis classification information passed from the layer structure analyzer 120. In addition, the stack structure analyzer 110 passes the detected axis classification information to the layer structure analyzer 120, and the stack structure analyzer 120 does not pass to the functional structure analyzer 130, but the layer structure analyzer 120 and the functional structure.
  • the axis classification information required by the analyzer 130 may be extracted from the module affiliation relationship information 120. Also, the axis classification information required by the layer structure analyzer 120 and the functional structure analyzer 130 does not use the axis classification information in the axis classification information DB 102 written by the stack structure analyzer 110 but in the module affiliation relationship information DB 103. Axis classification information required by each of the layer structure analyzer 120 and the functional structure analyzer 130 may be extracted from the recorded module affiliation relationship information and used. As the functional structure analyzer 130 operates in this manner, the module relation diagram generation system uses the directory structure information, the module affiliation relationship information added by the layer structure analyzer 120, and the axis classification information to determine the functional structure. Can be added to module affiliation relation information and axis classification information.
  • the drawing generator 140 reads axis classification information (step D01), module affiliation relation information (step D02), and static analysis model information (step D03). Note that the processing order of steps D01, D02, and D03 may be changed.
  • the drawing generator 140 creates a drawing (step D05). The detailed operation of the drawing creation process is shown below. First, the drawing generator 140 creates a blank drawing (empty drawing data) from the axis classification information (step D05).
  • the drawing generator 140 takes out a list of modules corresponding to the stack, layer, and function from each empty drawing and places them in the drawing (step D06), acquires the relationship between the modules from the read static analysis model information, The relationship between the arranged modules is reflected (added) in the drawing (step D07). Thereafter, it is displayed on an electronic screen or printed as necessary. Since the drawing shows the related information, it can be shown in the form of a table.
  • the figure here also includes a tabular representation.
  • directory structure information representing the layer structure or functional structure and the characteristics of the relationship between modules in the program having the layer structure are used. Attributes in each axis (function axis, layer axis, stack axis) can be analyzed and classified. In addition, from the results of analysis and classification, it is configured so that each module belongs to which part of the two axes is determined and arranged on the module related diagram. Can be generated.
  • FIG. 6 is a diagram for explaining an example of storage in which application software modules having a layer structure are classified in order of layer and function from the top of the directory hierarchical structure.
  • a directory hierarchical structure representing the entire application software is “System”, and a directory of “Web”, “Logic”, and “DBAccess” is prepared for each layer of the second hierarchy. Common modules referenced by each layer are stored in the second common directory.
  • “A function” to “H function” directories are prepared for each function.
  • the fourth level is a module or source code constituting the module.
  • “A1-An” represents that there are 1 to n source codes or modules for realizing “A function”.
  • the hierarchical structure of the directory is stored in the directory structure information DB 101 as directory structure information.
  • FIG. 7 is an explanatory diagram illustrating an example of static analysis model information.
  • FIG. 7 shows an example of the call relationship (dependency relationship) and the inheritance relationship between modules detected by the static analysis technique.
  • the broken line dependency drawn from the module A1-An to the module D1-Dq means that the program in the module A1-An is calling the program in the module D1-Dq.
  • the inheritance relationship of a solid line with a triangle drawn from module A1-An toward Common1-Common_p means that the program in module A1-An inherits and uses the program in Common1-Common_p. ing.
  • the stack structure analyzer 110 reads the directory structure information of FIG. 6 (step A01), and then reads the static analysis model information of FIG. 7 (step A02).
  • the stack structure analyzer 110 creates a module relation list from the read static analysis model information (step A03).
  • FIG. 8 is an example of a module relation list created from static analysis model information.
  • the stack structure analyzer 110 creates a list in which the dependency source of the inheritance relationship is extracted from the module related list (step A04).
  • FIG. 9 is an example of a list of inheritance dependency sources extracted from the module relation list.
  • Lib1, Lib2, Lib3, Common1-Common_p, Common1-Common_s, and Common1-Common_w are created as a list as dependency source modules.
  • steps A06 to A15 with reference to the inheritance source module list and directory structure information
  • axis classification information and module affiliation relationship information are created as shown in FIG. Specifically, when there are Lib1, Lib2, Lib3, Common1-Common_p, Common1-Common_s, Common1-Common_w in the list as shown in FIG.
  • the stack structure analyzer 110 extracts the inheritance dependent source module Lib1 from the list ( Step A06). If it is checked whether Lib1 exists in the directory hierarchy of FIG. 6 (step A07), step A11 is executed because it does not exist. As an execution result, it is added to the module affiliation relationship information that Lib1 is an external library, and the process returns to step A05. Since the inheritance source module list is not zero, the stack structure analyzer 110 extracts the next inheritance dependency source module Lib2. Since Lib2 does not exist in the directory of FIG. 6, it is added to the module affiliation relationship information by the stack structure analyzer 110 that Lib2 is an external library, and the process returns to step A05.
  • the process of the inheritance dependency source module Lib3 is performed, and it is added that Lib3 is an external library in the module affiliation relation information, and the process returns to Step A05.
  • the stack structure analyzer 110 takes out the inheritance dependence source module Common1-Common_p. Since it exists in the directory hierarchy of FIG. 6 by the process of step A07, step A09 is executed. As an execution result, Common1-Common_p is added to the module affiliation relationship information to indicate that it is an internal library, and the process returns to step A05. Similarly, Common1-Common_s and Common1-Common_w are also added to the module affiliation relationship information to indicate that they are internal libraries, and the process returns to step A05.
  • step A12 is executed.
  • a non-inheritance source module list is created from static analysis model information, A1-An, B1-Bm, C1-Co, D1-Dq excluding Lib1, Lib2, Lib3, Common_1-Common_p, Common_1-Common_s, Common1-Common_w , E1-Er, F1-Ft, G1-Gu, and H1-Hv are obtained.
  • step A13 and A14 the stack structure analyzer 110 performs processing in steps A13 and A14, except for A1-An, B1- Bm, C1-Co, D1-Dq, E1-Er, F1-Ft, G1-Gu, and H1-Hv are set as “application”, and the module affiliation relationship information is updated.
  • the stack structure analyzer 110 adds the axis names “external library”, “internal library”, and “application” as the axis classification of the stack of the axis classification information as the processing of step A15.
  • the operation of the layer structure analyzer 120 will be described using the directory structure information shown in FIGS. 1, 3 and 6 and the axis classification information and module affiliation relationship information shown in FIGS.
  • the layer structure analyzer 120 reads the directory structure information and module affiliation relationship information in steps B01 and B02, creates a module list of the internal library in step B03, and creates directories having common names in steps B04 to B06. Replace with the upper directory name.
  • the list becomes Common1-Common_p, Common1-Common_s, Common1-Common_w. Since the directory names in which these are stored have the same name “common”, they are replaced with the higher-level directory names Web, Logic, and DBAccess. After the replacement, the process returns to step B05.
  • step B08 the layer structure analyzer 120 executes step B08 and step B09 using the replaced layer name, the axis classification information and module affiliation relationship information of FIG. 11 are created. More specifically, in step B08, the static analysis model information is read, the inheritance destination external library is searched, and the module affiliation relationship information is updated with the same axis classification for the external library. For example, the inheritance destination of the common library Common1-Common_p is Lib1.
  • Common1-Common_p belongs to the layer Web
  • the Web is added to the Lib1 layer of the module affiliation relationship information.
  • Logic is added to Lib2 and DBAccess is added to Lib3.
  • the static analysis model information is read and checked to determine whether there is a module in which Common1-Common_p has a child class.
  • the child classes of Common1-Common_p are modules A1-An, B1-Bm, and C1-Co.
  • Web is added to the module affiliation relation information layer for modules A1-An, B1-Bm, C1-Co having child classes of Common1-Common_p.
  • Logic is added to the module affiliation relationship information layer for modules D1-D1q and E1-Er having child classes of Common1-Common_s.
  • DBAccess is added to the module affiliation relationship information layer for modules F1-Ft, G1-Gu, and H1-Hv having child classes of Common1-Common_w.
  • the functional structure analyzer 130 reads the directory structure information and the module affiliation relationship information in steps C01 and C02, and then creates a list in which the stack is an application from the module affiliation relationship information (step C03).
  • the module names are A1-An, B1-Bm, C1-Co, D1-Dq, E1-Er, F1-Ft, G1-Gu, H1- A list of Hv's is created. The elements in the list are extracted one by one until the created list becomes zero, and step C05 and step C06 are executed. Further, when step C07 and step C08 are executed, module affiliation relationship information and axis classification information are obtained as shown in FIG. Created. Specifically, when the module name A1-An is extracted, it can be seen that the directory name to which the module belongs is the A function from the directory structure information read in the C01 process.
  • step C05 Since the A function is not registered in the module affiliation relationship information layer, it is not replaced with the upper directory name (step C05).
  • step C06 the module affiliation relation information is updated with the function A, which is the directory name of the modules A1-An, as the function axis classification name. If the list is repeated until the list becomes zero, the function name of the module affiliation relation information is the function name of module A1-An, the function name of module B1-Bm, the function name of module B1-Bm, and the function name of module C1-Co is function C.
  • the function names of the modules D1-Dq are D functions
  • the function names of the modules E1-Er are E functions
  • the function names of the modules F1-Ft are F functions
  • the function names of the modules G1-Gu are G functions
  • the modules H1-Hv The function name is updated to the H function.
  • the updated function name is updated by reading the static analysis model information.
  • Modules A1-An have no dependency relationship, so the function names are not updated.
  • the modules B1-Bm and C1-Co have no dependency, the function name is not updated.
  • modules D1-Dq whose function name in the module affiliation relationship information is D function have a dependency relationship with modules A1-An.
  • the function name of the modules A1-An is A function. Since the function names are different, the function names of the modules D1-Dq are replaced with the A function. Similarly, the function name of the module E1-Er is replaced with the B function. The function names of the modules H1-Hv are replaced with the C function. Modules F1-Ft whose function name in the module affiliation relationship information is F function have a dependency relationship with modules D1-Dq. Further, the modules D1-Dq have a dependency relationship with the modules A1-An. The function name of the modules A1-An is A function. Since the function names are different, the function names of the modules F1-Ft are replaced with the A function.
  • step C08 when step C08 is executed, functions A, B, C, A, B, A, B, C are extracted from the module affiliation relationship information.
  • the A function, B function, and C function, in which the names of these functions are not duplicated, are added to the axis classification information as the axis classification names whose axis classification is a function.
  • the axis classification information of FIG. 12 is obtained.
  • the drawing generator 140 reads the static analysis model information of FIG. 7, the module affiliation relationship information and the axis classification information of FIG.
  • FIG. 12 (step D01 to step D03), and combines the two axes from the stack, layer, and function. Is created.
  • the module affiliation relationship information and the axis classification information shown in FIG. 12 there are three functional classification drawings combining the stack axis and the layer axis (see FIG. 13), and the layer combining the stack axis and the function axis.
  • FIG. 6 is an example in which application software modules having a layer structure are classified and stored in the order of layers and functions from the top of the directory hierarchical structure.
  • the directory hierarchical structure includes functions and layers from the top. In some cases, they are classified and stored in this order.
  • FIG. 16 shows an example in which functions are sorted and stored in order of functions and layers.
  • the result executed by the stack structure analyzer 110 is the same as that shown in FIG.
  • the execution of the layer structure analyzer 120 is the same as that in the case where the directory hierarchy structure of FIG. 13 is used, except that the directory name is not the same in step B05, and therefore step B06 is not executed.
  • the same thing as FIG. 11 is obtained.
  • Execution of the functional structure analyzer 130 is the same as that in the case where the directory hierarchy structure of FIG. 13 is used, except that the upper directory name is replaced in step C06. As a result, the same thing as FIG.
  • each module for understanding the structure of software having a layer structure is arranged on each of the stack axis, the layer axis, and the function axis. It is possible to create relational information that has been analyzed and summarized to which classification (classification). Furthermore, a module relation diagram represented by a combination of two axes can be generated from the relationship information.
  • Each unit (analyzer, generator, DB) of the module relation diagram generation system is realized using a combination of hardware and software.
  • a module classification analysis program is expanded in the RAM, and each unit is realized by operating hardware such as a control unit based on the program.
  • the program may be recorded on a storage medium and distributed.
  • the program recorded in the recording medium is written in an auxiliary storage device such as an HDD via a wired, wireless, or recording medium itself, and operates a control unit or the like.
  • Examples of the recording medium include an optical disk, a magnetic disk, and a semiconductor memory device.
  • a module related diagram generation system can be realized by using one general computer.
  • the module-related diagram generation system is configured such that various programs stored in the auxiliary storage device are expanded in the RAM and read into the control unit, and the control unit and the RAM, the auxiliary storage device and the like hardware and software cooperate. It functions as each analyzer, generator, and each database (DB), and operates as a system.
  • a computer that operates as a module-related diagram generation system acquires information from various DBs based on drawing data creation instructions from an operator input via an input unit or a network interface, and stack structure analysis program and layer structure analysis Relationship information (in the above description, axis classification information and module affiliation relationship information), which is the result of verifying which axis each module of the target software corresponds to, by operating based on the program and functional structure analysis program To get.
  • the computer operates based on the drawing creation program, generates module-related diagram data of the desired axis from the relationship information, etc., and displays it on the display screen or prints it on paper according to the operator's request.
  • the above embodiment will be described in another expression as follows.
  • An input unit that receives a module-related diagram data generation instruction operation, a control unit that operates based on the program, and an output unit that presents related information and a related diagram to the operator.
  • the program operates the control unit, and the stack structure appears in the inheritance relationship of the software module having the layer structure described in the above embodiment from the static analysis model information and the directory structure information.
  • the stack axis is analyzed and classified based on the characteristics and the internal library is a module that provides the common functions of the software.
  • the directory structure stores the internal library. Analyzes and classifies the layer axis based on the characteristics of the layer structure, and classifies the function into the storage location of the module different from the external library and the internal library in the directory structure from the result, the static analysis model information and the directory structure information (structure) Analyzing the functional axis based on the characteristics Collect the results of analysis classification of stack axis, layer axis and function axis as relation information between modules of the target program, and use the relation information and static analysis model information to obtain the module of the desired axis Relevant diagram data (drawing information) is generated.
  • directory structure information in which a model obtained by static analysis of software having a target layer structure and a module of the software are stored as a module-related diagram generation system.
  • For detecting the stack to which the module belongs means for analyzing the detected stack, the directory structure information and the model obtained by static analysis, and detecting the layer to which the module belongs, and the detected stack And the layer, the directory structure information, and the model obtained by static analysis to classify the function to which the module belongs, and from the result of classifying the model and detection, the stack axis, the layer axis, and the function axis
  • a module that generates module-related diagram data combined with any two axes By operating provided related chart generation means may generate the module relation diagram data of a desired axis.
  • humans identify layers and functions based on the characteristics that a stack structure appears in the inheritance relationship of application software modules that have a layer structure, and the directory hierarchy in which multiple data and files that make up the module are stored. Since the directory hierarchy structure is defined so that it is easy to do so, the characteristics of the layer and function structure to which the module belongs appear, and the model representing the relationship between modules obtained by reverse engineering using static analysis technology. By performing arithmetic processing so that the module is used, it is possible to analyze and classify which part of the hierarchical structure of each of the stack axis, layer axis, and function axis belongs to generate the relation information.
  • the axis classification information and the module affiliation related information may be generated as intermediate data in a timely manner and stored in the auxiliary storage device, or each analysis classification is performed only on the memory (RAM), and the intermediate data
  • the relationship information may be generated without storing. That is, means for recording relevant information indicating the relationship between individual modules from the results of detection and classification may be provided inside and outside each analyzer, or means for recording collectively may be provided inside and outside each analyzer. .
  • the configuration of the module relation diagram generation system is created to correspond to the creation of all the two axis module relation diagram data.
  • the stack structure analyzer and the layer structure analyzer may be operated.
  • the drawing generator may be operated in addition to the stack structure analyzer and the layer structure analyzer.
  • Static analysis model information DB (storage medium, storage means) 101 Directory structure information DB (storage medium, storage means) 102 Axis classification information DB (storage medium, storage means) 103 Module belonging relation information DB (storage medium, storage means) 104 Drawing information DB (storage medium, storage means) 110 Stack structure analyzer (stack structure analysis means) 120 layer structure analyzer (layer structure analysis means) 130 Functional structure analyzer (functional structure analysis means) 140 Drawing generator (drawing generation means)

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

 モジュール分類解析システムは、リバースエンジニアリングによって、スタック軸、レイヤ軸、機能軸においての各モジュール有する属性を自動判定する。加えて、モジュール分類解析システムは、必要な軸のモジュール関連図を自動的に生成する。モジュール分類解析システムは、ソフトウェアの静的解析によって得られたモデルに含まれる情報とソフトウェアのディレクトリ構造情報を解析してソフトウェアの個々のモジュールが属するスタックを検出するスタック構造解析器と、検出したスタックとモデルに含まれる情報とディレクトリ構造情報を解析してモジュールが属するレイヤを検出するレイヤ構造解析器とを少なくとも有し、必要に応じて、検出したスタック及びレイヤとモデルに含まれる情報とディレクトリ構造情報を解析して、モジュールが属する機能を分類する機能構造解析器を有する。

Description

モジュール分類解析システム、モジュール分類解析方法およびモジュール分類解析プログラム
 本発明は、ソフトウェアのリバースエンジニアリング技術に関し、詳しくは、リバースエンジニアリングによって取得されたモジュール間の関連を表すモデル(データ)から、モジュール間の関連を層構造の観点で分類した関係情報とモジュール関連図を生成するシステム、プログラムおよびモジュール分類解析プログラムに関する。
 アプリケーションソフトウェアに代表されるソフトウェア開発は、開発規模が増大し、その構造が複雑化した結果、ソフトウェアを層構造に分けて開発するようになった。層構造の分類には、機能軸、レイヤ軸、スタック軸の3つの軸がある。
 機能軸とは、ソフトウェアの役割を機能の観点で分類した構造を表す。例えば、構造化分析設計手法における機能を段階的詳細化した機能構造や、オブジェクト指向分析設計手法におけるユースケースのモデリングで抽出された機能群を階層的にあるいは並列に並べた構造である。
 レイヤ軸とは、ソフトウェアを構成するモジュールを処理の役割で分類した階層構造である。様々な分類が提唱されているが、主に、ユーザインタフェースの役割を持つプレゼンテーション層、ビジネスロジックの役割を持つビジネス層、データアクセスの役割を持つデータアクセス層に分類される。例えば、Java言語で作られるアプリケーションソフトウェアのモジュールは、J2EEで定められた標準的な構造として、クライアント層、プレゼンテーション層、ビジネス層、インテグレーション層に分類される。また、マイクロソフトの.NET Frameworkで作られるアプリケーションソフトウェアのモジュールは、Application Architecture for.NET:Designing Applications and Servicesの階層型分散アプリケーションの代表的な3層アプリケーションの構造として、プレゼンテーション層、ビジネス層、データ層に分類される。
 スタック軸とは、ソフトウェアが実行されるときに依存するソフトウェアライブラリを分類した構造である。例えば、Java言語のJ2SE、J2EEという規格を実装したライブラリは、上位をアプリケーションとすると最下層から順にJ2SEライブラリ、J2EEライブラリ、アプリケーションフレームワーク、アプリケーションという階層構造を持つ。
 このように層構造を有するソフトウェアは、機能軸、レイヤ軸、スタック軸のそれぞれが階層構造を有する立体構造で表すことができる。また、ソフトウェアを構成するモジュールは、各軸のいずれかの階層分類に属する。
 リバースエンジニアリングでは、静的解析技術を用いてソースコードを解析することで、モジュールとモジュールとの関連を検出することが可能である。なお、静的解析技術では、モジュールが、機能軸、レイヤ軸、スタック軸それぞれのどの階層の分類に属すのかという情報は検出できない。その結果、リバースエンジニアリングによって得られたモジュールを、機能軸、レイヤ軸、スタック軸の3つの軸で分類すること、分類した関係情報を図面化することは、人手で行う必要がある。
 ソフトウェアのテストフェーズや保守フェーズでは、多くの場面で、不具合の原因特定や不具合の修正がどの範囲まで影響するのかを特定する準備作業として、モジュールとモジュールとの関係の構造理解の為の図面を作成する。
 不具合の原因が明らかで修正範囲が限定される場合は、構造理解が不要なこともあるが、モジュール構造が複雑で不具合の原因が不明瞭な場合や修正範囲が広範囲に及ぶような場合は、機能軸、レイヤ軸、スタック軸の3つの軸で分類した関係情報を作成して、3つの軸から2つの軸で組み合わせた図面を用いてモジュール構造を理解する必要性がある。
 さらに、保守フェーズや改造、再開発などの場合は、モジュール構造を事前に正しく把握できるようにするため、2つの軸で組み合わせた図面を用意しておくことが理想的である。
 静的解析技術は、静的コード解析技術や、ソースコード解析技術、プログラム解析技術などとも呼ばれる。この技術は、ソフトウェアを実行することなく解析を行う技術であり、モジュール間の呼び出し関係(依存関係)を検出したりする技術である。この技術を例示すれば、オブジェクト指向プログラミング言語に対する場合、継承関係の検出を行う技術となる。また、呼び出し関係や継承関係を検出する技術は、多数のリバースエンジニアリング機能を持つ開発ツールとして提供されている。例えば、オープンソースプロジェクトが開発している統合開発環境NetBeansは、Javaのソースコードを解析して、呼び出し関係と継承関係を検出し、クラス図やシーケンス図を生成する機能を持つ(http://www.netbeans.org/index.html参照)。同様に、UMLモデリングツールJUDE(ジュード)は、JavaとC++のソースコードを解析して、呼び出し関係と継承関係を検出し、クラス図を生成する機能を持つ(http://www.change−vision.com/参照)。
 他に、静的解析技術で呼び出し関係や継承関係を検出する技術は、例えば特許文献1ないし3などに記載されている。
特開2008−225519号公報 特開2008−052424号公報 特開2008−015665号公報
 しかし、上記リバースエンジニアリングでは、抽出したモジュールが、機能軸、レイヤ軸、スタック軸の3つの軸のそれぞれの階層のどの部分に属するかを決定できない。そのため、リバースエンジニアリングを行う人間が、抽出したモジュールを、機能軸、レイヤ軸、スタック軸の3つの軸で分類した関係情報を手作業で分類し、2つの軸を組み合わせた図面を手作業で作成する作業が必要であった。または、上記作業の代わりに、リバースエンジニアリングにより得られたモデルや図面から不要なモジュールや関連を人為的に取り除く作業が必要であった。
 このため、2つの軸を組み合わせた図面を手作業で用意することは、ソフトウェアを構成する多数のモジュールがどのような役割を持つのかを把握しながらの作業となるため、多くの時間と豊富な経験を要する。また、作業者が見直しや確認によって修正の必要性を把握した場合には、やり直し又は後戻り作業が発生する。その結果として、不具合の修正コストの増大、修正見積もりコストの増大、手作業により誤りが混入した図面によって後工程で想定外の工数が発生するという問題が生じている。
 即ち、上記リバースエンジニアリング技術による関連図の作成の課題は、ソースコードを入力とした静的解析技術を用いてモジュール間の関連を表すモデルを得ており、モデルの中にはモジュールが階層構造のどの部分に属するのかという情報を持っていない点である。そのため、層構造の観点で分類した関係情報や図面の作成に人手を要する。上記特許文献1ないし3は、このような課題について、なんら言及していない。
 また、層構造を有するソフトウェアの構造理解のために、機能軸、レイヤ軸、スタック軸の3つの軸のうち、2つの軸で組み合わせた関係情報や図面の作成に多数の人的工数を要している。その結果として、不具合の修正コストの増大、修正見積もりコストの増大、手作業により誤りが混入した図面によって後の工程で想定外の工数が発生するという課題が生じている。
 これは、静的解析技術を用いたリバースエンジニアリングでは、モジュールおよびモジュール間の継承関係や依存関係を検出できるだけで、層構造の機能軸、レイヤ軸、スタック軸の階層構造のどの部分にモジュールが属するのかを検出できないからである。
 本発明は、上記課題を解決し、ソフトウェアの構造に特性を見出し、静的解析技術によって得られたモデルから、各モジュールが層構造の3つの軸である機能軸、レイヤ軸、スタック軸での何れに属するのかを解析分類するモジュール分類解析システムを提供する。
 また、本発明は、解析分類した結果から、2軸又は3軸で表現されるモジュール構造図を生成するモジュール分類解析システムを提供する。
 本発明に係るモジュール分類解析システムは、ソフトウェアの静的解析によって得られたモデルと前記ソフトウェアのディレクトリ構造情報を解析して、前記ソフトウェアの個々のモジュールが属するスタックを検出するスタック構造解析器と、検出したスタックと前記ディレクトリ構造情報を解析して、前記モジュールが属するレイヤを検出するレイヤ構造解析器とを少なくとも含み、必要に応じて、検出したスタック及びレイヤと前記ディレクトリ構造情報を解析して、前記モジュールが属する機能を分類する機能構造解析器を加えて備えることを特徴とする。
 本発明に係るモジュール分類解析システムは、上記構成に加え、解析結果から、スタック軸、レイヤ軸、機能軸のいずれかの2つの軸もしくは3軸で組み合わせたモジュール関連図を生成する図面生成器を有することを特徴とする。
 本発明によれば、ソフトウェアを構築する各モジュールのソフトウェアの3つの軸である機能軸、レイヤ軸、スタック軸における属性を解析分類するモジュール分類解析システムを提供できる。
 また、本発明によれば、解析分類した結果から、2軸又は3軸で表現されるモジュール構造図を生成するモジュール分類解析システムを提供できる。
 図1は、実施の形態のモジュール関連図生成システム(モジュール分類解析システム)の構成を示すブロック図である。
 図2は、スタック構造解析器110の動作を示すフローチャートである。
 図3は、レイヤ構造解析器120の動作を示すフローチャートである。
 図4は、機能構造解析器130の動作を示すフローチャートである。
 図5は、図面生成器140の動作を示すフローチャートである。
 図6は、レイヤ、機能の順に分類されたディレクトリ構造情報の一例を示す説明図である。
 図7は、静的解析モデル情報の一例を示す説明図である。
 図8は、ディレクトリ構造情報をスタック構造解析器のステップA03を実行した結果得られるモジュール関連一覧を例示する説明図である。
 図9は、ディレクトリ構造情報をスタック構造解析器のステップA04を実行した結果得られる継承関係の継承元一覧を例示する説明図である。
 図10は、ディレクトリ構造情報をスタック構造解析器で実行した結果得られるモジュール所属関係情報と軸分類情報を例示する説明図である。
 図11は、ディレクトリ構造情報をレイヤ構造解析器で実行した結果得られるモジュール所属関係情報と軸分類情報を例示する説明図である。
 図12は、ディレクトリ構造情報を機能構造解析器で実行した結果得られるモジュール所属関係情報と軸分類情報を例示する説明図である。
 図13は、図面生成器で生成したスタック軸とレイヤ軸で表示した機能のモジュール構造を例示する説明図である。
 図14は、図面生成器で生成したスタック軸と機能軸で表示したレイヤのモジュール構造を例示する説明図である。
 図15は、図面生成器で生成した機能軸とレイヤ軸で表示したスタックのモジュール構造を例示する説明図である。
 図16は、機能、レイヤの順に分類されたディレクトリ構造情報の一例を示す説明図である。
 図17は、モジュール関連図生成システム(モジュール分類解析システム)の構成例を示すブロック図である。
 本発明の実施の形態を図1に基づいて説明する。
[1]構造の説明
 図1は、実施の形態のモジュール関連図生成システムの構成を示すブロック図である。尚、実施の形態では、モジュール関連図の生成まで行なえるシステムを記載するため、本発明のモジュール分類解析システムをモジュール関連図生成システムと記する。
 図1を参照すると、実施の形態のモジュール関連図生成システムは、データベースとして、静的解析モデル情報DB100と、ディレクトリ構造情報DB101と、軸分類情報DB102と、モジュール所属関係情報DB103、図面情報DB104を有し、データ処理部として、スタック構造解析器110と、レイヤ構造解析器120と、機能構造解析器130と、図面生成器140を有する。
 静的解析モデル情報DB100は、複数ファイルの記述で定義されるソースコードを静的解析して得られたモジュール間の関連を表すモデルである静的解析モデル情報を格納する。
 ディレクトリ構造情報DB101は、複数ファイルの記述で定義されるソースコードのディレクトリ構造を示すディレクトリ構造情報を格納する。
 軸分類情報DB102は、各モジュールが属する軸分類情報であるスタック構造内の階層情報、レイヤ構造内の階層情報、機能的分類情報を記憶する。
 モジュール所属関係情報DB103は、各モジュールが属するモジュール所属関係情報であるスタック構造内の階層情報、レイヤ構造内の階層情報、機能的分類情報を記憶する。
 図面情報DB104は、モジュール間のスタック構造とレイヤ構造の関連における関係、モジュール間のスタック構造と機能の関連における関係、モジュール間のレイヤ構造と機能の関連における関係の図面情報を格納する。
 スタック構造解析器110は、静的解析モデル情報DB100とディレクトリ構造情報DB101からそれぞれ情報を読み込み、モジュールの継承関係とモジュールがどのディレクトリ構造に格納されるのかを分析して各モジュールが属するスタック構造内の階層を検出し、スタック構造内の階層情報として軸分類情報とモジュール所属関係情報を作成する。
 レイヤ構造解析器120は、各モジュールの軸分類情報とモジュール所属関係情報と静的解析モデル情報を読み込み、前記複数のファイルのディレクトリ構造情報と合わせて分析し、各モジュールが属するレイヤ構造内の階層を検出し、検出した情報をレイヤ構造内の階層情報として軸分類情報DB102とモジュール所属関係情報DB103に追記更新する。
 機能構造解析器130は、各モジュールの軸分類情報とモジュール所属関係情報を読み込み、レイヤ構造内の階層情報とディレクトリ構造情報とを分析して各モジュールを機能的に分類し、分類した情報を機能的分類情報として軸分類情報DB102とモジュール所属関係情報DB103に追記更新する。
 図面生成器140は、静的解析モデル情報DB100に格納されている静的解析モデル情報と、各モジュールの属するスタック構造内の階層情報とレイヤ構造内の階層情報と機能的分類情報が記録されている軸分類情報およびモジュール所属関係情報から、モジュール間のスタック構造とレイヤ構造の関連における関係、モジュール間のスタック構造と機能の関連における関係、モジュール間のレイヤ構造と機能の関連における関係の少なくとも一つの関係を示す図を生成して図面情報DB104に送る。また、図面生成器140は、操作者の要求に応じて、図面情報DB104から生成した図面情報を取得し、表示画面に表示したり、プリンタを介して紙に印刷したりできる。
 これらの解析器および生成器はそれぞれ概略つぎのように動作する。
 スタック構造解析器110は、静的解析モデル情報DB100から静的解析モデル情報を読み込み、ディレクトリ構造情報DB101からディレクトリ構造情報を読み込み、読み込んだ静的解析モデルにある全てのモジュールに対して継承関係の分析を実施し、各モジュールの継承関係と各モジュールがどのディレクトリ構造に格納されるのかを分析して、各モジュールが属するスタック構造内の階層をスタックの軸分類として検出し、軸分類情報DB102に書き出し、さらにモジュール名と軸分類をモジュール所属関係情報DB103に書き出す。
 レイヤ構造解析器120は、静的解析モデル情報DB100とディレクトリ構造情報DB101から静的解析モデル情報とディレクトリ構造情報を取得し、軸分類情報DB102およびモジュール所属関係情報DB103からスタック構造解析器110が作成した軸分類情報とモジュール所属関係情報を読み込み、モジュール所属関係情報に記載されている全てのモジュールに対してレイヤ構造解析を実施し、取り出したディレクトリをレイヤ構造内の階層を表すレイヤの軸分類として軸分類情報DB102に追加し、さらにモジュール所属関係情報DB103の各モジュールのレイヤの軸分類を、検出したディレクトリ名で更新する。
 機能構造解析器130は、静的解析モデル情報DB100とディレクトリ構造情報DB101から静的解析モデル情報とディレクトリ構造情報を取得し、軸分類情報DB102およびモジュール所属関係情報DB103からレイヤ構造解析器DB120が作成した軸分類情報とモジュール所属関係情報を読み込み、モジュール所属関係情報に記載されている全てのモジュールに対して機能構造解析を行い、取り出したディレクトリを機能的分類である機能の軸分類として軸分類情報DB102に追加し、さらにモジュール所属関係情報DB103の各モジュールの機能の軸分類を、検出したディレクトリ名で更新する。
 尚、スタック構造解析器110とレイヤ構造解析器120と機能構造解析器130は、検出した結果(情報)を適時 軸分類情報DB102に書き込み更新しているが、検出した結果を、スタック構造解析器110はレイヤ構造解析器120に渡し、さらに、スタック構造解析器120は機能構造解析器130に渡し、機能構造解析器130がスタック構造解析器110とレイヤ構造解析器120の検出結果をまとめて、軸分類情報DB102とモジュール所属関係情報DB103に書き込み更新しても良い。
 この場合、レイヤ構造解析器120と機能構造解析器130は、軸分類情報DB102から軸分類情報を読み込むのではなく、レイヤ構造解析器120はスタック構造解析器110から渡された軸分類情報を読み取り、機能構造解析器130はレイヤ構造解析器120から渡された軸分類情報を読み取る。
 また、レイヤ構造解析器120と機能構造解析器130は、モジュール所属関係情報DB103からモジュール所属関係情報を読み込むのではなく、レイヤ構造解析器120はスタック構造解析器110から渡されたモジュール所属関係情報を読み取り、機能構造解析器130はレイヤ構造解析器120から渡されたモジュール所属関係情報を読み取る。
 また、レイヤ構造解析器120と機能構造解析器130が必要とする軸分類情報は、スタック構造解析器110が書き込んだ軸分類情報DB102の軸分類情報を用いるのではなく、モジュール所属関係情報DB103に記録されているモジュール所属関係情報から、レイヤ構造解析器120と機能構造解析器130のそれぞれが必要とする軸分類情報を、抽出して用いても良い。
 図面作成器140は、静的解析モデル情報DB100から静的解析モデル情報を取得し、軸分類情報DB102とモジュール所属関係情報DB103から機能構造解析器130が作成した軸分類情報とモジュール所属関係情報を読み込み、3つの軸のうち、2つの軸を組み合わせた3種類の図面データを作成する。すなわち、モジュールのスタック構造とレイヤ構造の関連における関係、スタック構造と機能の関連における関係、レイヤ構造と機能の関連における関係の少なくとも一つの関係を示す図面を生成する。生成する図面の数は、機能軸の分類数がa個、レイヤの分類数がb個、スタックの分類数がc個とすると最大でa+b+c個となる。
 尚、図面は、関係情報を示したものであるから表の形式で示すこともできる。ここで言う図は表形式の表現も含む。
[2]動作の説明
 次に、図1のブロック図と、図2、図3、図4、図5のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
 図1のスタック構造解析器110の動作について図2を用いて説明する。スタック構造解析器110は、ディレクトリ構造情報を読み込む(ステップA01)。次にスタック構造解析器110は、静的解析モデル情報を読み込む(ステップA02)。尚、ステップA01とステップA02は逆の順序でも良い。スタック構造解析器110は、読み込んだ静的解析モデル情報の中にある全てのモジュール関連を取り出して重複の無いモジュール関連一覧を作成する(ステップA03)。さらにスタック構造解析器110は、モジュール関連一覧から継承関係の継承元のモジュール一覧を作成する(ステップA04)。
 スタック構造解析器110は、作成した一覧のモジュール数がゼロでないならば(ステップA05のYes)、下記に示すソフトウェアの構造の特性1と特性2を利用してスタック構造を決定する処理を行う。ここでは、ディレクトリ構造情報に存在するモジュールを内部ライブラリと呼び、存在しないモジュールを外部ライブラリと呼ぶことにする。
 特性1)内部ライブラリは、外部ライブラリに継承関係による依存関係を有する。すなわち、外部ライブラリは、スタック軸の最下位に位置するモジュールで継承関係のルートモジュールであると定義できる。
 特性2)内部ライブラリは、ソフトウェアの共通機能を提供するモジュールである。内部ライブラリは、外部ライブラリと残りの内部ライブラリで無いモジュールと継承関係を有する。
 特性1と特性2を用いたスタック構造決定処理の動作は次のようになる。
 スタック構造解析器110は、一覧からモジュールを一つ取り出して(ステップA06)、取り出したモジュールがステップA01で読み込んだディレクトリ構造情報に存在するかチェックする(ステップA07)。チェックの結果(ステップA08のNo)存在しない場合、スタック構造解析器110は、外部ライブラリであると判断し(ステップA11)、モジュール所属関係情報に、該当モジュール名と“外部ライブラリ”のペアを設定する。チェックの結果(ステップA08のYes)存在する場合には、スタック構造解析器110は、内部ライブラリであると判断し、該当モジュールが属するディレクトリの全モジュールを内部ライブラリとして、モジュール所属関係情報に、該当モジュール名と“内部ライブラリ”のペアを設定する(ステップA09)。
 スタック構造解析器110は、モジュール所属関係情報DB103に設定したペアを書き込み、ステップA05の処理に戻る(ステップA10)。
 次に、スタック構造解析器110は、作成した一覧のモジュール数がゼロならば(ステップA05のNo)、静的解析モデル情報から非継承元モジュールの一覧の作成する(ステップA12)。全ての非継承元モジュールに対し、該当モジュール名と最上位モジュールを表す“アプリケーション”のペアを設定(ステップA13)し、モジュール所属関係情報DB103に書き込む(ステップA14)。
 最後に、スタック構造解析器110は、軸分類情報DB102にスタック軸の分類を、“外部ライブラリ”、“内部ライブラリ”、“アプリケーション”を書き込む(ステップA15)。
 このようにスタック構造解析器110が動作することによって、モジュール関連図生成システムは、静的解析モデル情報とディレクトリ構造情報を用いて、モジュール所属関係情報と軸分類情報とを適切なスタック構造を推定して取得できる。
 次に、図1のレイヤ構造解析器120の動作について図3を用いて説明する。スタック構造解析の処理を終えると、次にレイヤ構造解析の処理を実行する。レイヤ構造解析器120は、ディレクトリ構造情報を読み込み(図3のステップB01)、次にモジュール所属関係情報を読み込む(ステップB02)。尚、ステップB01とステップB02は逆の順序でも良い。レイヤ構造解析器120は、読み込んだモジュール所属関係情報から最下位スタックのモジュール一覧を取り出す(ステップB03)。
 レイヤ構造解析器120は、下記に示すソフトウェアの管理上の特性3を利用してレイヤ構造決定処理を行う。
 特性3)内部ライブラリは、一般的に、人手による管理上の容易性から、それを格納するディレクトリ構造がレイヤ構造を表すように格納される。
 この特性3を用いたレイヤ構造決定処理の動作は次のようになる。
 レイヤ構造解析器120は、一覧のモジュールが属するディレクトリ名を全て探索して取得する(ステップB04)。レイヤ構造解析器120は、ディレクトリ名が同一であるか確認し、同一の場合(ステップB05のYes)、上位階層のディレクトリ名がレイヤ構造を表すディレクトリと推定し、その上位階層のディレクトリ名に置き換え処理し(ステップB06)、ステップB05の判定処理に戻る。
 ディレクトリ名が同一で無い場合(ステップB05のNo)、レイヤ構造解析器120は、そのディレクトリ名をレイヤ構造名として軸分類情報102に書き込む(ステップB07)。
 レイヤ構造解析器120は、静的解析モデル情報を読み込み、それぞれのモジュールの継承元の外部ライブラリを同じ軸分類としてモジュール所属関係情報103に書き込む(ステップB08)。
 更に、レイヤ構造解析器120は、静的解析モデル情報を読み込み、子クラスを持つモジュールが存在するかを確認し、子クラスが存在する場合には、親クラスと同じレイヤ構造名で、モジュール所属関係情報を更新する(ステップB09)。
 このようにレイヤ構造解析器120が動作することによって、モジュール関連図生成システムは、ディレクトリ構造情報とスタック構造解析器110で作成されたモジュール所属関係情報と軸分類情報、さらに静的解析モデル情報を用いて、レイヤ構造をモジュール所属関係情報と軸分類情報に追加できる。
 次に、図1の機能構造解析器130の動作について図4を用いて説明する。レイヤ構造解析の処理を終えると、次に機能構造解析の処理を実行する。機能構造解析器130は、ディレクトリ構造情報を読み込み(ステップC01)、次にモジュール所属関係情報を読み込む(ステップC02)。尚、ステップC01とステップC02は逆の順序でも良い。
 機能構造解析器130は、読み込んだモジュール所属関係情報から、スタックがアプリケーションであるモジュールを選択した一覧を作成する(ステップC03)。
 次に、機能構造解析器130は、下記に示すソフトウェアの管理上の特性4を利用して機能構造を決定する処理を行う。
 特性4)外部ライブラリや内部ライブラリでは無いプログラムのモジュールは、人手による管理上の容易性から、それを格納するディレクトリ構造がモジュールの機能分類を表すように格納される。
 この特性4を用いた機能構造決定処理の動作は次のようになる。
 機能構造解析器130は、作成した一覧に含まれるモジュール数がゼロであるかチェックし(ステップC04)、ゼロでなければ、一覧からモジュールを一つ取り出し、モジュールが属するディレクトリ名がモジュール所属関係情報のレイヤに登録済みの場合は、上位ディレクトリ名に置き換え(ステップC05)、取り出したモジュール群が属するディレクトリ名を機能軸分類名としてモジュール所属関係情報DB101に書き込む(ステップC06)。これを作成した一覧に含まれるモジュール数の全てに対して、未解析のモジュールがゼロになるまで繰り返す。
 次に、機能構造解析器130は、モジュール所属関係情報のスタックがアプリケーションであるモジュールに対し、静的解析モデル情報を読み込んで、スタックがアプリケーションである別モジュールに依存し、かつ、その機能名が異なる場合は、依存元の機能名に置き換えて更新する(ステップC07)
 機能構造解析器130の最後の処理として、モジュール所属関係情報の機能を取り出し、重複の無い一覧にして、軸分類情報に追記する(ステップC08)。
 尚、スタック構造解析器110とレイヤ構造解析器120と機能構造解析器130は、検出した結果を軸分類情報DB102に書き込み更新しているが、検出した結果を、スタック構造解析器110はレイヤ構造解析器120に渡し、さらに、スタック構造解析器120は機能構造解析器130に渡し、機能構造解析器130がスタック構造解析器110とレイヤ構造解析器120の検出結果をまとめて軸分類情報DB102を書き込み更新しても良い。
 この場合、レイヤ構造解析器120と機能構造解析器130は、軸分類情報DB102から軸分類情報を読み込むのではなく、レイヤ構造解析器120は機能構造解析器110から渡された軸分類情報を読み取り、機能構造解析器130はレイヤ構造解析器120から渡された軸分類情報を読み取る。
 また、検出した軸分類情報を、スタック構造解析器110はレイヤ構造解析器120に渡し、さらに、スタック構造解析器120は機能構造解析器130に渡すのではなく、レイヤ構造解析器120と機能構造解析器130が必要とする軸分類情報は、モジュール所属関係情報120から取り出しても良い。
 また、レイヤ構造解析器120と機能構造解析器130が必要とする軸分類情報は、スタック構造解析器110が書き込んだ軸分類情報DB102の軸分類情報を用いるのではなく、モジュール所属関係情報DB103に記録されているモジュール所属関係情報から、レイヤ構造解析器120と機能構造解析器130のそれぞれが必要とする軸分類情報を、抽出して用いても良い。
 このように機能構造解析器130が動作することによって、モジュール関連図生成システムは、ディレクトリ構造情報とレイヤ構造解析器120で追記されたモジュール所属関係情報と軸分類情報とを用いて、機能構造をモジュール所属関係情報と軸分類情報に追加できる。
 最後に、図1の図面生成器140の動作について図5を用いて説明する。
 図面生成器140は、軸分類情報を読み込み(ステップD01)、モジュール所属関係情報を読み込み(ステップD02)、静的解析モデル情報を読み込む(ステップD03)。尚、ステップD01、D02、D03の処理の順番は入れ替わっても構わない。
 図面生成器140は、軸分類のデータ値が2種類以上ある場合、図面作成を行う(ステップD05)。
 以下に図面作成処理の詳細な動作を示す。
 まず、図面生成器140は、軸分類情報から空図面(空図面データ)を作成する(ステップD05)。当該処理は、軸分類情報の行数だけ繰り返すので、機能(機能軸)の分類数がa個、レイヤ(レイヤ軸)の分類数がb個、スタック(スタック軸)の分類数がc個とすると、a+b+c個の空図面を作成する。
 次に、図面生成器140は、各空図面にスタック、レイヤ、機能に該当するモジュール一覧を取り出し図面に配置し(ステップD06)、読み込んだ静的解析モデル情報からモジュール間の関連を取得し、配置したモジュール間の関連を図面に反映(追記)する(ステップD07)。その後、必要に応じて、電子画面上に表示したり、印刷したりする。
 尚、図面は、関係情報を示したものであるから表の形式で示すこともできる。ここで言う図は表形式の表現も含む。
 次に、本実施の形態の効果について説明する。
 本実施の形態では、静的解析の結果得られるモデルに加えて、レイヤ構造や機能構造を表すディレクトリ構造情報と、層構造を有するプログラムにおけるモジュール間の関連の特性を用いることによって、各モジュールの各軸(機能軸、レイヤ軸、スタック軸)における属性を解析分類できる。
 また、解析分類した結果から、モジュール関連図上に、各モジュールが2軸のどの部分に属すのかを決定して配置するように構成しているため、層構造を持つソフトウェアのモジュール関連図を自動生成できる。
 次に、具体的な実施例を用いて、実施の形態の動作を説明する。
 ソフトウェアのディレクトリの階層構造には、ソフトウェアを使用する人間が機能やレイヤを識別しやすいようにディレクトリの階層構造を一般的に定義することから、階層構造にモジュールが属する機能やレイヤの構造が現れている。
 図6は、層構造を有するアプリケーションソフトウェアのモジュールを、ディレクトリの階層構造の上位からレイヤ、機能の順に分類した格納例を説明する図である。
 アプリケーションソフトウェア全体を表すディレクトリ階層構造は『System』であり、2段目の階層はレイヤ毎に、『Web』、『Logic』、『DBAccess』のディレクトリが用意されている。2段目の共通ディレクトリには、各レイヤが参照する共通モジュールが格納されている。3段目の階層には、機能毎に、『A機能』~『H機能』のディレクトリが用意されている。また、3段目の共通ディレクトリには、2段目のレイヤ配下の機能が参照する共通モジュールが格納されている。4段目は、モジュールあるいはモジュールを構成するソースコードである。例えば、『A1−An』は、『A機能』を実現するソースコードあるいはモジュールが1個からn個存在することを表している。
 本実施例では、当該ディレクトリの階層構造が、ディレクトリ構造情報として、ディレクトリ構造情報DB101に格納されている。
 図7は、静的解析モデル情報の一例を示す説明図である。図7では、静的解析技術によって検出されたモジュール間の呼び出し関係(依存関係)や継承関係の一例を示している。モジュールA1‐AnからモジュールD1‐Dqに向けて引かれた破線の依存関係は、モジュールA1‐Anの中のプログラムが、モジュールD1‐Dqの中のプログラムを呼び出していることを意味している。モジュールA1‐AnからCommon1‐Common_pに向けて引かれた三角付き実線の継承関係は、モジュールA1‐Anの中のプログラムがCommon1‐Common_pの中のプログラムを継承して利用していることを意味している。
 次に、図1と図2および情報の一例を示す図6と図7を用いてスタック構造解析器110の動作について説明する。
 スタック構造解析器110は、図6のディレクトリ構造情報を読み込み(ステップA01)、次に、図7の静的解析モデル情報を読み込む(ステップA02)。スタック構造解析器110は、読み込んだ静的解析モデル情報からモジュール関連一覧を作成する(ステップA03)。図8は、静的解析モデル情報から作成されたモジュール関連一覧の一例である。
 スタック構造解析器110は、モジュール関連一覧から継承関係の依存元を取り出した一覧を作成する(ステップA04)。図9は、モジュール関連一覧から取り出した継承依存元の一覧の一例である。当該処理では、依存元モジュールとしてLib1、Lib2、Lib3、Common1−Common_p、Common1−Common_s、Common1−Common_wが一覧として作成される。
 スタック構造解析器110は、継承元モジュール一覧とディレクトリ構造情報を参照してステップA06からA15を実行すると図10に示すように軸分類情報とモジュール所属関係情報が作成される。具体的には、図9のように一覧にLib1,Lib2,Lib3,Common1−Common_p,Common1−Common_s,Common1−Common_wがある場合、スタック構造解析器110は、一覧から継承依存元モジュールLib1を取り出す(ステップA06)。Lib1は図6のディレクトリ階層に存在するかをチェックする(ステップA07)と、存在しないことからステップA11を実行する。実行結果としてLib1は外部ライブラリであることがモジュール所属関係情報に追記され、ステップA05の処理に戻る。
 スタック構造解析器110は、継承元モジュール一覧がゼロでないことから、次の継承依存元モジュールLib2を取り出す。Lib2も図6のディレクトリに存在しないことから、Lib2は外部ライブラリであることをスタック構造解析器110によってモジュール所属関係情報に追記され、ステップA05の処理に戻る。同様に継承依存元モジュールLib3の処理が行われ、モジュール所属関係情報にLib3は外部ライブラリであることが追記され、ステップA05の処理に戻る。
 次に、スタック構造解析器110は、継承依存元モジュールCommon1−Common_pを取り出す。ステップA07の処理で図6のディレクトリ階層に存在することから、ステップA09を実行する。実行結果としてCommon1−Common_pは、内部ライブラリであることがモジュール所属関係情報に追記され、ステップA05の処理に戻る。
 同様に、Common1−Common_s、Common1−Common_wも、内部ライブラリあることがモジュール所属関係情報に追記され、ステップA05の処理に戻る。
 継承依存元モジュール一覧の処理が終わり、一覧の数がゼロになるとステップA12を実行する。静的解析モデル情報から非継承元モジュール一覧を作成すると、Lib1,Lib2,Lib3,Common_1−Common_p,Common_1−Common_s,Common1−Common_wを除いたA1−An、B1−Bm、C1−Co、D1−Dq、E1−Er、F1−Ft、G1−Gu、H1−Hvが得られる。スタック構造解析器110は、ステップA13,A14の処理で、非継承元モジュール一覧の内容であるLib1,Lib2,Lib3,Common_1−Common_p,Common_1−Common_s,Common1−Common_wを除いたA1−An、B1−Bm、C1−Co、D1−Dq、E1−Er、F1−Ft、G1−Gu、H1−Hvを、“アプリケーション”と設定し、モジュール所属関係情報を更新する。最後に、スタック構造解析器110は、ステップA15の処理として、軸分類情報のスタックの軸分類として“外部ライブラリ”、“内部ライブラリ”、“アプリケーション”の軸名称を追加する。
 次に図1と図3および図6のディレクトリ構造情報と、図10、図11に示す軸分類情報とモジュール所属関係情報を用いてレイヤ構造解析器120の動作について説明する。
 レイヤ構造解析器120は、ステップB01とB02でディレクトリ構造情報とモジュール所属関係情報を読み込んだ後、ステップB03で内部ライブラリのモジュール一覧を作成し、ステップB04からB06で共通名称を有するディレクトリをそれぞれの上位のディレクトリ名称に置き換える。
 図10に示す状態から内部ライブラリのモジュール一覧を作成した場合、その一覧は、Common1−Common_p、Common1−Common_s、Common1−Common_wになる。これらが格納されるディレクトリ名は『共通』という同一名称を持つため、それぞれの上位のディレクトリ名称であるWeb、Logic、DBAccessに置き換えられる。置き換え後にステップB05の処理に戻るが、ディレクトリ名はWeb、Logic、DBAccessとなり同一で無いことから、この情報をステップB07の処理で軸分類情報に追記する。軸分類情報に、レイヤとWeb、レイヤとLogic、レイヤとDBAccessが追記される。
 レイヤ構造解析器120は、置き換えたレイヤ名を用いてステップB08とステップB09を実行すると、図11の軸分類情報とモジュール所属関係情報が作成される。
 詳細に説明すると、ステップB08では、静的解析モデル情報を読み込み、継承先の外部ライブラリを探して、その外部ライブラリを同じ軸分類でモジュール所属関係情報を更新する。例えば、内部ライブラリであるCommon1−Common_pの継承先はLib1である。Common1−Common_pはレイヤWebに属することから、モジュール所属関係情報のLib1のレイヤにWebを追記する。同様にして、Lib2はLogic、Lib3はDBAccessを追記する。
 ステップB09では、Common1−Common_pが子クラスを持つモジュールがあるか静的解析モデル情報を読み込みチェックする。Common1−Common_pの、子クラスは、モジュールA1−An、B1−Bm、C1−Coである。ステップ10で、Common1−Common_pの子クラスを持つモジュールA1−An、B1−Bm、C1−Coに対し、モジュール所属関係情報のレイヤにWebを追記する。同様にして、Common1−Common_sの子クラスを持つモジュールD1−D1q、E1−Erに対し、モジュール所属関係情報のレイヤにLogicを追記する。Common1−Common_wの子クラスを持つモジュールF1−Ft、G1−Gu、H1−Hvに対し、モジュール所属関係情報のレイヤにDBAccessを追記する。
 次に図1と図4および図6に示すディレクトリ構造情報と図11、図12に示す軸分類情報とモジュール所属関係情報を用いて機能構造解析器130の動作について説明する。
 機能構造解析器130は、ステップC01とC02でディレクトリ構造情報とモジュール所属関係情報を読み込んだ後、モジュール所属関係情報からスタックがアプリケーションである一覧を作成する(ステップC03)。具体的には、図11のモジュール所属関係情報を用いた場合、モジュール名がA1−An、B1−Bm、C1−Co、D1−Dq、E1−Er、F1−Ft、G1−Gu、H1−Hvのもの一覧が作成される。
 作成した一覧がゼロになるまで、一覧の要素を一つずつ取り出しステップC05とステップC06を実行し、さらにステップC07とステップC08を実行すると図12に示すようにモジュール所属関係情報と軸分類情報が作成される。
 具体的には、モジュール名がA1−Anを取り出すと、そのモジュールが属するディレクトリ名は、C01処理で読み込んだディレクトリ構造情報からA機能であることが分かる。A機能はモジュール所属関係情報のレイヤに未登録であるので上位のディレクトリ名に置き換えない(ステップC05)。
 次にステップC06でモジュールA1−Anのディレクトリ名であるA機能を機能軸分類名としてモジュール所属関係情報を更新する。
 一覧がゼロになるまで繰り返すと、モジュール所属関係情報の機能名は、モジュールA1−Anの機能名はA機能、モジュールB1−Bmの機能名はB機能、モジュールC1−Coの機能名はC機能、モジュールD1−Dqの機能名はD機能、モジュールE1−Erの機能名はE機能、モジュールF1−Ftの機能名はF機能、モジュールG1−Guの機能名はG機能、モジュールH1−Hvの機能名はH機能に更新される。
 ステップC07では、更新した機能名を、静的解析モデル情報を読み込んで更新する。モジュールA1−Anは、依存関係がないので機能名は更新しない。同様にモジュールB1−BmとC1−Coも依存関係がないので機能名は更新しない。
 他方、モジュール所属関係情報の機能名がD機能であるモジュールD1−Dqは、モジュールA1−Anと依存関係を有する。モジュールA1−Anの機能名はA機能である。機能名が異なることから、モジュールD1−Dqの機能名はA機能に置き換わる。同様にして、モジュールE1−Erの機能名はB機能に置き換わる。モジュールH1−Hvの機能名はC機能に置き換わる。また、モジュール所属関係情報の機能名がF機能であるモジュールF1−Ftは、モジュールD1−Dqと依存関係を持つ。さらにモジュールD1−DqはモジュールA1−Anと依存関係を持つ。モジュールA1−Anの機能名はA機能である。機能名が異なることから、モジュールF1−Ftの機能名はA機能に置き換わる。同様にして、モジュールG1−Guの機能名は、B機能に置き換わる。
 ステップC07の処理の結果として図12のモジュール所属関係情報が得られる。次にステップC08を実行すると、モジュール所属関係情報から機能として、A機能、B機能、C機能、A機能、B機能、A機能、B機能、C機能が取り出される。この機能の名称を重複のない一覧にした、A機能、B機能、C機能を、軸分類が機能である軸分類名称として、軸分類情報に追記する。結果として、図12の軸分類情報が得られる。
 図面生成器140は、図7の静的解析モデル情報と、図12のモジュール所属関係情報と軸分類情報を読み込み(ステップD01からステップD03)、スタック、レイヤ、機能から2つの軸を組合せた図面が作成される。図12に示したモジュール所属関係情報と軸分類情報とを用いた場合は、スタック軸とレイヤ軸を組み合わせた機能分類の図面が3個(図13参照)、スタック軸と機能軸を組み合わせたレイヤ分類の図面が3個(図14参照)、機能軸とレイヤ軸を組み合わせたスタック分類の図面が3個(図15参照)生成される。即ち、合計3+3+3=9個の図面が作成される。
 尚、図6は、層構造を持つアプリケーションソフトウェアのモジュールをディレクトリの階層構造の上位からレイヤ、機能の順に分類して格納している一例であるが、ディレクトリの階層構造は、上位から機能、レイヤの順に分類して格納している場合もある。図16は、上位から機能、レイヤの順に分類して格納している一例である。スタック構造解析器110の実行した結果は、図10と同じものが得られる。
 レイヤ構造解析器120の実行は、図13のディレクトリ階層構造を用いた場合、ステップB05でディレクトリ名が同一でないことからステップB06が実行されないことを除き、同じ処理が行われる。結果として図11と同じものが得られる。
 機能構造解析器130の実行は、図13のディレクトリ階層構造を用いた場合、ステップC06で上位のディレクトリ名の置き換えられることを除き、同じ処理が行われる。結果として図12と同じものが得られる。
 図面生成器140の実行は、静的解析モデル情報とモジュール所属関係情報と軸分類情報に変化が無いことから判るように、同じ処理が行われる。
 上記実施の形態及び実施例の説明で示したように、本発明によれば、層構造を持つソフトウェアの構造理解のための、各モジュールが、スタック軸、レイヤ軸、機能軸のそれぞれの軸におけるどの分類(種別)に属するか解析してまとめた関係情報を作成できる。更に、関係情報から、2つの軸の組み合わせで表されるモジュール関連図を生成できる。
 尚、モジュール関連図生成システムの各部(解析器、生成器、DB)は、ハードウェア、及びソフトウェアの組み合わせを用いて実現する。具体的には、RAMにモジュール分類解析プログラムが展開され、当該プログラムに基づいて制御部等のハードウェアを動作させることによって、各部を実現する。尚、前記プログラムは、記憶媒体に記録されて頒布されても良い。当該記録媒体に記録されたプログラムは、有線、無線、又は記録媒体そのものを介して、HDD等の補助記憶装置に書き込まれ、制御部等を動作させる。尚、記録媒体を例示すれば、オプティカルディスクや磁気ディスク、半導体メモリ装置などが挙げられる。
 また、本発明の具体的な構成は前述の実施の形態に限られるものではない。本発明に係る構成や動作は、発明の要旨を逸脱しない範囲の変更があってもこの発明に含まれる。
 具体的な一例としては、図17に示すように、一般的なコンピュータ1台を用いてモジュール関連図生成システムを実現できる。モジュール関連図生成システムは、補助記憶装置に記憶された各種プログラムがRAMに展開されて制御部に読込まれることによって、制御部とRAM、補助記憶装置等のハードウェアとソフトウェアの協働動作によって、各解析器、生成器、各データベース(DB)として機能し、システムとして動作する。
 モジュール関連図生成システムとして動作するコンピュータは、入力部やネットワークインタフェースを介して入力された操作者からの図面データの作成指示に基づき、各種DBから情報を取得し、スタック構造解析プログラム、レイヤ構造解析プログラム、機能構造解析プログラムに基づいて動作することで、対象のソフトウェアの各モジュールがどの軸のどの分類に該当するか検証した結果である関係情報(上記説明では軸分類情報とモジュール所属関係情報)を取得する。次にコンピュータは、図面作成プログラムに基づいて動作し、関係情報等から、所望軸のモジュール関連図データを生成し、操作者の要求に応じて表示画面に表示したり、紙に印刷したりする。
 上記実施の形態を別の表現で説明すれば以下の様になる。モジュール関連図生成システムとして動作する情報処理システムは、対象となるプログラムの静的解析モデル情報とディレクトリ構造情報とモジュール分類解析プログラムを記憶する記憶部と、操作者による関係情報の生成指示又は所望するモジュール関連図データの生成指示操作を受ける入力部と、前記プログラムに基づいて動作する制御部と、操作者に関連情報および関連図とを提示する出力部を備える。前記プログラムは、制御部を動作させ、前記静的解析モデル情報と前記ディレクトリ構造情報とから、上記実施の形態で説明した層構造を持つソフトウェアのモジュールの継承関係に、スタック構造が現れているという特性と内部ライブラリがソフトウェアの共通機能を提供するモジュールである特性に基づきスタック軸を解析分類し、その結果と前記静的解析モデル情報と前記ディレクトリ構造情報から、ディレクトリ構造における内部ライブラリの格納位置にレイヤ構造が表れる特性に基づきレイヤ軸を解析分類し、その結果と前記静的解析モデル情報と前記ディレクトリ構造情報から、ディレクトリ構造における外部ライブラリ及び内部ライブラリと異なるモジュールの格納位置に機能分類(構造)が表れる特性に基づき機能軸を解析分類し、対象となるプログラムのモジュール間の関係情報としてスタック軸、レイヤ軸、機能軸の解析分類の結果を収集し、前記関係情報と前記静的解析モデル情報とを用いて、所望軸のモジュール関連図データ(図面情報)を生成する。
 上記実施の形態を更に別の表現で説明すれば、モジュール関連図生成システムとして、対象とする層構造を有するソフトウェアを静的解析によって得られたモデルと前記ソフトウェアのモジュールが格納されるディレクトリ構造情報とを解析してモジュールが属するスタックを検出する手段と、検出したスタックと前記ディレクトリ構造情報と静的解析によって得られたモデルを解析して、モジュールが属するレイヤを検出する手段と、検出したスタック及びレイヤと前記ディレクトリ構造情報と静的解析によって得られたモデルを解析して、モジュールが属する機能を分類する手段と、前記モデルと検出と分類した結果から、スタック軸、レイヤ軸、機能軸のいずれかの2つの軸で組み合わせたモジュール関連図データを生成するモジュール関連図生成手段を設けて動作させることによって、所望軸のモジュール関連図データを生成できる。
 即ち、層構造を持つアプリケーションソフトウェアのモジュールの継承関係に、スタック構造が現れているという特性と、モジュールを構成する複数のデータやファイルが格納されているディレクトリ階層に、人間がレイヤや機能を識別しやすいようにディレクトリ階層構造を定義することから、モジュールが属するレイヤや機能の構造が現れるという特性とを、静的解析技術を用いたリバースエンジニアリングによって得られたモジュール間の関連を表すモデルに対して使用する様に演算処理することで、ソフトウェアを構成するモジュールが、スタック軸、レイヤ軸、機能軸のそれぞれの階層構造のどの部分に属するのかを解析分類して関係情報を生成できる。また、モデルと関係情報から2つの軸を組み合わせた図面データを自動的に生成して提示することで、構造理解のための人手作業を削減することができる。
 尚、上記処理は、中間データとして軸分類情報とモジュール所属関連情報を適時作成して補助記憶装置に格納するようにしても良いし、メモリ(RAM)上のみで各解析分類を行い、中間データを格納せずに関係情報を生成するようにしても良い。即ち、検出や分類した結果から個々のモジュール間の関係を示す関連情報を適時記録する手段を各解析器内外に設けても良いし、まとめて記録する手段を各解析器内外に設けても良い。
 また、上記モジュール関連図生成システムの構成は、全ての2軸のモジュール関連図データの作成に対応するように作成されているが、所望の2軸のモジュール関連図データが定まっている場合には、その2軸のモジュール関連図データに必要な構成のみにしても良い。例えば、スタック軸とレイヤ軸の関係情報を所望の場合には、スタック構造解析器とレイヤ構造解析器を動作させる構成とすれば良い。また、スタック軸とレイヤ軸のモジュール関連図を所望の場合には、スタック構造解析器とレイヤ構造解析器に加え、図面生成器を動作させる構成とすれば良い。
 また、上記説明では、一般的に用いられる2軸のモジュール関連図(図面情報)を作成することとして説明したが、生成した関係情報を用いて、3軸のモジュール関連図データ生成し、モジュール関連図を立体的に表現しても良い。
 また、上記説明では、アプリケーションソフトウェアを例示して説明したが、本発明は、層構造を持つソフトウェア全般に適用可能である。例えば、本発明は、層構造化を持たせた組み込み向けソフトウェアにも適用できる。
 この出願は、2009年6月17日に出願された日本出願特願2009−143896号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 100  静的解析モデル情報DB(記憶媒体、記憶手段)
 101  ディレクトリ構造情報DB(記憶媒体、記憶手段)
 102  軸分類情報DB(記憶媒体、記憶手段)
 103  モジュール所属関係情報DB(記憶媒体、記憶手段)
 104  図面情報DB(記憶媒体、記憶手段)
 110  スタック構造解析器(スタック構造解析手段)
 120  レイヤ構造解析器(レイヤ構造解析手段)
 130  機能構造解析器(機能構造解析手段)
 140  図面生成器(図面生成手段)

Claims (25)

  1.  ソフトウェアの静的解析によって得られたモデルと前記ソフトウェアのディレクトリ構造情報を解析して、前記ソフトウェアの個々のモジュールが属するスタックを検出するスタック構造解析器と、
     検出したスタックと前記ディレクトリ構造情報と前記静的解析によって得られたモデルを解析して、前記モジュールが属するレイヤを検出するレイヤ構造解析器と
    を備えることを特徴とする層構造を有するソフトウェアのモジュール分類解析システム。
  2.  請求項1記載のモジュール分類解析システムであって、
     検出したスタック及びレイヤと前記ディレクトリ構造情報と前記静的解析によって得られたモデルを解析して、前記モジュールが属する機能を分類する機能構造解析器を
    更に備えることを特徴とするモジュール分類解析システム。
  3.  請求項1又は2に記載のモジュール分類解析システムであって、
     前記スタック構造解析器、レイヤ構造解析器、機能構造解析器の何れか又は全ては、
     検出と分類した結果から個々のモジュール間の関係を示す情報を適時又はまとめて関連情報として作成出力する
    ことを特徴とするモジュール分類解析システム。
  4.  請求項3記載のモジュール分類解析システムであって、
     前記関連情報から、スタック軸、レイヤ軸、機能軸のいずれかの2軸又は3軸全てを組み合わせたモジュール関連図を生成する図面生成器を
    更に備えることを特徴とするモジュール分類解析システム。
  5.  前記スタック構造解析器は、
     前記モデルから前記ソフトウェアのモジュールの継承関係を取得すると共に、前記ディレクトリ構造情報と共に解析し、
     前記モデルのスタック構造を検出決定してスタック軸を解析分類する
    ことを特徴とする請求項1ないし4の何れか一項に記載のモジュール分類解析システム。
  6.  前記レイヤ構造解析器は、
     スタック軸を解析分類した結果とモジュール間の継承関係と前記ディレクトリ構造情報におけるモジュールの格納位置とを共に解析し、
     前記モデルのレイヤ構造を検出決定してレイヤ軸を解析分類する
    ことを特徴とする請求項5に記載のモジュール分類解析システム。
  7.  前記機能構造解析器は、
     スタック軸及びレイヤ軸を解析分類した結果とモジュール間の継承関係と前記ディレクトリ構造情報におけるモジュールの格納位置とを共に解析し、
     前記モデルの機能的構造を検出決定して機能軸を解析分類する
    ことを特徴とする請求項6に記載のモジュール分類解析システム。
  8.  前記レイヤ構造解析器および/又は前記機能構造解析器は、その検出したレイヤ軸と機能軸の対象に重複がある場合に、当該重複している対象の軸をまとめる
    ことを特徴とする請求項2ないし7の何れか一項に記載のモジュール分類解析システム。
  9.  階層構造を有して情報処理装置に格納されるソフトウェアのソースコードを静的解析して得られたモジュール間の関連を示す静的解析モデル情報と、前記ソフトウェアのディレクトリ構造情報を読み込み、前記静的解析モデル情報から前記モジュールの継承関係を取得すると共に、前記ディレクトリ構造情報と共に解析し、各モジュールが属するスタック構造内の階層を検出し、前記各モジュールが属するスタックを分類決定するスタック構造解析器と、
     前記各モジュールが属するスタックの分類情報と前記静的解析モデル情報から取得したモジュール間の継承関係と前記ディレクトリ構造情報におけるモジュールの格納位置とを共に解析し、各モジュールが属するレイヤ構造内の階層を検出し、前記各モジュールが属するレイヤを分類決定するレイヤ構造解析器と、
     前記各モジュールが属するスタック及びレイヤの分類情報と前記モジュール間の継承関係と前記モジュールの格納位置とを共に解析し、各モジュールが属する機能的構造内の階層を検出し、前記各モジュールが属する機能を分類決定する機能構造解析器と、
     前記各モジュールが属するスタック、レイヤ、機能の分類に関する情報を前記静的解析モデル情報に適合して、スタック軸、レイヤ軸、機能軸のいずれかの2軸又は3軸全てを組み合わせたモジュール関連図情報を生成する図面生成器と
    を備えることを特徴とするモジュール分類解析システム。
  10.  ソフトウェアの静的解析によって得られたモデルと前記ソフトウェアのディレクトリ構造情報を解析処理して、前記ソフトウェアの個々のモジュールが属するスタックを検出する工程と、
     検出したスタックと前記ディレクトリ構造情報と前記静的解析によって得られたモデルを解析処理して、前記モジュールが属するレイヤを検出する工程と
    を含むことを特徴とする層構造を有するソフトウェアのモジュール分類解析方法。
  11.  請求項10記載のモジュール分類解析方法であって、
     検出したスタック及びレイヤと前記ディレクトリ構造情報と前記静的解析によって得られたモデルを解析処理して、前記モジュールが属する機能を分類する工程を
    更に含むことを特徴とするモジュール分類解析方法。
  12.  請求項10又は11記載のモジュール分類解析方法であって、
     検出と分類した処理結果から個々のモジュール間の関係を示す情報を適時又はまとめて関連情報として作成出力する工程を
    更に含むことを特徴とするモジュール分類解析方法。
  13.  前記スタックを検出する工程は、
     前記モデルから前記ソフトウェアのモジュールの継承関係を取得すると共に、前記ディレクトリ構造情報と共に解析処理し、
     前記モデルのスタック構造を検出決定してスタック軸を解析分類する
    ことを特徴とする請求項10ないし12の何れか一項に記載のモジュール分類解析方法。
  14.  前記レイヤを検出する工程は、
     スタック軸を解析分類した結果とモジュール間の継承関係と前記ディレクトリ構造情報におけるモジュールの格納位置とを共に解析処理し、
     前記モデルのレイヤ構造を検出決定してレイヤ軸を解析分類する
    ことを特徴とする請求項13に記載のモジュール分類解析方法。
  15.  前記機能を分類する工程は、
     スタック軸及びレイヤ軸を解析分類した結果とモジュール間の継承関係と前記ディレクトリ構造情報におけるモジュールの格納位置とを共に解析し、
     前記モデルの機能的構造を検出決定して機能軸を解析分類する
    ことを特徴とする請求項14に記載のモジュール分類解析方法。
  16.  前記レイヤを検出する工程および/又は前記機能を分類する工程は、その検出したレイヤ軸と機能軸の対象に重複がある場合に、当該重複している対象の軸をまとめる
    ことを特徴とする請求項10ないし15の何れか一項に記載のモジュール分類解析方法。
  17.  請求項10ないし16に記載のモジュール分類解析方法を用いて取得した前記関連情報から、スタック軸、レイヤ軸、機能軸のいずれかの2軸又は3軸全てを組み合わせたモジュール関連図を生成して、表示画面上に表示又は紙面に印刷することを特徴とするモジュール関連図生成方法。
  18.  情報処理装置の制御部を、
     データベースに格納されているソフトウェアの静的解析によって得られたモデルと前記ソフトウェアのディレクトリ構造情報とを解析して、前記ソフトウェアの個々のモジュールが属するスタックを検出するスタック構造解析器と、
     検出したスタックと前記ディレクトリ構造情報と前記静的解析によって得られたモデルを解析して、前記モジュールが属するレイヤを検出するレイヤ構造解析器と
    として動作させることを特徴とする層構造を有するソフトウェアのモジュール分類解析プログラム。
  19.  請求項18記載のモジュール分類解析プログラムであって、
     前記制御部を、
     更に、検出したスタック及びレイヤと前記ディレクトリ構造情報と前記静的解析によって得られたモデルを解析して、前記モジュールが属する機能を分類する機能構造解析器
    として動作させることを特徴とするモジュール分類解析プログラム。
  20.  請求項19記載のモジュール分類解析プログラムであって、
     前記制御部を、
     更に、検出と分類した結果から個々のモジュール間の関係を示す情報を適時又はまとめて関連情報として作成出力し、
     前記関連情報から、スタック軸、レイヤ軸、機能軸のいずれかの2軸又は3軸すべてを組み合わせたモジュール関連図を生成させる
    ことを特徴とするモジュール分類解析プログラム。
  21.  請求項20記載のモジュール分類解析プログラムであって、
     前記関連情報から、スタック軸、レイヤ軸、機能軸のいずれかの2軸又は3軸すべてを組み合わせたモジュール関連図を生成する
    ことを特徴とするモジュール分類解析プログラム。
  22.  前記スタック構造解析器は、
     前記モデルから前記ソフトウェアのモジュールの継承関係を取得すると共に、前記ディレクトリ構造情報と共に解析し、
     前記モデルのスタック構造を検出決定してスタック軸を解析分類する
    ことを特徴とする請求項18ないし21の何れか一項に記載のモジュール分類解析プログラム。
  23.  前記レイヤ構造解析器は、
     スタック軸を解析分類した結果とモジュール間の継承関係と前記ディレクトリ構造情報におけるモジュールの格納位置とを共に解析し、
     前記モデルのレイヤ構造を検出決定してレイヤ軸を解析分類する
    ことを特徴とする請求項22に記載のモジュール分類解析プログラム。
  24.  前記機能構造解析器は、
     スタック軸及びレイヤ軸を解析分類した結果とモジュール間の継承関係と前記ディレクトリ構造情報におけるモジュールの格納位置とを共に解析し、
     前記モデルの機能的構造を検出決定して機能軸を解析分類する
    ことを特徴とする請求項23に記載のモジュール分類解析プログラム。
  25.  前記レイヤ構造解析器および/又は前記機能構造解析器は、その検出したレイヤ軸と機能軸の対象に重複がある場合に、当該重複している対象の軸をまとめる
    ことを特徴とする請求項22ないし24の何れか一項に記載のモジュール分類解析プログラム。
PCT/JP2010/059579 2009-06-17 2010-06-01 モジュール分類解析システム、モジュール分類解析方法およびモジュール分類解析プログラム WO2010147010A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009143896 2009-06-17
JP2009-143896 2009-06-17

Publications (1)

Publication Number Publication Date
WO2010147010A1 true WO2010147010A1 (ja) 2010-12-23

Family

ID=43356331

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/059579 WO2010147010A1 (ja) 2009-06-17 2010-06-01 モジュール分類解析システム、モジュール分類解析方法およびモジュール分類解析プログラム

Country Status (1)

Country Link
WO (1) WO2010147010A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235398A (ja) * 2012-05-08 2013-11-21 Nippon Telegr & Teleph Corp <Ntt> プログラム分析装置及び方法及びプログラム
WO2017014826A1 (en) * 2015-07-23 2017-01-26 Hrl Laboratories, Llc A parzen window feature selection algorithm for formal concept analysis (fca)
US9665628B1 (en) 2015-12-06 2017-05-30 Xeeva, Inc. Systems and/or methods for automatically classifying and enriching data records imported from big data and/or other sources to help ensure data integrity and consistency
US10360506B2 (en) 2014-07-23 2019-07-23 Hrl Laboratories, Llc General formal concept analysis (FCA) framework for classification
CN110347448A (zh) * 2019-06-10 2019-10-18 北京大学 一种构造终端应用行为的运行时模型的方法
US10671917B1 (en) 2014-07-23 2020-06-02 Hrl Laboratories, Llc System for mapping extracted Neural activity into Neuroceptual graphs
CN112486481A (zh) * 2020-12-03 2021-03-12 北京展心展力信息科技有限公司 多模块分层架构实现方法、装置、电子设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6165333A (ja) * 1984-09-07 1986-04-03 Fujitsu Ltd システム構造評価方式
JP2005202494A (ja) * 2004-01-13 2005-07-28 Mitsubishi Electric Corp 静的解析結果分析システムおよび静的解析結果分析装置
JP2008197731A (ja) * 2007-02-08 2008-08-28 Mitsubishi Electric Corp 静的解析結果の分析表示装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6165333A (ja) * 1984-09-07 1986-04-03 Fujitsu Ltd システム構造評価方式
JP2005202494A (ja) * 2004-01-13 2005-07-28 Mitsubishi Electric Corp 静的解析結果分析システムおよび静的解析結果分析装置
JP2008197731A (ja) * 2007-02-08 2008-08-28 Mitsubishi Electric Corp 静的解析結果の分析表示装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AKIHIRO MATOBA: "Sokushu Code Reading Dai 1 Sho Code Reading Gairon Osaete Okitai Kiso Chishiki to Kokoroe", WEB + DB PRESS, vol. 35, 25 November 2006 (2006-11-25), pages 112 - 115 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235398A (ja) * 2012-05-08 2013-11-21 Nippon Telegr & Teleph Corp <Ntt> プログラム分析装置及び方法及びプログラム
US10360506B2 (en) 2014-07-23 2019-07-23 Hrl Laboratories, Llc General formal concept analysis (FCA) framework for classification
US10671917B1 (en) 2014-07-23 2020-06-02 Hrl Laboratories, Llc System for mapping extracted Neural activity into Neuroceptual graphs
WO2017014826A1 (en) * 2015-07-23 2017-01-26 Hrl Laboratories, Llc A parzen window feature selection algorithm for formal concept analysis (fca)
WO2017100072A1 (en) * 2015-12-06 2017-06-15 Xeeva, Inc. Automatically classifying and enriching imported data records to ensure data integrity and consistency
US10176427B2 (en) 2015-12-06 2019-01-08 Xeeva, Inc. System and/or method for generating clean records from imperfect data using model stack(s) including classification model(s) and confidence model(s)
US9740979B2 (en) 2015-12-06 2017-08-22 Xeeva, Inc. Model stacks for automatically classifying data records imported from big data and/or other sources, associated systems, and/or methods
US9665628B1 (en) 2015-12-06 2017-05-30 Xeeva, Inc. Systems and/or methods for automatically classifying and enriching data records imported from big data and/or other sources to help ensure data integrity and consistency
US11100408B2 (en) 2015-12-06 2021-08-24 Xeeva, Inc. System and/or method for generating clean records from imperfect data using model stack(s) including classification model(s) and confidence model(s)
US11669750B2 (en) 2015-12-06 2023-06-06 Xeeva, Inc. System and/or method for generating clean records from imperfect data using model stack(s) including classification model(s) and confidence model(s)
US12020172B2 (en) 2015-12-06 2024-06-25 Xeeva, Inc. System and/or method for generating clean records from imperfect data using model stack(s) including classification model(s) and confidence model(s)
CN110347448A (zh) * 2019-06-10 2019-10-18 北京大学 一种构造终端应用行为的运行时模型的方法
CN112486481A (zh) * 2020-12-03 2021-03-12 北京展心展力信息科技有限公司 多模块分层架构实现方法、装置、电子设备及介质
CN112486481B (zh) * 2020-12-03 2024-03-19 北京展心展力信息科技有限公司 多模块分层架构实现方法、装置、电子设备及介质

Similar Documents

Publication Publication Date Title
WO2010147010A1 (ja) モジュール分類解析システム、モジュール分類解析方法およびモジュール分類解析プログラム
US9891897B2 (en) Dynamic user interface tag format
US7480893B2 (en) Rule-based system and method for checking compliance of architectural analysis and design models
US7685140B2 (en) Dynamic information systems
US9053437B2 (en) Extracting enterprise information through analysis of provenance data
US7917815B2 (en) Multi-layer context parsing and incident model construction for software support
US10782961B2 (en) Analyzing components related to a software application in a software development environment
US7752597B2 (en) Layered software development and implementation using files
JP5450443B2 (ja) 複数のコンポーネントを具備するシステムの故障モード影響解析を支援する、コンピュータで実施される方法、コンピュータプログラム製品及び装置
US20100114628A1 (en) Validating Compliance in Enterprise Operations Based on Provenance Data
US8413108B2 (en) Architectural data metrics overlay
AU2007348312A1 (en) System and method for knowledge extraction and abstraction
US20050192949A1 (en) Document group analyzing apparatus, a document group analyzing method, a document group analyzing system, a program, and a recording medium
O'Brien et al. Software architecture reconstruction: Practice needs and current approaches
US20130124265A1 (en) Enterprise System/Process Modeling System and Method
Marín et al. Towards an accurate functional size measurement procedure for conceptual models in an MDA environment
US20070255730A1 (en) Data requirements methodology
Riddick et al. Core manufacturing simulation data (CMSD): A standard representation for manufacturing simulation-related information
US8825609B2 (en) Detecting wasteful data collection
Van der Aalst Challenges in business process mining
Eichelberger et al. A comprehensive survey of UML compliance in current modelling tools
Mittal et al. Strengthening OV-6a semantics with rule-based meta-models in DEVS/DoDAF based life-cycle architectures development
JP2008052347A (ja) 文書処理装置および文書処理プログラム
JP2005032002A (ja) プラント監視装置
US7683902B1 (en) Method to visualize performance data of a multi-layered state diagram

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10789385

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP