WO2017033441A1 - システム構築支援システム、方法および記憶媒体 - Google Patents

システム構築支援システム、方法および記憶媒体 Download PDF

Info

Publication number
WO2017033441A1
WO2017033441A1 PCT/JP2016/003775 JP2016003775W WO2017033441A1 WO 2017033441 A1 WO2017033441 A1 WO 2017033441A1 JP 2016003775 W JP2016003775 W JP 2016003775W WO 2017033441 A1 WO2017033441 A1 WO 2017033441A1
Authority
WO
WIPO (PCT)
Prior art keywords
component
definition
field
port
information
Prior art date
Application number
PCT/JP2016/003775
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 JP2017536608A priority Critical patent/JP6673359B2/ja
Priority to US15/748,236 priority patent/US10599447B2/en
Publication of WO2017033441A1 publication Critical patent/WO2017033441A1/ja

Links

Images

Classifications

    • 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
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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
    • G06F9/445Program loading or initiating
    • 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
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Definitions

  • the present invention relates to a system construction support system that supports system construction, a system construction support method, a storage medium in which a system construction support program is recorded, and the like.
  • System componentization is a technology that enables a system to be efficiently defined as a set of coarser abstract components.
  • a system In general, in order to configure a system, it is necessary to describe many detailed specific components. However, when looking down on a huge system or multiple systems, multiple similar components or collections may appear.
  • a pattern of a group of components composed of one or more components abstracted so as to be reusable in this way is generally called a component.
  • VM virtual machine
  • MW middleware
  • APP application
  • the elements necessary for defining the VM are defined as VM components
  • the elements necessary for defining the MW are defined as MW components
  • the elements necessary for defining the APP are defined as APP components.
  • the entire system by combining groups of components as needed.
  • the whole system only having a different MW can be redefined with a slight change.
  • Non-Patent Document 1 As a standard specification regarding component description for realizing such system componentization.
  • Non-Patent Document 2 as a standard specification for defining information necessary for system deployment using a combination of components.
  • the contents of processing for materializing and deploying the combined component are defined together, and the entity of the component is deployed by calling the defined processing. can do.
  • the combination of the components can be combined with another component. In that case, in order to define the processing contents for deployment with respect to the new combination, the processing defined in the already combined components can be reused.
  • Non-Patent Document 2 has a problem that it is necessary to define the processing content based on the relationship between components determined by the combination every time the combination of components is defined. For example, in the processing content necessary for the deployment of the system composed of the above-mentioned APP, MW, and VM, when the MW is replaced with a different type of component, the processing content to be executed may have to be changed. .
  • FIG. 74 is an explanatory diagram showing an example of a system definition defined by a combination of components.
  • Three rounded rectangles in the figure indicate components.
  • the system of this example has three components: an APP1 component corresponding to a certain APP, a MW1 component corresponding to a certain MW, and a VM1 component corresponding to a certain VM.
  • the double line has shown the connection between components.
  • a rectangle in each component indicates a deployment process as a component corresponding to the component. For example, in the APP1 component in the figure, a component “app” corresponding to a corresponding application deployment process is defined.
  • a component “package” corresponding to middleware package deployment processing (for example, installation processing of the middleware package resource provided by the configuration management system) is defined.
  • a component “vm” corresponding to a VM deployment process (for example, a startup process) is defined in the VM1 component in the figure.
  • the dotted arrows between the components in the figure indicate the dependency between the components.
  • the dependency is a concept indicating the necessity in advance of the relationship between the two parties that in order to do something, it is necessary to do something else.
  • the “app” component depends on the “package” component and the “vm” component, so the “package” component and the “vm” configuration before deploying (executing) the “app” component. Elements must be deployed.
  • the “package” component depends on the “vm” component, the “vm” component must be deployed before deploying the “package” component. Due to these dependencies, a correct processing order of VM activation, MV installation, and APP activation is derived.
  • FIG. 75 is an explanatory diagram showing another example of the system definition defined by the combination of components.
  • FIG. 75 shows an example in which the system definition is made using the MW2 component corresponding to the MW when the MW different from the MW supported by the MW1 component in FIG. 74 is used.
  • the dependency of the “app” component of the APP1 component is the component that the MW2 component has from the “package” component of the MW1 component, and the deployment process of the MW (for example, , Service processing activation, etc.).
  • the component having the dependency relationship with the “vm” component of the VM1 component is changed from the “package” component of the MW1 component to the “package” component of the MW2 component.
  • an object of the present invention is to improve the ease of system definition such that it is not necessary to add a setting corresponding to each combination of components.
  • the system construction support system is a component definition that is information that defines a component that has at least one field that stores information about a component and is finally associated with one specific component.
  • the component specification using the component definition can include the field definition that is the information of the field of the component to be defined and the setting definition that is the information related to the setting for the configuration element associated with the field
  • a system definition input means for inputting a system definition including at least an assignment definition for assigning a component to a field of the component, and based on the system definition and the component definition, a specific configuration is specified for the field of the specified component.
  • a setting granting means for assigning settings to the components constituting the target system by associating the elements and reflecting the setting contents defined for the fields in the components associated with the fields It is characterized by that.
  • the information processing apparatus defines a component that has at least one field that stores information about a component and is finally associated with one specific component.
  • a component definition that is information can include a field definition that is information on a field of a component to be defined, and a setting definition that is information on settings for a component associated with the field.
  • the computer stores at least one field that stores information on the component and is finally associated with one specific component.
  • a component definition that is information that defines a component that has a field definition that includes information on a field of a component that is a definition target, and a setting definition that is information on a setting for a component associated with the field
  • the specified component is defined based on the system definition and the component definition.
  • the ease of system definition can be improved.
  • the block diagram which shows the structural example of the system construction assistance system of 1st Embodiment.
  • Explanatory drawing which shows the example of a definition of Ubuntu component by GUI.
  • Explanatory drawing which shows the example of a definition of Ubuntu component by JSON.
  • Explanatory drawing which shows the example of the system definition input into the system definition input part 001.
  • FIG. Explanatory drawing which shows the example of the system definition by JSON.
  • Explanatory drawing which shows the example of the system configuration information which the system configuration output part 002 outputs.
  • Explanatory drawing which shows the example of the system configuration information by JSON.
  • Explanatory drawing which shows the other example of a system definition.
  • Explanatory drawing which shows the other example of system configuration information.
  • the flowchart which shows an example of operation
  • Explanatory drawing which shows the example of a definition by GUI of Ubuntu component of 2nd Embodiment.
  • Explanatory drawing which shows the example of definition by JSON of Ubuntu component of 2nd Embodiment.
  • Explanatory drawing which shows the definition example by GUI of the Tomcat component of 2nd Embodiment.
  • Explanatory drawing which shows the example of definition by JSON of the Tomcat component of 2nd Embodiment.
  • Explanatory drawing which shows the other example of a definition by GUI of the Tomcat component of 2nd Embodiment.
  • Explanatory drawing which shows the other example of a definition by JSON of the Tomcat component of 2nd Embodiment.
  • the flowchart which shows an example of operation
  • Explanatory drawing which shows the relationship between the component after the setting provision in 2nd Embodiment.
  • Explanatory drawing which shows the example of data of a certain component after the setting provision in 2nd Embodiment.
  • Explanatory drawing which shows the example of the system configuration information by GUI of 2nd Embodiment.
  • Explanatory drawing which shows the example of the system configuration information by JSON of 2nd Embodiment.
  • Explanatory drawing which shows the example of a definition by GUI of OS port of 3rd Embodiment.
  • Explanatory drawing which shows the example of a definition by JSON of the OS port of 3rd Embodiment.
  • Explanatory drawing which shows the example of the system definition of 3rd Embodiment.
  • Explanatory drawing which shows the example of a definition of Ubuntu component by GUI of 3rd Embodiment.
  • Explanatory drawing which shows the example of a definition of Tomcat component by GUI of 3rd Embodiment.
  • Explanatory drawing which shows the example of data after system definition expansion
  • Explanatory drawing which shows the example of expression by the GUI of the field and component of 4th Embodiment.
  • Explanatory drawing which shows the example of the system definition by GUI of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition of OS port by GUI of 4th Embodiment.
  • Explanatory drawing which shows the example of an OS port definition by JSON of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition of the WAS port by GUI of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition of the WAS port by JSON of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition by UGUI of the Ubuntu component of 4th Embodiment.
  • Explanatory drawing which shows the example of definition by JSON of Ubuntu component of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition by the GUI of the Tomcat component of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition by JSON of the Tomcat component of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition by GUI of the WebApp component of 4th Embodiment.
  • Explanatory drawing which shows the other example of the system definition in 4th Embodiment.
  • Explanatory drawing which shows the other example of the system definition in 4th Embodiment.
  • Explanatory drawing which shows the example of a definition of CentOS component by GUI of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition of CentOS component by JSON of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition of Jetty component by GUI of 4th Embodiment.
  • Explanatory drawing which shows the example of a definition of Jetty component by JSON of 4th Embodiment.
  • Explanatory drawing which shows the example of an expression of the relationship of the component by the GUI of 5th Embodiment, and a component.
  • Explanatory drawing which shows the example of expression by JSON of the type definition of the component of 5th Embodiment.
  • Explanatory drawing which shows the example of expression by JSON of the component of 5th Embodiment.
  • Explanatory drawing which shows the example of definition by JSON of the WAS port of 5th Embodiment.
  • the block diagram which shows the outline
  • the block diagram which shows the other structural example of the system construction assistance system by this invention.
  • Explanatory drawing which shows an example of the system definition prescribed
  • Explanatory drawing which shows the other example of the system definition prescribed
  • FIG. 1 is a block diagram illustrating a configuration example of a system construction support system according to the first embodiment.
  • the system construction support system 100 according to the first embodiment is a system that provides a configuration definition function that converts a system configuration indicated by components into a configuration using specific components and outputs the configuration.
  • a system definition expansion unit 101 and a component setting unit 102 are provided.
  • the system definition expansion unit 101 is connected to the system definition input unit 001 and the component definition storage unit 003 indirectly or directly via a network or the like.
  • the component setting unit 102 is connected to the system configuration output unit 002 indirectly or directly via a network or the like.
  • the system definition development unit 101 and the component setting unit 102 are realized by a CPU or the like that operates according to a program, for example.
  • the system definition input unit 001 inputs a system definition in which a configuration of a system to be constructed is expressed using a component defined by a component definition described later.
  • the system definition input unit 001 may be, for example, various input devices such as a mouse and a keyboard, and an arbitrary server device that inputs information via a network.
  • the system configuration output unit 002 embodies and outputs the system configuration indicated by the system definition input by the system definition input unit 001.
  • the system configuration output unit 002 may be, for example, various output devices such as a display device, or any server device that outputs information via a network.
  • the component has at least a field for storing information on the component.
  • the field is a concept representing a frame for substituting component information.
  • one specific component is finally associated with the field.
  • Each field is preferably compatible with a plurality of types of components.
  • the fact that one field can handle a plurality of types of components means that the components are abstracted, such as the extraction of common requirements of these components.
  • the component definition includes a field definition that is information regarding the fields of the component to be defined.
  • the component definition may include a setting definition that is information related to the setting for the component stored in the field, as necessary.
  • the system definition input by the system definition input unit 001 more specifically includes at least a component designation using the component definition and an allocation definition related to the allocation of the component to the field of the component.
  • Information is information that expresses the configuration of the system by specific components.
  • the system construction support system 100 accepts the system definition in which the configuration of the target system is indicated using the component that is the abstracted component group pattern, and the specific component configures the system definition. It has a function to convert it into expressed information and output it.
  • the information output by the system configuration output unit 002 may be referred to as system configuration information.
  • the part definition storage unit 003 stores a part definition that is information defined as a reusable part by abstracting the constituent elements constituting the system.
  • the component is a concept including the above-described components.
  • a pattern of abstracted component groups (such as deployment processing in the above example) is also referred to as a component.
  • the expression “component” is used as a concept that does not correspond to a specific component, for example, a port that is a concept that abstracts a terminal function for connecting components to each other.
  • the component definition storage unit 003 is realized by a storage device, for example.
  • the system definition expansion unit 101 receives a system definition from a user via the system definition input unit 001 and converts it into a specific system definition.
  • the specific system definition is resolved (specifically specified) while the components associated with the fields of the components constituting the target system are resolved with respect to the input system definition.
  • Information in which the relationship between components is resolved fields related to the fields of the components constituting the target system are specified).
  • the component element setting unit 102 receives a specific system definition from the system definition expansion unit 101, and assigns settings such as attribute values and relationships with other component elements to the component elements constituting the target system. To do.
  • the construction process of the target system is defined as the system configuration
  • the target system is an IT system.
  • an example is shown in which an arbitrary program unit included in the construction process of the IT system is used as a component and the construction of a system configured by a combination thereof is supported.
  • the component is not limited to the construction process, Any unit constituting any system may be used.
  • the component definition includes an identifier of the component definition (hereinafter referred to as id) and a field definition that is information on one or more fields of the component that is the definition target of the component definition.
  • the field definition may have a name of the field definition, an initial value of the field (definition of an instance of a component stored in the field), and a setting definition.
  • the setting definition is information (setting contents, setting method, etc.) regarding various settings for the component stored in the field.
  • an attribute value set for the constituent element, a relationship between the constituent element and another constituent element, or the like can be designated.
  • a relationship in particular, a dependency on another component can be specified.
  • an identifier for identifying the attribute and a value for the attribute can be designated.
  • FIG. 2 is an explanatory diagram showing a definition example of Ubuntu component by GUI (Graphical user interface).
  • the Ubuntu component is assumed to be a component corresponding to “Ubuntu” which is a kind of operating system (OS).
  • FIG. 2 shows an example of a component definition with an identifier “Ubuntu_1”.
  • “Ubuntu_1” shown in FIG. 2
  • two fields of a “file” field and a “boot” field are defined.
  • “file” and “boot” represent names as ids of fields in components to be defined.
  • the “file” field is assumed to be a field corresponding to a component related to file construction on “Ubuntu”, such as a process for creating a file.
  • the “boot” field is assumed to be a field corresponding to a component related to booting “Ubuntu” such as OS boot processing.
  • the value of the attribute “mode” of the component stored in the field is set to “644”, and the component stored in the field is “boot” "It is specified that the component stored in the field has relevance.
  • the component “boot1” is specified as the initial value of the field.
  • components are indicated by rounded rectangles as an example of expression by component definition GUI.
  • the field is indicated by a dotted rectangle.
  • the constituent elements are indicated by solid rectangles.
  • the attribute value is indicated by a balloon with a field. Relevance is indicated by dotted arrows from the field to other fields.
  • a character string in which a component is attached to the upper right inside the rounded rectangle indicates the id of the component definition.
  • a character string attached outside the dotted rectangular frame representing the field indicates the id (name) assigned to the field.
  • the component definition can be described in a text format by using a language such as JSON (Java Script (registered trademark) Object Notification) other than GUI notation.
  • JSON Java Script (registered trademark) Object Notification
  • FIG. 3 is an explanatory diagram showing a definition example of Ubuntu component by JSON.
  • the example shown in FIG. 3 is an example in which the component definition shown in FIG. 2 is defined by JSON.
  • FIG. 3 shows an example in which the system definition by JSON includes three elements of “type” element, “id” element, and “field” element.
  • the “type” element defines what the series of information is, and in this example, “component definition” indicating that it is a component definition is designated.
  • the “id” element defines the id of the component definition. In this example, “Ubuntu_1” is defined.
  • the “field” element defines a field of a component defined by the component definition. In this example, two fields of a “file” field and a “boot” field are defined.
  • the initial value of the “file” field is empty, and the component “boot1” is defined in the “initial value” of the “boot” field.
  • a component having id “boot1” is defined as the “value” to be assigned to the field.
  • the “value” element in the “initial value” definition of the field is defined according to the “type” element in the initial value definition and the content of the type.
  • the “value” element is also defined.
  • a component is defined as the content of the “value” element.
  • the component id may be designated as shown in FIG.
  • “boot1” is defined as such an id.
  • FIG. 3 shows an example including an “attribute” element and a “dependency” element as the “setting” element of the field definition.
  • the “setting” element of the “file” field includes an “attribute” element and a “dependency” element.
  • nothing is defined in the “setting” element of the “boot” field.
  • the “attribute” element in this example defines the attribute value of the component stored in the field. For example, an attribute identifier and attribute value pair may be specified as the definition method. .
  • the “dependency” element defines the dependency of the component stored in the field on other components, and as a method of defining the component, You may specify in the format showing the reference of the other field in which the said component is stored. In this example, the field name to which the dollar mark “$” is added represents the reference of the field.
  • the component definition as described above may be recorded in a readable manner in an external component definition storage unit 003 or the like in advance.
  • a developer who develops a common model defines a model that is commonly used across multiple projects in advance as a pattern of component groups, and defines the component definition as information that indicates such a definition. You may memorize
  • FIG. 4 is an explanatory diagram showing an example of the system definition input to the system definition input unit 001.
  • FIG. 4 is an example in which the system definition is expressed by GUI.
  • the system definition may include, for example, an identifier (name) of the system indicated by the system definition, information specifying one or more components constituting the system, and information regarding various settings for the components. .
  • the “system1” has a “ubuntu1” component that is one of the component instances defined by the component definition “Ubuntu_1”, and the “ubuntu1” Information relating to the substitution of components for the “file” field of the “component” is specified.
  • the “file1” component is assigned to the “file” field of the “ubuntu1” component, and the “file1” component is ““ file1 ”as the value of the“ name ”attribute. .txt ”is specified.
  • system definition can be defined by JSON as well as the component definition.
  • FIG. 5 is an explanatory diagram showing an example of system definition by JSON.
  • the example shown in FIG. 5 is an example in which the system definition shown in FIG. 4 is defined by JSON.
  • the system definition shown in FIG. 5 includes three elements: a “type” element, an “id” element, and a “component” element.
  • “system definition” indicating that the series of information is system definition is specified in the “type” element.
  • the “id” element the id of the system defined by the system definition is specified.
  • component a component included in the system defined by the system definition is designated. In this example, only one “ubuntu1” component is specified.
  • information on the components may be listed in the “component” element in association with the component names.
  • id is specified as an identifier of a component definition that defines the state of the component.
  • Ubuntu_1 is specified.
  • assignment assignment of a component to a field of the component indicated by the component definition is defined.
  • FIG. 6 is an explanatory diagram showing an example of system configuration information output by the system configuration output unit 002.
  • FIG. 6 shows a display example of system configuration information by GUI.
  • FIG. 6 is also an example of a component generation result based on the system definition shown in FIG.
  • the system configuration information includes, for one or a plurality of components constituting the target system, information specifying these components, and information on the relationship with attribute values and other components. It may be what was done.
  • the target system “system1” includes two components “file1” and “boot1”, and the “file1” component has a “name” attribute value of “file1.txt”.
  • the value of the “mode” attribute is “644”, and it is indicated that the “boot1” information element has dependency.
  • FIG. 7 is an explanatory diagram showing another example of the system configuration information output by the system configuration output unit 002.
  • FIG. 7 shows an example of system configuration information by JSON.
  • FIG. 7 is also an example of a component generation result based on the system definition shown in FIG.
  • the system definition may define a system configuration other than the construction method of the system, and the component definition may define relevance other than dependency as a relevance definition. Also good.
  • FIG. 8 is an explanatory diagram showing another example of the system definition.
  • FIG. 9 is an explanatory diagram showing an example of system configuration information based on the system definition shown in FIG. Both FIG. 8 and FIG. 9 are display examples using the GUI.
  • the target system has a “dBApplication” component that is one of the component instances defined by the component definition “DBApplication”, and a component “logic1” is included in the “logic” field. It is defined to be assigned.
  • the “dBApplication” component defined by the component definition has two fields, “logic” field and “dBConnection” field. It can be seen that the component initialized with “dBConnection1” and stored in the “dBConnection” field is related to the component stored in the “logic” field.
  • the relationship between the component stored in the “dBConnection” field and the component stored in the “logic” field is that the specific processing function expressed as the “logic” field is expressed as the “dBConnection” field.
  • the usage relationship between functions and objects is simply derived.
  • the relationship between the constituent elements may indicate a usage relationship.
  • FIG. 10 is a flowchart showing an example of the operation of the system construction support system 100 of this embodiment.
  • the system definition expansion unit 101 when the system definition expansion unit 101 first receives a system definition from the system definition input unit 001 (step S11), it reads it. Then, if there is a component definition referred to by the system definition, the system definition expansion unit 101 acquires the component definition from the component definition storage unit 003, expands the system definition, and resolves the components stored in each field. A specific system definition is generated (step S12). The specific system definition generated in step S12 is transmitted to the component setting unit 102.
  • the component setting unit 102 sets the setting defined in the field storing the component corresponding to the field included in the specific system definition received from the system definition development unit 101. It grants while making it concrete (step S13).
  • the specificization of the setting is, for example, a specific constituent element based on the dependency or initial value specified for the field based on the constituent element information stored in the other field. This is the process of setting it up.
  • the component setting unit 102 outputs the system configuration information indicating the configuration of the system including the configuration elements to which the setting is given to the system configuration output unit 002 (step S14).
  • step S12 and step S13 will be described in more detail.
  • FIG. 11 is a flowchart showing a more detailed operation example of the system definition expansion process (step S12 in FIG. 10) by the system definition expansion unit 101 of the present embodiment.
  • the system definition expansion unit 101 reads the system definition received from the system definition input unit 001 (step S121), and if a location for specifying a component is found in the system definition (Yes in step S122), the definition is converted into a component. Obtained from the definition storage unit 003 or the like (step S123). Then, based on the obtained component definition, a value (component) is assigned to the component to be embodied (step S124).
  • “Ubuntu_1” is specified as the definition of the “ubuntu1” component, and is acquired from the component definition storage unit 003.
  • the component definition storage unit 003 may have a function of receiving an id of a component definition and returning a corresponding component definition, and may be realized by an http server, a file server, or a DB server as an example.
  • the system definition expansion unit 101 substitutes the value.
  • the “file1” component is assigned to the “file” field defined in the system definition that is the reference source of the component definition, and the “boot” defined in the component definition
  • the “boot1” component is assigned to the “field”, and the resulting component is the “ubuntu1” component.
  • the system definition expanding unit 101 outputs the materialized system definition (step S125) and ends the system definition expanding process.
  • FIG. 12 is an explanatory diagram showing an example of a specific system definition as output information after system definition expansion by JSON.
  • system definition 2 is set in the “type” element to indicate a specific system definition.
  • attribute values and dependency settings are still set for the component fields.
  • FIG. 13 is a flowchart showing a more detailed operation example of the component setting process (step S13 in FIG. 10) by the component setting unit 102 of the present embodiment.
  • the component setting unit 102 executes the following three steps for all fields included in the specific system definition generated by the system definition expansion unit 101. That is, first, the component stored in the target field is acquired (step S131), and the setting set in the field is assigned to the component (step S132). In step S132, for example, an attribute value or the like is set for the component.
  • the acquisition of configuration elements and the assignment of settings to configuration elements specifically, generate or acquire definition information of the configuration elements in the target system, and reflect the settings set in the field in the definition information (Assignment of values, etc.) may be used.
  • the component setting unit 102 converts the designation of the reference destination into the id of the component stored in the reference destination field, The setting contents are reflected (step S133).
  • the component while using an abstracted component group pattern called a component, the component is shared as information about the component supported by the component as definition information of the component.
  • the setting attribute value and dependency between other components
  • the setting with reusability among the settings for each component can be confined as component information.
  • the setting for the content component is defined, and after the combination of the components is determined, Since it has a mechanism that reflects the settings set in the frame for the contents of the contents, it is possible to save the trouble of resetting the same settings every time the combination is changed. In this way, by using the component settings that have already been defined, even if the combination of the component elements is changed, it is not necessary to add settings for the related component elements, and the system definition is facilitated.
  • FIG. 14 is an explanatory diagram showing another example of the system definition.
  • the example shown in FIG. 14 has a “ubuntu1” component defined by a component definition “Ubuntu_1”, similarly to “system1”.
  • the components assigned to the “file” field of the “ubuntu1” component are different.
  • a component having id “file2” is assigned, and the component has a value “file2.py” in the “name” attribute and a value “755” in the “mode” attribute. It is defined.
  • system configuration information as shown in FIG. 15 is output.
  • the system “system2” includes a “boot1” component and a “file2” component, and the “file2” component has “file2.py” as a “name” attribute. And “755” as the “mode” attribute and dependency on the “boot1” component.
  • the system configuration information for the system “system1” includes the “boot1” component, the “file1” component, and the “file1” component.
  • the value “664” as the “mode” attribute value and the dependency information on “boot1” are automatically added. In this way, more information can be included in the system definition simply by specifying the component definition and the specific specification of the system, and the amount of description required for the output amount can be reduced. I understand that.
  • Embodiment 2 a second embodiment of the present invention will be described.
  • the configuration of the system construction support system 100 in the second embodiment is the same as the configuration of the first embodiment except that the operations of the system definition expansion unit 101 and the component element setting unit 102 are different.
  • the same symbols are attached to the same parts as those in the first embodiment, and the description thereof is omitted.
  • the component definition in addition to the component definition, includes a port definition that is information for defining a port, the component definition can include a port specification, and the system definition can include a wire specification.
  • a port is a concept representing a terminal for defining a connection relationship between components
  • a wire is a concept representing a connection between ports.
  • the system definition expansion unit 101 and the component element setting unit 102 of the present embodiment are different from the first embodiment in that they handle the information of these ports and wires.
  • a port has one or more fields, similar to a component.
  • the field that the port has is for storing information on the components that are required when the component that includes the port connects another component.
  • the port definition includes an id of the port definition and a field definition that specifies one or more fields of the port defined by the port definition.
  • FIG. 16 is an explanatory diagram showing an example of definition of an OS port by GUI according to the present embodiment.
  • the OS port is assumed to be an abstraction of a connection process for connecting a component generally corresponding to the OS, such as a Ubuntu component, to another component.
  • FIG. 16 shows an example of a port definition with an id “OS_2”.
  • the port definition “OS_2” shown in FIG. 16 has two fields, a “file” field and a “package” field.
  • the “file” field is assumed to be a field corresponding to a component related to file construction, such as a process for creating a file necessary for connection with other components on a general OS.
  • the “package” field assumes a field corresponding to a packaged resource or the like provided by a middleware configuration management system operating under the OS. Note that the setting definition and the initial value are not specified in these two fields in the port definition.
  • the port in the port definition is expressed in the base form as an example of expression by GUI.
  • FIG. 17 is an explanatory diagram showing an example of OS port definition by JSON in this embodiment.
  • the example shown in FIG. 17 is an example in which the port definition shown in FIG. 16 is defined by JSON.
  • the port definition of the OS port by JSON is basically the same as the component definition shown in FIG. 3 except that “port definition” indicating port definition is specified in the “type” element.
  • the “id” element specifies an identifier of the port definition, and the “field” element is defined by the port definition.
  • the configuration may be such that information on the fields of the ports to be listed is listed.
  • the component definition includes the id of the component definition, the definition of the field of the component defined by the component definition, and the designation of the port of the component defined by the component definition. May be.
  • the wire may always connect a set of ports defined by the same port definition.
  • the ports may be divided into two types of ports, service ports and reference ports.
  • the service port is a concept that indicates a terminal that accepts a connection
  • one reference port is a concept that indicates a terminal that requests a connection.
  • the wire may be a port defined by the same port definition, and a pair of a service port and a reference port may be connected, and service ports or reference ports may not be connected.
  • a reference to another field can be designated as a type in the initial value definition of the field. This is in order to cover necessary settings by propagating components between fields of different components in the process of connecting the components.
  • FIG. 18 is an explanatory diagram showing an example of the system definition in the present embodiment.
  • FIG. 18 shows an example of system definition by GUI.
  • the target system “system2” is an instance of a component defined by the component definition “Tomcat_2” and a component instance defined by the component definition “Ubuntu_2”. It can be seen that it has a certain “ubuntu2” component. It can also be seen that the “os” reference port of the “tomcat2” component and the “os” service port of the “ubuntu2” component are connected by a wire.
  • “tomcat2” which is an example of Tomcat component, assumes a component corresponding to “Tomcat”, which is a kind of Web application.
  • the component definitions “Tomcat_2” and “Ubuntu_2” in this example will be described later.
  • a service port is represented by a mountain shape on one of the opposing sides, the other is a valley shape (hereinafter referred to as an arrow feather shape), and a reference port is represented by a home base type.
  • the wire is expressed by a double line.
  • FIG. 19 is an explanatory diagram showing an example of system definition by JSON in this embodiment.
  • the example shown in FIG. 19 is an example in which the system definition shown in FIG. 18 is defined by JSON.
  • the system definition shown in FIG. 19 includes a “wire” element in addition to a “type” element, an “id” element, and a “component” element.
  • the “wire” element includes a “connection source” element for designating a connection source port and a “connection destination” element for designating a connection destination port.
  • “$ ubuntu2.os” is specified in the “connection source” element
  • “$ tomcat2.os” is specified in the “connection destination” element.
  • the user specifies a component using the component definition already defined in this way, and then specifies that the ports of the component are connected using wires, so that multiple components can work together. Even such a system can be easily defined.
  • FIG. 20 is an explanatory diagram showing a definition example by the GUI of the Ubuntu component in the present embodiment.
  • FIG. 20 shows an example of a component definition with an id “Ubuntu_2”.
  • the component defined by the component definition has three fields of “file” field, “package” field, and “boot” field, and the port definition “ It is defined that it has a service port “” port defined by “OS_2”.
  • references to the “file” field and the “package” field of the “os” port are respectively defined.
  • the initial value definition of the “boot” field it is defined that a “boot2” component is newly created.
  • the “file” field and the “package” field define the dependency on the “boot” field.
  • GUI expression example the definition of a value by referring to a field is expressed by a solid line arrow from a black circle attached to a reference side field to a reference destination field.
  • FIG. 21 is a definition example by USON of the Ubuntu component in this embodiment.
  • the example shown in FIG. 21 is an example in which the component definition shown in FIG. 20 is defined by JSON.
  • the component definition shown in FIG. 21 includes a “service port” element for designating a service port in addition to a “type” element, an “id” element, and a “field” element.
  • one “os” port which is a port defined by the port definition “OS_2”, is specified in the “service port” element.
  • the “type” is “reference”
  • “$” is the “reference destination”.
  • FIG. 22 is a definition example using the GUI of the Tomcat component in this embodiment.
  • FIG. 22 shows an example of a component definition with an id “Tomcat_2”.
  • the component defined by the component definition has two fields, a “configFile” field and a “package” field.
  • the reference port has an “os” port defined by the port definition “OS_2”.
  • the “tomcatConfig2” component element and the “tomcatPackage2” component element are newly defined in the initial value settings of the “configFile” field and the “package” field of the component defined by “Tomcat_2”.
  • FIG. 23 is an explanatory diagram showing a definition example by JSON of the Tomcat component in the present embodiment.
  • the example shown in FIG. 23 is an example in which the component definition shown in FIG. 22 is defined by JSON.
  • the component definition shown in FIG. 23 includes a “reference port” element for designating a reference port in addition to a “type” element, an “id” element, and a “field” element.
  • the “os” port defined by the port definition “OS_2” is defined in the “reference port” element.
  • the “tomcatConfig2” component element and the “tomcatPackage2” component element are newly defined in the initial value settings of the “configFile” field and the “package” field of the component defined by “Tomcat_2”. Furthermore, the “configFile” field defines a dependency on the “package” field. In addition, for the “file” field and “package” field in the “os” port, as settings related to the substitution of the value of the field, the “configFile” field and the “package” field of the main body component having the port are included. It is defined that the contents are referred to.
  • FIG. 24 is an explanatory diagram showing another definition example of the Tomcat component in the present embodiment.
  • FIG. 24 shows an example of component definition by GUI.
  • the component definition “Tomcat_2x” shown in FIG. 24 the component of the main body does not have a direct field, but a value is directly assigned to the field of the reference port of the component of the main body. In this case, the component can be interpreted as having a field indirectly through its own port.
  • the assignment of a value to a field in the reference port is specified by a new definition of a component, not by referring to another field.
  • the dependency on the “package” field in the same port is specified for the “tomcatConfig2” component stored in the “file” field in the “os” port.
  • the dependency can be set by directly specifying the component in the field.
  • other components are substituted when the component is reused. If the original component is overwritten, it will be lost. If you want to keep the same dependency in the overwritten component, use the “package” field reference in the same port for the “file” field in the “os” port. It is sufficient to specify the dependency on the component stored in.
  • FIG. 25 is an explanatory diagram showing another definition example of Tomcat components by JSON in this embodiment.
  • the example shown in FIG. 25 is an example in which the component definition shown in FIG. 24 is defined by JSON.
  • FIG. 25 shows an example of specifying the dependency on the component stored in the “file” field in the “os” port by using the reference of the “package” field in the same port. Is shown, but it is also possible to specify the “tomcatpackage2” component directly. In this case, for example, “dependency”: [“tomcatpackage2”] may be specified, or “#” is introduced as a symbol indicating that the component is directly specified, and “# tomcatpackage2” You may specify as follows.
  • FIG. 26 is a flowchart showing an example of the operation of the system construction support system 100 of this embodiment.
  • the same operations as those in the first embodiment are denoted by the same symbols, and the description thereof is omitted.
  • a system definition expansion process (step S22) for generating a specific system definition by the system definition expansion unit 101 and a component element setting process (step S23) by the component element setting unit 102 are the first. Different from the operation of the embodiment.
  • FIG. 27 is a flowchart showing a more detailed operation example of the system definition expansion process by the system definition expansion unit 101 of this embodiment.
  • the system definition expansion unit 101 connects the ports according to the contents of the component definition reading process (step S221) and the wire definition after reading all the components (step S222). Is different from the first embodiment.
  • linking ports means that it is possible to transfer field values between ports to be linked in addition to holding that there is a connection relationship between the ports to be linked as configuration information. More specifically, it refers to performing a process of propagating (transferring) component information to a destination port in accordance with the system definition, component definition, and port definition.
  • FIG. 28 is a flowchart showing a more detailed operation example of the component definition reading process (step S221 in FIG. 27) by the system definition expanding unit 101 of this embodiment.
  • the system definition expanding unit 101 reads this from the component definition storage unit 003 or the like (step S2211). If there is a port definition referred to by the component definition (Yes in step S2212), this is read from the component definition storage unit 003 or the like (step S2213). Then, a specific system definition is generated by substituting values (information elements) in accordance with the component definition and port definition for each field of the component indicated by the system definition, and embodying the information element included in the component. (Step S2214).
  • the system definition expansion unit 101 acquires “Ubuntu_2” and “Tomcat_2”, which are component definitions included in the “system2” system indicated by the system definition. Further, the system definition expansion unit 101 acquires the port definition in response to the reference of the “OS_2” port definition as the port definition of the “os” port in these component definitions. Further, based on the acquired port definition, the system definition development unit 101 assigns values (components) to the fields of the component and the port.
  • substitution definition the value defined at the reference destination is substituted.
  • substitution of values (components) by reference to the “configFile” field and the “package” field of the main body component is defined in the “os” reference port of the “tomcat2” component of “system2”.
  • the “os” port defined by the port definition “OS_2” is assigned a reference to the “tomcat2.configFile” field of the main component in the “file” field and “tomcat2.package” in the “package” field.
  • the reference to the “field” is assigned, it is set as the “os” reference port of the “tomcat2” component.
  • the system definition expanding unit 101 connects the ports according to the wire definition included in the system definition (step S222).
  • the port connection processing the values stored in each field in the reference port are propagated (transferred) to the field in the corresponding service port. As a result, two ports connected by a wire are combined into one.
  • the system definition expansion unit 101 sets the value of the field of the “os” reference port that is the connection source as the connection destination based on the wire setting included in the system definition in the port connection process. Move to the value of the corresponding field of the “os” service port.
  • the values stored in the “file” and “package” fields of the “os” reference port of the “tomcat2” component that is the connection request source are the “os” service port of the “ubuntu2” component that is the connection request destination.
  • step S125 when the system definition expansion unit 101 completes the port connection processing for all the wires, the system definition expansion unit 101 outputs a specific system definition (step S125), and ends the system definition expansion process.
  • FIG. 30 is an explanatory diagram showing the relationship between fields after port connection.
  • FIG. 30 based on the system definition described above, only the fields in the specific system definition after port connection are extracted, and their relationship is shown.
  • the value of the “os” reference port field of the “tomcat2” component is directly reflected in the corresponding field of the “os” service port of the “ubuntu2” component at the connection destination. Although omitted, you may leave the “os” reference port of the “tomcat2” component.
  • a “tomcat2.os.file” field is provided between the “tomcat2.configFile” field and the “ubuntu2.os.file” field, and the reference destination of the “ubuntu2.os.file” field is set to “tomcat2 .os.file ”field.
  • the multi-level reference setting is resolved in the next component setting process, so that the component corresponding to the series of fields in the reference relationship is the final reference destination. It is embodied in the value stored in the field.
  • FIG. 31 is a flowchart showing a more detailed operation example of the component setting process (step S23 in FIG. 26) by the component setting unit 102 of this embodiment.
  • the component setting unit 102 executes the same processing as in the first embodiment for all fields in the specific system definition generated by the system definition expansion unit 101.
  • the present embodiment is different in that the component associated with each field may be a copy by reference.
  • the component setting unit 102 of the present embodiment first checks the value stored in each field, and simply acquires it if the value directly specifies the component. On the other hand, if the value specifies a reference to another field, duplicate the component information stored in the referenced field, store it in the referenced field, and finally the target field The information stored in is acquired (step S231).
  • the value stored in the reference field further specifies a reference to another field
  • the component information stored in the other field that is the reference destination is further copied.
  • the process of storing in the reference source field is recursively performed, and the component information stored in the final reference destination field is stored, and the component is stored in each reference source field.
  • the duplication of the component element may have, for example, an identifier generated so as not to overlap appropriately and an element of an identifier of the duplication source component element as component element information.
  • FIG. 32 is an explanatory diagram showing the relationship between fields after resolving the constituent elements by reference from the specific system definition shown in FIG. 32, a component that does not have an id inside (a solid-line rectangle in the figure that is shaded) is a duplicate of the component indicated by the arrow.
  • the solid arrows drawn from “1” to “component” or from “duplicate” to “replica” indicate the component that is the source of the duplication.
  • FIG. 33 is an explanatory diagram showing an example of data of a certain component after reference resolution.
  • FIG. 33 shows an example of component information stored in the “file” field (ie, “ubuntu2.os.file” field) of the “os” service port of the “ubuntu2” component in FIG. Yes.
  • the “file” field contains the identifier of the component element of the copy source (in this example, Information including “tomcatConfig2”) and a temporary identifier (“tomcatConfig2_1” in this example) of the copied component stored in the field may be held.
  • the name of the original component + “_” (underscore) + a number is added as a temporary identifier of the copied component to express that the component is a duplicate. Yes.
  • the component setting unit 102 assigns a setting to the component stored in the field or the copied component based on the information (setting definition) regarding the setting for the component held by each field ( Step S232).
  • FIG. 34 is an explanatory diagram showing the relationship between the components after the setting is given based on the relationship between the fields shown in FIG. As shown in FIG. 34, the contents set in the field are given as they are to the components stored in the field. In FIG. 34, the name given to the upper part of the shaded rectangle representing the duplicate of the component indicates the id of the duplicate.
  • FIG. 35 is an explanatory diagram showing an example of data of a certain component after the setting is given in the present embodiment. The example shown in FIG. 35 is an example of component duplication information stored in the “file” field (ie, “ubuntu2.file” field) of the “ubuntu2” component in FIG.
  • the reference definition in the setting for the component in the field is specified in the component definition that defines the field, it is only necessary to search the reference destination using the component in which the reference is defined as a scope.
  • the dependency reference definition defined for the “file” field of the “ubuntu2” component is “$ boot”.
  • the “boot” field may be searched for within the “ubuntu2” component.
  • the “ubuntu2.boot” field is found here.
  • the configuration element setting unit 102 resolves the reference in the setting for the configuration element in the field, and the configuration element that is the source of all the settings given to the replication (Step S233).
  • the component setting unit 102 performs an aggregation process for aggregating the settings made for the duplication of the component to the duplication source. For example, it is assumed that, as a result of setting the information based on the information shown in FIG. 32, the relationship between the components as shown in FIG. 34 is established. In this case, the dependency on the component “boot2” stored in the “ubuntu2.boot” field of the replication “tomcatConfig2_2” stored in the “ubuntu2.file” field is the original replication source. Centralized in the “tomcatConfig2” component.
  • FIG. 36 is an explanatory diagram showing an example of system configuration information by GUI
  • FIG. 37 is an explanatory diagram showing an example of system configuration information by JSON.
  • 36 and 37 both show the same configuration.
  • “system2” includes three components “tomcatConfig2”, “tomcatPackage2”, and “boot2”
  • the “tomcatConfig2” component includes the “tomcatPackage2” component and “boot2”. It can be seen that each “component has a dependency, and the tomcatPackage2” component has a dependency on the “boot2” component.
  • all the settings defined by a plurality of components can be collectively given to the component, and the definition related to the assignment of the component to the field is abstracted so that it can be reused.
  • the user can define the system configuration more efficiently just by defining the wire. More specifically, in the present embodiment, it is possible to specify that it is a reference to another field in the setting definition related to the assignment of the component element to the field (additional abstraction element is added), Setting contents such as attribute values and dependencies set for the field can be propagated based on the reference relationship. In addition, such a reference relationship is determined only after the combination of components is determined. In this embodiment, the reference relationship is set using a field, and the abstract parts such as ports and wires are used.
  • FIG. Next, a third embodiment of the present invention will be described.
  • the configuration of the system construction support system 100 in the third embodiment is the same as the configuration of the second embodiment except that the operations of the system definition expansion unit 101 and the component element setting unit 102 are different.
  • the same parts as those in the first and second embodiments are denoted by the same symbols, and the description thereof is omitted.
  • This embodiment is different from the second embodiment in that types of accept field and provide field are provided for the fields of the port.
  • the accept field is a field that handles the propagation of the component from the reference port to the service port. For this reason, with respect to the accept field, except for propagation due to connection between ports, substitution of values is accepted only from components having the port as a reference port.
  • the provide field is a field that handles propagation of components from the service port to the reference port. For this reason, with respect to the provider field, except for propagation by connection between ports, substitution of values is accepted only from components having the port as a service port.
  • the system definition expansion unit 101 and the component element setting unit 102 according to the third embodiment are different from the second embodiment in that definition information corresponding to these types is handled.
  • FIG. 38 is an explanatory diagram showing a definition example of an OS port by GUI according to the present embodiment.
  • FIG. 38 shows an example of the port definition to which the identifier “OS_3” is attached.
  • the fields defined by the port definition include two accept fields, “file” field and “package” field, and one provide field, “boot” field. Is defined. In this example, the dependency on the “boot” field is defined for each of the “file” field and the “package” field.
  • the accept field is represented by an arrow feather with the right side convex
  • the provide field is represented by an arrow feather with the left side convex.
  • FIG. 39 is an explanatory diagram showing a definition example of an OS port by JSON in the present embodiment.
  • the example shown in FIG. 39 is an example in which the port definition shown in FIG. 38 is defined by JSON.
  • the port definition of the OS port by JSON is that the “type” element is “port definition”, the “field element” is the “accept field” element, and the “provide field” element. It can be basically the same as the component definition except for the points.
  • the contents of the port definition in this example are the same as those in FIG. That is, in the port definition shown in FIG.
  • the port definition is the “type” element
  • OS_3 is defined as the “id” element
  • file field
  • packet is defined as the “accept field” element. It is defined that a “boot” field is provided as a “provide field”.
  • the “file” field and the “package” field which are accept fields, are assigned values from the corresponding fields of the component having the port as a reference port.
  • a value is supplied to a “boot” field that is a provide field from a corresponding field of a component having the port as a service port.
  • a component having a port defined by the port definition as a service port is assumed to have a host relationship with a component having the port defined by the port definition as a reference port. ing.
  • the relationship between the fields in the port defined in the component in the second embodiment can be defined in the port.
  • the definition related to the dependency can be reused together with the port.
  • FIG. 40 is an explanatory diagram illustrating an example of a system definition using a GUI according to the present embodiment.
  • the target system “system3” is an instance of “tomcat3” which is an instance of a component defined by the component definition “Tomcat_3” and an instance of a component defined by the component definition “Ubuntu_3”. It can be seen that there is a certain “ubuntu3” component, and the “os” reference port of the “tomcat3” component and the “os” service port of the “ubuntu3” component are connected by a wire.
  • the component definitions “Tomcat_3” and “Ubuntu_3” will be described later.
  • FIG. 41 is an explanatory diagram illustrating a definition example of a Ubuntu component using a GUI according to this embodiment.
  • FIG. 41 shows an example of a component definition to which an identifier “Ubuntu_3” is attached.
  • the component defined by the component definition has three fields of a “file” field, a “package” field, and a “boot” field, and further, a port definition “ It can be seen that one port defined by “OS_3” has an “os” port.
  • references to the “file” field and the “package” field of the “os” port are respectively defined.
  • the initial value definition of the “boot” field it is defined that a “boot3” component is newly created, and the component that is the main component for the “boot” field of the “os” port.
  • a reference to the “boot” field is defined.
  • FIG. 42 is a definition example of Tomcat component by GUI in this embodiment.
  • FIG. 42 shows an example of the component definition to which the identifier “Tomcat_3” is attached.
  • the component defined by the component definition has a “configFile” field and a “package” field, and further, as a reference port, one “1” defined by the port definition “OS_3”. It can be seen that it has an “os” port.
  • the “tomcatConfig3” component and the “tomcatPackage3” component are newly defined in the initial value settings of the “configFile” field and the “package” field, respectively.
  • the “configFile” field defines a dependency on the “package” field.
  • the “boot” field which is the provide field in the “os” port in this example, is assigned to the value from the main body component because the port is included in the component defined by the component definition “Tomcat_3” as the reference port.
  • the field is not used because it is not accepted and the value is not substituted even when the port is connected using a wire (the port is a reference port and is a position to be transferred to another service port). Is omitted.
  • FIGS. 40 to 42 are examples of definitions that have the same configuration after deployment, except for the definitions shown in the second embodiment and id.
  • the component definition “Ubuntu_3” shown in FIG. 41 defines a reference to the “boot” field of the main component as a setting relating to the substitution of the value of the field for the “boot” field in the OS port. This is different from the component definition “Ubuntu_2” in the second embodiment in that the dependency between the fields of the component is omitted.
  • FIG. 43 is an explanatory diagram showing the relationship between fields after port connection.
  • FIG. 43 based on the system definition shown in FIG. 40, fields in a specific system definition after connection of ports are extracted and their relationship is shown.
  • the dependency from the “ubuntu2.file” field and the “ubuntu2.package” field to the “ubuntu2.boot” field is set (see FIG. 30).
  • the example is greatly different in that the dependency on the “os.boot” field is set from the “os.file” field and the “os.package” field.
  • the final system configuration information in the third embodiment is the same as the system configuration information in the second embodiment shown in FIG.
  • the system definition refers to, when a specific system definition is generated by assigning values to each of the fields of the component indicated by the system definition, whether the target port is a reference port Depending on the service port, the assignment of values to the fields of the port is restricted. For example, in the “file” field and “package” field of the “os” reference port of the “tomcat3” component of “system3”, references to the “configFile” field and the “package” field of the main body component are defined, respectively.
  • the system definition expansion unit 101 of this example substitutes a value from a main body component having the “os” port as a reference port. to approve.
  • the “file” field is assigned a reference to the “tomcat3.configFile” field of the main component
  • the “package” field is assigned a reference to the “tomcat3.package” field.
  • the port instance “os” port by the port definition “OS_3” is set as the “os” reference port of the “tomcat3” component.
  • the initial value setting by reference from the “ubuntu3.os.file” field is defined for the “ubuntu3.file” field of “system3”, and the “ubuntu3.package” field
  • the initial value setting by reference from the “ubuntu3.os.package” field is defined.
  • the port definition “OS_3” port instance “os” port which has a dependency on the “boot” field, references to the “file” and “package” fields, and the “ubuntu3.boot” field
  • the “os” port having the “boot” field substituted with “” is set as the “os” service port of the “ubuntu3” component. Subsequent port connection processing is the same as in the second embodiment.
  • the setting relating to the relationship between the component of a component having a port as a reference port and the component of a component having a service port (for example, the “file” field of the “os” port) And the dependency on the “boot” field for the “package” field can be defined in the port, and this can be reused together with the port, so that the system definition can be described more efficiently. That is, reusability can be further improved by completing the abstracted dependency setting in the port.
  • Embodiment 4 FIG. Next, a fourth embodiment of the present invention will be described.
  • the configuration of the system construction support system 100 in the fourth embodiment is the same as that of the third embodiment except that the operations of the system definition expansion unit 101 and the component element setting unit 102 are different.
  • the same parts as those in the first to third embodiments are denoted by the same reference numerals, and description thereof is omitted.
  • This embodiment is different from the first to third embodiments in that the type of component is handled.
  • the type of component element a specific component that is a specific component having all the information elements necessary for the purpose of the component, and an abstract configuration having only some of the information elements It handles two types of abstract components.
  • the fields and components of this embodiment have “type name” information. Then, the system definition development unit 101 and the component element setting unit 102 perform processing according to these “type names”.
  • FIG. 44 is an explanatory diagram showing a representation example of fields and components using a GUI according to the present embodiment.
  • FIG. 44 shows an example in which two types of “OSFile” type and “FileUbuntu” type are set in the “file” field.
  • the “file” field of the “OSFile” type is an example of an abstract component type intended to be a “file” component for various types of OSs
  • the “file” field of the “FileUbuntu” type is This is an example of a specific component type intended to handle a “file” component for a specific OS called “Ubuntu”.
  • the “file1” component represents an abstract component
  • the “file2” component represents a specific component.
  • the field type name is written together with the field name separated by a colon “:”.
  • the type name of the component is not particularly described when it is the same as the type of the field storing the component.
  • the abstract component type field is indicated by a dotted rectangle with a white background.
  • the field of the specific component type is indicated by a dotted rectangle with a diagonal pattern in the background.
  • the components of the abstract component type are indicated by a solid rectangle with a white background.
  • the components of the specific component type are indicated by a rectangle with a black background.
  • FIG. 45 is an explanatory diagram illustrating an example of a system definition using a GUI according to the present embodiment.
  • the target system “system4” is an instance of a component defined by a component definition “Tomcat_4” and a component instance “webApp4” that is an instance of a component defined by the component definition “WebApp_4”.
  • tomcat4 component and “ubuntu4” component which is an instance of the component defined by component definition “Ubuntu_4”.
  • “was” port of the “webApp4” component and the “was” port of the “tomcat4” component are connected, and the “os” port of the “tomcat4” component and the “os” port of the “ubuntu4” component are connected.
  • “webApp4”, which is an example of a WebApp component is assumed to be a component corresponding to the function of the Web Application Server (hereinafter referred to as “WebApp”).
  • WebApp WebApp4
  • the “was” port which is an example of the WAS port, is a port related to the WebApp function.
  • FIG. 46 is an explanatory diagram showing a definition example of an OS port by GUI according to the present embodiment.
  • FIG. 47 is an explanatory diagram showing a definition example by the JSON of the port definition shown in FIG.
  • the port definitions shown in FIGS. 46 and 47 have the same configuration.
  • the port configuration defined by the port definition shown in FIG. 46 and FIG. 47 is the port configuration defined by the port definition “OS_3” shown in FIG. 38 and FIG. 39, except that each field has type name information.
  • the configuration is the same.
  • the port definition “OS_4” shown in FIG. 46 and FIG. 47 the port defined by the port definition has the “file” field of the abstract component type having the type name “OSFile” as the accept field. .
  • the port also has an abstract component type “file” field of the type name “OSPackage” as an accept field.
  • the port also has an abstract component type “boot” field of the type name “OSBoot” as a provide field.
  • the dependency on the “boot” field is defined for the “file” field and the “package” field.
  • JSON JSON, it is not shown whether the type name is an abstract component type or a concrete component type. However, in association with the type name of each field, the type is an abstract component type or a concrete component type. Such information is held separately.
  • FIG. 48 is an explanatory diagram showing a definition example of a WAS port by GUI according to the present embodiment.
  • FIG. 49 is an explanatory diagram showing a definition example by the JSON of the port definition shown in FIG.
  • the port defined by the port definition has an abstract component type “war” field of the type name “War” as an accept field. It has a “package” field of an abstract component type of the type name “OSPacage” as a provide field. Also, dependency on the “package” fold is defined for the “war” field.
  • the “War” type “war” accept field stores a component of a WAR file in which a WebApp program or the like is archived.
  • the “OSPackage” type “package” provide field stores, as a component, a WebApp installation process that uses the component stored in the “war” field as a host.
  • FIG. 50 is an explanatory diagram showing a definition example of Ubuntu component by GUI in this embodiment.
  • FIG. 50 shows an example of a component definition with an id “Ubuntu_4”.
  • the component definition shown in FIG. 50 includes id, a point in which each field has type information, and a point in which conversion processing is defined when a component of the main body refers to a value from the OS port. This is different from the definition of the Ubuntu component in the third embodiment.
  • the component definition in this example refer to the values of the “file” field and “package” field of the “os_4” type “os” service port of the relevant component, and the “file” field and “package” field of the main component
  • a designation for converting the component into a component of an appropriate specific component type and storing it is added instead of simply duplicating the component.
  • the “ubuntu4.boot” field for the “ubuntu4.os.boot” field the “BootUbuntu” type in the “ubuntu4.boot” field that is the reference destination is the “ubuntu4.os.boot” that is the assignment destination. Since it is a derivative type of the “OSBoot” type of the “field”, it is assumed that it is propagated by a normal reference setting.
  • conversion call such a reference involving conversion to a specific component is referred to as a conversion call.
  • the conversion call is represented by a double line arrow connected from the black circle to the reference destination (conversion source) field as shown in FIG.
  • conversion method designation method is not illustrated, but when a conversion call is designated by the GUI, another screen or the like for defining the details of the conversion call is displayed. It is assumed that detailed information of the conversion call can be input by the user.
  • FIG. 51 is an explanatory diagram showing a definition example of Ubuntu component by JSON in the present embodiment.
  • the example shown in FIG. 51 is an example in which the contents similar to the component definition shown in FIG. 50 are defined by JSON.
  • the component definition “Ubuntu_4” shown in FIG. 51 is compared with the component definition “Ubuntu_3” of the third embodiment, and the definition of the type name of the storable component is added to the “field” element. “Conversion call” is added to the type of the “initial value” setting. Further, the component definition “Ubuntu_4” includes “conversion method” element and “argument” element in the “initial value” setting when the type of the initialization setting is “conversion call”.
  • the component definition includes an element of “conversion”.
  • the conversion definition that is each element in the “conversion” element includes three elements “return value type name”, “argument”, and “attribute assignment” in association with the conversion element name.
  • return value type name the type name of the component received as a result of the conversion is designated.
  • argument the type name of the component is specified in association with the name of the field storing the component to be converted.
  • attribute assignment if there is an attribute value to be newly assigned to the converted component, the definition method is specified.
  • the component value of the conversion source specified by the “argument” can be referred to and its attribute value can be used.
  • the conversion definition “convertFile” included in the “convert” element is a definition for converting a “file” component of the “OSFile” type stored in the “file” field into a component of the “FileUbuntu” type.
  • the “attribute assignment” at that time the “name” attribute value of the converted component stored in the “file” field, the “name” attribute value of the “file” component of the “OSFile” type before conversion Is assigned as it is.
  • the “initial value” setting of the “file” field in which conversion call is set includes “conversion call” and the conversion method definition of any of the “conversion” elements as the “conversion method” setting. Is specified.
  • the “file” field of the “os” port is specified as the “argument” setting. This means that the “file” component stored in the “os.file” field is used as an argument passed to “convertFile” which is the conversion method, that is, the component of the conversion source.
  • conversion call when the value of the component is “conversion call”, “type” specifies that it is a conversion call, “conversion method” specifies the name of the conversion definition in the same definition, The “argument” may specify a component to be converted.
  • the conversion method in the conversion call can be specified by, for example, a conversion name with an ampersand “&” added at the beginning.
  • FIG. 52 is an explanatory diagram showing a definition example of Tomcat component by GUI in this embodiment.
  • FIG. 52 shows an example of a component definition with an id “Tomcat_4”.
  • the components defined by the component definition include the “package” field of “OSPackage” type, the “os” reference port defined by the port definition “OS_4”, and the port definition “ It is defined to have a “was” service port defined by WAS — 4 ”.
  • WAS — 4 the port definition
  • both the “package” field of the “os” reference port and the “package” field of the “was” service port are set to refer to the “package” field of the main component.
  • the file field of the “os” reference port is set to be substituted by a conversion call for the “war” field of the “was” service port.
  • “tomcat” is set in the value of the “name” attribute of the component “tomcatPackage4” defined as the initial value of the “package” field. This indicates that the component is a component including tomcat installation processing and the like.
  • FIG. 53 is an explanatory diagram showing a definition example of Tomcat components by JSON in this embodiment.
  • the example shown in FIG. 53 is an example in which the component definition shown in FIG. 52 is defined by JSON.
  • “& convertWar” is set as the conversion method of the conversion call from the “file” field of the “os” reference port to the “war” field of the “was” service port.
  • “convertWar” is defined in the “convert” element of the component definition. This “convertWar” receives a “War” type component from the “war” field, converts it to an “OSFile” type component, and returns it.
  • FIG. 54 and FIG. 55 are explanatory diagrams showing examples of defining WebApp components in the present embodiment.
  • FIG. 54 shows an example of definition by GUI
  • FIG. 55 shows an example of definition by JSON.
  • all show examples of component definitions to which the identifier “WebApp_4” is attached.
  • the component defined by the component definition is a “war” field of “War” type and “war4” component is stored as an initial value. It is defined to have a field and a “was” reference port defined by the port definition “WAS — 4”.
  • the “war” field of the “war” reference port is set to refer to the “war” field of the main component.
  • “app.war” that is the file name of the “war” file is specified in the “name” attribute value of the “war4” component that is the value of the “war” field.
  • FIG. 56 is an explanatory diagram showing the relationship between fields after port connection.
  • FIG. 56 shows the relationship between fields in the specific system definition after port connection developed based on the system definition shown in FIG.
  • the component is propagated not only by the reference but also by the conversion call.
  • the “war4” component that is an abstract component of the “war” type stored in the “webApp4.war” field is passed to the “ubuntu4.os.file” field via the “tomcat4.was.war” field. Propagated.
  • the “war” type is converted to the abstract component type “OSFile” type.
  • the “war4” component after the conversion to the “OSFile type” is propagated to the “ubuntu4.file” field, and is converted from the “OSFile” type to the “fileubuntu” type of the specific component type.
  • the operation of this embodiment is that the system definition expansion unit 101 and the component setting unit 102 handle the type of component defined in the field or component, and handle “conversion call” as the field value.
  • the operation is the same as that of the third embodiment.
  • the component setting unit 102 first checks the value stored in the target field, and if the value is a conversion call, the conversion source After acquiring the component specified in, convert it based on the conversion method definition specified in the conversion method, duplicate the resulting component, and convert the target field that is the conversion caller field Acquired after storing in.
  • FIG. 57 is an explanatory diagram showing the relationship between components after resolving the component by reference including conversion call from the relationship between fields shown in FIG.
  • the type and attribute value of the component may differ between the propagation source and the propagation destination, not the complete copy of the component.
  • FIG. 58 is an example of data of the component after resolving the reference setting to the field value in the present embodiment.
  • FIG. 58 shows an example of component information stored in the “file” field (ie, “ubuntu4.file” field) of the “ubuntu4” component.
  • the identifier of the constituent element of the copy source (this example) is used as the constituent element information stored in the “file” field.
  • "War4_2” the identifier of the component stored in the field (in this example, "war4_3”), the type name after conversion, and attribute value information attached after conversion are held. Also good.
  • the main component of this component is the “War” type “war4” component stored in the “war” field of the “webApp4” component.
  • the component is converted to the “OSFile” type in the “tomcat4” component, and the value of the “name” attribute value is changed. Furthermore, it is converted to “FileUbuntu” type in the “ubuntu4” component.
  • “FileUbuntu” type is specified for “type name”
  • “/usr/local/tomcat/app.war” is specified for the name attribute value as the “attribute value”.
  • the constituent element aggregation processing by the constituent element setting unit 102 in this embodiment is strictly different from the aggregation processing in each of the above embodiments.
  • the process of consolidating the constituent elements in this embodiment that is, the process of combining a series of constituent elements composed of newly defined constituent elements and duplicate constituent elements including the converted ones into a single constituent element that is output information
  • a single component that is output information has an identifier of a newly defined component of a series of component groups, and the type and attribute value of a specific component located at the end of propagation by duplication are typed and It is given as an attribute value, and a set of relevance given to all copies is given as relevance information of the component.
  • the component setting unit 102 traces the “id” of the copy source component of the component stored in each field, for example, and collects a set of component elements constituting each component group and the copy source Identify the newly defined component that is the end and the component of the specific component type. Then, the information of the output component is synthesized by collecting “id” from the newly defined component, the type and attribute value from the component of the specific component type, and the dependency from all the components. .
  • the component setting unit 102 may have a function of verifying that one specific component is specified in one field in the entire reference relationship field. For example, the component setting unit 102 may detect an error when a plurality of specific component types are included in a component group stored in a series of fields having a reference relationship.
  • the location where a specific component is specified is limited to one location, so that the correct deployment process of the component is realized.
  • a situation in which a single component is realized at a plurality of locations can be said to be an unintended situation in an application that defines a target system construction process as in this example. Therefore, in such a case, it is preferable to detect and warn of a situation where a single component is realized at a plurality of locations.
  • FIG. 59 is an explanatory diagram showing the relationship between the components after the setting is applied.
  • the name given to the upper part of the shaded rectangle representing the copy of the component indicates the type name and id of the copy.
  • FIG. 60 and 61 are explanatory diagrams showing examples of system configuration information in the present embodiment.
  • FIG. 60 is an explanatory diagram showing a GUI display example of system configuration information generated as a result of generating a component based on the above-described definition.
  • FIG. 61 is an explanatory diagram showing an example of output of the system configuration information by JSON. 60 and 61 both show the same configuration.
  • the system definition can be defined more efficiently by appropriately adjusting information such as attribute values and types of components according to the combination of components.
  • the type of the component can be appropriately converted according to the host, and the finally generated component can be made specific according to the host.
  • the setting for that purpose can be confined to the host of the connection destination, the user can flexibly determine the host destination.
  • FIG. 62 is an explanatory diagram showing another example of system definition by GUI.
  • 62A shows “system4_2” as an example of a system using CentOS instead of Ubuntu
  • FIG. 62B shows an example of a system using Jetty instead of Tomcat.
  • system4-4 is shown as an example of a system that uses CentOS instead of Ubuntu and Jetty instead of Tomcat.
  • FIG. 63 is an explanatory diagram showing a definition example by the JSON of the system definition shown in FIG.
  • the “mw” component shown as an example of the Jetty component in FIGS. 62B and 62C assumes a component corresponding to the jetty that is a kind of Web application.
  • FIG. 64 and FIG. 65 are explanatory diagrams showing definition examples of CentOS components in the present embodiment.
  • the component defined by the component definition is the “os” service defined by “OS_4”, as in the case of the component definition “Ubuntu_4”. Has a port.
  • the types of “file” field, “package” field, and “boot” field are specialized for “CentOS”, such as “FileCentOS”, “PackageCentOS”, and “BootCentOS”, respectively. Yes.
  • the “FileCentOS” type is included in each return value.
  • the reassignment of values from the “boot” field in the main body component to the “os.boot” field is a normal reference setting as in “Ubuntu_4”. This is because the “BootCentOS” type is a derived type of the “OSboot” type.
  • FIG. 66 and FIG. 67 are explanatory diagrams showing examples of definition of Jetty components in the present embodiment.
  • the component defined by the component definition is the “was” reference defined by “WAS_4” as in the case of the component definition “Tomcat_4”. It has a port and a “package” field of the “OSPackage” type.
  • the “name” attribute of the component “jettyPackage4” defined as the initial value of the “package” field is “jetty”. This indicates that the component is a component including Jetty installation processing and the like.
  • attribute assignment in the conversion method “convertWar” is a rule based on the directory structure in Jetty.
  • the component definition “CentOS_4” defines a component having the same port configuration as the component definition “Ubuntu_4”
  • the component definition “Jetty_4” defines a component having the same port configuration as the component definition “Tomcat_4”. is doing.
  • FIGS. 62A to 62C there is a system in which the component “app” defined by “WebApp_4” is deployed, but the combination of the types of “mw” component and “vm” component is different. Is defined.
  • the number of selectable patterns will increase exponentially. In this way, various systems can be efficiently described from a small number of definitions by reusability of components.
  • FIG. Next, a fifth embodiment of the present invention will be described.
  • the configuration of the system construction support system 100 in the fifth embodiment is the same as that of the fourth embodiment except that the operations of the system definition expansion unit 101 and the component element setting unit 102 are different.
  • the same parts as those in the first to fourth embodiments are denoted by the same reference numerals, and description thereof is omitted.
  • each field has not only the contents of the component such as the construction process but also the information that the component can take and possible state transition information as the component information, and the field The information indicating the relationship between them is specified from the state of the component stored in the field to the state of the other component. Such a relationship means that the former component must be in the state in order for the former component to execute the state transition.
  • FIG. 68 is an explanatory diagram illustrating an example of expression of components and relevance between components using a GUI according to the present embodiment.
  • FIG. 68 shows two examples of the “War” type “war” component and the “OSPackage” type “package” component.
  • the “war” component has two states “f” and “t” and state transitions connecting the states to each other.
  • the “package” component also has two states “f” and “t” and state transitions connecting the states to each other.
  • the “war” component is the “t” of the “package” component in the state transition from the “f” state to the “t” state and the state transition from the “t” state to the “f” state. Has dependency on the state.
  • the “package” component has dependency on the “f” state of the “war” component in the state transition from the “t” state to the “f” state. This is because when the “war” component transitions from the “f” state to the “t” state or from the “t” state to the “f” state, the “package” component state changes to the “t” state. It means that you have to be. This also indicates that when the “package” component transitions from the “t” state to the “f” state, the state of the “war” component must be in the “f” state.
  • FIG. 69 is an explanatory diagram showing a definition example of the component type by JSON.
  • FIG. 70 is an explanatory diagram showing an example of component definition by JSON.
  • Each component in FIG. 70 can be interpreted as having a state or state transition held by a component type specified as a type name.
  • the description “f-> t” indicates a state transition from the “f” state to the “t” state
  • the description “package (t)” indicates the “package” component.
  • “T” state is shown.
  • FIG. 70 as an example of the definition of a component, an example is shown in which the dependency of the component on other components is set, but a similar definition can be set for a field.
  • the component stored in the set field has a state or state transition held by the component type specified as the type name, or the component stored in the set field has a state transition, etc. Therefore, it can be interpreted as having a dependency on the state of the component stored in the specified other field.
  • the constituent elements and fields have type information is described as an example. However, in the present embodiment, the constituent element and field type information is not essential.
  • the procedure for changing each component from the specified current state to the requested state can be changed by specifying the current state and the requested state for each component according to the situation. It can be derived as an enumeration.
  • the “package” component In order to transition the “war” component from the “f” state to the “t” state, the “package” component must be in the “t” state. It is possible to derive a procedure of transitioning from the state to the “t” state and then transitioning the “war” component from the “f” state to the “t” state.
  • This method is a method for obtaining the order of state conversion that brings the initial state to the requested state while satisfying the restricting condition, based on the information of the initial state, the requested state, the state converting method, and the restricting condition of the state converting.
  • the system construction support system 100 of the present invention can also be used for components having such state transitions.
  • FIG. 71 is an explanatory diagram showing a definition example of a WAS port by JSON in the present embodiment.
  • the way of defining the dependency is different from that in each of the above embodiments.
  • the state transition of a component stored in a certain component or field is specified as “dependence source transition”, and the state of a component stored in another component or field as “dependence destination state” May be specified.
  • the system definition expanding unit 101 and the component setting unit 102 are configured such that the component has a dependency on the state and state transition and the state transition of a certain component to the state of another component or This is the same as the fourth embodiment except that a field for storing such a component is handled.
  • system construction procedure can be generated not only in the present embodiment but also in the first to fourth embodiments described above.
  • each component that holds the construction process is linked with dependency.
  • the order for executing all the construction processes can be determined based on such information while satisfying the dependency.
  • topological sort For example, if there is no cycle in dependency, there is always at least one component that does not have any dependency on other components.
  • the construction process of such a component may be executed. As a result, a component that solves all the dependencies that it holds is generated. Therefore, such a component construction process may be executed after the above construction process.
  • the construction process of all construction elements is always executed by sequentially executing the components whose dependency is resolved by the execution of the migration and the preceding construction process.
  • Such an algorithm for determining the order is generally known as “topological sort”.
  • FIG. 72 is a block diagram showing an outline of the present invention.
  • the system construction support system shown in FIG. 72 includes system definition input means 501 and setting provision means 502.
  • the system definition input unit 501 (for example, the system definition input unit 001) stores a component that has at least one field that stores information about a component and is finally associated with one specific component.
  • a component definition that is information to be defined, a field definition that is information on a field of a component to be defined, and a setting definition that is information on a setting for a component associated with the field (for example, an “assignment” definition
  • the system definition including at least the designation of the component using the component definition that can include the component definition and the allocation definition related to the assignment of the component to the field of the component is input.
  • the setting assigning unit 502 (for example, the system definition expanding unit 101 and the component setting unit 102) associates the component with the field of the designated component based on the system definition and the component definition, and is defined for the field. By reflecting the set contents in the component associated with the field, the setting is given to the component configuring the target system.
  • FIG. 73 is a block diagram showing another configuration example of the system construction support system of the present invention.
  • the system construction support system has a component definition storage unit 503 (for example, a component definition storage unit 003) that stores at least two or more component definitions, and information on specific components constituting the target system.
  • the system configuration output unit 504 (for example, the system configuration output unit 002) that outputs the system configuration information, which is information including the content of the setting given to the component, may be provided.
  • the setting definition included in the component definition may include at least information indicating the attribute value of the constituent element associated with the target field or the relevance between the constituent elements of the constituent element. .
  • designation of another component in the information indicating the relationship may be performed by designation of any field to which the other component is associated.
  • the component definition can include an assignment definition (for example, “initial value” definition, etc.) that is information related to the assignment of the component that is associated with the target field, and the setting assigning means is specified by the system definition.
  • the assignment definition is included in the component definition of the selected component, the constituent element may be associated with the field specified by the assignment definition based on the assignment definition.
  • the assignment definition includes information that specifies whether the component to be assigned is a new definition or a reference from another field, and the setting assigning means defines the component definition of the component specified by the system definition.
  • the setting assigning means defines the component definition of the component specified by the system definition.
  • the component definition is a port that is a concept that abstracts the terminal function for the component to be defined to connect with other components, and is defined by the port definition. It includes the designation of a port having at least one field to be stored and finally associated with one specific component, and the port definition is information on the field of the port to be defined Including a field definition, the system definition includes information for specifying a connection between ports, and the setting assigning unit is configured to correspond to the component information and the component corresponding to the corresponding fields of the ports in the connection relationship. The assigned setting may be propagated.
  • the port definition can include a setting definition (for example, “setting” definition) that is information related to the setting for the configuration element associated with the field of the port to be defined. If the setting definition is included in the field, the setting content defined for the field is reflected in the component associated with the field, and then the setting is propagated between the corresponding fields of the connected ports. You may let them.
  • a setting definition for example, “setting” definition
  • the component definition can include an allocation definition that is information on allocation of a component associated with a field included in a port when the component to be defined has a port.
  • the component may include a designation that the reference is from the field of the component.
  • the component definition can include an assignment definition that is information relating to assignment of a component that is associated with a field included in the component when the component to be defined has a port.
  • the allocation target component may include a designation that the reference is from a field of the port.
  • the port definition can include an allocation definition (for example, “initial value” definition) that is information related to allocation of a component associated with a field of a port to be defined.
  • the component may include a designation that the reference is from the field of any component associated with the port.
  • the component definition or system definition indicates whether a port of a component is a reference port indicating use of a connection function provided by another port or a service port indicating provision of a connection function to another port.
  • the port definition can be specified.
  • the field of the port to be defined is an accept field that handles the propagation of the component from the reference port to the service port, or the component of the component from the service port to the reference port. It is possible to specify whether it is a provide field that deals with propagation, and the setting granting means, based on the component definition or system definition and port definition, from the field of the component having the service port to the service port accept field.
  • Limiting the assignment of the components may limit the allocation of the components by reference from the field of Component having the reference port for-provide field reference port.
  • the assignment definition can include a conversion definition that is information related to the conversion method of the component, and when the setting assigning unit associates the component with the field, the specified component is assigned based on the conversion definition. You may make it correspond after converting.
  • the component definition includes information related to the type, which is information related to the type of component that can be stored in the field
  • the allocation definition includes information related to the type of the component to be allocated
  • the type indicates other types.
  • the setting assigning means limits the association of the component to the field only when the type set for the field matches or is in the inclusion relationship with the type of the component to be assigned. May be.
  • the system construction support system has, as the types of component elements, a specific component element including all essential information and an abstract component element including only a part of essential information.
  • a conversion definition which is information related to the conversion method of the component, can be included.
  • the conversion definition includes information that specifies the type of the component that is the conversion source and the conversion destination.
  • the specification of the type in the conversion definition is abstract from the conversion source. Either a component type and a conversion destination is an abstract component type, or a conversion source is an abstract component type and a conversion destination is a specific component type.
  • the setting assigning means when the assignment definition for the field included in the component designated by the system definition includes a reference from another field in the designation of the component to be assigned, It may be verified that there is only one place where a specific component is specified.
  • the component may include information on the state and the state transition.
  • the information indicating the relationship between the components is changed from the state transition in one component to the state in the other component. It may be information indicating dependency on the.
  • the present invention is not limited to an IT system and can be suitably applied to design support when a system composed of a plurality of parts is constructed.

Abstract

システム構築支援システムは、構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するコンポネントを定義づける情報であるコンポネント定義であって、該フィールドの情報と、該フィールドに対応づけられる構成要素に対する設定に関する設定定義とを含みうるコンポネント定義を用いたコンポネントの指定と、フィールドに対する構成要素の割当定義とを少なくとも含むシステム定義を入力するシステム定義入力手段501と、システム定義およびコンポネント定義に基づいて、指定されたコンポネントのフィールドに構成要素を対応づけるとともに、フィールドに対する設定内容を、対応づけられた構成要素に反映する設定の付与処理を行う設定付与手段502とを備える。

Description

システム構築支援システム、方法および記憶媒体
 本発明は、システムの構築を支援するシステム構築支援システム、システム構築支援方法およびシステム構築支援プログラムが記録された記憶媒体等に関する。
 システムのコンポネント化とは、システムをより粗い抽象的な構成要素の集合として効率的に定義可能とする技術である。一般に、システムを構成するには細かい具体的な構成要素を多数記述する必要がある。しかしながら巨大なシステムや複数のシステムを俯瞰すると、同様の構成要素やその集まりが複数現れることがある。こうした構成要素群を、抽象的なパターンとして定義しこれを再利用可能とすることにより、構成要素の集まりを簡潔に記述できるようになる。このように再利用可能に抽象化された1つ以上の構成要素からなる構成要素群のパターンは、一般にコンポネントと呼ばれる。
 このようなコンポネントの組み合わせによってシステムを定義する仕組みを有していれば、コンポネントの組み合わせを変更するだけで、似て非なる多様なシステムを素早く確実に定義することができるようになる。例えば仮想マシン(以下VMと略記)、ミドルウェア(以下MWと略記)、アプリケーション(以下APPと略記)からなるシステムを定義したい場合を考える。このようなとき、VMの定義に必要な要素をVMコンポネント、MWの定義に必要な要素をMWコンポネント、APPの定義に必要な要素をAPPコンポネントとしてそれぞれ定義しておき、これら予め定義された要素群のコンポネントを必要に応じて組み合わせてシステム全体を定義する。ここで、例えばMWの部分だけ異なる種類のコンポネントに挿げ替えることにより、MWだけが異なるシステムの全体をわずかな変更により再定義できる。
 このようなシステムのコンポネント化を実現するためのコンポネントの記述に関する標準仕様として、非特許文献1がある。
 一般に、可能なコンポネントの組み合わせには限りがあり、正しい組み合わせが指定されなければ意味のあるシステム定義は完成しない。例えば上記のAPPがMW上でのみ動作可能である場合には、VMとAPPを直接組み合わせても意味のあるシステム定義は完成しない。非特許文献1に記載の仕様に沿ってコンポネントを定義することにより、可能なコンポネントの組み合わせを適切かつ統一的に記述できる。また、当該仕様に準拠したツールによってその組み合わせを管理したり適切さを検証したりすることができる。
 また、コンポネントの組み合わせを利用してシステムの配備に必要な情報を定義するための標準仕様として、非特許文献2がある。この仕様によれば、特定のコンポネントの組み合わせに対して、当該組み合わされたコンポネントを実体化して配備するための処理内容が合わせて定義され、定義された処理を呼び出すことで当該コンポネントの実体を配備することができる。当該コンポネントの組み合わせを、さらに別のコンポネントと組み合わせることも可能である。その際には、新たな組み合わせに対して、配備のための処理内容を定義するために、既に組み合わされているコンポネントに定義された処理を再利用することもできる。
M.Edwards, "Service Coponent Architecture(SCA)", [online], 2007, [2015年8月3日検索], インターネット<URL:http://www.oasis-opensca.org/sca> T.Binz, G.Breiter, F.Leyman, and T.Spatzier, "Portable cloud services using tosca", Internet Computing, IEEE, vol.16, no.3, 2012, p.80-85.
 しかしながら非特許文献2に記載の方法では、コンポネントの組み合わせを規定する度に、組み合わせにより定まるコンポネント間の関連性に基づく処理内容を定義する必要がある点が問題となる。例えば、上記のAPPとMWとVMからなるシステムの配備に必要な処理内容において、MWだけ異なる種類のコンポネントに挿げ替えた場合には、実施すべき処理内容を変更しなければならない場合がある。
 より簡素な例を図74に示す。図74は、コンポネントの組み合わせにより規定されるシステム定義の一例を示す説明図である。図中の3つの角丸の長方形はコンポネントを示している。本例のシステムは、あるAPPに対応したAPP1コンポネントと、あるMWに対応したMW1コンポネントと、あるVMに対応したVM1コンポネントの3つのコンポネントを有している。また、二重線はコンポネント間の連結を示している。各コンポネント内の長方形は、当該コンポネントが対応する構成要素としての配備処理を示している。例えば、図中のAPP1コンポネントには、対応するアプリケーションの配備処理に相当する構成要素“app”が定義されている。また、例えば、図中のMW1コンポネントには、ミドルウェアパッケージの配備処理(例えば、コンフィグレーションマネージメントシステムが提供する当該ミドルウェアのパッケージリソースのインストール処理等)に相当する構成要素“package”が定義されている。また、例えば、図中のVM1コンポネントには、VMの配備処理(例えば、起動処理等)に相当する構成要素“vm”が定義されている。
 ここで、図中の各構成要素の間にある点線の矢印は、当該構成要素間の依存性を示している。ここで依存性とは、あることをするためには別のあることをする必要がある、という二者間の関連性のうち事前の必要性を示す概念である。図の例では、“app”構成要素が“package”構成要素と“vm”構成要素に依存するため、“app”構成要素を配備(実行)する前に“package”構成要素と“vm”構成要素とが配備されなければならない。また、“package”構成要素が“vm”構成要素に依存するため、“package”構成要素を配備する前に“vm”構成要素が配備されなければならない。これらの依存性により、VMの起動、MVのインストール、APPの起動という正しい処理順序が導出される。このようなコンポネントを跨る依存性は、相手先のコンポーネントが決定して初めて指定が可能となる要素、すなわち特定のコンポネントの組み合わせに対して初めて指定が必要となる要素であり、コンポネントの組み合わせ定義に付加する形で定義されてきた。そのため、異なるコンポネントの組み合わせ定義においては、異なる依存性の指定が必要となる。
 図75は、コンポネントの組み合わせにより規定されるシステム定義の他の例を示す説明図である。図75には、図74においてMW1コンポネントが対応しているMWとは異なるMWを利用する場合に、当該MWに対応したMW2コンポネントを用いてシステム定義がされた例が示されている。MW1コンポネントからMW2コンポネントへの変更に伴い、APP1コンポネントの“app”構成要素の依存先が、MW1コンポネントの“package”構成要素から、MW2コンポネントが有する構成要素であり、当該MWの配備処理(例えば、サービス処理の起動等)に相当する“service”構成要素に変更されている。また、VM1コンポネントの“vm”構成要素に対して依存関係を有する構成要素が、MW1コンポネントの“package”構成要素であったものが、MW2コンポネントのpackage”構成要素に変更されている。
 このように、コンポネントの内部に踏み込んで依存関係が結ばれる仕様の場合、システム定義において一部のコンポネントを別のコンポネントに変更すると、差し替えられたコンポネントと依存関係を有していた他のコンポネントに対して同じような依存関係を示す設定を再度行わなければならず、再利用性が低いという問題があった。
 そこで、本発明は、コンポネントの組み合わせごとにその組み合わせに応じた設定を追加しなくてもよいなど、システム定義の容易性を向上させることが目的である。
 本発明によるシステム構築支援システムは、構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するコンポネントを定義づける情報であるコンポネント定義であって、定義対象とされるコンポネントが有するフィールドの情報であるフィールド定義と、フィールドに対応づけられる構成要素に対する設定に関する情報である設定定義とを含むことができるコンポネント定義を用いたコンポネントの指定と、コンポネントが有するフィールドに対する構成要素の割り当てに関する割当定義とを少なくとも含むシステム定義を入力するシステム定義入力手段と、システム定義およびコンポネント定義に基づいて、指定されたコンポネントのフィールドに具体的な構成要素を対応づけるとともに、フィールドに対して定義された設定内容を、フィールドに対応づけられた構成要素に反映することにより、対象システムを構成する構成要素に対する設定の付与を行う設定付与手段とを備えたことを特徴とする。
 本発明によるシステム構築支援方法は、情報処理装置が、構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するコンポネントを定義づける情報であるコンポネント定義であって、定義対象とされるコンポネントが有するフィールドの情報であるフィールド定義と、フィールドに対応づけられる構成要素に対する設定に関する情報である設定定義とを含むことができるコンポネント定義を用いたコンポネントの指定と、コンポネントが有するフィールドに対する構成要素の割り当てに関する割当定義とを少なくとも含むシステム定義を受け付けると、システム定義およびコンポネント定義に基づいて、指定されたコンポネントのフィールドに具体的な構成要素を対応づけるとともに、フィールドに対して定義された設定内容を、フィールドに対応づけられた構成要素に反映することにより、対象システムを構成する構成要素に対する設定の付与を行うことを特徴とする。
 本発明によるシステム構築支援プログラムが記録された記憶媒体には、コンピュータに、構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するコンポネントを定義づける情報であるコンポネント定義であって、定義対象とされるコンポネントが有するフィールドの情報であるフィールド定義と、フィールドに対応づけられる構成要素に対する設定に関する情報である設定定義とを含むことができるコンポネント定義を用いたコンポネントの指定と、コンポネントが有するフィールドに対する構成要素の割り当てに関する割当定義とを少なくとも含むシステム定義を受け付けると、システム定義およびコンポネント定義に基づいて、指定されたコンポネントのフィールドに具体的な構成要素を対応づけるとともに、フィールドに対して定義された設定内容を、フィールドに対応づけられた構成要素に反映することにより、対象システムを構成する構成要素に対する設定の付与を行う処理を実行させるコンピュータ・プログラムが記録される。
 本発明によれば、システム定義の容易性を向上させることができる。
第1の実施形態のシステム構築支援システムの構成例を示すブロック図。 GUIによるUbuntuコンポネントの定義例を示す説明図。 JSONによるUbuntuコンポネントの定義例を示す説明図。 システム定義入力部001に入力されるシステム定義の例を示す説明図。 JSONによるシステム定義の例を示す説明図。 システム構成出力部002が出力するシステム構成情報の例を示す説明図。 JSONによるシステム構成情報の例を示す説明図。 システム定義の他の例を示す説明図。 システム構成情報の他の例を示す説明図。 第1の実施形態の動作の一例を示すフローチャート。 第1の実施形態のシステム定義展開部のシステム定義展開プロセスを示すフローチャート。 第1の実施形態におけるシステム定義展開後の出力情報の例を示す説明図。 第1の実施形態の構成要素設定部の構成要素設定プロセスを示すフローチャート。 システム定義の他の例を示す説明図。 システム構成情報の他の例を示す説明図。 GUIによるOSポートの定義例を示す説明図。 JSONによるOSポートの定義例を示す説明図。 第2の実施形態における対象システムのGUIによる定義例を示す説明図。 JSONによるシステム定義の例を示す説明図。 第2の実施形態のUbuntuコンポネントのGUIによる定義例を示す説明図。 第2の実施形態のUbuntuコンポネントのJSONによる定義例を示す説明図。 第2の実施形態のTomcatコンポネントのGUIによる定義例を示す説明図。 第2の実施形態のTomcatコンポネントのJSONによる定義例を示す説明図。 第2の実施形態のTomcatコンポネントのGUIによる他の定義例を示す説明図。 第2の実施形態のTomcatコンポネントのJSONによる他の定義例を示す説明図。 第2の実施形態の動作の一例を示すフローチャート。 第2の実施形態のシステム定義展開部のシステム定義展開プロセスを示すフローチャート。 第2の実施形態のシステム定義展開部のコンポネント読み込みプロセスを示すフローチャート。 第2の実施形態におけるコンポネント読み込み後のデータ例を示す説明図。 第2の実施形態におけるシステム定義展開後のデータ例を示す説明図。 第2の実施形態の構成要素設定部の構成要素設定プロセスを示すフローチャート。 第2の実施形態における参照解決後のフィールド間の関係性を示す説明図。 第2の実施形態における参照解決後のある構成要素のデータ例を示す説明図。 第2の実施形態における設定付与後の構成要素間の関係性を示す説明図。 第2の実施形態における設定付与後のある構成要素のデータ例を示す説明図。 第2の実施形態のGUIによるシステム構成情報の例を示す説明図。 第2の実施形態のJSONによるシステム構成情報の例を示す説明図。 第3の実施形態のOSポートのGUIによる定義例を示す説明図。 第3の実施形態のOSポートのJSONによる定義例を示す説明図。 第3の実施形態のシステム定義の例を示す説明図。 第3の実施形態のGUIによるUbuntuコンポネントの定義例を示す説明図。 第3の実施形態のGUIによるTomcatコンポネントの定義例を示す説明図。 第3の実施形態におけるシステム定義展開後のデータ例を示す説明図。 第4の実施形態のフィールドおよび構成要素のGUIによる表現例を示す説明図。 第4の実施形態のGUIによるシステム定義の例を示す説明図。 第4の実施形態のGUIによるOSポートの定義例を示す説明図。 第4の実施形態のJSONによるOSポートの定義例を示す説明図。 第4の実施形態のGUIによるWASポートの定義例を示す説明図。 第4の実施形態のJSONによるWASポートの定義例を示す説明図。 第4の実施形態のUbuntuコンポネントのGUIによる定義例を示す説明図。 第4の実施形態のUbuntuコンポネントのJSONによる定義例を示す説明図。 第4の実施形態のTomcatコンポネントのGUIによる定義例を示す説明図。 第4の実施形態のTomcatコンポネントのJSONによる定義例を示す説明図。 第4の実施形態のWebAppコンポネントのGUIによる定義例を示す説明図。 第4の実施形態のWebAppコンポネントのJSONによる定義例を示す図。 第4の実施形態における参照解決後のフィールド間の関係性を示す説明図。 第4の実施形態における参照解決後の構成要素間の関係性を示す説明図。 第4の実施形態における参照解決後のある構成要素のデータ例を示す説明図。 第4の実施形態における設定付与後の構成要素間の関係性を示す説明図。 第4の実施形態のGUIによるシステム構成情報の例を示す説明図。 第4の実施形態の構成要素生成結果のJSONによる記載例を示す説明図。 第4の実施形態におけるシステム定義の他の例を示す説明図。 第4の実施形態におけるシステム定義の他の例を示す説明図。 第4の実施形態のGUIによるCentOSコンポネントの定義例を示す説明図。 第4の実施形態のJSONによるCentOSコンポネントの定義例を示す説明図。 第4の実施形態のGUIによるJettyコンポネントの定義例を示す説明図。 第4の実施形態のJSONによるJettyコンポネントの定義例を示す説明図。 第5の実施形態のGUIによる構成要素のおよび構成要素間の関連性の表現例を示す説明図。 第5の実施形態の構成要素の型定義のJSONによる表現例を示す説明図。 第5の実施形態の構成要素のJSONによる表現例を示す説明図。 第5の実施形態のWASポートのJSONによる定義例を示す説明図。 本発明の概要を示すブロック図。 本発明によるシステム構築支援システムの他の構成例を示すブロック図。 コンポネントの組み合わせにより規定されるシステム定義の一例を示す説明図。 コンポネントの組み合わせにより規定されるシステム定義の他の例を示す説明図。
実施形態1.
 以下、本発明の実施形態を図面を参照して説明する。図1は、第1の実施形態のシステム構築支援システムの構成例を示すブロック図である。第1の実施形態のシステム構築支援システム100は、コンポネントを用いて示されるシステムの構成を、具体的な構成要素による構成に変換して出力する構成定義機能を提供するシステムであって、図1に示されるように、システム定義展開部101と、構成要素設定部102とを備える。
 システム定義展開部101は、ネットワークなどを介して間接的にまたは直接、システム定義入力部001および部品定義記憶部003と接続されている。また、構成要素設定部102は、ネットワークなどを介して間接的にまたは直接、システム構成出力部002と接続されている。システム定義展開部101および構成要素設定部102は、例えば、プログラムに従って動作するCPU等によって実現される。
 システム定義入力部001は、後述するコンポネント定義によって定義づけられるコンポネントを用いて構築対象のシステムの構成が表現されたシステム定義を入力する。システム定義入力部001は、例えば、マウスやキーボードなどの各種入力装置や、ネットワークを介して情報を入力する任意のサーバ装置等であってもよい。
 システム構成出力部002は、システム定義入力部001が入力したシステム定義によって示されるシステムの構成を具体化して出力する。システム構成出力部002は、例えば、ディスプレイ装置などの各種出力装置や、ネットワークを介して情報を出力する任意のサーバ装置等であってもよい。
 また、本発明において、コンポネントは、構成要素に関する情報を格納するフィールドを少なくとも有する。ここでフィールドとは、構成要素の情報が代入されるための枠を表す概念である。本発明において、フィールドに構成要素に関する情報を格納することにより、該フィールドに対して、最終的に具体的な一の構成要素を対応づける。なお、個々のフィールドは、複数種類の構成要素に対応可能なことが好ましい。ここで、1つのフィールドが複数種類の構成要素に対応可能であるとは、これら構成要素の共通する要件が抽出されるなど、構成要素の抽象化がなされていることを意味している。なお、コンポネントがどのようなフィールドを有するかは、当該コンポネントを定義づけるコンポネント定義によって定まる。コンポネント定義は、定義対象とされたコンポネントが有するフィールドに関する情報であるフィールド定義を含む。さらに、コンポネント定義は、必要に応じて、フィールドに格納される構成要素に対する設定に関する情報である設定定義を含んでいてもよい。
 本実施形態において、システム定義入力部001が入力するシステム定義は、より具体的には、コンポネント定義を用いたコンポネントの指定と、該コンポネントが有するフィールドに対する構成要素の割り当てに関する割当定義とを少なくとも含む情報とする。一方、システム構成出力部002が出力する情報は、システムの構成を、具体的な構成要素によって表現した情報である。このように、本実施形態のシステム構築支援システム100は、抽象化された構成要素群のパターンであるコンポネントを用いて対象システムの構成が示されたシステム定義を受け付けて、具体的な構成要素によって表現した情報に変換して出力する機能を有する。以下、システム構成出力部002が出力する情報を、システム構成情報という場合がある。
 部品定義記憶部003は、システムを構成する構成要素を抽象化して再利用可能な部品として定義づけた情報である部品定義を記憶する。ここで、部品は、上述したコンポネントを含む概念である。なお、本発明でも、抽象化された構成要素群(上述した例でいう配備処理など)のパターンをコンポネントという。本発明では、具体的な構成要素に対応しない、例えばコンポネント同士を接続するための端子機能を抽象化した概念であるポート等を含む概念として、「部品」という表現を用いている。部品定義記憶部003は、例えば、記憶装置によって実現される。
 システム定義展開部101は、システム定義入力部001を介して利用者からシステム定義を受領し、これを具体的なシステム定義に変換する。ここで、具体的なシステム定義は、入力されたシステム定義に対して、対象システムを構成するコンポネントが有するフィールドに対応づけられる構成要素が解決されている(具体的に指定されている)とともに、コンポーネント間の関係性が解決されている(対象システムを構成するコンポネントが有するフィールドと関連のあるフィールドが特定されている)情報をいう。
 構成要素設定部102は、システム定義展開部101から具体的なシステム定義を受領し、対象システムを構成する構成要素に対して、属性値や、他の構成要素との関連性などの設定を付与する。
 以下では、システムの構成として、対象システムの構築処理を定義する場合を例に用いて説明する。本実施形態では、対象システムはITシステムであることを想定している。
また、以下では、ITシステムの構築処理に含まれる任意のプログラム単位を構成要素とし、それらの組み合わせによって構成されるシステムの構築を支援する例を示すが、構成要素は、構築処理に限られず、あらゆるシステムを構成する任意の単位であればよい。
 本実施形態において、コンポネント定義は、当該コンポネント定義の識別子(以下、idという)と、当該コンポネント定義が定義対象とするコンポネントが有する1または複数のフィールドに関する情報であるフィールド定義とを含む。
 また、フィールド定義は、当該フィールド定義の名前と、当該フィールドの初期値(当該フィールドに格納される構成要素のインスタンスの定義)と、設定定義とを有していてもよい。ここで、設定定義は、当該フィールドに格納される構成要素に対する各種設定に関する情報(設定内容や設定方法等)である。設定定義としては、例えば、該構成要素に設定される属性値や、該構成要素と他の構成要素等との間の関連性などを指定できる。例えば、関連性として、特に、他の構成要素に対する依存性を指定できる。また、属性値としては、属性を識別する識別子と該属性に対する値とを指定できる。
 図2は、GUI(Graphical user interface)によるUbuntuコンポネントの定義例を示す説明図である。ここで、Ubuntuコンポネントは、オペレーティングシステム(OS)の一種である“Ubuntu”に対応したコンポネントを想定している。図2には、“Ubuntu_1”という識別子が付されたコンポネント定義の一例が示されている。図2に示すコンポネント定義“Ubuntu_1”には、“file”フィールドと“boot”フィールドという2つのフィールドが定義されている。ここで“file”や“boot”は、定義対象とされたコンポネントにおけるフィールドのidとしての名前を表している。本例において、“file”フィールドは、あるファイルの作成処理といった、“Ubuntu”上におけるファイル構築に関する構成要素に対応したフィールドを想定している。また、“boot”フィールドは、OSの起動処理といった、“Ubuntu”の起動に関する構成要素に対応したフィールドを想定している。また、“file”フィールドには、設定定義として、当該フィールドに格納される構成要素の“mode”という属性の値を“644”とする旨や、当該フィールドに格納される構成要素が、“boot”フィールドに格納される構成要素に対して関連性を有する旨が指定されている。また、“boot”フィールドには、当該フィールドの初期値として、構成要素“boot1”が指定されている。
 以下では、コンポネント定義のGUIによる表現例として、コンポネントを角丸長方形で示す。また、フィールドを点線の長方形で示す。また、構成要素を実線の長方形で示す。また、属性値をフィールド付きの吹き出しで示す。また、関連性をフィールドから他のフィールドへの点線の矢印で示す。また、コンポネントを角丸長方形の内側右上に付された文字列は、当該コンポネント定義のidを示している。また、フィールドを表す点線の長方形の枠外に付された文字列は、該フィールドに付されたid(名前)を示している。
このような、コンポネントやフィールドや構成要素や属性値や関連性の指定に対応する各々のGUI部品を用意して、任意のコンポネント定義をユーザが入力できるようにしてもよい。
 ここで、図2において、“Ubuntu_1”コンポネント定義に、“file”フィールドから“boot”フィールドへの関連性が指定されていることの意味を補足する。ファイルの作成処理は当然ながらそれが実行されるOSが起動していなければ実行できないため、処理の実行順序としては、OSの起動処理の後にファイルの作成処理が実行されなければならない。“file”フィールドから“boot”フィールドの関連性とは、このような処理の実行に関する順序関係の制約を、”file”フィールドの”boot”フィールドへの依存性として定義している。
 ところで、コンポネント定義は、GUIによる表記以外にも、JSON(Java Script(登録商標)Object Notation)といった言語を利用するなどして、テキスト形式による記述も可能である。
 図3は、JSONによるUbuntuコンポネントの定義例を示す説明図である。図3に示す例は、図2に示したコンポネント定義をJSONによって定義した例である。図3には、JSONによるシステム定義が、“種別”要素と、“id”要素と、“フィールド”要素という3つの要素を含む例が示されている。ここで、“種別”要素は、当該一連の情報が何に関する情報であるかを定義するものであり、本例では、コンポネント定義である旨を示す“コンポネント定義”が指定されている。また、“id”要素は、当該コンポネント定義のidを定義するものであり、本例では、“Ubuntu_1”が定義されている。また、“フィールド”要素は、当該コンポネント定義が定義するコンポネントが有するフィールドを定義するものであり、本例では、“file”フィールドと、“boot”フィールドの2つのフィールドが定義されている。
 また、フィールド定義において、さらに“初期値”と“設定”という2つの要素が定義されている。なお、“file”フィールドの初期値は空であり、“boot”フィールドの“初期値”には構成要素“boot1”が定義されている。より具体的には、“boot”フィールドの初期値定義における“種別”要素に基づき、当該フィールドに代入される“値”として、idを“boot1”とする構成要素が定義されている。ここで、フィールドの“初期値”定義における“値”要素は、初期値定義における“種別“要素および当該種別の内容に応じて定義される。ここでは“種別”要素が“新規定義”であるため、“値”要素が合わせて定義される。“値”要素の内容としては、構成要素が定義される。構成要素の定義方法としては、図3に示すように構成要素のidを指定してもよい。ここでは、そのようなidとして“boot1”が定義されている。
 また、図3には、フィールド定義の“設定”要素として、“属性”要素と“依存性”要素を含む例が示されている。例えば、図3に示した例では、“file”フィールドの“設定”要素に、“属性”要素と“依存性”要素が含まれている。一方、“boot”フィールドの“設定”要素には、何も定義されていない。本例の”属性”要素は、当該フィールドに格納される構成要素の属性値を定義づけるものであり、その定義方法としては、例えば、属性の識別子と、属性値のペアを指定してもよい。また、”依存性”要素は、当該フィールドに格納される構成要素が有する、他の構成要素への依存性を定義づけるものであり、その定義方法としては、依存先とされる構成要素を、当該構成要素が格納される他のフィールドの参照を表す形式で指定してもよい。なお本例では、ドルマーク“$”を付加したフィールド名によって、そのフィールドの参照を表現している。
 上記のようなコンポネント定義は予め、外部の部品定義記憶部003などに読み出し可能に記録されていてもよい。例えば、共通モデルを開発する開発者などが予め複数の案件に横断的に共通的に利用されるモデルを、構成要素群のパターンとして定義し、そのような定義を示す情報をコンポネント定義として部品定義記憶部003に記憶しておいてもよい。
 また、図4は、システム定義入力部001に入力されるシステム定義の例を示す説明図である。なお、図4は、システム定義をGUIによって表現した例である。システム定義は、例えば、当該システム定義が示すシステムの識別子(名前)と、該システムを構成する1つ以上のコンポネントを指定する情報と、該コンポネントに対する各種設定に関する情報とを有していてもよい。図4に示す例では、“system1”システムの構成として、当該“system1”が、コンポネント定義“Ubuntu_1”によって定義づけられるコンポネントのインスタンスの1つである“ubuntu1”コンポネントを有すること、および該“ubuntu1”コンポネントが有する“file”フィールドに対する構成要素の代入に関する情報が指定されている。ここでは“ubuntu1“コンポネントの“file”フィールドに対して、 “file1”構成要素が代入される旨が指定されており、かつ該“file1“構成要素は、“name”属性の値として“"file1.txt”を有する旨が指定されている。
 なお、システム定義についても、コンポネント定義と同様に、JSONによる定義が可能である。
 図5は、JSONによるシステム定義の例を示す説明図である。図5に示す例は、図4に示したシステム定義をJSONによって定義した例である。図5に示すシステム定義は、“種別”要素と、“id”要素と、“コンポネント”要素という3つの要素を含んでいる。システム定義の場合、“種別”要素には、例えば、当該一連の情報がシステム定義である旨を示す“システム定義”が指定される。また、“id”要素には、当該システム定義が定義するシステムのidが指定される。また、“コンポネント”要素には、当該システム定義が定義するシステムが有するコンポネントが指定される。本例では、“ubuntu1”コンポネントが1つだけ指定されている。なお、2以上のコンポネントを定義する場合には、“コンポネント”要素内に、コンポネントの名前と対応づけて当該コンポネントの情報を列挙すればよい。
 本例では、コンポネントの情報として、“型名”と“代入”という2つの要素が定義されている。“型名”要素には、コンポネントの有り様を規定するコンポネント定義の識別子としてのidが指定される。ここでは“Ubuntu_1”が指定されている。また“代入”要素には、コンポネント定義によって示される当該コンポネントが有するフィールドに対する、構成要素の代入が定義される。
 また、図6は、システム構成出力部002が出力するシステム構成情報の一例を示す説明図である。図6には、GUIによるシステム構成情報の表示例が示されている。なお、図6は、図5に示したシステム定義に基づく構成要素の生成結果の例でもある。図6に示すように、システム構成情報は、対象システムを構成する1または複数の構成要素について、これらの構成要素を特定する情報とともに、属性値や他の構成要素との関連性の情報が付与されたものであってもよい。図6に示す例によれば、対象システム“system1”は、“file1”と“boot1”という2つの構成要素を含み、“file1”構成要素は、“name”属性の値が“file1.txt”であって、“mode”属性の値が“644”であり、かつ“boot1”情報要素に対して依存性を有する旨が示されている。
 また、図7は、システム構成出力部002が出力するシステム構成情報の他の例を示す説明図である。図7には、JSONによるシステム構成情報の例が示されている。なお、図7も、図5に示したシステム定義に基づく構成要素の生成結果の例である。
 なお、本明細書に基づく手法によれば、システム定義が当該システムの構築方法以外のシステム構成を定義してもよく、またコンポネント定義が関連性の定義として依存性以外の関連性を定義してもよい。
 図8は、システム定義の他の例を示す説明図である。また、図9は、図8に示すシステム定義に基づくシステム構成情報の例を示す説明図である。なお、図8および図9のいずれもGUIによる表示例である。
 図8に示すシステム定義は、対象システムが、コンポネント定義“DBApplication”によって定義づけられるコンポネントのインスタンスの1つである“dBApplication”コンポネントを有し、かつその“logic”フィールドに構成要素“logic1”が代入されることを定義している。なお、図中のコンポネント定義“DBApplication”によれば、当該コンポネント定義によって定義づけられる“dBApplication”コンポネントが、“logic”フィールドと、“dBConnection”フィールドという2つのフィールドを有し、“dBConnection”フィールドは“dBConnection1”で初期化され、かつ“dBConnection”フィールドに格納される構成要素が“logic”フィールドに格納される構成要素に対して関連性を有することがわかる。ここで、“dBConnection”フィールドに格納される構成要素と“logic”フィールドに格納される構成要素との関連性は、“logic”フィールドとして表現された特定の処理機能が“dBConnection”フィールドとして表現されたデータベースコネクションを利用することを示している。その結果、図9に示すように、単に機能やオブジェクト間の利用関係が導出される。このように、構成要素間の関連性は、利用関係を示すものであってもよい。
 ただし、以降、本明細書では特に断らない限り、システム定義が対象システムの構築処理を定義する場合を例に用いて説明する。
[動作の説明]
 次に、本実施形態の動作を説明する。図10は、本実施形態のシステム構築支援システム100の動作の一例を示すフローチャートである。図10に示す例では、まず、システム定義展開部101が、システム定義入力部001からシステム定義を受け取ると(ステップS11)、これを読み込む。そして、システム定義展開部101は、システム定義が参照するコンポネント定義があれば、これを部品定義記憶部003から取得して、システム定義を展開して各フィールドに格納される構成要素を解決して、具体的なシステム定義を生成する(ステップS12)。なお、ステップS12で生成された具体的なシステム定義は、構成要素設定部102へ送信される。
 続いて、構成要素設定部102は、システム定義展開部101から受け取った具体的なシステム定義に含まれるフィールドに対応づけられた構成要素の各々に対し、これを格納するフィールドに定義された設定を具体化しつつ付与する(ステップS13)。ここで、設定の具体化とは、例えば、フィールドに対して指定されていた依存性や初期値の値を、当該他のフィールドに格納される構成要素の情報に基づいて、具体的な構成要素に落としこんで設定する処理をいう。
 最後に、構成要素設定部102は、設定が付与された構成要素からなるシステムの構成を示すシステム構成情報を、システム構成出力部002に出力する(ステップS14)。
 以下、ステップS12とステップS13の動作についてさらに詳細に説明する。
 図11は、本実施形態のシステム定義展開部101によるシステム定義展開プロセス(図10のステップS12)のより詳細な動作例を示すフローチャートである。システム定義展開部101は、システム定義入力部001から受け取ったシステム定義を読み込み(ステップS121)、システム定義内にコンポネントを指定する箇所が見つかった場合(ステップS122のYes)には、その定義を部品定義記憶部003等から取得する(ステップS123)。そして、得られたコンポネント定義に基づいて、当該コンポネントに対して値(構成要素)の代入を行い具体化する(ステップS124)。
 例えば図5に例示した“system1”のシステム定義を読み込む場合であれば、“ubuntu1”コンポネントの定義として“Ubuntu_1”が指定されているため、これを部品定義記憶部003から取得する。部品定義記憶部003は、例えば、コンポネント定義のidを受付けて該当するコンポネント定義を返信する機能を備えていればよく、一例として、httpサーバやファイルサーバやDBサーバにより実現されていてもよい。この例では、システム定義展開部101は、部品定義記憶部003にid=“Ubuntu_1”を指定したコンポネント定義要求を送信し、図3に示すコンポネント定義を取得する。そして、システム定義展開部101は、システム定義や取得したコンポネント定義に当該コンポネントが有するフィールドに対する値(構成要素)の代入が定義されていれば、その値を代入する。例えば、図5に例示した“system1”定義の場合、コンポネント定義の参照元であるシステム定義で定義された“file”フィールドへの“file1”構成要素の代入と、コンポネント定義で定義された“boot”フィールドへの“boot1”構成要素の代入とを実施し、その結果得られたコンポネントを“ubuntu1”コンポネントとする。
 全てのコンポネント定義の参照が解決された場合(ステップS122のNo)には、システム定義展開部101は、具体化したシステム定義を出力して(ステップS125)、システム定義展開プロセスを終了する。
 以上の結果、例えば、図12に示すような具体的なシステム定義が生成される。図12はJSONによる、システム定義展開後の出力情報としての具体的なシステム定義の例を示す説明図である。本例では、具体的なシステム定義であることを示すものとして、”種別”要素に、“システム定義2”が設定されている。なお、この時点では、属性値や依存性の設定はまだコンポネントのフィールドに対して設定されている。
 また、図13は、本実施形態の構成要素設定部102による構成要素設定プロセス(図10のステップS13)のより詳細な動作例を示すフローチャートである。構成要素設定部102は、システム定義展開部101が生成した具体的なシステム定義に含まれる全てのフィールドを対象に、以下の3つのステップを実行する。すなわち、まず、対象としたフィールドに格納された構成要素を取得し(ステップS131)、当該構成要素に対して当該フィールドに設定された設定を付与する(ステップS132)。ステップS132では、例えば、構成要素に対して属性値などが設定される。ここで、構成要素の取得および構成要素に対する設定の付与は、具体的には、対象システムにおける当該構成要素の定義情報を生成または取得し、その定義情報に、フィールドに設定された設定内容を反映(値の代入等)することであってもよい。このとき、構成要素設定部102は、フィールドの設定定義内に他のフィールドの参照がある場合には、参照先の指定を参照先のフィールドに格納された構成要素のidに変換した上で、設定内容を反映する(ステップS133)。
 例えば図12に例示した具体的なシステム定義が入力された場合、当該システム定義から“ubuntu1”コンポネントの“file”フィールドと“boot”フィールドとが抽出される。そして、それらフィールドから“file1”構成要素と“boot1”構成要素が取得される。
そして、“file1”構成要素に対して、“file”フィールドに設定された設定内容が付与される。ここでは、“file1”構成要素に対して、“mode”属性の値として“644”が追加されるとともに、“file1”構成要素に対して、“boot”フィールドに対応する具体的な構成要素である“boot1”に対する依存性が付与される。結果として、図6や図7に示すようなシステム構成情報が生成される。
[効果の説明]
 本実施形態によれば、コンポネントという抽象化された構成要素群のパターンを利用するとともに、そのようなコンポネントの定義情報として、当該コンポネントが対応している構成要素に関する情報として、当該構成要素が共通に有する設定(属性値や他の構成要素との間の依存関係)を持たせることによって、個々の構成要素に対する設定のうちの再利用性がある設定をコンポネントの情報として閉じ込めることができる。また、本実施形態によれば、抽象化された構成要素の情報を格納するフィールドという枠に対して、その中身の構成要素に対する設定を定義しておき、構成要素の組み合わせが確定した後で、中身の構成要素に対して、枠に設定された設定を反映する仕組みを有しているので、組み合わせが変更される度に同様の設定を設定しなおすといった手間を省略できる。このように、既に定義されたコンポネントの設定を利用することで、構成要素の組み合わせを変更しても、関係する構成要素に対する設定の追加が不要となりシステム定義が容易化される。
 例えば、図5に示すシステム定義によって示される“system1”とは異なる構成のシステムを、“system2”として定義しなおす場合を考える。このとき、例えば、図14に示すようなシステム定義が入力されたとする。図14は、システム定義の他の例を示す説明図である。図14に示す例では、“system1”と同様、コンポネント定義“Ubuntu_1”によって定義づけられる“ubuntu1”コンポネントを有している。しかし、“ubuntu1”コンポネントの“file”フィールドへ代入する構成要素が異なっている。具体的には、“file2”というidを有する構成要素を代入する旨、およびその構成要素は“name”属性に“file2.py”という値と、“mode”属性に“755”という値をもっていることが定義されている。
 このようなシステム定義が入力された場合、例えば、図15に示すようなシステム構成情報が出力される。図15に示すシステム構成情報によれば、システム“system2”は、“boot1”構成要素と、“file2”構成要素とを備え、“file2”構成要素が、“name”属性として“file2.py”と“mode”属性として“755”とを有するとともに“boot1”構成要素に対して依存性を有することがわかる。
 “Ubuntu_1”というコンポネント定義を予め定義しておくことで、システム“system1”のシステム構成情報に、“boot1”構成要素の存在と、“file1”構成要素の存在と、“file1”構成要素に対して“mode”属性値として値“664”と、“boot1”に対する依存性の情報が自動で付加される。このように、システム定義として、コンポネント定義の指定と当該システムにおける固有の指定といったわずかな記載をするだけで、より多くの情報を盛り込むことが可能となり、出力量に対する必要な記述量が削減されることがわかる。
また、“Ubuntu”上で使用するファイルの種別を変更するなどシステム構成の一部を変更する場合であっても、“Ubuntu_1”というコンポネント定義が既に定義済みであれば、“file”フィールドに対する値の代入を設定するだけで、“Ubuntu”上において“file2”ファイルの構築処理が有するブート処理への依存性を設定しなおす必要なしに、システム構成を変更できる。このように、本実施形態によれば、構成要素間の依存性に対しても再利用性を持たせることができる。
実施形態2.
 次に、本発明の第2の実施形態について説明する。第2の実施形態におけるシステム構築支援システム100の構成は、システム定義展開部101と構成要素設定部102の動作が異なる点を除いて第1の実施形態の構成と同様である。以下、第1の実施形態と同様の部位には同一の記号を付し、説明を省略する。
 本実施形態では、部品定義に、コンポネント定義の他、ポートを定義づける情報であるポート定義が含まれる点、コンポネント定義がポートの指定を含みうる点、システム定義がワイヤの指定を含みうる点が異なる。ここで、ポートとは、コンポネント間の接続関係を規定するための端子を表す概念であり、ワイヤとはポート間の接続を表す概念である。
本実施形態のシステム定義展開部101および構成要素設定部102は、これらポートおよびワイヤの情報を扱う点が第1の実施形態と異なる。
 本発明において、ポートは、コンポネントと同様に、1つまたは複数のフィールドを有する。ポートが有するフィールドは、当該ポートを含むコンポネントが他のコンポネントを接続する際に必要となる構成要素の情報を格納するためのものである。
 ポート定義は、当該ポート定義のidと、当該ポート定義が定義づけるポートが有する1つまたは複数のフィールドを規定するフィールド定義とを含む。
 図16は、本実施形態におけるGUIによるOSポートの定義例を示す説明図である。
ここで、OSポートは、Ubuntuコンポネントなど一般にOSに対応するコンポネントが他のコンポネントと接続するための接続処理を抽象化したものを想定している。図16には、“OS_2”というidが付されたポート定義の一例が示されている。図16に示すポート定義“OS_2”は、“file”フィールドと“package”フィールドという2つのフィールドを有する。ここで、“file”フィールドは、一般的なOS上において他のコンポネントとの接続に必要なファイルの作成処理といったファイル構築に関する構成要素に対応したフィールドを想定している。また、“package”フィールドは、OSの下で動作するミドルウェアのコンフィグレーションマネージメントシステムが提供するパッケージ化されたリソース等に対応したフィールドを想定している。なお、当該ポート定義においてこれら2つのフィールドには、設定定義および初期値は特に指定されていない。
 以下では、GUIによる表現例として、ポート定義におけるポートをベース形で表現するものとする。
 また、図17は、本実施形態におけるJSONによるOSポートの定義例を示す説明図である。図17に示す例は、図16に示したポート定義をJSONによって定義した例である。図17に示すように、JSONによるOSポートのポート定義は、“種別”要素にポート定義である旨を示す“ポート定義”が指定されている点を除き、図3に示すコンポネント定義と基本的に同様である。すなわち、“種別”要素と、“id”要素と、“フィールド”要素とを有し、“id”要素には当該ポート定義の識別子を指定し、“フィールド”要素には、当該ポート定義によって定義されるポートが有するフィールドの情報が列挙される構成であってもよい。
 また、本実施形態において、コンポネント定義は、当該コンポネント定義のidと、当該コンポネント定義によって定義されるコンポネントが有するフィールドの定義と、当該コンポネント定義によって定義されるコンポネントが有するポートの指定とを含んでいてもよい。ここで、ワイヤは常に同じポート定義によって定義づけられるポートの組を接続するものとしてもよい。
 また、ポートは、サービスポートとリファレンスポートという2種類のポートに分けられていてもよい。サービスポートは、接続を受け入れる側の端子を示す概念であり、一方のリファレンスポートとは接続を要求する側の端子を示す概念である。そのような場合において、ワイヤは、同じポート定義によって定義づけられるポートであって、かつサービスポートとリファレンスポートの組を接続し、サービスポート同士やリファレンスポート同士は接続しないようにしてもよい。
 また、本実施形態では、フィールドの初期値定義に、種別として、新規定義の他に、他のフィールドの参照を指定できるものとする。これは、コンポネント同士を接続する過程で、異なるコンポネントのフィールド間を、構成要素を伝搬させることにより、必要な設定を網羅させるためである。
 図18は、本実施形態におけるシステム定義の例を示す説明図である。図18には、GUIによるシステム定義の例が示されている。図18に示すシステム定義によれば、対象システム“system2”が、コンポネント定義“Tomcat_2”によって定義づけられるコンポネントのインスタンスである“tomcat2”コンポネントと、コンポネント定義“Ubuntu_2”によって定義づけられるコンポネントのインスタンスである“ubuntu2”コンポネントとを有していることがわかる。また、“tomcat2”コンポネントが有する“os”リファレンスポートと、“ubuntu2”コンポネントが有する“os”サービスポートとがワイヤによって接続されていることがわかる。ここで、Tomcatコンポネントの一例である“tomcat2”は、Webアプリケーションの一種である“Tomcat”に対応したコンポネントを想定している。本例のコンポネント定義“Tomcat_2”および“Ubuntu_2”については後述する。
 以下では、GUIによる表現例として、サービスポートを、対向する辺のうちの一方が山形、他方が谷型の形状(以下、矢羽型という)で表現し、リファレンスポートをホームベース型で表現し、ワイヤを2重線で表現するものとする。
 また、図19は、本実施形態におけるJSONによるシステム定義の例を示す説明図である。図19に示す例は、図18に示したシステム定義をJSONによって定義した例である。図19に示すシステム定義には、“種別”要素、“id”要素、“コンポネント”要素に加えて、“ワイヤ”要素が含まれている。ここで、“ワイヤ”要素には、接続元のポートを指定する“接続元”要素と、接続先のポートを指定する“接続先”要素が含まれる。本例では、“接続元”要素には、“$ubuntu2.os”が指定されており、“接続先”要素には、“$tomcat2.os”が指定されている。
 利用者は、このように既に定義されたコンポネント定義を利用してコンポネントを指定した上で、当該コンポネントが有するポート同士をワイヤを用いて接続する旨を指定することにより、複数のコンポネントが協働するようなシステムであっても簡易に定義することができる。
 図20は、本実施形態におけるUbuntuコンポネントのGUIによる定義例を示す説明図である。図20には、“Ubuntu_2”というidが付されたコンポネント定義の一例が示されている。図20に示すコンポネント定義“Ubuntu_2”によれば、当該コンポネント定義によって定義づけられるコンポネントは、“file”フィールドと“package”フィールドと、“boot”フィールドという3つのフィールドを有し、かつポート定義“OS_2”によって定義づけられる “os”ポートをサービスポートとして有することが定義されている。また、“file”フィールドと“package”フィールドの初期値定義として、“os”ポートの“file”フィールドと“package”フィールドの参照がそれぞれ定義されている。一方、“boot”フィールドの初期値定義として、“boot2”構成要素が新規に作成される旨が定義されている。また、“file”フィールドと“package”フィールドには、それぞれ“boot”フィールドに対する依存性が定義されている。
 以下、GUIによる表現例として、フィールドの参照による値の定義を、参照する側のフィールドに付した黒丸から参照先のフィールドへの実線の矢印で表現するものとする。
 また、図21は、本実施形態におけるUbuntuコンポネントのJSONによる定義例である。図21に示す例は、図20に示したコンポネント定義をJSONによって定義した例である。図21に示すコンポネント定義には、“種別”要素、“id”要素、“フィールド”要素に加えて、サービスポートを指定するための“サービスポート”要素が含まれている。本例では、“サービスポート”要素において、ポート定義“OS_2”によって定義づけられるポートである1つの“os”ポートが指定されている。また、本例では、“Ubuntu_2”が定義するコンポネントが有する“file”フィールドと“package”フィールドの初期値設定において、“種別”が“参照”となっているとともに、“参照先”として“$os.file”と“$os.package”がそれぞれ指定されている。ここでは、これらの指定は“os”サービスポート内の“file”フィールドと“package”フィールドをそれぞれ示している。このように、ある要素が内包する要素を表現する方法として、これらの要素名をドット“.”で連結する表現方法を採用することができる。なお、上位のコンポネント要素が内包する要素を示す場合、例えば、ポート内のフィールドが本体のコンポネントのフィールドを示す場合、上位の要素を指す表現として2個のドット“..”で表現する方法を採用することができる。
 また、図22は、本実施形態におけるTomcatコンポネントのGUIによる定義例である。図22には、“Tomcat_2”というidが付されたコンポネント定義の一例が示されている。図22に示すコンポネント定義によれば、当該コンポネント定義によって定義づけられるコンポネントは、“configFile”フィールドと“package”フィールドという2つのフィールドを有することがわかる。また、リファレンスポートとして、ポート定義“OS_2”によって定義づけられる“os”ポートを有することがわかる。また、本例では、“Tomcat_2”が定義するコンポネントが有する“configFile”フィールドと“package”フィールドの初期値設定において、“tomcatConfig2”構成要素と”tomcatPackage2”構成要素がそれぞれ新規定義されている。さらに、“configFile”フィールドに対して、“package”フィールドに対する依存性が定義されている。また、“os”ポート内の“file”フィールドと“package”フィールドに対して、当該ポートを有するコンポネントの“configFile”フィールドと“package”フィールドからの参照による値の代入が定義されている。
 図23は、本実施形態におけるTomcatコンポネントのJSONによる定義例を示す説明図である。図23に示す例は、図22に示したコンポネント定義をJSONによって定義した例である。図23に示すコンポネント定義には、“種別”要素、“id”要素、“フィールド”要素に加えて、リファレンスポートを指定するための“リファレンスポート”要素が含まれている。本例では、“リファレンスポート”要素において、ポート定義“OS_2”によって定義づけられる “os”ポートが定義されている。また、本例では、“Tomcat_2”が定義するコンポネントが有する“configFile”フィールドと“package”フィールドの初期値設定において、“tomcatConfig2”構成要素と”tomcatPackage2”構成要素がそれぞれ新規定義されている。さらに、“configFile”フィールドには、“package”フィールドに対する依存性が定義されている。また、“os”ポート内の“file”フィールドと“package”フィールドに対して、当該フィールドの値の代入に関する設定として、当該ポートを有する本体のコンポネントが有する“configFile”フィールドと“package”フィールドの内容が参照される旨が定義されている。
 ところで、図24は、本実施形態におけるTomcatコンポネントの他の定義例を示す説明図である。図24には、GUIによるコンポネント定義の例が示されている。図24に示すコンポネント定義“Tomcat_2x”では、本体のコンポネントには直接フィールドを持たせず、本体のコンポネントが有するリファレンスポートが持つフィールドに直接値を代入している。なお、この場合も、コンポネントは、自身が有するポートを介して間接的にフィールドを有していると解釈できる。なお、本例では、リファレンスポート内のフィールドへの値の代入は、他のフィールドの参照によるものではなく、構成要素の新規定義によって指定されている。また、依存性に関して、“os”ポート内の“file”フィールドに格納されている“tomcatConfig2”構成要素に対して、同じポート内の“package”フィールドへの依存性が指定されている。このように、依存性はフィールド内の構成要素を直接指定して設定することも可能であるが、このような依存性の場合、当該コンポネントを再利用する際に他の構成要素が代入されて元々の構成要素が上書きされた場合などには消失することとなる。なお、上書きされた構成要素においても同様の依存性を保持させたい場合には、“os”ポート内の“file”フィールドに対して、同じポート内の“package”フィールドの参照を用いて当該フィールドに格納される構成要素への依存性を指定すればよい。
 また、図25は、本実施形態におけるJSONによるTomcatコンポネントの他の定義例を示す説明図である。図25に示す例は、図24に示したコンポネント定義をJSONによって定義した例である。なお、図25には、“os”ポート内の“file”フィールドに対して、同じポート内の“package”フィールドの参照を用いて当該フィールドに格納される構成要素への依存性を指定する例が示されているが、直接“tomcatpackage2”構成要素を指定することも可能である。この場合、例えば、「“依存性”:[“tomcatpackage2”]のように指定してもよいし、直接構成要素を指定することを表す記号として、“#”などを導入し、“#tomcatpackage2”のように指定してもよい。
[動作の説明]
 次に、本実施形態の動作を説明する。図26は、本実施形態のシステム構築支援システム100の動作の一例を示すフローチャートである。以下では、第1の実施形態と同様の動作については同一の記号を付し、説明を省略する。
 本実施形態の動作は、システム定義展開部101による具体的なシステム定義を生成するシステム定義展開プロセス(ステップS22)と、構成要素設定部102による構成要素設定プロセス(ステップS23)とが第1の実施形態の動作と異なる。
 図27は、本実施形態のシステム定義展開部101によるシステム定義展開プロセスのより詳細な動作例を示すフローチャートである。本実施形態のシステム定義展開プロセスにおいては、システム定義展開部101は、コンポネント定義の読み込みプロセス(ステップS221)の内容と、全てのコンポネントを読み込んだ後にワイヤ定義に従ってポートを連結する動作(ステップS222)が加わっている点が、第1の実施形態と異なる。
ここで、ポートを連結するとは、連結対象とされたポート間に接続関係があることを構成情報として保持することに加えて、連結対象とされたポート間においてフィールドの値を移譲可能にすること、より具体的には、システム定義、コンポネント定義およびポート定義に従って構成要素の情報を相手先ポートに伝搬させる(移し替える)処理を行うことをいう。
 また、図28は、本実施形態のシステム定義展開部101によるコンポネント定義読み込みプロセス(図27のステップS221)のより詳細な動作例を示すフローチャートである。図28に示す例では、システム定義展開部101は、システム定義が参照するコンポネント定義があれば、これを部品定義記憶部003等から読み込む(ステップS2211)。そして、当該コンポネント定義が参照するポート定義があれば(ステップS2212のYes)、これを部品定義記憶部003等から読み込む(ステップS2213)。そして、システム定義が示すコンポネントが有するフィールドの各々に、コンポネント定義およびポート定義に従って値(情報要素)の代入を行ってコンポネントが有する情報要素を具体化することにより、具体的なシステム定義を生成する(ステップS2214)。
 例えば、上述したポート定義“OS_2”と、コンポネント定義“Ubuntu_2”と、コンポネント定義“Tomcat_2”とが部品定義記憶部003に保持されている状態で、図18に例示したシステム定義が入力された場合を考える。本例では、システム定義展開部101は、当該システム定義で示される“system2”システムが内包するコンポネントの定義である“Ubuntu_2”や“Tomcat_2”を取得する。また、システム定義展開部101は、これらのコンポネント定義中に“os”ポートのポート定義として“OS_2”ポート定義が参照されていることを受けて、当該ポート定義を取得する。システム定義展開部101は、さらに取得したポート定義に基づいて、コンポネントおよびポートが有するフィールドに対して値(構成要素)の代入を実施する。このとき、代入定義として“参照”が設定されていた場合、参照先で定義された値を代入する。この例では、“system2”の“tomcat2”コンポネントの“os”リファレンスポートにおいて、本体のコンポネントの“configFile”フィールドと“package”フィールドへの参照による値(構成要素)の代入が定義されている。
その結果、ポート定義“OS_2”によって定義づけされる”os”ポートは、“file”フィールドに本体コンポネントの“tomcat2.configFile”フィールドへの参照が代入され、かつ“package”フィールドに“tomcat2.package”フィールドへの参照が代入された上で、“tomcat2”コンポネントの“os”リファレンスポートとして設定される。
 また、この例では、“system2”の“ubuntu2”コンポネントの“file”フィールドに対して、“os”サービスポートの“file”フィールドからの参照による初期値の設定が定義されているとともに、“ubuntu2”コンポネントの“package”フィールドに対して、“os”サービスポートの“package”フィールドからの参照による初期値の設定が定義されている。その結果、本体である“ubuntu2”コンポネントの“file”フィールドには、当該コンポネントが有する“os”サービスポートの“file”フィールドへの参照が設定される。また、同様に、“ubuntu2”コンポネントの“package”フィールドには、当該コンポネントが有する“os”サービスポートの“package”フィールドへの参照が設定される。
 システム定義展開部101は、全てのポート定義の参照が解決された場合には(ステップS2212のNo)、コンポネント定義の読み込みプロセスを終了する。
 さらに、システム定義展開部101は、全てのコンポネント定義の参照が解決された場合には(図27のステップS122のNo)、システム定義に含まれるワイヤ定義に従ってポートを連結する(ステップS222)。ポートの連結処理として、本実施形態では、リファレンスポート内の各フィールドに格納された値を対応するサービスポート内のフィールドに伝搬させる(移し替える)。これによりワイヤで接続された2つのポートを1つにまとめる。
 例えば、コンポネント定義およびポート定義の読み込みの結果、図29に示すような、サービスポートのフィールドを除き、すべてのフィールドが解決された具体的なシステム定義が生成されたとする。本実施形態では、システム定義展開部101が、ポートの連結処理において、システム定義に含まれるワイヤの設定に基づいて、接続元である“os”リファレンスポートのフィールドの値を、接続先である“os”サービスポートの対応するフィールドの値に移す処理を行う。これにより、接続要求元である“tomcat2”コンポネントの“os”リファレンスポートの“file”フィールドおよび“package”フィールドに格納される値が、接続要求先である“ubuntu2”コンポネントの“os”サービスポートの“file”フィールドおよび“package”フィールドに移される。本例では、例えば“tomcat2.os.file”フィールドに設定された値として“tomcat2.configFile”フィールドへの参照が、“ubuntu2.os.file”フィールドに移される。なお、“package”フィールドについても同様である。
 次に、システム定義展開部101は、全てのワイヤに対してポートの連結処理を完了すると、具体化したシステム定義を出力して(ステップS125)、システム定義展開プロセスを終了する。
 図30は、ポート連結後のフィールド間の関係を示す説明図である。図30では、上述したシステム定義に基づいて、ポート連結後の具体的なシステム定義におけるフィールドのみを抽出して、それらの関係を示している。なお、図30に示す例では、“tomcat2”コンポネントの“os”リファレンスポートのフィールドの値は、接続先の“ubuntu2”コンポネントの“os”サービスポートの対応するフィールドにそのまま反映されているとして図示省略しているが、“tomcat2”コンポーネントの“os”リファレンスポートを残しておいてもよい。その場合、例えば、“tomcat2.configFile”フィールドと“ubuntu2.os.file”フィールドとの間に“tomcat2.os.file”フィールドを設け、“ubuntu2.os.file”フィールドの参照先を、“tomcat2.os.file”フィールドとすればよい。なお、“package”フィールドについても同様である。いずれの記述であっても、次の構成要素設定プロセスで多段の参照設定が解決されることにより、当該参照関係にある一連のフィールドに対応する構成要素としては、最終的な参照先とされるフィールドに格納される値に具体化される。
 また、図31は、本実施形態の構成要素設定部102による構成要素設定プロセス(図26のステップS23)のより詳細な動作例を示すフローチャートである。構成要素設定部102は、システム定義展開部101が生成した具体的なシステム定義内の全てのフィールドについて第1の実施形態と同様の処理を実行する。ただし、本実施形態は、各フィールドに対応づけられる構成要素が、参照による複製である場合がある点が異なる。この点に関して、本実施形態の構成要素設定部102は、まず各フィールドに格納された値を確認し、値が構成要素を直に指定するものであれば単にそれを取得する。一方、値が他のフィールドへの参照を指定するものであれば、参照先のフィールドに格納された構成要素の情報を複製して、参照元のフィールドに格納した上で、最終的に対象フィールドに格納された情報を取得する(ステップS231)。このとき、参照先のフィールドに格納されている値がさらに他のフィールドへの参照を指定するものである場合には、さらに該参照先である他のフィールドに格納された構成要素の情報を複製して参照元のフィールドに格納する処理を再帰的に実施し、最終的な参照先とされるフィールドに格納された構成要素の情報を、各参照元のフィールドに構成要素を格納する。例えば2段の参照が設定されていた場合、大元の構成要素の複製の複製が作成されることになる。ここで構成要素の複製は、例えば、構成要素の情報として、適宜重複しないように生成された識別子と、複製元の構成要素の識別子の要素を持たせてもよい。
 図32は、図30に示した具体的なシステム定義から参照による構成要素を解決した後のフィールド間の関係性を示す説明図である。図32において、内部にidを持たない構成要素(図中の実線の長方形のうち網掛けがされているもの)は、矢印が示す構成要素の複製であることを示しており、構成要素の複製から構成要素、あるいは複製から複製に引かれた実線の矢印は複製元の構成要素を示している。
 また、図33は、参照解決後のある構成要素のデータ例を示す説明図である。図33には、図32における“ubuntu2”コンポネントの“os”サービスポートの“file”フィールド(すなわち“ubuntu2.os.file”フィールド)内に格納される、構成要素の情報の例が示されている。ワイヤに基づくポートの連結処理と、参照の解決処理とを経た結果、図33に示すように、当該“file”フィールドは、構成要素の情報として、複製元の構成要素の識別子(本例では、“tomcatConfig2”)と、当該フィールドに格納される複製された構成要素の仮の識別子(本例では、“tomcatConfig2_1”)とを含む情報を保持していてもよい。なお、本例では、複製された構成要素の仮の識別子として、大元の構成要素の名前+“_”(アンダーバー)+数字を付すことにより、当該構成要素が複製であることを表現している。
 続いて、構成要素設定部102は、各フィールドが保持する構成要素に対する設定に関する情報(設定定義)に基づき、当該フィールドに格納された構成要素または複製された構成要素に対して設定を付与する(ステップS232)。
 図34は、図32に示したフィールド間の関係性を基に、設定の付与を実施した後の構成要素間の関係性を示す説明図である。図34に示すように、フィールドに設定されていた内容がそのまま、当該フィールドが格納する構成要素に対して付与されている。なお、図34において、構成要素の複製を表す網掛け長方形の上部に付した名前は当該複製のidを示している。また、図35は、本実施形態における設定付与後のある構成要素のデータ例を示す説明図である。図35に示す例は、図34における“ubuntu2”コンポネントの“file”フィールド(すなわち“ubuntu2.file”フィールド)に格納される、構成要素の複製の情報の例である。
 ここで、フィールド内の構成要素に対する設定内の参照定義は、当該フィールドを定義しているコンポネント定義内において指定されているため、当該参照が定義されたコンポネントをスコープとして参照先を探索すればよい。例えば、“system2”において、“ubuntu2”コンポネントの“file”フィールドに対して定義された依存性の参照先の定義が“$boot”であったとする。この場合、“ubuntu2“コンポネント内で“boot”フィールドを探索すればよい。その結果、ここでは“ubuntu2.boot”フィールドが発見される。
 各フィールド内の構成要素に対する設定の付与が完了すると、構成要素設定部102は、フィールド内の構成要素に対する設定内の参照を解決するとともに、複製に付与された設定を全て複製元となる構成要素に集約する(ステップS233)。
 本実施形態の構成要素設定部102は、構成要素の複製に対して行われた設定を複製元に集約する集約処理を行う。例えば、図32に示した情報を基に、設定を付与した結果、図34に示すような構成要素間の関連性が構築されたとする。この場合、“ubuntu2.file”フィールドに格納されている複製“tomcatConfig2_2”が持つ、“ubuntu2.boot”フィールドに格納されている構成要素“boot2”への依存性は、大元の複製元である“tomcatConfig2”構成要素に集約される。同様に、“ubuntu2.package”フィールドに格納されている複製“tomcatPackage2_2”が持つ、“ubuntu2.boot”フィールドに格納されている構成要素“boot2”への依存性は、大元の複製元である“tomcatPackage2”構成要素に集約される。
 結果として、図36や図37に示すようなシステム構成情報が生成される。なお、図36は、GUIによるシステム構成情報の例を示す説明図であり、図37は、JSONによるシステム構成情報の例を示す説明図である。図36および図37はいずれも同じ構成を示している。図36および図37によれば、“system2”が、“tomcatConfig2”と“tomcatPackage2”と“boot2”という3つの構成要素を備えており、“tomcatConfig2”構成要素は、“tomcatPackage2”構成要素と“boot2”構成要素にそれぞれ依存性を有しており、tomcatPackage2”構成要素は“boot2”構成要素に依存性を有していることがわかる。
[効果の説明]
 本実施形態によれば、複数のコンポネントで定義された設定の全てを構成要素に集約的に付与可能となり、またフィールドへの構成要素の代入に関する定義までが再利用可能に抽象化されることで、ユーザはワイヤを定義するだけでより効率的にシステムの構成を定義できる。より具体的には、本実施形態では、フィールドへの構成要素の代入に関する設定定義に、他のフィールドの参照である旨を指定できるようにした(代入の抽象化要素を追加した)ことで、フィールドに対して設定されている属性値や依存性といった設定内容を、参照関係に基づいて伝搬させていくことができる。また、このような参照関係は、コンポーネントの組み合わせが決定して初めて確定されるものであるが、本実施形態では参照関係の設定をフィールドを用いて行い、かつポートとワイヤという抽象化された部品を使って伝搬可能に結びつける仕組みとなっている。このように代入の抽象化と設定対象の抽象化とを組み合わせることで、再利用性を犠牲にせずに、設定の伝搬が可能になっている。このような構成を備えているので、本実施形態によれば、より効率的にシステム構成を定義できる。
 なお、本実施形態では、システムが“Ubuntu”を用いる場合を例に説明したが、“Ubuntu”に代えて”CentOS”を用いることも可能である。その場合、“Ubuntu2”とほぼ同様の定義を“CentOS_2”として作成し、当該コンポネント定義“CentOS_2”によって定義づけられるコンポーネントのインスタンスをシステム定義で指定すればよい。なお、“boot”構成要素にOSを区別する情報が含まれている必要がある場合には、“Ubuntu2”コンポネント定義や、“CentOS_2”コンポネント定義において、“boot”フィールドの設定定義にname属性に対する設定を設けて、“ubuntu”や“centOS”などの値を指定されることなどが挙げられる。
 OSコンポネントが変更となった場合でも、“os”ポートなどの共通のポート定義を利用してポートを定義しておけば、ワイヤの定義を変更するだけで変更後のコンポネント間の接続に必要な設定を、各フィールドに格納される構成要素またはその複製に伝搬させることができるので、より効率的にシステム構成を定義できる。
実施形態3.
 次に、本発明の第3の実施形態について説明する。第3の実施形態におけるシステム構築支援システム100の構成は、システム定義展開部101と構成要素設定部102の動作が異なる点を除いて第2の実施形態の構成と同様である。以下、第1~2の実施形態と同様の部位には同一の記号を付し、説明を省略する。
 本実施形態では、ポートが有するフィールドに対して、アクセプトフィールドとプロバイドフィールドという種別を設ける点が第2の実施形態と異なる。ここで、アクセプトフィールドは、リファレンスポートからサービスポートへの構成要素の伝搬を扱うフィールドである。このため、アクセプトフィールドに対しては、ポート間の接続による伝搬を除き、当該ポートをリファレンスポートとして持つコンポネントからのみ値の代入を受け付ける。一方、プロバイドフィールドは、サービスポートからリファレンスポートへの構成要素の伝搬を扱うフィールドである。このため、プロバイドフィールドに対しては、ポート間の接続による伝搬を除き、当該ポートをサービスポートとして持つコンポネントからのみ値の代入を受け付ける。第3の実施形態のシステム定義展開部101や構成要素設定部102は、これら種別に対応した定義情報を扱う点が第2の実施形態と異なる。
 図38は、本実施形態におけるGUIによるOSポートの定義例を示す説明図である。
図38には、“OS_3”という識別子が付されたポート定義の一例が示されている。図38に示すポート定義“OS_3”では、当該ポート定義によって定義づけられるポートが有するフィールドとして、“file”フィールドと“package”フィールドという2つのアクセプトフィールドと、“boot”フィールドという1つのプロバイドフィールドとが定義されている。また、本例では、“file”フィールドと“package”フィールドのそれぞれに対して、“boot”フィールドへの依存性が定義されている。
 図38に示すように、本明細書では、GUIによるフィールドの表現例として、アクセプトフィールドを右側を凸にした矢羽型で表し、プロバイドフィールドを左側を凸にした矢羽型で表すものとする。
 また、図39は、本実施形態におけるJSONによるOSポートの定義例を示す説明図である。図39に示す例は、図38に示したポート定義をJSONによって定義した例である。図39に示すように、JSONによるOSポートのポート定義は、“種別”要素が”ポート定義”となっている点と、“フィールド要素”が、“アクセプトフィールド”要素と、“プロバイドフィールド”要素とに分かれている点を除き、コンポネント定義と基本的に同様でよい。本例のポート定義における内容は、図38と同様である。すなわち、図39に示すポート定義には、“種別”要素としてポート定義である旨が定義され、“id”要素として“OS_3”が定義され、“アクセプトフィールド”要素として“file”フィールドおよび“package”フィールドを備える旨、“プロバイドフィールド”として“boot”フィールドを備える旨が定義されている。
 ここで、アクセプトフィールドである“file”フィールドおよび“package”フィールドには、当該ポートをリファレンスポートとして有するコンポネントの対応するフィールドから値が代入されることを想定している。一方、プロバイドフィールドである“boot”フィールドには、当該ポートをサービスポートとして有するコンポネントの対応するフィールドから値が供給されることを想定している。これは、当該ポート定義によって定義されるポートをサービスポートとして持つコンポネントは、当該ポート定義によって定義されるポートをリファレンスポートとして持つコンポネントに対してホストの関係にあることを想定していることを表している。ポートが有するフィールドに、アクセプトフィールドとプロバイドフィールドという区別を設けることにより、第2の実施形態においてコンポネント内で定義していたポートにおけるフィールド間の関係性を、当該ポート内で定義することができるので、当該ポートとともに依存性に関する定義も再利用に供することができる。
 以下、本実施形態におけるOSポートの使用例について説明する。図40は、本実施形態におけるGUIによるシステム定義の例を示す説明図である。図40に示すシステム定義によれば、対象システム“system3”が、コンポネント定義“Tomcat_3”によって定義づけられるコンポネントのインスタンスである“tomcat3”コンポネントと、コンポネント定義“Ubuntu_3”によって定義づけられるコンポネントのインスタンスである“ubuntu3”コンポネントとを有し、かつ“tomcat3”コンポネントが有する“os”リファレンスポートと“ubuntu3”コンポネントが有する“os”サービスポートとがワイヤによって接続されていることがわかる。なお、コンポネント定義“Tomcat_3”および“Ubuntu_3”については後述する。
 図41は、本実施形態におけるGUIによるUbuntuコンポネントの定義例を示す説明図である。図41には、“Ubuntu_3”という識別子が付されたコンポネント定義の例が示されている。図41に示すコンポネント定義によれば、当該コンポネント定義によって定義づけられるコンポネントは、“file”フィールドと“package”フィールドと“boot”フィールドという3つのフィールドをもち、さらに、サービスポートとして、ポート定義“OS_3”によって定義づけられる1つのポートが“os”ポートをもつことがわかる。
また、“file”フィールドと“package”フィールドの初期値定義として、“os”ポートの“file”フィールドと“package”フィールドへの参照がそれぞれ定義されている。一方、“boot”フィールドの初期値定義として、“boot3”構成要素が新規に作成される旨が定義されているとともに、“os”ポートの“boot”フィールドに対して本体のコンポネントである当該コンポネントの“boot”フィールドの参照が定義されている。
 また、図42は、本実施形態におけるGUIによるTomcatコンポネントの定義例である。図42には、“Tomcat_3”という識別子が付されたコンポネント定義の例が示されている。図42に示すコンポネント定義によれば、当該コンポネント定義によって定義づけられるコンポネントは、“configFile”フィールドと“package”フィールドをもち、さらに、レファレンスポートとして、ポート定義“OS_3”によって定義づけられる1つの“os”ポートを有していることがわかる。また、本例では、“configFile”フィールドと“package”フィールドの初期値設定において、“tomcatConfig3”構成要素と”tomcatPackage3”構成要素がそれぞれ新規定義されている。さらに、“configFile”フィールドには、“package”フィールドに対する依存性が定義されている。ここで、本例の“os”ポートにおけるプロバイドフィールドである“boot”フィールドについては、当該ポートがリファレンスポートとしてコンポネント定義“Tomcat_3”によって定義づけられるコンポネントに内包されることから本体コンポネントから値の代入を受け付けないことと、ワイヤによるポートの連結処理によっても値が代入されない(当該ポートはリファレンスポートであって他のサービスポートへ移譲する側の立場である)ことから、使用されないフィールドであるとして記載を省略している。
 なお、図40~図42に示す例は、第2の実施形態で示した定義と、idを除き、展開後には同じ構成となる定義の例である。ただし、図41に示すコンポネント定義“Ubuntu_3”は、OSポート内の“boot”フィールドに対して、当該フィールドの値の代入に関する設定として、本体コンポネントの“boot”フィールドへの参照を定義している点と、当該コンポネントのフィールド間での依存性が省略されている点とが、第2の実施形態におけるコンポネント定義“Ubuntu_2”と異なる。
 また、図43は、ポート連結後のフィールド間の関係を示す説明図である。図43では、図40に示したシステム定義に基づいて、ポート連結後の具体化されたシステム定義におけるフィールドを抽出して、それらの関係を示している。なお、第2の実施形態の例では、“ubuntu2.file”フィールドと“ubuntu2.package”フィールドとからそれぞれ“ubuntu2.boot”フィールドへの依存性が設定されていたが(図30参照)、本例では、“os.file”フィールドと“os.package”フィールドとからそれぞれ“os.boot”フィールドへの依存性が設定されている点が大きく異なっている。なお、第3の実施形態における最終的なシステム構成情報は、図36に示す第2の実施形態のシステム構成情報と同様である。
[動作の説明]
 次に、本実施形態の動作を説明する。本実施形態の動作は、システム定義展開部101と構成要素設定部102が、ポートのアクセプトフィールドとプロバイドフィールドとを扱う点を除いて第2の実施形態と同様である。
 すなわち、システム定義が参照するコンポネント定義およびポート定義に基づき、システム定義が示すコンポネントが有するフィールドの各々に値の代入を行って具体化されたシステム定義を生成する際に、対象ポートがリファレンスポートかサービスポートかに応じて、当該ポートが有するフィールドへの値の代入に制限をかける。例えば、“system3”の“tomcat3”コンポネントの“os”リファレンスポートの“file”フィールドおよび“package”フィールドにおいて、それぞれ本体コンポネントの“configFile”フィールドおよび“package”フィールドへの参照が定義されている。本例のシステム定義展開部101は、当該“os”ポートの“file”フィールドおよび“package”フィールドがアクセプトフィールドであるため、当該“os”ポートをリファレンスポートとして有する本体コンポネントからの値の代入を許可する。その結果、“file”フィールドに本体のコンポネントの“tomcat3.configFile”フィールドへの参照である旨が代入され、“package”フィールドに“tomcat3.package”フィールドへの参照である旨が代入された、ポート定義“OS_3”によるポートのインスタンス“os”ポートが、“tomcat3”コンポネントの“os”リファレンスポートとして設定される。
 また、この例では、“system3”の“ubuntu3.file”フィールドに対して、“ubuntu3.os.file”フィールドからの参照による初期値の設定が定義されているとともに、“ubuntu3.package”フィールドに対して、“ubuntu3.os.package”フィールドからの参照による初期値の設定が定義されている。その結果、本体のコンポネントである“ubuntu3”コンポネントの“file”フィールドには、当該本体コンポネントが有する“os”サービスポートの“file”フィールドに格納される値が代入される。また、同様に、“ubuntu2”コンポネントの“package”フィールドには、当該本体コンポネントが有する“os”サービスポートの“package”フィールドに格納される値が代入される。ただし、この時点では、参照先である“os”サービスポートの“file”フィールドおよび“package”フィールドに値が代入されていないため、該フィールドへの参照である旨が代入される。また、本例では、“ubuntu3.os.boot”フィールドに対して、“ubuntu3.file”フィールドからの参照による代入の設定が定義されている。システム定義展開部101は、当該“os”ポートの“boot”フィールドがプロバイドフィールドであるため、当該“os”ポートをサービスポートとして有する本体コンポネントからの値の代入を許可する。その結果、ポート定義“OS_3”によるポートのインスタンス“os”ポートであって、“boot”フィールドへの依存性を有する“file”フィールドおよび“package”フィールドと、“ubuntu3.boot”フィールドへの参照である旨が代入された“boot”フィールドとを有する“os”ポートが、“ubuntu3”コンポネントの“os”サービスポートとして設定される。その後のポート連結処理は第2の実施形態と同様である。
[効果の説明]
 本実施形態によれば、あるポートをリファレンスポートとして持つコンポネントが持つ構成要素と、サービスポートとして持つコンポネントが持つ構成要素との間の関連性に関する設定(例えば、“os”ポートの“file”フィールドと“package”フィールドに対する“boot”フィールドへの依存性の設定等)をポート内で定義でき、これを当該ポートと共に再利用できることにより、より効率的にシステム定義を記述できる。すなわち、抽象化された依存性という設定をポート内で完結させることでより再利用性を高めることができる。
実施形態4.
 次に、本発明の第4の実施形態について説明する。第4の実施形態におけるシステム構築支援システム100の構成は、システム定義展開部101と、構成要素設定部102の動作が異なる点を除いて第3の実施形態の構成と同様である。以下、第1~3の実施形態と同様の部位には同一の記号を付し、説明を省略する。
 本実施形態では、構成要素の型を扱う点が第1~第3の実施形態と異なる。以下では、構成要素の型の種類として、当該構成要素の目的に必要な全ての情報要素を持つ具体的な構成要素である具体構成要素と、その一部の情報要素のみを持つ抽象的な構成である抽象構成要素の2種類を扱う。これらの構成要素の型を扱うために、本実施形態のフィールドや構成要素は、“型名”の情報をもつ。そして、システム定義展開部101や構成要素設定部102は、これらの“型名”に応じた処理を行う。
 図44は、本実施形態におけるGUIによるフィールドおよび構成要素の表現例を示す説明図である。図44には、“file”フィールドに、“OSFile”型と“FileUbuntu”型という2種類の型が設定された例が示されている。このうち“OSFile”型の“file”フィールドは、様々な種類のOS向けの“file”構成要素となることを意図した抽象構成要素型の例であり、“FileUbuntu”型の“file”フィールドは“Ubuntu”という特定のOS向けの“file”構成要素を扱うことを意図した具体構成要素型の例である。また、“file1”構成要素は、抽象構成要素を表し、“file2”構成要素は具体構成要素を表している。
 以下では、GUIによる表現例として、フィールドの型名を、当該フィールド名とコロン“:”で区切って併記するものとする。なお、構成要素の型名については当該構成要素を格納するフィールドの型と同じ場合には特に記載しないものとする。また、抽象構成要素型のフィールドを背景が白の点線の長方形で示す。また、具体構成要素型のフィールドを背景が斜線パターンの点線の長方形で示す。また、抽象構成要素型の構成要素を背景が白の実線の長方形で示す。また、具体構成要素型の構成要素を背景が黒の長方形で示す。
 以下、具体的な例を用いて構成要素の型の使用方法について説明する。図45は、本実施形態におけるGUIによるシステム定義の例を示す説明図である。図45に示すシステム定義は、対象システム“system4”が、コンポネント定義“WebApp_4”によって定義づけられるコンポネントのインスタンスである“webApp4”コンポネントと、コンポネント定義“Tomcat_4”によって定義づけられるコンポネントのインスタンスである“tomcat4”コンポネントと、コンポネント定義“Ubuntu_4”によって定義づけられるコンポネントのインスタンスである“ubuntu4”コンポネントを有することを定義している。また、“webApp4”コンポネントの“was”ポートと“tomcat4”コンポネントの“was”ポートが接続されるとともに、“tomcat4”コンポネントの“os”ポートと“ubuntu4”コンポネントの“os”ポートが接続されることを定義している。ここで、WebAppコンポネントの一例である“webApp4”は、Web Application Server(以下、WebAppという)の機能に対応したコンポネントを想定している。また、WASポートの一例である“was”ポートは、WebAppの機能に関するポートであることを想定している。
 また、図46は、本実施形態におけるGUIによるOSポートの定義例を示す説明図である。また、図47は、図46に示すポート定義のJSONによる定義例を示す説明図である。なお、図46および図47に示すポート定義はいずれも同じ構成を示している。また、図46および図47に示すポート定義が定義づけるポートの構成は、各フィールドが型名の情報をもつ点を除いて、図38および図39に示すポート定義“OS_3”が定義づけるポートの構成と同様である。図46および図47に示すポート定義“OS_4”によれば、当該ポート定義によって定義づけられるポートは、“OSFile”という型名の抽象構成要素型の“file”フィールドをアクセプトフィールドとして有している。また、同ポートは、“OSPackage”という型名の抽象構成要素型の“file”フィールドをアクセプトフィールドとして有している。また、同ポートは、“OSBoot”という型名の抽象構成要素型の“boot”フィールドをプロバイドフィールドとして有している。そして、“file”フィールドと“package”フィールドに対して“boot”フィールドへの依存性が定義されている。なお、JSONによる例では、型名が抽象構成要素型か具体構成要素型かまでは示されていないが、各フィールドの型名に対応づけて、当該型が抽象構成要素型か具体構成要素型かの情報が別途保持されているものとする。
 また、図48は、本実施形態におけるGUIによるWASポートの定義例を示す説明図である。また、図49は、図48に示すポート定義のJSONによる定義例を示す説明図である。図48および図49に示すポート定義“WAS_4”によれば、当該ポート定義によって定義づけられるポートは、“War”という型名の抽象構成要素型の“war”フィールドをアクセプトフィールドとして有し、“OSPacage”という型名の抽象構成要素型の“package”フィールドをプロバイドフィールドとして有している。また、“war”フィールドに対して“package”フォールドへの依存性が定義されている。ここで、“War”型の“war”アクセプトフィールドは、WebAppのプログラム等をアーカイブしたWARファイルの構成要素を格納することを想定している。また、“OSPackage”型の“package”プロバイドフィールドは、当該“war”フィールドに格納される構成要素をホストとするWebAppのインストール処理を構成要素として格納することを想定している。
 また、図50は、本実施形態におけるGUIによるUbuntuコンポネントの定義例を示す説明図である。図50には、“Ubuntu_4”というidが付されたコンポネント定義の例が示されている。図50に示すコンポネント定義は、idと、各フィールドが型の情報を持つ点と、本体のコンポネントがOSポートから値を参照する際に変換処理が定義されている点とが図41に示す第3の実施形態のUbuntuコンポネントの定義と異なっている。本例のコンポネント定義では、当該コンポネントが備える“OS_4”型の“os”サービスポートの“file”フィールドおよび“package”フィールドの値を参照して、本体コンポネントの“file”フィールドおよび“package”フィールドに値(構成要素)を複製するに当たり、単に構成要素を複製するのではなく、当該構成要素を適切な具体構成要素型の構成要素に変換して格納するための指定が追加されている。なお、“ubuntu4.os.boot”フィールドに対する“ubuntu4.boot”フィールドへの参照設定に関して、参照先である“ubuntu4.boot”フィールドの“BootUbuntu”型は、代入先である“ubuntu4.os.boot”フィールドの“OSBoot”型の派生型であるため、通常の参照設定により伝搬されるものとしている。
 以下、このような具体構成要素への変換を伴う参照を変換呼出しという。また、以下では、変換呼出しを、図50に示すような、黒丸から参照先(変換元)のフィールドへと接続される2重線の矢印で表現するものとする。なお、図50には、変換方法の指定方法までは例示されていないが、GUIによって変換呼出しが指定された場合に、当該変換呼出しの詳細を定義する別画面等が表示されるなどして、ユーザにより変換呼び出しの詳細情報が入力できるものとする。
 また、図51は、本実施形態におけるJSONによるUbuntuコンポネントの定義例を示す説明図である。図51に示す例は、図50に示したコンポネント定義とほぼ同様の内容をJSONによって定義した例である。図51に示すコンポネント定義“Ubuntu_4”は、第3の実施形態のコンポネント定義“Ubuntu_3”と比較して、“フィールド”要素に、格納可能な構成要素の型名の定義が追加されているとともに、“初期値”設定の種別に“変換呼出し”が追加されている。さらに、コンポネント定義“Ubuntu_4”は、初期化設定の種別が“変換呼出し”である場合に、“初期値”設定に“変換方法”要素と“引数”要素とを含んでいる。また、当該コンポネント定義は、“id”要素、“ポート”要素(“サービスポート”要素または“リファレンスポート”要素)と、“フィールド”要素に加えて、“変換”の要素を有する。また、“変換”要素における各々の要素である変換定義は、変換要素名に対応づけて、“戻り値型名”、“引数”、“属性割当て”の3つの要素を含む。ここで、“戻り値型名”には、当該変換の結果として受け取る構成要素の型名を指定する。“引数”には、変換対象となる構成要素を格納するフィールドの名前に対応づけて、当該構成要素の型名を指定する。“属性割当て”には、変換後の構成要素に新規に割り当てる属性値があれば、その定義方法を指定する。“属性割当て”の指定方法の一例として、上記の“引数”で指定した変換元の構成要素を参照し、その属性値を用いることができる。例えば、“変換”要素に含まれる変換定義“convertFile”は、“file”フィールドに格納される“OSFile”型の“file”構成要素を、“FileUbuntu”型の構成要素に変換する定義である。その際の“属性割当て”として、“file”フィールドに格納される変換後の構成要素の“name”属性値として、変換前の“OSFile”型の“file”構成要素の“name”属性の値がそのまま割り当てられる旨が定義されている。また、変換呼出しが設定されている“file”フィールドの“初期値”設定には、“変換呼出し”である旨とともに、“変換方法”設定として“変換”要素のうちのいずれかの変換方法定義が指定されている。また、“引数”設定として、“os”ポートの“file”フィールドが指定されている。これは、変換方法である“convertFile”に渡される引数すなわち変換元の構成要素として、“os.file”フィールドに格納される“file”構成要素を用いることを意味している。
 このように、構成要素の値が“変換呼出し”である場合、“種別”には変換呼出しである旨が指定され、“変換方法”には、同定義内の変換定義の名前が指定され、“引数”には変換対象となる構成要素が指定されてもよい。
 なお、図51に示すように、変換呼出しにおける変換方法の指定には、例えば先頭にアンドマーク“&”を付加した変換名によって表現することができる。
 また、図52は、本実施形態におけるGUIによるTomcatコンポネントの定義例を示す説明図である。図52には、“Tomcat_4”というidが付されたコンポネント定義の例が示されている。図52に示すコンポネント定義によれば、当該コンポネント定義によって定義づけられるコンポネントが、“OSPackage”型の“package”フィールドと、ポート定義“OS_4”によって定義づけられる“os”リファレンスポートと、ポート定義“WAS_4”によって定義づけられる“was”サービスポートを有することが定義されている。また、該コンポネントにおいて、“os”リファレンスポートの“package”フィールドと“was”サービスポートの“package”フィールドはともに、本体のコンポネントの“package”フィールドを参照する設定となっている。また、該コンポネントにおいて、“os”リファレンスポートのfileフィールドは、“was”サービスポートの“war”フィールドに対して変換呼出しによる代入が設定されている。また、“package”フィールドの初期値として定義される構成要素“tomcatPackage4”の“name”属性の値には“tomcat”が設定されている。これは、当該構成要素が、tomcatのインストール処理等を含む構成要素であることを示している。
 また、図53は、本実施形態におけるJSONによるTomcatコンポネントの定義例を示す説明図である。なお、図53に示す例は、図52に示したコンポネント定義をJSONによって定義した例である。本例では、“os”リファレンスポートの“file”フィールドから“was”サービスポートの“war”フィールドに対する変換呼出しの変換方法として、“&convertWar”が設定されている。そして、同コンポネント定義の“変換”要素において、“convertWar”が定義されている。この“convertWar”では、“War”型の構成要素を“war”フィールドから受け取り、“OSFile”型の構成要素に変換して返す。その際、属性割当てとして、変換後の“OSFile”型の構成要素の“name”属性値に、“Tomcat”独自のファイルパスの例として示した“/usr/local/tomcat”と変換対象の“War”型の構成要素の“name”属性値の値を連結した文字列を設定することが指定されている。
 また、図54および図55は、本実施形態におけるWebAppコンポネントの定義例を示す説明図である。なお、図54はGUIによる定義例を示し、図55はJSONによる定義例を示している。なお、いずれも“WebApp_4”という識別子が付されたコンポネント定義の例を示している。図54および図55に示すコンポネント定義によれば、当該コンポネント定義によって定義づけられるコンポネントが、“War”型の“war”フィールドであって初期値として“war4”構成要素が格納される“war”フィールドと、ポート定義“WAS_4”によって定義づけられる“was”リファレンスポートを有することが定義されている。また、該コンポネントにおいて、“war”リファレンスポートの“war”フィールドが、本体のコンポネントの“war”フィールドを参照する設定となっている。また、“war”フィールドの値である“war4”構成要素の“name”属性値には、当該“war”ファイルのファイル名である“app.war”が指定されている。
 また、図56は、ポート連結後のフィールド間の関係を示す説明図である。図56では、図45に示すシステム定義に基づいて展開された、ポート連結後の具体的なシステム定義におけるフィールド間の関係を示している。図56に示すように、参照だけでなく変換呼出しによっても、構成要素が伝搬されることがわかる。例えば、“webApp4.war”フィールドに格納された“war”型の抽象構成要素である“war4”構成要素は、“tomcat4.was.war”フィールドを介して、“ubuntu4.os.file”フィールドに伝搬される。その際、“war”型から抽象構成要素型の“OSFile”型に変換される。さらに、この“OSFile型に変換後の“war4”構成要素は、“ubuntu4.file”フィールドに伝搬される。その際、“OSFile”型から具体構成要素型の“fileubuntu”型に変換される。
[動作の説明]
 本実施形態の動作は、システム定義展開部101と構成要素設定部102が、フィールドや構成要素に定義された構成要素の型を扱う点と、フィールドの値として“変換呼出し”を扱う点を除いて第3の実施形態の動作と同様である。
 すなわち、フィールドに格納された構成要素を取得するプロセス(図31のS231)において、構成要素設定部102は、まず対象フィールドに格納された値を確認し、値が変換呼出しであれば、変換元に指定された構成要素を取得した上で変換方法に指定された変換方法定義を基にこれを変換し、その結果として得られた構成要素を複製して、変換呼出し元のフィールドである対象フィールドに格納した上で取得する。
 また、図57は、図56に示したフィールド間の関係性から変換呼出しを含む参照等による構成要素を解決した後の構成要素間の関係性を示す説明図である。本例では、変換呼出しによる構成要素の伝搬があるため、構成要素の完全な複製ではなく、伝搬元と伝搬先とで構成要素の型や属性値が異なる場合がある。
 また、図58は、本実施形態における、フィールドの値への参照設定を解決後の構成要素のデータ例である。図58には、“ubuntu4”コンポネントの“file”フィールド(すなわち“ubuntu4.file”フィールド)内に格納される、構成要素の情報の例が示されている。ワイヤに基づくポートの連結処理と、参照の解決処理とを経た結果、図58に示すように、当該“file”フィールドに格納される構成要素の情報として、複製元の構成要素の識別子(本例では、“war4_2”)と、当該フィールドに格納される構成要素の識別子(本例では、“war4_3”)と、変換後の型名と、変換後に付される属性値の情報とが保持されてもよい。なお、この構成要素の大元の構成要素は、“webApp4”コンポネントの“war”フィールドに格納された“War”型の“war4”構成要素である。当該構成要素は、“tomcat4”コンポネント内で“OSFile”型に変換される他、“name”属性値の値が変更される。
さらに“ubuntu4“コンポネント内で“FileUbuntu”型に変換される。その結果、“型名“には“FileUbuntu”型が指定されており、“属性値“としてはname属性値に“/usr/local/tomcat/app.war”が指定される。
 なお、本実施形態における構成要素設定部102による構成要素の集約処理は、厳密には上記の各実施形態の集約処理と異なる。本実施形態における構成要素の集約処理、すなわち新規定義された構成要素と、変換されたものを含む複製の構成要素からなる一連の構成要素群を出力情報である単一の構成要素にまとめる処理では、次のように処理する。すなわち、出力情報である単一の構成要素に、一連の構成要素群の新規定義された構成要素の識別子を持たせ、複製による伝搬の末端に位置する具体構成要素の型および属性値を型および属性値として持たせ、全ての複製に付与された関連性の集合を、当該構成要素の関連性の情報として持たせる。
 そのために、構成要素設定部102は、例えば、各フィールドに格納された構成要素のコピー元構成要素の“id”をトレースして、各構成要素群を構成する構成要素の集合と、コピー元の末端である新規定義された構成要素と、具体構成要素型の構成要素とを特定する。そして、新規定義された構成要素から”id”と、具体構成要素型の構成要素から型および属性値と、全ての構成要素から依存性とを集めることにより、出力の構成要素の情報を合成する。このとき、構成要素設定部102は、参照関係にあるフィールド全体において、具体的な構成要素が指定される箇所が1箇所であることを検証する機能を有していてもよい。例えば、構成要素設定部102は、参照関係にある一連のフィールドに格納される構成要素群に複数の具体構成要素型が含まれる場合に、エラーを検出してもよい。
 このように、参照関係にあるフィールド全体において、具体的な構成要素が指定される箇所が1箇所に限定されることで、当該構成要素の正しい配備処理が実現される。単一の構成要素が複数個所で実現される状況は、本例のような対象システムの構築処理を定義する用途では意図しない状況といえる。したがって、そのような場合には、単一の構成要素が複数個所で実現されるような状況を検出し、警告することが好ましい。
 図59は、設定の付与を実施した後の構成要素間の関係性を示す説明図である。なお、図59において、構成要素の複製を表す網掛け長方形の上部に付した名前は当該複製の型名およびidを示している。
 また、図60と図61は、本実施形態におけるシステム構成情報の例を示す説明図である。なお、図60は、上述した定義を基に構成要素を生成した結果、生成されるシステム構成情報のGUIによる表示例を示す説明図である。また、図61は、該システム構成情報のJSONによる出力例を示す説明図である。なお、図60および図61はいずれも同じ構成を示している。
[効果の説明]
 本実施形態によれば、コンポネントの組み合わせに応じて構成要素の属性値や型といった情報が適切に調整されることで、さらに効率的にシステム定義を定義できる。例えば、本実施形態によれば、構成要素の型をホストに応じて適切に変換することができ、最終的に生成される構成要素をそのホストに応じた具体的なものにできる。また、そのための設定を接続先のホスト側に閉じ込めておけるので、ユーザはホスト先を柔軟に決定することができる。
 以下、上述したシステム定義を変更して、コンポネントの再利用性について具体例を用いて説明する。図62は、GUIによるシステム定義の他の例を示す説明図である。なお、図62(a)には、Ubuntuに代えてCentOSを用いるシステムの例として“system4_2”が示されており、図62(b)には、Tomcatに代えてJettyを用いるシステムの例として“system4-3”が示されており、図62(c)には、Ubuntuに代えてCentOSを用い、かつTomcatに代えてJettyを用いるシステムの例として“system4-4”が示されている。また、図63は、図62(a)に示したシステム定義のJSONによる定義例を示す説明図である。ここで、図62(b)および図62(c)においてJettyコンポネントの一例として示した“mw”コンポネントは、Webアプリケーションの一種であるjettyに対応したコンポネントを想定している。
 また、図64および図65は、本実施形態におけるCentOSコンポネントの定義例を示す説明図である。図64および図65に示すコンポネント定義“CentOS_4”によれば、当該コンポネント定義によって定義づけられるコンポネントは、上記のコンポネント定義“Ubuntu_4”の場合と同様に、“OS_4”によって定義される“os”サービスポートを有する。一方で、“file”フィールド、“package”フィールド、“boot”フィールドの型はそれぞれ“FileCentOS”型、“PackageCentOS”型、“BootCentOS”型のように、“CentOS”に特化した型となっている。また、“os.file”フィールドと、“os.package”フィールドから本体のコンポネント内の対応する各フィールドへの構成要素を再割り当てするための変換呼出しにおいて、それぞれの返り値に“FileCentOS”型と“PackageCentOS”型を持つ。ただし、本体のコンポネント内の“boot”フィールドから“os.boot”フィールドへの値の再割り当てについては、“Ubuntu_4”と同様、通常の参照設定となっている。これは、“BootCentOS”型が“OSboot”型の派生型であるためである。
 また、図66および図67は、本実施形態におけるJettyコンポネントの定義例を示す説明図である。図66および図67に示すコンポネント定義“Jetty_4”によれば、当該コンポネント定義によって定義づけられるコンポネントは、上記のコンポネント定義“Tomcat_4”の場合と同様に、“WAS_4”によって定義づけられる“was”リファレンスポートを有するとともに、“OSPackage”型の“package”フィールドを有する。ただし、“package”フィールドの初期値として定義される構成要素“jettyPackage4”の“name”属性は“jetty”となっている。これは、当該構成要素がJettyのインストール処理等を含む構成要素であることを示している。また、変換方法“convertWar”における属性割当てが、Jettyにおけるディレクトリ構造を踏まえたルールとなっている。
 このように、コンポネント定義“CentOS_4”は、コンポネント定義“Ubuntu_4”と同様のポート構成をもつコンポネントを定義し、またコンポネント定義“Jetty_4”はコンポネント定義“Tomcat_4”と同様のポート構成をもつコンポネントを定義している。これは、交換可能性を有していることを意味している。例えば、図62(a)~(c)に示す例では、“WebApp_4”によって定義されるコンポネント“app”を配備する一方で、“mw”コンポネントと“vm”コンポネントの型の組み合わせが異なるシステムが定義されている。さらにコンポネントの定義を増やすことで、選択可能なパターン数は指数関数的に増加することとなる。このように、コンポネントの再利用性により少ない定義から多様なシステムが効率的に記述可能となる。
実施形態5.
 次に、本発明の第5の実施形態について説明する。第5の実施形態におけるシステム構築支援システム100の構成は、システム定義展開部101と構成要素設定部102の動作が異なる点を除いて、第4の実施形態の構成と同様である。以下、第1~4の実施形態と同様の部位には同一の記号を付し、説明を省略する。
 本実施形態の主な特徴は、各フィールドが構成要素の情報として、構築処理等の構成要素の内容だけでなく、構成要素が取り得る状態や可能な状態遷移の情報をもつ点、および、フィールド間の関連性を示す情報が、当該フィールドに格納される構成要素のある状態から他の構成要素のある状態に対して指定される点である。このような関連性は、前者の構成要素が当該状態遷移を実行するには後者の構成要素が当該状態になければならないという制約条件を意味する。
 図68は、本実施形態におけるGUIによる構成要素および構成要素間の関連性の表現例を示す説明図である。図68には、“War”型の“war”構成要素と、“OSPackage”型の“package”構成要素という2つの構成要素の例が示されている。“war”構成要素は、“f”と、“t”という2つの状態と、当該状態間を相互に結ぶ状態遷移を持つ。同様に、“package”構成要素も“f”と“t”という2つの状態と当該状態間を相互に結ぶ状態遷移を持つ。また、“war”構成要素は、“f”状態から“t”状態へと至る状態遷移、および“t”状態から“f”状態へと至る状態遷移において、“package”構成要素の“t”状態に対する依存性を有している。また、“package”構成要素は、“t”状態から“f”状態へと至る状態遷移において、“war”構成要素の“f”状態に対する依存性を有している。
これは、“war”構成要素が“f”状態から“t”状態に遷移するもしくは“t”状態から“f”状態に遷移する場合に、“package”構成要素の状態が“t”状態にいなければならないことを表している。また、“package”構成要素が“t”状態から“f”状態に遷移する場合に、“war”構成要素の状態が“f”状態にいなければならないことを表している。
 また、図69は、JSONによる構成要素の型の定義例を示す説明図である。また、図70は、JSONによる構成要素の定義例を示す説明図である。なお、図70における各構成要素は、型名として指定する構成要素型が保持する状態や状態遷移を持つと解釈できる。また、図70において、“f->t”といった記載は、“f”状態から“t”状態への状態遷移を示しており、“package(t)”といった記載は、“package”構成要素の“t”状態を示している。なお、図70では、構成要素の定義として、当該構成要素がもつ他の構成要素に対する依存性を設定する例を示したが、同様の定義をフィールドに対して設定することも可能である。その場合、設定されたフィールドに格納される構成要素が、型名として指定する構成要素型が保持する状態や状態遷移を持ったり、設定されたフィールドに格納される構成要素が状態遷移等する場合に、指定した他のフィールドに格納される構成要素の状態等に対して依存性をもつと解釈できる。また、上記例では構成要素やフィールドが型情報を持つ場合を例にして説明しているが、本実施形態において構成要素やフィールドの型情報は必須ではない。
 上述したような情報を用いると、さらに状況に応じて各構成要素に現在状態と要求状態を指定することにより、各構成要素を指定した現在状態から要求状態へ変更するための手順を状態遷移の羅列として導出することができる。
 例えば、“war”構成要素と“package”構成要素の現在状態をともに“f”状態とし、“war”構成要素と“package”構成要素の要求状態をともに“t”状態に指定した場合であれば、“war”構成要素を“f”状態から“t”状態へ遷移させるには、“package”構成要素が“t”状態でなければならないことから、まず“package”構成要素を“f”状態から“t”状態へ遷移させ、その後“war”構成要素を“f”状態から“t”状態へ遷移させるという手順が導出できる。
 なお、そのような手順は、一般に「Automated Planning(自動計画)」と呼ばれる手法により導出できる。当該手法は、初期状態、要求状態、状態変換方法、状態変換の制約条件の各情報により、制約条件を満たしつつ初期状態を要求状態へ至らしめる状態変換の順序を求める手法である。
 本発明のシステム構築支援システム100は、このような状態遷移を有する構成要素においても利用できる。
 また、図71は、本実施形態におけるJSONによるWASポートの定義例を示す説明図である。このように、本実施形態では、依存性の定義の仕方が上記の各実施形態と異なる。すなわち、“依存元遷移”として、ある構成要素またはフィールドに格納される構成要素が持つ状態遷移が指定され、“依存先状態”として、他の構成要素またはフィールドに格納される構成要素が持つ状態が指定されてもよい。
[動作の説明]
 本実施形態の動作は、システム定義展開部101と構成要素設定部102が、状態と状態遷移およびある構成要素の状態遷移から他の構成要素の状態への依存性を持つような構成要素またはそのような構成要素を格納するフィールドを扱う点を除いて、第4の実施形態と同様である。
[効果の説明]
 本実施形態によれば、状態と状態遷移およびある構成要素の状態遷移から他の構成要素の状態への依存性を持つような構成要素を有するシステムであっても、そのような構成要素またはそのような構成要素を格納するフィールドを有するコンポネントを用いることで、容易に定義できる。
 なお、本実施形態に限らず、上述した第1~第4の実施形態においても、システムの構築手順を生成することが可能である。例えば、図6や図7に示した情報によれば、構築処理を保持する各構成要素が依存性で連結されている旨が示されている。依存性に循環がない限りにおいて、このような情報を基に依存性を満たしつつ全ての構築処理を実施するための順序を決定することができる。
 例えば、依存性に循環がなければ、他の構成要素への依存性を一切持たない構成要素が必ず1つ以上存在する。まず、このような構成要素の構築処理を実行するようにすればよい。その結果、保持する全ての依存性が解決される構成要素が出てくるので、そのような構成要素の構築処理を、上記の構築処理の後に実行するようにすればよい。移行、先行する構築処理の実行により依存性が解決される構成要素を順次実行するようにすることにより、必ず全ての構築要素の構築処理が実行される。このような順序の決定アルゴリズムは、一般に「トポロジカルソート」として知られている。
 次に、本発明の概要について説明する。図72は、本発明の概要を示すブロック図である。図72に示すシステム構築支援システムは、システム定義入力手段501と、設定付与手段502とを備えている。
 システム定義入力手段501(例えば、システム定義入力部001)は、構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するコンポネントを定義づける情報であるコンポネント定義であって、定義対象とされるコンポネントが有するフィールドの情報であるフィールド定義と、フィールドに対応づけられる構成要素に対する設定に関する情報である設定定義(例えば、“代入”定義等)とを含むことができるコンポネント定義を用いたコンポネントの指定と、コンポネントが有するフィールドに対する構成要素の割り当てに関する割当定義とを少なくとも含むシステム定義を入力する。
 設定付与手段502(例えば、システム定義展開部101および構成要素設定部102)は、システム定義およびコンポネント定義に基づいて、指定されたコンポネントのフィールドに構成要素を対応づけるとともに、フィールドに対して定義された設定内容を、フィールドに対応づけられた構成要素に反映することにより、対象システムを構成する構成要素に対する設定の付与を行う。
 このような構成を備えることにより、構成要素に対する設定に関する情報を、抽象化したコンポネントの情報として閉じ込めることができ、そのような設定に関する情報に対しても再利用性を持たせることができる。したがって、システム定義の容易性を向上させることができる。
 また、図73は、本発明のシステム構築支援システムの他の構成例を示すブロック図である。図73に示すように、システム構築支援システムは、少なくとも2以上のコンポネント定義を格納する部品定義記憶手段503(例えば、部品定義記憶部003)や、対象システムを構成する具体的な構成要素の情報であって、構成要素に付与された設定の内容を含む情報であるシステム構成情報を出力するシステム構成出力手段504(例えば、システム構成出力部002)を備えていてもよい。
 なお、コンポネント定義に含まれる設定定義は、対象とされたフィールドに対応づけられる構成要素の属性値または構成要素が有する他の構成要素との間の関連性を示す情報を少なくとも含んでいてもよい。
 また、関連性を示す情報における他の構成要素の指定が、他の構成要素が対応づけられるいずれかのフィールドの指定により行われてもよい。
 また、コンポネント定義は、対象とされたフィールドに対応づけられる構成要素の割り当てに関する情報である割当定義(例えば、“初期値”定義等)を含むことができ、設定付与手段は、システム定義により指定されたコンポネントのコンポネント定義に割当定義が含まれている場合に、割当定義に基づいて、割当定義が指定するフィールドに構成要素を対応づけてもよい。
 また、割当定義は、割り当て対象の構成要素が、新規定義であるか、他のフィールドからの参照であるかを指定する情報を含み、設定付与手段は、システム定義により指定されたコンポネントのコンポネント定義に含まれる割当定義が新規定義を指定している場合に、指定された構成要素を生成した上で割当定義が指定するフィールドに対応づけ、割当定義が他のフィールドからの参照を指定している場合に、割当定義が指定されたフィールドに対して他のフィールドに対応づけられている構成要素を対応づけてもよい。
 コンポネント定義は、定義対象とされるコンポネントが他のコンポネントと接続するための端子機能を抽象化した概念であるポートであって、ポート定義により定義づけられ、接続処理に必要な構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するポートの指定を含み、ポート定義は、定義対象とされるポートが有するフィールドの情報であるフィールド定義を含み、システム定義は、ポート間の接続を指定する情報を含み、設定付与手段は、接続関係にあるポートの対応するフィールド間で、対応づけられる構成要素の情報および構成要素に対して付与された設定を伝搬させてもよい。
 また、ポート定義は、定義対象とされるポートが有するフィールドに対応づけられる構成要素に対する設定に関する情報である設定定義(例えば、“設定”定義)を含むことができ、設定付与手段は、ポート定義に設定定義が含まれている場合は、フィールドに対して定義された設定内容を、フィールドに対応づけられた構成要素に反映した上で、接続関係にあるポートの対応するフィールド間で設定を伝搬させてもよい。
 コンポネント定義は、定義対象とされるコンポネントがポートを有している場合に、ポートが有するフィールドに対応づけられる構成要素の割り当てに関する情報である割当定義を含むことができ、割当定義は、割り当て対象の構成要素が、コンポネントが有するフィールドからの参照である旨の指定を含んでいてもよい。
 また、コンポネント定義は、定義対象とされるコンポネントがポートを有している場合に、コンポネントが有するフィールドに対応づけられる構成要素の割り当てに関する情報である割当定義を含むことができ、割当定義は、割り当て対象の構成要素が、ポートが有するフィールドからの参照である旨の指定を含んでいてもよい。
 また、ポート定義は、定義対象とされるポートが有するフィールドに対応づけられる構成要素の割り当てに関する情報である割当定義(例えば、“初期値”定義)を含むことができ、割当定義は、割り当て対象の構成要素が、ポートに対応づけられる任意のコンポネントが有するフィールドからの参照である旨の指定を含んでいてもよい。
 また、コンポネント定義またはシステム定義は、コンポネントが有するポートが、他のポートが提供する接続機能の利用を示すリファレンスポートであるか、他のポートへの接続機能の提供を示すサービスポートであるかを指定することができ、ポート定義は、定義対象とされるポートが有するフィールドが、リファレンスポートからサービスポートへの構成要素の伝搬を扱うアクセプトフィールドであるか、サービスポートからリファレンスポートへの構成要素の伝搬を扱うプロバイドフィールドであるかを指定することができ、設定付与手段は、コンポネント定義またはシステム定義およびポート定義に基づいて、サービスポートのアクセプトフィールドに対して当該サービスポートを有するコンポネントのフィールドからの参照による構成要素の割り当てを制限し、リファレンスポートのプロバイドフィールドに対して当該リファレンスポートを有するコンポネントのフィールドからの参照による構成要素の割り当てを制限してもよい。
 また、割当定義は、構成要素の変換方法に関する情報である変換定義を含むことができ、設定付与手段は、フィールドへ構成要素を対応づける際に、変換定義に基づいて、指定された構成要素を変換した上で対応づけてもよい。
 また、コンポネント定義は、フィールドが格納可能な構成要素の種類に関する情報である型に関する情報を含み、割当定義は、割り当て対象とされる構成要素の型に関する情報を含み、型は、他の型を包含することができ、設定付与手段は、フィールドへの構成要素の対応づけを、当該フィールドに対して設定されている型が、割り当て対象の構成要素の型と一致もしくは包含関係にある場合に限定してもよい。
 また、システム構築支援システムは、構成要素の型の種類として、必須の情報を全て備えた具体構成要素と、必須の情報の一部のみを備えた抽象構成要素とを有し、割当定義は、構成要素の変換方法に関する情報である変換定義を含むことができ、変換定義は、変換元と変換先の構成要素の型を指定する情報を含み、変換定義における型の指定は、変換元が抽象構成要素型であって変換先が抽象構成要素型であるか、変換元が抽象構成要素型であって変換先が具体構成要素型であるかのいずれかであってもよい。
 また、設定付与手段は、システム定義により指定されたコンポネントが有するフィールドに対する割当定義に、割り当て対象の構成要素の指定に他のフィールドからの参照が含まれる場合に、参照関係にあるフィールド全体において、具体的な構成要素が指定される箇所が1箇所であることを検証してもよい。
 また、構成要素は、状態と状態遷移の情報を含んでいてもよく、その場合、構成要素間の関連性を示す情報は、ある一方の構成要素内の状態遷移から他の構成要素内の状態への依存性を示す情報であってもよい。
 以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。更に、上述した各実施形態、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、請求の範囲に記載した事項から明らかである。
 この出願は、2015年8月27日に出願された日本出願特願2015-167797を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 本発明は、ITシステムに限らず、複数の部品からなるシステムを構築する際の設計支援に好適に適用可能である。
 100 システム構築支援システム
 001 システム定義入力部
 002 システム構成出力部
 003 部品定義記憶部
 101 システム定義展開部
 102 構成要素設定部
 501 システム定義入力手段
 502 設定付与手段
 503 部品定義記憶手段
 504 システム構成出力手段

Claims (20)

  1.  構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するコンポネントを定義づける情報であるコンポネント定義であって、前記フィールドの情報であるフィールド定義と、前記フィールドに対応づけられる構成要素に対する設定に関する情報である設定定義とを含むことができるコンポネント定義を用いたコンポネントの指定と、前記コンポネントが有するフィールドに対する構成要素の割り当てに関する割当定義とを少なくとも含むシステム定義を入力するシステム定義入力手段と、
     前記システム定義および前記コンポネント定義に基づいて、指定されたコンポネントのフィールドに構成要素を対応づけるとともに、前記フィールドに対して定義された設定内容を、前記フィールドに対応づけられた構成要素に反映することにより、対象システムを構成する構成要素に対する設定の付与を行う設定付与手段とを備えた
     ことを特徴とするシステム構築支援システム。
  2.  コンポネント定義に含まれる設定定義は、対象とされたフィールドに対応づけられる構成要素の属性値または前記構成要素が有する他の構成要素との間の関連性を示す情報を少なくとも含む
     請求項1に記載のシステム構築支援システム。
  3.  関連性を示す情報における他の構成要素の指定が、前記他の構成要素が対応づけられるいずれかのフィールドの指定により行われる
     請求項2に記載のシステム構築支援システム。
  4.  コンポネント定義は、対象とされたフィールドに対応づけられる構成要素の割り当てに関する情報である割当定義を含むことができ、
     設定付与手段は、システム定義により指定されたコンポネントのコンポネント定義に前記割当定義が含まれている場合に、前記割当定義に基づいて、前記割当定義が指定するフィールドに構成要素を対応づける
     請求項1から請求項3のうちのいずれか1項に記載のシステム構築支援システム。
  5.  割当定義は、割り当て対象の構成要素が、新規定義であるか、他のフィールドからの参照であるかを指定する情報を含み、
     設定付与手段は、システム定義により指定されたコンポネントのコンポネント定義に含まれる前記割当定義が新規定義を指定している場合に、指定された構成要素を生成した上で前記割当定義が指定するフィールドに対応づけ、前記割当定義が他のフィールドからの参照を指定している場合に、前記割当定義が指定されたフィールドに対して前記他のフィールドに対応づけられている構成要素を対応づける
     請求項4に記載のシステム構築支援システム。
  6.  コンポネント定義は、定義対象とされるコンポネントが他のコンポネントと接続するための端子機能を抽象化した概念であるポートであって、ポート定義により定義づけられ、接続処理に必要な構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するポートの指定を含み、
     前記ポート定義は、定義対象とされるポートが有するフィールドの情報であるフィールド定義を含み、
     前記システム定義は、ポート間の接続を指定する情報を含み、
     設定付与手段は、接続関係にあるポートの対応するフィールド間で、対応づけられる構成要素の情報および前記構成要素に対して付与された設定を伝搬させる
     請求項1から請求項5のうちのいずれか1項に記載のシステム構築支援システム。
  7.  ポート定義は、定義対象とされるポートが有するフィールドに対応づけられる構成要素に対する設定に関する情報である設定定義を含むことができ、
     設定付与手段は、ポート定義に前記設定定義が含まれている場合に、前記フィールドに対して定義された設定内容を、前記フィールドに対応づけられた構成要素に反映した上で、接続関係にあるポートの対応するフィールド間で前記設定を伝搬させる
     請求項6に記載のシステム構築支援システム。
  8.  コンポネント定義は、定義対象とされるコンポネントがポートを有している場合に、前記ポートが有するフィールドに対応づけられる構成要素の割り当てに関する情報である割当定義を含むことができ、
     前記割当定義は、割り当て対象の構成要素が、前記コンポネントが有するフィールドからの参照である旨の指定を含むことができる
     請求項6または請求項7に記載のシステム構築支援システム。
  9.  コンポネント定義は、定義対象とされるコンポネントがポートを有している場合に、前記コンポネントが有するフィールドに対応づけられる構成要素の割り当てに関する情報である割当定義を含むことができ、
     前記割当定義は、割り当て対象の構成要素が、前記ポートが有するフィールドからの参照である旨の指定を含むことができる
     請求項6から請求項8のうちのいずれか1項に記載のシステム構築支援システム。
  10.  ポート定義は、定義対象とされるポートが有するフィールドに対応づけられる構成要素の割り当てに関する情報である割当定義を含むことができ、
     前記割当定義は、割り当て対象の構成要素が、前記ポートに対応づけられる任意のコンポネントが有するフィールドからの参照である旨の指定を含むことができる
     請求項6から請求項9のうちのいずれか1項に記載のシステム構築支援システム。
  11.  コンポネント定義またはシステム定義は、コンポネントが有するポートが、他のポートが提供する接続機能の利用を示すリファレンスポートであるか、他のポートへの接続機能の提供を示すサービスポートであるかを指定することができ、
     ポート定義は、定義対象とされるポートが有するフィールドが、リファレンスポートからサービスポートへの構成要素の伝搬を扱うアクセプトフィールドであるか、サービスポートからリファレンスポートへの構成要素の伝搬を扱うプロバイドフィールドであるかを指定することができ、
     設定付与手段は、前記コンポネント定義または前記システム定義および前記ポート定義に基づいて、サービスポートのアクセプトフィールドに対して当該サービスポートを有するコンポネントのフィールドからの参照による構成要素の割り当てを制限し、リファレンスポートのプロバイドフィールドに対して当該リファレンスポートを有するコンポネントのフィールドからの参照による構成要素の割り当てを制限する
     請求項6から請求項10のうちのいずれか1項に記載のシステム構築支援システム。
  12.  割当定義は、構成要素の変換方法に関する情報である変換定義を含むことができ、
     設定付与手段は、フィールドへ構成要素を対応づける際に、前記変換定義に基づいて、指定された構成要素を変換した上で対応づける
     請求項1から請求項11のうちのいずれか1項に記載のシステム構築支援システム。
  13.  コンポネント定義は、フィールドが格納可能な構成要素の種類に関する情報である型に関する情報を含み、
     割当定義は、割り当て対象とされる構成要素の型に関する情報を含み、
     前記型は、他の型を包含することができ、
     設定付与手段は、フィールドへの構成要素の対応づけを、当該フィールドに対して設定されている型が、割り当て対象の構成要素の型と一致もしくは包含関係にある場合に限定する
     請求項1から請求項12のうちのいずれか1項に記載のシステム構築支援システム。
  14.  構成要素の型の種類として、必須の情報を全て備えた具体構成要素と、必須の情報の一部のみを備えた抽象構成要素とを有し、
     割当定義は、構成要素の変換方法に関する情報である変換定義を含むことができ、
     前記変換定義は、変換元と変換先の構成要素の型を指定する情報を含み、
     前記変換定義における型の指定は、変換元が抽象構成要素型であって変換先が抽象構成要素型であるか、変換元が抽象構成要素型であって変換先が具体構成要素型であるかのいずれかである
     請求項13に記載のシステム構築支援システム。
  15.  設定付与手段は、システム定義により指定されたコンポネントが有するフィールドに対する割当定義に、割り当て対象の構成要素の指定に他のフィールドからの参照が含まれる場合に、参照関係にあるフィールド全体において、具体的な構成要素が指定される箇所が1箇所であることを検証する
     請求項1から請求項14のいずれか1項に記載のシステム構築支援システム。
  16.  構成要素は、状態と状態遷移の情報を含み、
     構成要素間の関連性を示す情報は、ある一方の構成要素内の状態遷移から他の構成要素内の状態への依存性を示す情報である
     請求項1から請求項15のいずれか1項に記載のシステム構築支援システム。
  17.  少なくとも2以上のコンポネント定義を格納する部品定義記憶手段を備えた
     請求項1から請求項16のうちのいずれか1項に記載のシステム構築支援システム。
  18.  対象システムを構成する具体的な構成要素の情報であって、前記構成要素に付与された設定の内容を含む情報であるシステム構成情報を出力するシステム構成出力手段を備えた 請求項1から請求項17のうちのいずれか1項に記載のシステム構築支援システム。
  19.  情報処理装置が、構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するコンポネントを定義づける情報であるコンポネント定義であって、前記フィールドの情報であるフィールド定義と、前記フィールドに対応づけられる構成要素に対する設定に関する情報である設定定義とを含むことができるコンポネント定義を用いたコンポネントの指定と、前記コンポネントが有するフィールドに対する構成要素の割り当てに関する割当定義とを少なくとも含むシステム定義を受け付けると、前記システム定義および前記コンポネント定義に基づいて、指定されたコンポネントのフィールドに構成要素を対応づけるとともに、前記フィールドに対して定義された設定内容を、前記フィールドに対応づけられた構成要素に反映することにより、対象システムを構成する構成要素に対する設定の付与を行う
     ことを特徴とするシステム構築支援方法。
  20.  コンピュータに、
     構成要素の情報を格納するフィールドであって最終的に具体的な一の構成要素と対応づけられるフィールドを少なくとも1つ以上有するコンポネントを定義づける情報であるコンポネント定義であって、前記フィールドの情報であるフィールド定義と、前記フィールドに対応づけられる構成要素に対する設定に関する情報である設定定義とを含むことができるコンポネント定義を用いたコンポネントの指定と、前記コンポネントが有するフィールドに対する構成要素の割り当てに関する割当定義とを少なくとも含むシステム定義を受け付けると、前記システム定義および前記コンポネント定義に基づいて、指定されたコンポネントのフィールドに構成要素を対応づけるとともに、前記フィールドに対して定義された設定内容を、前記フィールドに対応づけられた構成要素に反映することにより、対象システムを構成する構成要素に対する設定の付与を行う処理
     を実行させるためのシステム構築支援プログラムが記録された記憶媒体。
PCT/JP2016/003775 2015-08-27 2016-08-18 システム構築支援システム、方法および記憶媒体 WO2017033441A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017536608A JP6673359B2 (ja) 2015-08-27 2016-08-18 システム構築支援システム、方法およびプログラム
US15/748,236 US10599447B2 (en) 2015-08-27 2016-08-18 System construction assistance system and method, and storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015-167797 2015-08-27
JP2015167797 2015-08-27

Publications (1)

Publication Number Publication Date
WO2017033441A1 true WO2017033441A1 (ja) 2017-03-02

Family

ID=58099866

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/003775 WO2017033441A1 (ja) 2015-08-27 2016-08-18 システム構築支援システム、方法および記憶媒体

Country Status (3)

Country Link
US (1) US10599447B2 (ja)
JP (1) JP6673359B2 (ja)
WO (1) WO2017033441A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018230352A1 (ja) * 2017-06-14 2018-12-20 日本電気株式会社 変更手順生成装置、変更手順生成方法および変更手順生成プログラム
US11403270B2 (en) 2018-06-22 2022-08-02 Nec Corporation System configuration derivation device, method, and program
US11561770B2 (en) 2018-05-07 2023-01-24 Nec Corporation System configuration derivation device and system configuration derivation method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10587457B1 (en) * 2019-05-10 2020-03-10 Capital One Services, Llc Techniques for dynamic network resiliency
US10644954B1 (en) 2019-05-10 2020-05-05 Capital One Services, Llc Techniques for dynamic network management
US10756971B1 (en) 2019-05-29 2020-08-25 Capital One Services, Llc Techniques for dynamic network strengthening
US10698704B1 (en) 2019-06-10 2020-06-30 Captial One Services, Llc User interface common components and scalable integrable reusable isolated user interface
US10846436B1 (en) 2019-11-19 2020-11-24 Capital One Services, Llc Swappable double layer barcode

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012111725A1 (ja) * 2011-02-18 2012-08-23 日本電気株式会社 リファクタリング装置、リファクタリング方法、及び、プログラム
WO2014115505A1 (ja) * 2013-01-28 2014-07-31 日本電気株式会社 設定支援装置、及び、設定支援方法
WO2015040788A1 (ja) * 2013-09-17 2015-03-26 日本電気株式会社 情報処理装置、及び、システム設計支援方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901588B1 (en) * 2000-04-17 2005-05-31 Codemesh, Inc. Sharing components between programming languages by use of polymorphic proxy
US7890543B2 (en) * 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US20050278694A1 (en) * 2003-11-15 2005-12-15 International Business Machine Corporation Describing Runtime Components of a Solution for a Computer System
US20080168096A1 (en) * 2007-01-08 2008-07-10 Shalom Daskal Extracting business logic from the user interface of service and product oriented computerized systems
DE112010005023B4 (de) * 2009-12-28 2023-11-30 Mitsubishi Electric Corporation Verwendung einer programmerstellungsunterstützungsvorrichtung zum erstellen von programmen für zu steuernde anlagen
US20150135160A1 (en) * 2012-05-01 2015-05-14 Simon Gauvin System and method for providing an application development and distribution social platform
US9875090B2 (en) * 2012-12-20 2018-01-23 Microsoft Technology Licensing, Llc Program analysis based on program descriptors
US9558017B2 (en) * 2014-03-18 2017-01-31 Sap Se Software dependency management through declarative constraints

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012111725A1 (ja) * 2011-02-18 2012-08-23 日本電気株式会社 リファクタリング装置、リファクタリング方法、及び、プログラム
WO2014115505A1 (ja) * 2013-01-28 2014-07-31 日本電気株式会社 設定支援装置、及び、設定支援方法
WO2015040788A1 (ja) * 2013-09-17 2015-03-26 日本電気株式会社 情報処理装置、及び、システム設計支援方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HISASHI SHIMAMURA ET AL.: "Model Base deno Sizing to Kosei Kanri ni yori Cloud-jo no SI o Koritsuka suru Cloud-gata SI", NEC TECHNICAL JOURNAL, vol. 67, no. 2, 20 March 2015 (2015-03-20), pages 79 - 82, ISSN: 0285-4139 *
MANABU NAKANOYA ET AL.: "Model Base Provisioning ni yoru Application Shiko Network Kosei Kanri", SYMPOSIUM ON MULTIMEDIA, DISTRIBUTED, COOPERATIVE AND MOBILE SYSTEMS (DICOM02015) RONBUNSHU, vol. 2015, no. 1, 1 July 2015 (2015-07-01), pages 1121 - 1128, ISSN: 1882-0840 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018230352A1 (ja) * 2017-06-14 2018-12-20 日本電気株式会社 変更手順生成装置、変更手順生成方法および変更手順生成プログラム
JPWO2018230352A1 (ja) * 2017-06-14 2020-04-09 日本電気株式会社 変更手順生成装置、変更手順生成方法および変更手順生成プログラム
US11429398B2 (en) 2017-06-14 2022-08-30 Nec Corporation Change procedure generation device, change procedure generation method, and change procedure generation program
US11561770B2 (en) 2018-05-07 2023-01-24 Nec Corporation System configuration derivation device and system configuration derivation method
US11403270B2 (en) 2018-06-22 2022-08-02 Nec Corporation System configuration derivation device, method, and program

Also Published As

Publication number Publication date
JPWO2017033441A1 (ja) 2018-06-14
US20180225133A1 (en) 2018-08-09
US10599447B2 (en) 2020-03-24
JP6673359B2 (ja) 2020-03-25

Similar Documents

Publication Publication Date Title
WO2017033441A1 (ja) システム構築支援システム、方法および記憶媒体
US8495352B2 (en) System and method for instantiation of distributed applications from disk snapshots
US9021419B2 (en) System and method for supporting intelligent design pattern automation
US10901804B2 (en) Apparatus and method to select services for executing a user program based on a code pattern included therein
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
US8756407B2 (en) Configuration rule prototyping tool
CN108830720A (zh) 智能合约运行方法、装置、系统和计算机可读存储介质
US11481200B1 (en) Checking source code validity at time of code update
US10817284B2 (en) Melding of mediation flow service component architecture (SCA) components
JP6479184B2 (ja) コンピュータ実行可能なモデルリバースエンジニアリング方法及び装置
JP7231518B2 (ja) パッケージ化支援システムおよびパッケージ化支援方法
Jaworski et al. Expert Python Programming: Become a master in Python by learning coding best practices and advanced programming concepts in Python 3.7
US20130074068A1 (en) Method, System, and Computer Program for Implementing a Customizable Virtual Appliance
Hanjura Heroku cloud application development
KR100656419B1 (ko) 정보시스템 개발장치 및 방법
JP5867540B2 (ja) プログラム生成装置、プログラム生成装置の制御方法、およびプログラム
KR102397494B1 (ko) 로우(Low) 코드 웹 개발 및 운영 시스템 및 이를 이용한 서비스 방법
JP2014164545A (ja) デプロイメント方法およびプログラム
JP6705482B2 (ja) システム構築パラメータ管理装置、システム構築パラメータ管理システム、システム構築パラメータ管理方法、及び、システム構築パラメータ管理プログラム
US11645193B2 (en) Heterogeneous services for enabling collaborative logic design and debug in aspect oriented hardware designing
JP2014059699A (ja) デモアプリケーション生成システムおよびデモアプリケーション生成プログラム
WO2023037506A1 (ja) システム構成導出装置、システム構成導出方法、及びコンピュータ可読媒体
US20230297366A1 (en) Two-way synchronization of infrastructure-as-code templates and instances
CN116909545A (zh) 一种基于微服务架构的低代码mom平台
Ranabahu Abstraction driven application and data portability in cloud computing

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017536608

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15748236

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

Country of ref document: EP

Kind code of ref document: A1