WO2007018295A1 - プログラム実行順序決定装置および方法 - Google Patents

プログラム実行順序決定装置および方法 Download PDF

Info

Publication number
WO2007018295A1
WO2007018295A1 PCT/JP2006/315973 JP2006315973W WO2007018295A1 WO 2007018295 A1 WO2007018295 A1 WO 2007018295A1 JP 2006315973 W JP2006315973 W JP 2006315973W WO 2007018295 A1 WO2007018295 A1 WO 2007018295A1
Authority
WO
WIPO (PCT)
Prior art keywords
logical
processes
output
loop
record
Prior art date
Application number
PCT/JP2006/315973
Other languages
English (en)
French (fr)
Inventor
Shoji Emori
Original Assignee
Catena Corporation
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 Catena Corporation filed Critical Catena Corporation
Priority to JP2007529642A priority Critical patent/JPWO2007018295A1/ja
Publication of WO2007018295A1 publication Critical patent/WO2007018295A1/ja

Links

Classifications

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

Definitions

  • the present invention relates to a program execution order determination apparatus and method.
  • Procedural programming is programming that explicitly specifies procedures such as control procedures. Procedural programming has been effective in business system development and implementation because of its ease of handling. However, there is still a serious problem that it is difficult to accurately implement the requirements (requirements of the user who orders the software to be developed) on the software, as well as productivity and maintainability. Is left.
  • Declarative programming that performs programming by declarations that are requirement definitions themselves includes non-artificial intelligence, expert systems, logical reasoning, inference, user intelligence gathering, etc. Used in computational applications.
  • declarative programming the control procedure used in the procedural programming described above is not used, but the relationship between data defined in requirements is declared, and programming is performed based on the declaration. The advantage is that, unlike the procedural programming described above, the requirements can be implemented accurately. ,
  • the entire program by L y e e is composed of a set of fixed structure modules that execute data item unit declarations. Therefore, it is possible to automatically generate a program (generate source code) by assigning a declaration of requirements for each data item to this fixed structure module.
  • Lye ALL is a code (“ Template ”) of a fixed structure module that executes data item declaration.
  • the template is a template.
  • the requirement declaration is automatically assigned to the specified place in)
  • the fixed structure module is placed according to the program design method in Lyee, and the source code of the entire program is automatically Generate automatically.
  • the programming in Lyee it is not necessary to describe the procedure (procedure) for executing the requirement (describe the source code), and it is only necessary to declare the requirement in units of data items. In this sense, programming based on Lyee is declarative programming.
  • Lyee methodology The software development methodology by Lyee (hereinafter referred to as the Lyee methodology) There are 3 type languages (eg LISP). Since a value is not generated just by declaring it, the declarative language has a logical mechanism of procedure for executing a declaration in order to generate a value. The logic mechanism of this procedure has many conditions to be able to execute all declarations, requires knowledge of mathematics and logic, and is difficult to master. For this reason, it is not widely used as a programming language. This is why procedural programming using a procedural language with a structure similar to human natural language is more prevalent.
  • 3 type languages eg LISP.
  • Object-oriented programming is about data and the procedures that manipulate it.
  • the Lyee methodology declares requirements for each data item.
  • the main elements that make up the requirement declaration are: (1) data item name, (2) generation formula of the value, (3) generation condition of the value (execution condition of the generation expression), (4) There are input / output attributes and (5) value attributes.
  • Table 1 below is an example of the declaration of requirements for data items (words).
  • Data item name is an identifier to identify the data item
  • “Generation expression” is a calculation expression to generate the value of the data item
  • “ ⁇ Song condition” is an execution that indicates whether “Generation expression” is executed It is a condition.
  • One data item may have two or more generation expressions, and in this case, which one is executed is determined by the “generation condition”.
  • “Input / output attribute” indicates whether the value of the data item is an input value or a value generated and output by a program. In Table 1, 'I' indicates that the value is input, and '0' indicates that the value is generated and output by the program. Attribute is the value of the data item
  • An attribute, for example, an input value or a value generated and output by a program is a floating-point number that is an integer, or a Boolean value
  • float represents a fixed-point number
  • the data items used in the generation formula and generation conditions are called “start points”, and the data items that are generated and output are called “end points”.
  • the data item requirement declarations shown in Table 1 are shown in Table 2 in terms of conventional programming language code.
  • “Sa” means the declaration of data item a.
  • “S b”, “S cj,” “S d” and “S e” mean declarations of data items b, c, d and e, respectively.
  • the declaration Sa of the data item “a” means that if b * e> 2 is true, the calculation result of b + c is assigned to the data item “a” and the value of the data item “a” is output. is doing.
  • the code of the declaration Sc means "input a value to the data item c".
  • Lyee methodology One of the features of the Lyee methodology is that the developer does not need to specify the order (control logic) in which the requirement declaration (definition) for each data item is executed. As shown in Table 2, the declaration of data item a Sa Declares Sb after declaration S a, even though it uses data item b. As will be described later, in the Lyee methodology, if the requirements are declared for each data item as shown in Table 1, all data items can be calculated without specifying the order in which the data items are declared. Complete code can be generated.
  • the execution order (control logic) of data item value generation is provided as a template of a fixed structure as universal logic that can meet all requirements in the Lyee methodology.
  • programming logic misses can be eliminated.
  • the source is automatically generated using the template, the programming time is greatly reduced. Flexibility is also a major advantage of the L y e e methodology. This is because maintenance work (ie, modification or change of requirements) can be reduced to adding, deleting, or modifying data item declarations.
  • Lyee it is necessary to specify the execution order of data item declarations. (What kind of control logic in Lyee ensures that the generation of the value of the output data item is established as required)? Lyee solves this order (execution procedure) problem in two ways.
  • the first method is the “iterative method” and the second method is the “optimal ordering method”. The iterative method and the optimal ordering method are described below. (1) Iterative method
  • Figure 1 simply shows the execution control logic that executes the declaration for each data item.
  • code execution is repeated until the execution result of the code within the execution range reaches the fixed point (fixed po int).
  • the “fixed point” is a state in which no new data item value is generated (a state in which no change occurs) even if the code in the execution range is repeated.
  • the state where the fixed point has been reached is also referred to as “state change none J.
  • state change none J When the result of the previous round is compared with the result of this round”, the value decision state does not change.
  • the control logic simply repeats the execution of the code in the execution range until the fixed point is reached. Therefore, regardless of the order in which data items are generated, all output data item values can be generated.
  • the first case is that all data item values within the repeat range are already generated (decided).
  • Table 3 shows the formation process of the values in the case of Fig. 1. A circle indicates that the value has been established. X indicates that the value is not yet determined.
  • the second case is when data items that cannot be generated no matter how many iterations are left.
  • the starting value that makes up the data item generation formula is not determined within the repeated execution range.
  • the generation formula for data item a (second line) is not “b + c” but “b + c + d”.
  • Data item d is neither a data item input in the execution range of Fig. 1 nor an output data item generated.
  • Table 4 shows the formation process of each data item value by repeated execution.
  • the values of input data items c and e are determined by the first execution (1st round).
  • the value of data item b is newly determined by the second (second round) execution.
  • the generation condition of data item a ((b * c)> 2) (line 1) can be determined, but the generation formula (see above, “b + c + The value of d ”) cannot be determined because the value of the starting point d is not yet determined.
  • the third execution (third round) there is no data item whose value is newly determined. Therefore, the data item a has no possibility of being satisfied no matter how many times it is executed thereafter. And undecided.
  • the state after the first round is "changed” compared to the initial state
  • the second is "past” compared to the 1'th
  • the third is second.
  • the determination that the state change is “None” can only be determined after the fixed point has been reached and then executed again (in other words, whether the fixed point has been reached or not). Is revealed by being executed one more time after reaching the fixed point).
  • the optimal ordering method is a method that generates execution code by automatically arranging the declarations for the data items arranged in random order into the optimal order so that they can be established in one round of processing.
  • Techniques for the sorting method are as follows: International Publication No. 2 0 4/6 8 3 4 2 Panfret, International Publication No. 2 0 4 4/8 1 7 8 8 Panflet, International Publication No. 2 0 0 5/4 3 2 7 Disclosure in No. 1 Pan Flet.
  • the iterative method and the optimal ordering method seem to be at the opposite end of each other. However, these two methods are possible in Lyee by taking requirements in units of data items and The module to be constructed is based on processing in units of data items.
  • the values are established in the order of the optimal order, so it can be said that the order is searched every time the program is executed.
  • the optimal ordering method is an optimal ordering prior to implementation and is executed in the optimal order when the program is executed.
  • system is usually divided into several units. This is because it is very difficult to create a large system with complex specifications without dividing it. The division is done hierarchically.
  • the system (or subsystem) divided is called a program, and the program divided is called a module.
  • the design basic design
  • the internal structure of the system for realizing it is designed.
  • Design how to divide the system (detailed design and program design).
  • the structural design (module design) of the divided units is first performed, and finally the source code is described in the programming language.
  • the functional units of the system are divided into programs and modules. It can be said that the higher the independence of the divided program modules is, the higher the quality of the system is. However, since there are no strict design rules in the design method of the structured method, the level of independence depends on the skill of the designer and is generally not high. 'If the independence is low, when designing one program and module, you must understand the relationship with other programs and modules. When modifying a module, you must also consider the impact on other programs or modules. Also, in the method of dividing into functional units, the processing performed by the program module depends on the specification, so the reusability is low.
  • Object orientation is a technique that was born to solve the problems of module independence and reusability. Modules are completely independent and highly reusable. However, the definition of the unit of a module (ie, object) is conceptual, and the design of the module (object) depends greatly on the skill of the engineer. In addition, the design method of the internal structure of the module (object) is not specified, so the quality of the design depends on the skill of the engineer.
  • an “event” is an event that a user has performed on a computer (such as clicking a mouse button) or an event that occurs from a computer (such as an error message). ) And so on.
  • the program performs a series of processes corresponding to the event that occurred, with some event as a start signal, and after displaying or recording the results of the process, the program enters the idle state. For example, when you click the button at the right end of a combo box on an operation screen such as Windows (trademark), an item selection list (list box) is displayed.
  • the timer set in advance in the program is also an event.
  • the role of the system is to output the requested processing results according to the user's request (directly or indirectly). Therefore, the program starts a series of processing (input, calculation, output) corresponding to the event by some event (such as a button press on the screen by the user. Refer to the section below for the definition of the event). When the final output (display of the result on the screen, etc.) is completed, the process ends. .
  • the “program” (a series of processes corresponding to an event) in the present invention is composed of modules having a fixed control structure. This module This module is called a “unit module”. This unit module is further composed of several types of modules for executing declarations for each data item. The module that executes these declarations is called an “element module”.
  • Fig. 2 shows the system partition structure based on the above-mentioned Lyee.
  • the unit module is a unit in which element modules are grouped focusing on output.
  • Computer input / output processing is performed on a set of data items, not on a data item basis, but is input or output to the same medium (means for recording or displaying data items such as screens, files, and forms).
  • a set of data items that are force-processed is called a logical record in this application. It is a unit module that takes a set of element modules involved in the generation and output of one output logic record and processes one or more of these sets.
  • Fig. 3 shows an example of the structure of the unit module, and shows the structure of the element module in the case of the requirements shown in Table 1.
  • Unit moji Yule includes W 04, W 0 2 and W 0 3 notes, which are grouped element modules according to their processing contents. Is.
  • the “contents of processing” here is not functional processing depending on the specification, but processing from the hardware perspective of input, output, and computation, which are basic computer processing.
  • the feature of Lyee is that modularization is performed for each basic processing of a computer with universality, not function dependence. As a result, we have successfully modeled a module that can be used for general purposes.
  • the W 0 2 palette is a set of element modules related to input of input data items.
  • the W 0 3 palette is a set of element modules related to the determination of the execution condition of the output data item generation expression.
  • the W 04 palette is a set of element modules related to the generation of output data item values (by execution of generation expressions) and the output of values.
  • Each pallet contains a pallet control module for activating multiple element modules in the pallet.
  • the pallet control module is activated by the overall control module shown in Fig. 2. There can be one overall control module in the program or one in the entire system.
  • element modules There are several types of element modules depending on the type of processing, and they have a fixed structure that does not depend on requirements. In the example described here, there are nine types of element modules. The following outlines the element module for each pallet.
  • the W 04 bullet is an initialization module S 4 (indicated simply by f S4j in Fig. 3; the same applies to other types of modules) It consists of four types of modules: L4 (L4), output module 04 (04), and route determination module R4 (R4).
  • the data item module L4 included in the W 04 palette is a module that executes the generation formula of the output data item and determines the value. This data item module L4 is created for each output data item generation formula.
  • Table 1 above there are two generation formulas, so there are two data item modules L4 included in the W 0 ⁇ 4 palette shown in Fig. 3.
  • the data item module L4_a is the module that executes the generation formula b + c of the output data item a
  • the data item module L4—b is the module that executes the generation formula 2 * c + 5 of the output data item b Represent each.
  • the output module 04 is a module that performs processing to output a set of output data item values (output logical records) to a medium.
  • the route determination module R4 is a module for designating a W 0 2 pallet to be executed next after the W 0 4 pallet reaches a fixed point.
  • the initialization module S4 initializes the values and flag areas in the unit module.
  • the W 0 2 node includes three types of modules: an input module 12 (12), a data item module L2 (L2), and a route determination module R2 (R2). '
  • the input module 12 is a module that reads a set of input data item values (input logical records) from the medium and inputs them to the memory area.
  • the data item module L2 included in the W 0 2 note is a module that checks whether the attribute of the input value meets the requirements.
  • W 0 2 'The data item module L2 included in the pallet One is created for each.
  • Table 1 above there are two input data items, data item c and data item e.
  • Fig. 3 there are two data item modules included in the W 0 2 palette.
  • the route determination module R2 is a module that designates a “W 0 3”, “letter” to be executed next after the W02 pallet reaches the fixed point.
  • the W 0 3 pallet contains two types of modules: data item module L3 (L3) and path determination module R3 (R3).
  • the data item module L3 included in the W 0 3 palette is a module that executes generation condition determination, and is created for each execution condition (generation condition) of the output data item generation expression.
  • Data item module L3 1 a is a module that executes a judgment to determine whether output data item a generation condition b * e> 2.
  • Data item module L3 1 b generates output data item b generation condition c > A module that determines whether or not 0.
  • the route determination module R3 designates the pallet to be executed next after the fixed point in the W O 3 pallet has been reached as the pallet for W04, the let force or another unit module in the unit module.
  • Each element module is modeled, and the module is completed by substituting information that changes according to requirements, such as data items to be processed, generation formulas and conditions, and input / output target media.
  • Figure 4 shows the process flow for the data item module.
  • Data item modules have a common processing flow structure as shown in Fig. 4.
  • Each element module is responsible for a single process. There is a judgment step that the target process is executed if the process is not completed and the execution condition is satisfied, and that the execution condition is not satisfied, or the process is not executed if the process is completed (step 41). In the iteration method, we want to execute only the modules to be processed in order to eliminate unnecessary processing at the time of repetition. This control is realized by the autonomous self-control of the element module in Step 41.
  • Step 41 is a step for determining whether or not to execute the target process. In Step 41, two judgments are made: “The target process is incomplete?” And “Execution condition satisfied? J”.
  • the first judgment “Target processing incomplete?”, Judges whether there is a value in the recording area of the value of data item a. In Lyee, the .record area of the value is initialized with appropriate timing, and the value is stored in the area once when the value of the data item is satisfied. Since this is recorded, it is possible to make such a determination.
  • the second judgment “Execution condition satisfied?” Determines whether the generation condition (execution condition of the generation expression to be executed) is satisfied in the case of L4. That is, it is determined whether b * e> 2 is satisfied.
  • step 4 2 the process proceeds to execution of the target process (step 4 2).
  • the target process is the execution of the generator b + c.
  • the value of the execution result is recorded in the temporary area a_t rap.
  • the next step is to determine whether a result that meets the requirements has been obtained (step 43). Specifically, it is determined whether or not the temporary area a_t rap has a value. For example, if the value of data item c does not hold, execution of generation expression b + c will not succeed and no value will be recorded in a_tmp. In this case, the result of step 43 is No.
  • Step 45 determines whether to execute again. Specifically, whether or not to re-execute is the determination of whether or not there has been a change in status within the current pallet. Check the state change in its own pallet and record the result in the control area. If there is a state change, it should be re-executed. Proceed to step 47 (Yes in step 45). Step 4 7 Record information in the control area that the L4 group of the let will be executed once again.
  • step 45 the process proceeds to step 46 and records in the control area that the result of the target processing is not established.
  • Step 4 3 If it is determined in Step 4 3 that the result conforming to the requirements has been obtained (success in the target process) (Y es in Step 43), the value of the temporary area a—tmp is used to confirm the processing result. Is copied to area a (step 4 4). (4) Pallet function processing
  • Table 6 below shows an example of the code of the pallet function that controls the execution of the element modules in the unit module.
  • Table 6 shows the unit modules for the requirements in Table 1 and corresponds to Figure 3. The comment indicates the meaning of the code.
  • Lyee achieved new development and maintenance development productivity and quality improvements by providing the means to implement requirements accurately, simplify program design, and automate coding.
  • execution speed was slow and the program size was large.
  • the following improvements have been made to make the program less efficient, smaller in size, and more efficient while maintaining the meaning unchanged: (PCT / JP 2 0 0 6 6 3 0 8 4 7 5)
  • the first is the establishment of a program structure that can be used for general purposes without depending on the specifications.
  • the second is to establish a standard definition method for requirements. This correlates with the establishment of a general-purpose routine program structure.
  • Lyee In software development, after internal design, program design, The module design is not necessary because the program structure is determined in Lyee. Simple program design from the internal design information (the fixed structure of the program is fixed, so it is very simple compared to conventional development methods other than Lyee), and internal design information and program design information are stored in LyeeALL. By inputting, the program can be automatically generated. In Lyee, the program design drawing is called the “processing path diagram”. Lyee has established a standard definition method that does not depend on the specifications of internal design information and a design method that does not depend on the specifications of the program design. Although humans are responsible for internal design, standardization of internal design information has been achieved by specifying the input items to the tool.
  • the iterative program structure can be further improved in terms of processing speed and size by improving it to an optimally ordered structure. Therefore, techniques have been proposed that automatically order the element modules in an optimal order.
  • the conventional technology has not been able to identify the minimum requirement information necessary and sufficient for automatically generating the optimal processing sequence structure.
  • the algorithm for optimal ordering in programs including loops was not clear. Even in optimal ordering, the amount of information that must be designed by humans for optimal ordering is reduced, so that optimal ordering can be performed automatically from the necessary and sufficient internal design information that must be determined for each specification. It was a challenge to do. Disclosure of invention
  • An object of the present invention is to eliminate or reduce the above-mentioned “problems of human dependency of design work performed by humans” and “problems of processing speed and size of programs”.
  • the program execution order determination method is a method for determining an execution order including loops of different part programs depending on specifications in a method for creating a product ⁇ composed of part programs having a fixed structure.
  • the component program has at least an input element that executes input of a logical record, a logical element that executes value generation of an output data item, an output element that executes output of a logical record, and a data recording area.
  • a program execution order determination apparatus is an apparatus for determining an execution order including a loop of input elements, logical elements, output elements, initialization elements, and path elements that vary depending on specifications, and the multiplicity of references between logical records.
  • the first execution order of the input elements and output elements that clearly indicate the loop range is based on the reference relationship between the data items indicated by the information and the generation expression for generating the value of the output data item, and the generation expression execution condition.
  • the present invention also provides a program suitable for controlling the program execution order determination device described above and a recording medium (flexible ⁇ 'disk, CD-ROM, etc.) on which the program is recorded.
  • any input element, logical element or output element that is required for processing the logical record or data item to be processed is any input element, logical element. It is determined whether it is processed by the element or output element (reference destination processing). If the reference destination process is executed after the reference source process, or if the initialization of the target of the reference destination process is executed before the reference source process is completed, the processing result by the reference source process cannot be obtained. To obtain the result of the referrer process, The referenced process must be executed before the referencing process, and the handling of the referenced process must be initialized after the referencing process is completed.
  • the processing order determination method includes one or more reference source logical records including one or more data items and one or more reference destination logical records including one or more data items. Based on the data item reference relationship between, the combination of each of one or more reference source logical records and one or more reference logical records is 1: 1, 1: N, or Accepts the input of reference multiplicity information indicating which reference multiplicity relationship is N: 1, and if the received reference multiplicity information is 1: 1, the element that processes the reference source logical record It is determined that the module and the element module that processes the reference destination logical record belong to the same loop unit, and if the received reference multiplicity information is 1: N, the reference source logical record The element module that processes the node and the element module that processes the reference destination logical record belong to two different loop units, and the element module that processes the reference source logical record is in the outer loop.
  • the element module for processing the referenced logical record is positioned in the inner loop, and if the received reference multiplicity information is N: 1, the referenced logical record is The element module to be processed and the element module to process the reference logical record belong to two different loop units, and the element module to process the reference logical record is positioned in the inner loop.
  • Process the referenced logical record And one or more element modules that process one or more reference source logical records based on the result of the determination based on the reference multiplicity information.
  • the processing order of one or a plurality of element modules that process a plurality of referenced logical records is determined.
  • the processing order determining apparatus includes one or more reference source logical records including one or more data items and one or more reference destination logical records including one or more data items. Based on the reference relationship between the data item and each, the combination of each of the one or more reference logical records and —or each of the multiple reference logical records is 1: 1, 1 :, or N: 1.
  • the element module that processes the node and the element module that processes the referenced logical record are the first determination means that determines that they belong to the same loop unit, and the received reference multiplicity information is 1: N.
  • the element module that processes the reference source logical record and the element module that processes the reference destination logical record belong to two different loop units, and the element module that processes the reference source logical record
  • the element module that processes the reference logical record and the element module that processes the reference logical record belong to two different loop units, and the element module that processes the reference logical record ⁇ inside The element module that processes the referenced logical record is positioned in the outer loop.
  • the third determine determines that be One or more element modules that process one or more reference source logical records and one or more reference destination logical records based on the determination means and the result of the determination based on the reference multiplicity information And determining means for determining the processing order of each of the one or more element modules.
  • the reference multiplicity information includes the reference source logical record input or output count (the number of times the reference source logical record should be processed) and the reference source logical record for two logical records having a reference relationship. It represents the relative number of times the record references the reference logical record (the number of times the reference logical record is referenced in the process of the reference logical record).
  • the reference multiplicity information is the number of the left side of “:” or the sign N (N indicates that N is 2 or more) the relative processing count of the reference source logical record (referring side).
  • the number or symbol N on the right side of “:” indicates the relative processing count of the reference logical record (referenced side).
  • the reference multiplicity information may be input by the user, or the computer is determined based on the generation formula or generation condition of the output data specified in the program to be created (or created). You can use it for input.
  • the element module that processes the input logic record and the output logic record based on the input reference multiplicity information, respectively.
  • the determined order is the order in which the element modules are prevented from being executed in the situation where the processing result cannot be obtained (details will be made clear in the embodiment). Since processing by multiple element modules is executed in an efficient order, the processing speed of comprehensive processing including multiple element modules can be increased.
  • the processing order of the element modules is implemented on the computer. Therefore, it is possible to reduce the degree of human dependency on the design work performed by humans.
  • the processing order (timing) of the initialization element module that clears the value temporarily stored in the data area when it is determined that the data has been determined is also determined.
  • This order (timing) is the timing when the loop processing is finished (reference is completed). Unnecessary data is cleared from the data area, enabling efficient use of memory.
  • Figure 1 schematically shows the execution control logic that executes the declaration for each data item and the concept of the iteration method.
  • Figure 2 shows the system partition structure using L y e e.
  • FIG. 3 shows the structure of the unit module in the conventional Lyee.
  • FIG. 4 is a flowchart showing the processing of the W04 rate element module in the conventional Lyee. '
  • Figure 5 is a directed graph showing the reference relationship.
  • Figure 6 is a directed graph showing the reference relationship between the input logical record L A, the input logical record LB, and the output logical record LB.
  • Figure 7 is a directed graph showing the reference relationship between the input logical record L X and the output logical record L D.
  • Figure 8 shows the element module that can be determined when focusing on the output logical record. The processing order of
  • Figure 9 shows the processing order of loops W and X when there is no ordering relationship.
  • Figure 10 shows the processing order of loops Y and Z with nested arrays.
  • Figure 11 is a block diagram showing the relationship between the screen and processing.
  • Figure 12 is a block diagram showing the relationship between processing and I / O units.
  • Figure 13 shows the three types of multiplicity using a directed graph.
  • Figure 14 shows the order relationship between the reference source logical record and the reference destination logical record when the multiplicity of reference is 1: 1.
  • Figure 15 shows the order relationship between the reference source logical record and the reference destination logical record when the multiplicity of reference is 1: N, and the loop hierarchy relationship.
  • Figure 16 shows the order relationship and the loop hierarchy relationship between the reference source logical record and the reference destination logical record when the reference multiplicity is N: 1.
  • Fig. 17 shows the integration results of the order relationship and loop hierarchy relationship between the reference source logical record and the reference destination logical record in Figs. 14, 14, 15 and 16.
  • Figure 18 represents the order relation and the loop hierarchy relation between the output logical record X shown in Figure 17 and the input logical records A, B, and C by using a nested structure. It is a thing.
  • Figure 19 shows the order relationship (relative relationship) and loop hierarchy relationship between output logic record Y and input theory record B. .
  • Figure 20 shows the result of integrating the order relationship and the loop hierarchy relationship between the reference source logical record and the reference destination logical record in Figs. 17 and 19.
  • Fig. 21 shows the order relationship and loop hierarchy relationship of the output logic records X and Y and the input logic records A, B and C shown in Fig. 20 by using a nested structure. is there. '
  • Figure 22 is a flowchart showing the process for determining the location of logical records. Is
  • Figure 23 is a block diagram showing the system configuration (hardware configuration) of Lye eALL 3.
  • Fig. 24 is a flowchart showing the processing of LyeeALL 3.
  • Figure 25 is a flowchart showing the initialization element array determination process.
  • Figure 26 is a flowchart showing the logical element array determination process.
  • Figure 27 is a flowchart of the route element array determination process.
  • Figure 28 shows a directed graph
  • Figure 29 shows a directed graph
  • Figure 30 shows a directed graph
  • Figure 31 shows a directed graph.
  • Figure 32 shows a directed graph
  • Figure 33 shows a directed graph
  • Figure 34 shows a directed graph.
  • Figure 35 shows a directed graph.
  • Figure 36 shows a directed dull.
  • Lyee development method (hereinafter referred to as “L y e e”) is outlined. '
  • Element modules are provided as templates, and each element module template (model) is provided with standardized necessary information and created, and a program source that is 100% operable and does not require modification is created. be able to.
  • the types of element modules are: output element module (hereinafter referred to as “output element”), input element module (hereinafter referred to as “input element”), logical element module (hereinafter referred to as “logical element”), route element module (hereinafter referred to as “input element”).
  • output element module hereinafter referred to as “output element”
  • input element module hereinafter referred to as “input element”
  • logical element module hereinafter referred to as “logical element”
  • route element module hereinafter referred to as “input element”.
  • initialization element module There are five types: initialization element module and initialization element module (hereinafter referred to as initialization element). For the element modules (output element, input element, logical element, and initialization element) excluding the path element, the data
  • Table 7 summarizes the relationship between the processing contents, creation units, and data objects to be processed for each of the above five types of element modules. Table 7 +
  • Element module Output element Input element Necessary route rule • Perform output processing • Perform input processing • Element of output data
  • Output element Outputs the output logic record to the medium.
  • Initialization element Initializes the data area value.
  • Route element 'Indicates the process to be executed after the process is completed.
  • the final product of the information system development is a program.
  • the program structure is standardized, and the necessary information to be given to the template of the standardized program structure is also standardized. Therefore, if the structure and necessary information have been standardized, it can be said that the information system development work is the work to clarify the standardized necessary information. .
  • Table 9 shows a comparison between the development of Lyee and the development of DOA (Data Oriented Approach), which is one of the conventional development methods, in terms of the work for each development process and its deliverables. Become.
  • the processing contents of the development program are processed via the screen, Whether it is form processing or batch processing, everything can be done with the same internal design work and the same definition method.
  • the information to be clarified is the input / output file and its input / output method, the generation condition and generation formula of the output data item.
  • Detailed program design for coding does not require modular structure design.
  • D0A is similar to Lye e in that it is a development method that takes a data-oriented design method, but the “data orientation” itself is different. In other words, Lye e's data orientation classifies data processing from the viewpoint of computer processing, which is “input”, “output”, “generation”, or “clear”, which does not depend on requirements. However, D0A, like other conventional methods, classifies data according to the meaning of data as seen by humans depending on the specifications. Therefore, in the development of D0A, after internal design, it is not data-oriented but structured method programming, and it becomes a design method that depends on the specification (that is, depends on the function of the program to be developed).
  • Lyee is a data-oriented design that does not depend on specifications, from external design to internal design.
  • a logical record is a set of input data items that are input under the same conditions, or a set of output data items that are output under the same conditions. Under the same conditions, is that the same input source medium is input at the same timing, or that the same output destination medium is output at the same timing.
  • the logic record input is an input element and the output is an output element. One input element or output element processes one logical record.
  • a reference is referred to when the value of some data item is used to perform some processing.
  • One example is a reference for generating the value of an output data item.
  • the generation formula for generating the value of A is B + C.
  • the logical element A that generates the A value performs an operation with reference to the B value and the C value, and records the operation result in the A data area. This is expressed as “data item ⁇ 'refers to data item ⁇ and C”. Then, ⁇ , ⁇ ⁇ , and C are said to have “reference relationship”, A is called “reference source”, and B and C are called “reference destination”. .
  • Figure 5 shows the reference relationship using a directed graph.
  • the nodes (circles) in the directed graph represent data items
  • the directed edges (arrows and arrows) represent the reference relationship between the data items.
  • the starting point of the arrow is the reference source
  • the end point is the reference destination. The same reference is made to the generation execution of the generation formula execution condition.
  • a reference is a reference for obtaining “search key” data that is generally required when an input element inputs data from a database (reads data from the database and outputs it to memory).
  • input element LX that processes input logical record LX inputs input logical record LX (reads from the database) using output data item D as a search key.
  • the input element LX refers to the value of D, and inputs the input logical record LX using the value of D as a search key (reads from the database).
  • the input logical record L X refers to the data item D. Because the input logical record L X holds
  • the processing performed by the program is input data input (input to data area in memory, etc.), output data generation based on input data, and output data output (screen display, etc.). Requirements include: what data items are input from where, what data items are output where, and how output data items are generated (generation formulas and generation Expression execution condition) is defined. Input, generation and output meet requirements In order to be executed in this way, in addition to these three processes, the initialization process of the data area and the process of determining the route at the branch point of the route in the program are required.
  • Lyee thinks that a program can be composed of five types of processing: input, generation, output, initialization, and determination of the processing path in the program, and prepares a template of a fixed structure module for each type.
  • the program is created by combining modules.
  • the names of the modules responsible for each process are the input element, logic element, output element, initialization element, and path element described above.
  • the unit for creating these element modules is fixed. For example, in this Lyee, one input element is created for each input logical record. One output element per output logical record, one logical element per output data item generation expression, one initialization element per logical record, and one path element Create one for each route selection condition.
  • the element module necessary for the program defined in 'Requirements' is created automatically by LyeeALL when a requirement is entered in LyeeALL.
  • the program processing order refers to the execution order of the above-mentioned element modules, that is, the order of arrangement of the element modules. “Should be” means “should be” as the processing order of the program that causes the computer to execute the inputs defined in the requirements and to perform the outputs defined in the requirements. .
  • the processing order is the optimal processing order. Optimal is a processing order in which there is no repetition other than a loop due to requirements, there is no unnecessary redundancy, and program processing is executed in the shortest time.
  • the order of the input element Z and the logic element group Y directly or indirectly applied to this output logic record LX is determined obviously.
  • the order of the logical element group Y ⁇ can be automatically determined according to the generation expression execution condition executed by each logical element and the reference relation of the generation expression. It is obvious that the initialization element of the logical record related to the series of input element Z, logical element group Y, and output element X should be placed after ⁇ . Since the record may refer to the logical record LX or LZ, it cannot be determined immediately after the output element X. The arrangement order of the initialization elements will be described later.
  • Lye's automatically generates a program from the requirement information once the requirement is determined.
  • the standard structure of programs that do not depend on specifications and the method of formalizing requirement information that does not depend on requirements we have clarified the standard structure of programs that do not depend on specifications and the method of formalizing requirement information that does not depend on requirements.
  • the requirement information formalization the information formalization method required for program design is one of the newest improvements in Lyee.
  • the main information required for program design can be summarized as follows.
  • the smallest unit constituting a program is an element module, and that they constitute a predetermined unit (hereinafter referred to as a loop unit) according to certain rules.
  • the loop unit will be described below.
  • program If the program is classified from the viewpoint of the flow of processing, it can be classified into (1) sequential processing, (2) loop processing, (3) branch processing (IF statement).
  • Sequential processing is to sequentially process a series of processes one by one.
  • Loop processing is processing that repeats a series of sequential processing multiple times (also referred to as n times) until a certain condition is satisfied.
  • n times a series of sequential processing multiple times
  • an input logic record This is a process in which a mode or output logical record is input or output n times (necessarily generating n times).
  • the program will cause the computer to execute the following process. '
  • Category A As a key, for example, a process of searching for one or more products (product codes) belonging to category A from the product master is executed. A series of processes (loop processing (i)) of “reading a product code for one product belonging to category A from the product master” and “temporarily storing in the memory of the read product code” It is executed and the product code belonging to the first category A is obtained.
  • loop processing (ii) is executed. If the purchase history table contains 10 items with the retrieved “product code” and “2006/7/1 J”, loop processing (ii) is repeated 10 times. When loop processing (ii) ends. Return to loop processing (i) The processing of loop processing (i) and loop processing (ii) is repeated until loop processing (i) is completed (until the corresponding data disappears).
  • loop processing processing within one looping unit is It means that it has a loop condition with the same condition (it may be rephrased as a condition to end the loop).
  • the branch process is a process in which there are multiple series of processes, and one of the series of processes is selected from the series of processes according to the branch conditions. What is important in branch processing is to set the branch condition so that any one series of processing is specified in any case. In other words, the sum of the branching conditions constitutes the whole, and the branching conditions do not overlap.
  • Branch processing can be classified as follows according to the purpose for which the branch condition is set. .
  • Multiple generation expressions may be defined for one output data item. For example, a business requirement where the discount rate varies depending on the purchase price of the customer. In such a case, as shown in Table 10 below, an execution condition is defined for each output data item generation expression called “discount rate”. Table 1 0
  • the generation formula execution condition is the processing target executed by the element module (logical element) of the fixed structure, and is not information on the program path required for the program structure design. Whether the generation expression execution condition determination and generation expression execution are made as one element module or another element module, the order of the logical elements that execute the generation expression execution condition determination and the generation expression is It can be automatically derived from the reference relationship of data items included in the conditional expression and generation expression executed by each logical element.
  • One of the other branch conditions is a loop processing end condition.
  • end of file; is the end condition of the loop process.
  • the branch condition positioned as the end condition determines whether the same process is executed again.
  • the loop end condition is incorporated into the output element as one of the output conditions.
  • one of the other branch conditions is a condition for moving the processing to another group of processing (program or 10 units described later).
  • the condition for transferring the processing to another processing cluster is the condition for determining the processing path in the program.
  • the program structure can be determined by taking the order relationship (called “loop unit”).
  • the order relation is either of which there is no order relation (whichever comes first).
  • Designing the program structure from this point of view was the process of creating a processing path diagram in the improved Lyee development method.
  • designers took loop units, judged the order relationship between multiple loop units, and represented them in the processing path diagram.
  • the inventors of the present application have succeeded in causing a computer to execute an order relationship between a plurality of existing loop units, which has been performed by the designer, and this is performed by humans.
  • the given requirement information is analyzed, and the desired loop unit and the desired order relationship between the loop units are automatically determined. .
  • the analysis method of the order relationship between loops and units will be described later.
  • the basic concept for determining the order relationship of the appropriate loop units is described.
  • the processing order of the two loop units is sequential because there is no order relationship between the two loop units. Since there is no order relation, 'two sequential arrangements can be considered, and the result of the processing is the same regardless of which one is used.
  • Figure 9 shows the processing order of loops W and X (two processing orders) when the two loops W and X have no order relationship.
  • the process proceeds to loop X, and when the loop end condition of loop X is satisfied, the loop X The process ends.
  • loop X This process is executed first, followed by the loop W process.
  • the two loop units have an order relationship.
  • the two loop units are nested as shown in Fig. 10.
  • loops Y and Z move to loop Z during the process of loop Y, and the process returns to loop Y when the loop end condition for loop Z is satisfied.
  • the loop end condition of loop Y is determined. If the loop end condition of loop Y is not satisfied, the loop Y Return to the first process. This process is repeated, and when the loop end condition of loop Y is satisfied, loop Y ends.
  • the terms “upper layer (or outer loop)” and “lower layer (or inner loop)” are used to represent the array state.
  • Figure 10 shows an example of two layers, 'L' of Loop Y and Loop Z. Loop Y is positioned as the upper layer and Loop Z is positioned as the lower layer. Note that the number of nesting levels is not limited to two, and there is no logical upper limit.
  • the first is when a logical record that is input or output within the inner loop unit is processed with reference to a logical record that is input or output within the outer loop unit.
  • the other is when a logical record that is input or output within the outer loop unit is processed with reference to a logical record that is input or output within the inner loop unit.
  • the inner loop refers to the outer loop
  • the timing at which processing moves from the outer loop to the inner loop may be after the reference destination data becomes available for reference in the outer loop.
  • the outer loop refers to the inner loop If it is, it is sufficient that it is just before the start of processing of the reference data of the outer loop.
  • the program creation unit is a series of processing units for each event.
  • the process for each event is a series of processes that are executed when a button on the screen is clicked and finished when the processing result is displayed on the screen. In the following, this is called “processing” or “event.unit processing”.
  • FIG. 11 is a block diagram conceptually showing "processing” (or “event unit processing") in the present application
  • Fig. 12 is a block diagram conceptually showing "IO unit” in the present invention. Each figure is shown.
  • the basics of the processing contents for each event are the input of file (screen, database) data (in memory), setting the value in the data item to be sent out, and the set value in the file (screen, form, Output to a database).
  • the process from inputting (reading) the data in the file to outputting the data is defined as “synchronization range”, and this synchronization range embodied as a program is defined as an IO unit.
  • one processing content inputs (reads) data from two files A and B and outputs them to a C file. After inputting (recording in C file), input D file data and C file data (reading), and output E file (recording in E file).
  • “J process that inputs two files A and B and outputs C file becomes the first IO unit, and“ output E file from D file and C file ”process 2 This is the first IO unit (see Figure 12).
  • I unit corresponds to one processing path diagram in the conventional improved Lyee.
  • Programs are often composed of one IO unit, ie one synchronization range. If the process of one event is displayed on a separate screen, it is better to configure it with two I / O units. The same applies to the conventional Lyee processing path diagram. In such a case, the processing is divided into multiple processing path diagrams. .
  • the program source in the IO unit is divided into a data definition part and an execution instruction part.
  • the execution instruction part is simply an element module arranged according to a certain rule. Call the module). There is no pattern that depends on the specification in the layout rule of the element module. Table 11 shows the relationship between the data definition parts and the main element modules that process them.
  • a program generated by LyeeALL .3 is a program in which these element modules for each logical record and each data item are arranged in the order of execution. '
  • the input command is executed. Set the value.
  • Output data Necessary Output data item Output. If the data item area does not have a value to be set in the item area unit, execute the generation condition ⁇ generation formula to set the value.
  • Output logic record Output element Output logic record Outputs if the value is set in the set code area in the output area.
  • the order relation between element modules can be derived from the reference relation of logical records or data items that are processed by the element module.
  • the reference relation between logical records is first clarified from the multiplicity of references, and the input element or output element that performs the input or output from the reference relation. Let us derive the relative order relation of the loop and the relative relation of the hierarchy of the loop unit to which it belongs.
  • Multiplicity of references means that when there are two logical records with a reference relationship, the reference source is the number of inputs or outputs (number of input or output records) of the reference source logical record. This indicates the relative ratio of the number of times the reference destination is referenced (the number of inputs or outputs of the reference destination logical record). Multiplicity
  • the value indicating the degree of (mult ipl c i ty) is 1 or N (indicating mult iple) '. If the number of inputs or outputs is 1, the number is 1. If the number is 2 or more,
  • the multiplicity of the reference source (referring side) is placed on the left, and the multiplicity of the reference destination (referenced side) is on the right, and is expressed as “1: N”.
  • Figure 13 shows the three types of multiplicity shown in Table 12 using a directed graph.
  • the points (nodes) (circles) in a directed graph represent logical records
  • the directed edges (arrows, arrows) represent reference relationships between logical records.
  • the starting point of the arrow is on the reference logical record side, and the end point is on the reference logical record side.
  • the reference relationship between two logical records indicates the relative order in which the two logical records should be input or output. In other words, the reference logical record is input before the reference logical record. Or output). Therefore, if the reference relationship between the two logical records is known, the relative positional relationship between the input elements (or output elements) responsible for the input (or output) processing of each logical record can be determined.
  • the relative order of multiple logical records is represented by the vertical position of the node (circle) in the drawing.
  • the node of the reference logical record A is drawn above the node 'of the reference logical record X as shown in Fig. 13.
  • Another ordering relationship indicated by the multiplicity of references is different from whether two logical records are input or output in the same loop unit or in different loop units. This is the hierarchical position relationship in units of loops in the case of units of loops.
  • Figure 14 shows the order relationship between the reference logical record 'and the reference logical record when the multiplicity of reference is 1: 1.
  • the reference multiplicity is 1: 1
  • the reference logical record X and the reference logical record A belong to the same loop unit.
  • a reference multiplicity of 1: 1 indicates that the relative degree of looping is the same.
  • Figure 15 shows the order relationship between the reference source logical record and the reference destination logical record when the reference multiplicity is 1: N.
  • the multiplicity of the reference is 1: N
  • the reference logical record X and the reference logical record B belong to different loop units
  • the reference logical record B is a subordinate (inside of the reference logical record X ) Belong to the loop unit.
  • Figure 16 shows the hierarchical relationship between the reference logical record and the reference logical record when the reference multiplicity is N: 1.
  • 'reference source logical record X and reference destination logical record C are different loop units.
  • the reference logical record C belongs to the upper (outer) loop unit of the reference logical record X. .
  • the following table 13 summarizes information on the hierarchical structure of loop units obtained from the multiplicity of references.
  • Output logical record X (output element X), output logical record Y (output element Y), input logical record ⁇ (input element ⁇ ), input logical record ⁇ (input element B), and input logical record C (input element C)
  • the multiplicity of references to the logical record referenced by the output logical record is assumed to be as shown in Table 14 below.
  • the relative position of two output elements or pairs of input elements can be determined.
  • the order relationship between the output logical record X and the input logical record A and the loop hierarchy relationship are the same as those shown in Fig. 14, and the order relationship between the output logical record X and the input logical record KB.
  • the loop hierarchy relationship is the same as shown in Fig. 15, and the order relationship and loop hierarchy relationship of output logical record X and input logical record C are the same as those shown in Fig. 16.
  • Figure 17 shows the order relationship between the output logic record X and the input logic records A, B, and C shown in Figure 14 and Figure 15 and Figure 16 respectively. It shows the total of loop hierarchy relations (combined into one).
  • Fig. 18 represents the order relationship and loop hierarchy relationship of the output logic record X shown in Fig. 17 and the input logic records A, B, and C by using a nested structure. It is a thing. The hierarchical structure of the loop unit, the relative order of the output logical record X, and the input logical records A, B, and C, and the loop unit to which it belongs are made clear. Referring to Table 14, the output logical record Y and the input logical record B have the output logical record Y as the reference source and the input logical record B as the reference destination. The multiplicity of illumination is 1: 1. The order relationship (relative relationship) and loop hierarchy relationship between output logical record Y and input logical record B are shown in Fig. 19. Fig.
  • FIG. 20 shows the overall result of the order relation and loop structure of the output logical record X shown in Fig. 17 and the input logical records A, B, and C. And the order relationship between the output logic record Y and the input logic record B shown in Fig. 19 and the loop hierarchy.
  • Figure 21 represents the ordering and loop hierarchy relationships of the output logical records X and Y and the input logical records A, B, and C shown in Figure 20 using a nested structure.
  • the processing order and loop hierarchy of output logic records X and Y, and input logic records A, B, and C are clear.
  • Fig. 18 An example of the procedure for converting to secondary information '(information about the vertical arrangement order of input elements and output elements, showing the nested structure of the loop range) will be described. A similar procedure is used for the conversion to the secondary information shown in FIG. 21 based on the primary information shown in FIG.
  • the input logical record or output logical record is expressed as “node”
  • the set of input logical record and output logical record is expressed as “node group”.
  • (ii) For the selected node group refer to other nodes in the outermost hierarchy of the loop unit regardless of whether the hierarchy is the same or different.
  • the array position of the reference node being referred to is determined on the back side in the loop unit. Since these nodes do not have a reference relationship, the order of arrangement determines an arbitrary rule, and the arrangement position is determined according to the rule. The array so far is array 1.
  • the array position of the reference node that is only referenced from other nodes regardless of whether the hierarchy is the same or different is determined before array 1. Since these nodes also have no reference relationship, the order of arrangement is determined according to the rules.
  • the sequence determined here is sequence 2. This determines the sequence of nodes in the outermost loop unit.
  • the node placement position is determined by the procedure described in (ii) above.
  • the arrangement position for nesting the entire loop unit in the lower hierarchy is determined by the same procedure as in (iii) above. '
  • the data area value When the data area value is no longer needed, the data area is initialized (cleared). This is mainly for reusing programs and data areas in the case of loop processing. When a data area value is no longer needed, it is when the data area no longer needs to be referenced by another process.
  • In LyeeALL 3 initialization is not performed for each logical record, and the initialization condition is determined by the “reference completion condition” of the logical record.
  • a logical element refers to the value of another data item in the generation condition and expression to set the value in the corresponding output data item area. In other words, an output logical record that is a collection of output data items can be considered as referring to the values of other logical records.
  • a file and B file are merged (sorted) in ascending order of the product code to create an ⁇ file.
  • the product code of the ⁇ file is represented by A. key
  • the product code of the B file is represented by B. key.
  • condition that clears the value of the B file input logical record is equal to the condition that the C file output logical record that references the B file input logical record completes the reference (ie, A. key> B. Key). .
  • the condition that clears the value of the referenced logical record is a collection of “reference completion conditions” of the output logical record that refers to the corresponding logical record.
  • the logical elements of the data items g, h, j, and k referred to by the output data item f are ordered so that they are executed before the logical element of the output data item f.
  • the execution order of all logical elements can be clarified by reference relationships between data items.
  • the method for determining the execution order of 'logical elements' is detailed in WO 2 0 0 4/6 8 3 4 2 and FR 2 0 0 4/8 1 7 8 8 It is stated. ..
  • the hierarchical structure of the loop unit is determined, and the relative order of the output logical record (output element) and input logical record (input element) and the loop unit hierarchy to which it belongs are determined.
  • the position of the initialization element relative to the output element and the input element is determined.
  • the optimal processing order of the logical element group that generates the value of the output data item belonging to the same logical body is determined. Therefore, if the information is integrated in the following procedure, all the elements in the unit The order of modules is determined.
  • the initialization elements are placed using the results of (2), and the optimal processing order is set using the results of (3). Placed the logical element group just before the output element that outputs the output logical data group (output logical record) generated by them, (1)
  • LyeeALL3 The outline of the program manufacturing procedure by LyeeALL3 is as follows. Part of the detailed procedure is introduced in the publicly available 'Technical document' Let's use LyeeALL3 Part 1 VI.0 (prepared by Riki Tena Co., Ltd., November 2005 edition) j.
  • the program ID is registered with the event unit processing as one program unit.
  • the program structure is the optimal processing order structure.
  • LyeeALL 3 does not create screens, but screens are created using general screen development methods. Checking program operation.
  • the other requirement information is the output data item generation expression and generation expression execution condition.
  • the reference relationship between the items can be determined, and the reference relationship between the logical records to which each output data item belongs can be determined from the reference relationship between the output and input data items.
  • the multiplicity ratio between logical records can also be obtained from information such as reference conditions.
  • Requirement information (including reference multiplicity information) entered in an intermediate language and program design information are entered as input means.
  • the storage means holds the input requirement information and program design information in the requirement DB.
  • the created element module determination means determines the element module to be created and the requirement information to be assigned to the element module template from the input requirement information and program design information, and stores them as created element module information.
  • the input / output element array and loop hierarchy structure determination means Determines the general placement order and the loop unit hierarchy to which it belongs, and stores it as order information 1.
  • the initialization element array determination means refers to the order information 1 based on the created element module information (including reference multiplicity information) stored in the storage means, and initializes the output logic element. The position of the element is determined, and order information 1 is expanded and stored as order information 2.
  • the logical element array determining means uses the created element module information (generation formula and And the generation expression execution condition), the arrangement order of the logical elements in the logical element set of output data items belonging to the same logical record is determined. Is determined, and the order information 2 is expanded and stored as the order information 3.
  • the path element array determining means determines to place the path element at the end of the element module group within each 10 unit with reference to the order information 3.
  • the sequence information 3 is expanded and stored as sequence information 4.
  • the language conversion means converts the requirement information input in the intermediate language into the specified language according to the stored language conversion table, based on the specified language information that has been input and stored, and the conversion requirement information and Remember me.
  • the code generation means generates an element module by substituting the conversion requirement information for the element module template stored in the storage means based on the created element module information stored in the storage means, and generates the generated element module. Modules are arranged based on order information 4 and stored as complete source code.
  • Compile means compiles the completed source code and stores it as object code.
  • Figure 23 shows the LyeeALL 3 system configuration (hardware configuration) that performs the above processing.
  • Figure 24 is a flowchart of the LyeeALL 3 process described above.
  • Figure 25 is a flowchart showing the initialization element array determination process described above, and
  • Figure 26 is a flowchart of the logical element array determination process.
  • Figure 27 shows a flowchart of the path element array determination process.
  • Other examples Another method for determining the relative relationship between the relative position of the output element and input element and the hierarchy of the loop unit to which it belongs using “reference multiplicity” is described below.
  • the information obtained from Table 18 can be expressed using directed duraf as shown in Fig. 28, Fig. 29, and Fig. 30.
  • the multiplicity information of the reference all the no Since the relationship between the nodes cannot be obtained directly, it is not possible to describe a single directed graph. For example, the order relationship between A and C is not known from the multiplicity. Therefore, it is necessary to capture the order relationship between nodes that are not represented. Based on the loop units that can be directly grasped from the multiplicity and the order relationship (hierarchy), the missing information is supplemented to complete the order relationship of the loop units.
  • a flow in which a loop unit is represented in a directed graph is called a node flow.
  • Step 1 Supplement missing information
  • A, B optional
  • the order relation of the unknown third node is complemented from the order relation of the pair of two nodes. For example, when there are nodes A, B, and C, the multiplicity of references between A and B and A and C is determined. Since B and C do not have a reference relationship, the order relationship is undecided. In order to determine the overall processing order, it is necessary to determine the order of B and C. Therefore, using the relationship between two node pairs for which the order relationship has been determined, the order relationship between the second unknown node pair is analyzed.
  • the created inter-ternary completion table is compared with the multiplicity information of the reference, and the order relationship of the undetermined node pair is determined from the candidates.
  • A: B multiplicity is 1: N and A: C multiplicity is 1: 1, then A and B have a relationship of A to ⁇ . Since A is “same”, the candidate for the fourth row is selected. Next, the “priority” with the highest priority in the fourth row is selected, The relationship between B and C determines that B is “subordinate”. For all undecided node pairs, a similar inter-term catch table is created, and the order relation is determined by checking against the multiplicity information.
  • Step 4 If the priority of the candidates is the same and the inter-order decision is not decided, it is put on hold, and after the other order relations are decided, the new decision information is used to create and match the three-term capture table. Try. Repeat this analysis until there are no more open node pairs. The order relation information determined as a result is called supplemented multiplicity information. Step 4
  • the hierarchy (loop, unit) is extracted from the captured multiplicity information. Nodes that belong to the same hierarchy become one loop unit. The hierarchical position of the upper node is placed in the child hierarchy as much as possible. ⁇ '
  • a node that can be the lowest layer node in the undefined node set (candidate for the lowest layer node) and those that are in the same layer are collected into one layer.
  • the lowest layer node candidate is a group of nodes that do not rank higher than any unconfirmed node among the unconfirmed nodes. An example of this is shown in Figure 32. .
  • Step 5 A node belonging to the hierarchy is determined. (Determining node affiliation hierarchy) (iv) When all nodes are determined, the process ends. If there is an indeterminate node, return to (ii) and repeat the same process. Step 5
  • Table 23 summarizes the inter-layer multiplicity information in Fig. 34.
  • Single-layered multiplicity information is derived from multiplicity information, complemented multiplicity information, and inter-layer multiplicity information.
  • Single-layered multiplicity relationship is the result of omitting the hierarchical relationship of nodes and extracting only the order relationship before and after.
  • Fig. 35 shows the hierarchical structure of Fig. 34 in a single layer.
  • a loop hierarchized node flow is created using the node hierarchy membership information and single hierarchy multiplicity information. Created by adding the hierarchy information to which the node belongs to the node flow captured by the single hierarchy multiplicity information.
  • Figure 36 shows a loop hierarchy of the node flow of Figure 35.

Landscapes

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

Abstract

入力、値の生成、出力、値の領域の初期化、経路決定を行う定型構造を持った部品プログラムによって構成されているプログラム作成方法において、部品プログラムが処理する対象の論理レコード間の参照の多重度情報と、出力データ項目の値を生成するための生成式と生成式実行条件が示すデータ項目間の参照関係情報に基づいて、仕様ごとに異なる部品プログラムのループを含む実行順序を決定する。

Description

プログラム実行順序決定装置おょぴ方法
技術分野
この発明は, プログラム実行順序決定装置およぴ方法に関する。
明 背景技術 田
I . ソフ トウェア開発の課題について書
高い品質を持つソフ トウヱァを容易に迅速に製造することは、 ソフ ト ウェア開発研究分野の基本的な関心事である。 ソフ トウエア開発の生産 性、 保守性、 品質を向上するための種々の方法論 (ソフ ト ウェア開癸手 法)および技術が考案され提案されてきたが、いまだにこれらの課題(ソ フ トウユア開発の生産性, 保守性, 品質の向上) を本質的に解決できた' ものはなレ、。
理由の 1つは、 ソフ トウェア自身が複雑なものであり 、 捕らえにくい ものであるからである。
理由の他の 1つは、 現在のソフ トウエア開発方法論 (開発手法) に限 界があるからである。 実際、 現在までに提案されたほとんどすべての方 法論は、 明快に理解でき、 かつ修正可能なシステム (ソフ トウェア ' シ ステム) の製造に失敗しているのみならず、 非常に広範囲の能力、 技術 および知識を持つ専門家にしか利用できないものと, いまだに考えられ ている。 その結果, 人件費や維持費が高いものになっているし, 現在の ソフ ト ウェア開発の方法論にしたがって作成されるソフ トウェアをコン ピュータ上で実行させるだめには広範なチェックが必要になる。 従来のソフ ト ウェア開発手法には, ( 1 ) 手続き型プログラ ミング, ( 2 ) 宣言型プログラミングおよび ( 3 ) オブジェク ト指向プログラミ ングがある。 これらの開発手法の概要と課題をまとめると以下のよ うに なる。
( 1 ) 手続き型プロダラミング
手続型プログラミングは、 制御手順などの手続きを明示的に指定する プログラミングである。 手続型プログラミングは, その記述の扱いやす さから、 業務システム開発とその実装において効果を発揮してきた。 し かし、 いまだ要件 (開発すべきソフ トウェアの発注者であるユーザのも つ要求) を正確にソフ トウェア上に実装することの困難性、 生産性や保 守性の困難性という重大な課題が残されている。
( 2 ) 宣言型プログラミング
要件定義そのものである宣言によってプログラ ミングを行う宣言型 のプログラミングは、 人工知能、 エキスパー トシステムをはじめ論理的' 証明 (logical reasoning) 、 推論 ( inference) 、 ユーザ情報収集 (user intelligence gathering ) など、 非計算系のアプリケーショ ン分野で使 用されている。 宣言型プログラミングでは、 上述した手続型プログラミ ングで用いられる制御手順は用いられず, 要件定義されているデータ間 の関係を宣言し、 その宣言に基づいてプログラミングが行われる。 その メ リ ッ トは、 上述の手続き型プログラミ ングと異なり、 要件を正確に実 装できるという ことである。 、
しかしながら、従来の宣言型プロダラミングにも、実行制御の構造上、 実行時の効率が良くないという問題がある。 また、 宣言型プログラミン グを行うための言語は使いこなすのが難しいという欠点がある。 宣言型 プログラミングを行うための言語には、 論理式を用いる論理型言語 (た とえば P R O L O G) や対象の状態を数学的な関数と して記述する関数 上述のよ うなソフ トゥヱァ開発の課題を解決する手段と して、 L y e e ( g o v e r n m e n t a l^ m e t h o d o l o g i f o r s o f t w a r E p r o v i d e n c Eの語尾をとつたもの。 「リー」 と読む。 発明者は根来文生。 ) と呼ばれるソフ トウェア開発方法論が提 案されている。 L y e eは、 要件からプログラムのコードを自動的に生 成することが可能な新しいソフ トウエア開発方法である。 '
L y e eでは、 要件を、 変数であるデータ項目 (L y e eでは単語と も呼ばれる) ごとに宣言 (定義) し、 データ項目 ごとの宣言を実行する ための定型構造のモジュールに、 その宣言を代入することによってプロ グラムを作成する。
L y e eによるプログラム全体は、 データ項目単位の宣言を実行する 定型構造のモジュールの集合で構成されている。 したがって、 この定型 構造のモジュールにデータ項目ごとの要件の宣言を代入することによつ て、 自動的にプログラムを生成 (ソースコードを生成) することも可能' である。
L y e eによるプログラムの自動生成は、 たとえば「L y e e A L L J と呼ばれるツール (プログラム) によつて実現されている。 L y e e A L Lは、データ項目の宣言を実行する定型構造モジュールのコード(「テ ンプレート」 と呼ぶ。 テンプレートはひな形の意。 ) の所定の場所に、 要件の宣言を自動的に代入し、 L y e eにおけるプログラム設計方法に 従って定型構造モジュールを配置し、 プログラム全体のソースコードを 自動的に生成する。 L y e eにおけるプログラミングでは、 要件を実行 する手順 (手続き) を記述する (ソースコードを記述する)必要がなく、 要件をデータ項目単位に宣言すればよい。 この意味で, L y e eに基づ くプログラミ ングは, 宣言型プログラミングと言える。 以下に、 L y e eによるソフ トウェアの開発方法論 (以下, L y e e方法論という) の 3 型言語 (たとえば L I S P ) がある。 宣言しただけでは値は生成されな いから、 値を生成するために、 宣言型言語は、 宣言を実行するための手 続きの論理メ力二ズムを持っている。この手続きの論理メ力二ズムには、 あらゆる宣言を実行できるよ うにするために多くの条件があり、 数学や 論理学の知識も必要で、 使いこなすのが難しい。 このために、 プロダラ ミング言語と して普及していない。 人間の自然言語に近い構造を持つ手 続型言語による手続き型プログラミングの方が普及しているゆえんであ る。
( 3 ) オブジェク ト指向プログラミング
オブジェク ト指向プログラミングは, データとそれを操作する手続き
(メ ソッ ドと呼ぶ) をオブジェク トと呼ばれるひとまとま りの単位 (モ ジュール) と して一体化し、 このオブジェク トを組み合わせることによ つてプログラムを記述するプログラミングである。 オブジェク トという 独立性の高いォブジェク ト (モジュール) によってプログラムが構成さ れるため、 変更おょぴ修正の影響の範囲が限定され、 またオブジェク ト の単位の再利用がしゃすく なるなどのメ リ ッ トがある。
しかしながら、 要件を、 どのような単位のオブジェク トに実装するの か、 さらに、 構成要素をどのように組み立てるかについては厳格な規則 なく、 また、 構造化設計アプローチのような実行順序についての規制 もない。 実際の開発の場においては、 オブジェク ト間の関係が完全に一 貫性を持っていず、 多く の場合、 開発成果物に大量のォブジ タ トが生 成されていても、 作成者自身を除けば誰もそれを理解していないのが現 状である。 すなわち、 完成したソフ トウェアは規則性のない機能のかた まり となり、解体したり、再使用したりするのが困難になる傾向が強い。
I I . L y e e開発方法論について 概要を述べる。
1 . データ項目ごとの要件の宣言
上述したように, L y e e方法論では、 データ項目ごとに要件を宣言 する。 要件の宣言を構成する要素の主なものを挙げると、 (1)データ項目 名、 (2)その値の生成式、 (3)その値の生成条件 (生成式の実行条件) 、 (4)入出力属性、 (5)値の属性がある。 次に示す表 1は、 デ一タ項目 (単 語) の要件の宣言の一例である。
表 1
Figure imgf000007_0001
「データ項目名」 はデータ項目を識別するための識別子、 「生成式」 はデータ項目の値を生成するための計算式、 「^成条件」 は 「生成式」 を実行するかどうかを示す実行条件である。 なお, 1つのデータ項目が 2つ以上の生成式を持つ場合があり、 その場合にそのどちらが実行され るかも 「生成条件」 によって決定されることになる。 「入出力属性」 は データ項目の値が、 入力される値であるカ またはプログラムによって 生成されて出力される値であるかの区別を示す。 表 1では、 '「I」 は入力 される値であること、 「0」 はプログラムによって生成されて出力される 値であることをそれぞれ表わしている。 「属性」 は、 データ項目の値の 属性であり、 たとえば、 入力される値またはプログラムによって生成さ れて出力される値が, 整数であるカ 浮動小数点数であるか、 ブール値
(真偽値) であるかなどを区別するものである。 表 1では、 int は整数
(integer) 、 floatは不動小数点数を表す。
以下, 生成式および生成条件に用いられるデータ項目を 「始点」 と呼 ぴ、 生成されて出力されるデータ項目を 「端点」 と呼ぶことにする。 表 1に示したデータ項目の要件の宣言は、 従来のプログラミング言語 のコードで表すと表 2のようになる。 ここで, 「Sa」 は、 データ項目 a の宣言を'意味する。 同様に, 「S b」 , 「 S cj , 「 S d」 , 「 S e」 は, それぞれデータ項目 b , c , d , e の宣言をそれぞれ意味する。
表 2 .
Figure imgf000008_0001
たとえば、 データ項目 aの宣言 Saのコードは 「もし、 b *e > 2が真 ならば、 データ項目 aに b + cの計算結果を代入し、 データ項目 aの値 を出力」 することを意味している。 宣言 Sc のコードは 「データ項目 c に値を入力」 することを意味している。
L y e e方法論においては、 開発者は、 データ項目ごとの要件の宣言 (定義) が実行される順序 (制御ロジック) を指定する必要はないこと を, 特徴の一つと している。 表 2に示すよ うに、 データ項目 aの宣言 Sa は、 データ項目 b を使用しているにもかかわらず、 宣言 Sbは、 宣言 S a の後に位置している。 後述するよ うに, L y e e方法論では、 表 1に示 .したよ うに要件をデータ項目ごとに宣言すれば、 データ項目の宣言を実 行する順序を指定することなく、 すべてのデータ項目の計算が完了する コードを生成することができる。
なお, 従来の手続型プログラミングの場合, プログラムが要件通りに 成立するためには、 開発者が, S c→Se (または S e→S c )→S b→Saのよ うに, 実行順序を記述しなければならない。 このよ うな実行順序を決定 するためには、 要件があらかじめ全て決定済みである必要があり、 全て の要件が決定しなければプログラミングをスタートできなかった。 しか しながら、 L y e eでは、開発者はデータ項目の値の生成の実行順序(制 御ロジック) の問題を扱う必要がないので、 要件が不完全であっても、 プログラミング ( L y e eにおいては要件をデータ項目 ごとに宣言して いく作業) をスタートすることができる。
データ項目の値の生成の実行順序 (制御ロジック) は、 L y e e方法 論においては、 すべての要件に対応できる普遍的ロジックと して、 定型 構造のテンプレー トとして提供される。 その結果、 プログラミングにお ける制御ロジック上のミ スを無くすことができる。 さらに, テンプレー トが用られてソースが自動生成されるので、 プログラミング時間が大幅 に短縮される。 柔軟性も、 L y e e方法論の主要な利点である。 何故な ら、 保守業務 (すなわち、 要件の修正または変更) は、 データ項目の宣 言の追加、 削除おょぴ Zまたは修正という作業にまで軽減できるからで ある。
2 . 実行順序の指定を不要にする実行制御ロジック
L y e eにおいては、 なぜデータ項目の宣言の実行順序を指定する必 要がないのか ( L y e e において、 どのような制御ロジックによって、 出力データ項目の値の生成が要件どおりに成立することを保証している のか) 。 L y e eでは、 この順序 (実行手続き) の問題を、 2通りの方 法で解決している。 第 1の方法は 「繰り返し法」 、 第 2の方法は 「最適 順序化法」である。以下,繰り返し法と最適順序化法について説明する。 ( 1 ) 繰り返し法
第 1の方法 「繰り返し法」 について、 表 1の要件を例にとって説明す る。 第 1図は、 データ項目ごとの宣言を実行する実行制御ロジックを簡 易に示したものである。 この制御ロジックでは、 実行範囲内のコードの 実行結果が、 不動点 (f i xed po int ) に達するまで、 コードの実行を繰り 返す。 ここで 「不動点」 とは、 実行範囲のコードの実行をこれ以上繰り 返しても,いかなるデータ項目の値も新たに生成されなくなった状態(変 化が起こらなくなった状態) である。 不動点に達した状態を 「状態変化 なし J とも言う。 直前の一巡実行の結果と、 今回の一巡結果を比較した' とき、 値の決定状態に変化がない、 という意味である。 「繰り返し法」 の制御ロジックは、 不動点に達するまで、 実行範囲のコードの実行を単 純に反復する。 したがって、 どのよ うな順序によって, データ項目の生 成を実行しても、 全ての出力データ項目の値を生成することができるこ とになる。
不動点に達する原因には、次の 2'つのケースがある。 第 1のケースは、 繰り返し範囲内のデータ項目の値が, 全て生成済み (決定済み) となる ことである。 第 1図の場合の値の成立過程を表 3に示す。 〇印は値が成 立済みであることを示す。 X印は値が未決定であることを示す。
表 3 初期状態 1回目 2回目 3回目 4回目 a X X X 〇 〇
c X 〇 〇 〇 〇
b X X 〇 〇 〇
e X 〇 ·〇 〇 〇
状態変化 一 あり あり あり なし 第 1図および表 3を参照して, 1回目 ( 1巡目) の実行で入力データ 項目 c と e の値が決定される。 2回目 ( 2巡目) の実行でデータ項目 b の値が新たに決定される。 3回目 ( 3巡目) の実行でデータ項目 aの値 が決定される。 全てのデータ項目 a, b , cおよび eの値が決定する (す なわち, 不動点に達する) ので、 4回目 (4巡目) の実行で新たに生成 される値はない。 この過程を 「状態変化」 で言い換えれば、 1 回目終了 後の状態は初期状態と比較して 「状態変化あり」 、 2回目は 1回目 と比 較して 「あり」 、 3回目は 2回目 と比較して 「あり」 、 4回目は 3回目' と比較して 「なし」 、 となる。 第 2のケースは、 いく ら繰り返し処理をしても値が生成できないデ一 タ項目が残る場合である。 すなわち, データ項目の生成式を構成する始 ^の値が,繰り返し実行範囲内では決定されない場合である。たとえば、 第 1図において、 データ項目 a の生成式 (第 2行目) カ , 「 b + c」 で はなく, 「b + c + d」 であるとする。 データ項目 dは、 第 1図の実行 範囲で入力されるデータ項目でもなく、 生成される出力データ項目でも ない。この場合の、繰り返し実行による各データ項目の値の成立過程は, 表 4の通りである。
表 4 初期状態 1回目 2回目 3回目
a X X X X ※生成条件は成立するが生成式が 成立しない。
c X 〇 〇 〇
b X X 〇 〇
e X 〇 〇 〇 . ^
状態変化 ― あり あり なし
1回目 ( 1巡目) の実行で入力データ項目 c と eの値が決定される。 2回目 ( 2巡目) の実行でデータ項目 bの値が新たに決定される。 3回 目 ( 3巡目) の実行では、 データ項目 aの生成条件 ( ( b * c ) > 2 ) ( 1 行目) は判定可能であるが、 生成式 (上述した, 「 b + c + d」 ) は始 点 dの値が未決定であるので, 値が決まらない。 3回目 ( 3巡目) の実 行では、 新たに値が決定するデータ項目がなく、 従って、 データ項目 a は、 これ以降は何回実行を繰り返しても、 値が成立する可能性が全く無 く、 未決定のままである。 この過程を 「状態変化」 で言い換えれば、 1 回目終了後の状態は初期状態と比較して 「状態変化あり」 、 2回目は 1 ' 回目 と比較して 「あり」 、 3回目は 2回目 と比較して 「なし」 となる。 この 2つの事例でわかるよ うに、 状態変化が 「なし」 の判断は、 不動点 に達した後、もう 1回実行した後でなければ判定できない(逆に言えば, 不動点に達したかどうかは, 不動点に達した後にも う 1回実行されるこ によって明らかになる) 。
繰り返し法では、 いつ繰り返しを停止するかが重要である。 操り返し を制御するためには、 要件に依存せずに、 不動点に達したことを判定す るロジックが必要である。 このような制御ロジック (不動点判定制御口 ジック) については、 処理速度やプログラムサイズの点からみて, 効率 のよい技術がこれまでには開示されていない。
( 2 ) 最適順序化法 最適順序化法は、 順不同に並べられたデータ項目ごとの宣言を、 一巡 処理で成立するように、 自動的に最適順序に並べかえて実行コードを生 成する方法である。 並べ替えの方法に関する技術は、 国際公開第 2 0 0 4 / 6 8 3 4 2号パンフ レッ ト、 国際公開第 2 0 0 4 / 8 1 7 8 8号パ ンフ レツ ト、 国際公開第 2 0 0 5 / 4 3 2 7 1号パンフ レツ トにおいて 開示されている。 繰り返し法と最適順序化法は一見対極に'あるよ うであ るが、 この 2つの方法が可能になっているのは、 L y e eにおいては、 データ項目単位に要件をと らえ、 プログラムを構成するモジュールをデ ータ項目単位の処理を基本にしていることにある。 繰り返し法では、 最 適順序の順に値が成立するので、 プログラムの実行の都度順序を探して いるといってもよい。 最適順序化法は、 実装する前に最適順序化して、 プログラムの実行時に最適順序で実行される方法である。
3 . システム、 プログラムの構造 · ( 1 ) システムの分割
1つのシステム (システム ' プログラム) は、 通常, いく つかの単位 に分割された構造になっている。 それは、 複雑な仕様の大きなシステム を分割せずに作るのは非常に困難だからである。 分割は、, 階層的に行わ れる。 ここでは、 システム (あるいはサブシステム) を分割したものを プログラム、プログラムを分割したものをモジュールと呼ぶことにする。 一般的なソフ トウエア開発では、ユーザから見たシステム(画面, 帳票, 外部イ ンタフェースなど) の設計 (基本設計) が終わると、 次に、 それ を実現するためのシステムの内部構造を設計し、 システムをどのように 分割するかを設計する (詳細設計およびプログラム設計) 。'次のプログ ラ ミ ングの段階では、 まず分割した単位の構造設計 (モジュール設計) を行い、 最後にプログラム言語によってソースコー ドの記述を行う。 ( 1 — 1 ) 従来の開発手法の場合
システムの分割設計手法にはいくつかの方法がある。 以下, 構造化手 法おょぴォブジェク ト指向を例に, 従来のシステムの分割設計手法を説 明する。
構造化手法では、 システムの機能単位に, プログラム、 そしてモジュ ールへの分割が行われる。 分割されたプログラムおょぴモジュールの独 立性が高い (他のプログラムおょぴモジュールとの係わり度合いが少な い) ほど、 システムの品質が高いといえる。 しかしながら、 構造化手法 の設計方法には厳密な設計規則がないので、 独立性の高さは設計者のス キルに依存し、 一般には独立性は高く ない。'独立性が低い場合、 1つの プログラムおよびモジュールを設計するとき、 その他のプログラムおよ ぴモジュールとの関連を理解しなければならレ、。 モジュールを修正する ときも、 他のプログラム、 またはモジュールに与える影響を考慮しなけ · ればならない。 また、 機能単位に分割する方法では、 プログラムゃモジ ユールが行う処理は仕様に依存するので、 再利用性も低い。
オブジェク ト指向は、 モジュールの独立性、 再利用性の問題を解決す るために生まれた手法である。 モジュールは完全な独立性があり、 再利 用性が高い。 しかしながら、 モジュール (すな ち, オブジェク ト) の 単位の定義は観念的なところがあり'、 モジュール (オブジェク ト) の設 計の良し悪しは技術者のスキルに大きく依存する。 また、モジュール(ォ ブジ ク ト) の内部構造の設計方法は規定されていないので、 その設計 の良し悪しはやはり技術者のスキルに依存する。
( 1 - 2 ) L y e eの場合
L y e eでは、 プログラムの分割の単位を、 「イベン ト」 ごとの出力 に着目 して決定する。 「イベント」 とは, プログラミングの分野では, ュ 一ザがコンピュータに対して行った操作という事象 (マウスのク リ ック ゃキ一押下など) やコンピュータが発するなんからの事象 (エラーメ ッ セージなど) などのことを指す。 プログラムは、 何らかのイベン トを開 始の合図として、 発生したイベントに対応した一連の処理を行い、 処理 の結果を表示したり、 記録したり した後、 プログラムはアイ ドリング状 態となる。 たとえば、 Windows (商標) などの操作画面で、 コンボボック スの右端のポタンをク リ ックすると、 項目選択リス ト (リス トボックス) が表示される。 この場合、 ユーザが行った 「コンボボックスの右端のボ タンをク リ ック」 がイベントで、 「項目選択リス ト (リス トボックス) を表示」するまでの一連の処理がイベントに対応した一連の処理である。 イベン トは、 ユーザが直接行う操作に限定されない。 プログラム内部に 予め設定されたタイマーもイベン トである。
システムの役割は、ユーザの求め(直接であれ間接であれ)に応じて、 ' '求められた処理結果を出力することである。 従って、 プログラムは、 何 らかのイベント (ユーザによる画面上のポタン押下など。 イベン トの定 義は後述箇所参照。 ) によって、 イベン トに対応した一連の処理(入力、 演算、 出力) を開始し、 最終の出力 (画面への結果の表示など) を完了 したとき、 処理を終了する。 .
L y e e方法論では, システムを分割したプログラムの単位を, 「ィ ベントに対応した一連の処理」 とする。 このことによって、 プログラム は, 相互依存のない独立性を持ち、 ソフ ト ウェアの開発および保守にお ける品質維持が容易になる。また,分割基準が明快で理解しやすくなり、 プログラム設計の良し悪しが技術者のスキルに依存することがない。 この発明における 「プログラム」 (イベントに対応した一連の処理) は、 定型の制御構造を持ったモジュールで構成されている。 このモジュ ールを 「単位モジュール」 と呼ぶことにする。 この単位モジュールは、 さらに、 データ項目ごとの宣言を実行するための何種類かのモジュール 群によって構成されている。 これらの宣言を実行するモジュールを 「要 素モジユ ーノレ」 と呼ぶことにする。
第 2図は、 上述した L y e eによるシステムの分割構造を図示したも のである。
単位モジュールは、 出力に着目 して要素モジュールをグループ化した 単位である。 コンピュータの入出力処理は、 データ項目単位ではなく、 データ項目の集合単位に行われるが、 同一の媒体 (画面、 ファイル、 帳 票など、 データ項目を記録または表示する手段) に対して入力または出 力処理されるデータ項目の集合を、 本願では論理レコー ドと呼ぶ。 1つ の出力論理レコー ドの生成おょぴ出力に関与する要素モジュールの集合 をと らえ、この集合を 1つ又は複数処理するのが単位モジュールである。
4 . 従来の L y e eの構造
「繰り返し法」 制御ロジックを採用した場合の、 単位モジュールの構 造や、各要素モジュールの処理内容や構造は、いくつかの実施例があり、 国際公開第 0 1 / 9 3 0 2 6号パンフレツ ト、 国際公開第 2 0 0 4 / 8 1 7 8 8号パンフレツ ト、 国際公開第 2 0 0 5 / 2 9 3 2 2号パンフレ ッ トに開示されている。 これらの従来の L y e eでは、 単位モジュール は、 さ らにパレッ ト と呼ばれる単位に 3分割されている。 単位モジユ ー ルが 3分割されている従来 L y e eの実施例の 1つについて、 単位モジ ユールおょぴ要素モジュールの概要を説明する。
( 1 ) 単位モジュール
第 3図は,' 単位モジュールの構造の一例を図示したもので, 表 1 に示 した要件の場合の要素モジュールの構造を示したものである。 単位モジ ユールには W 0 4 ノ レ ツ ト , W 0 2 パ レ ツ トおよぴ W 0 3 ノ レ ツ トを含 み, これらのパレツ トは、 その処理の内容ごとに要素モジュールを集合 させたものである。 ここでいう 「処理の内容」 とは、 仕様に依存する機 能的処理ではなく、 コンピュータの基本処理である入力、 出力、 演算と いうハー ドウェアの視点から見た処理ある。 L y e eの特長は、 モジュ 一ル化を機能依存でなく、 普遍性をもったコンピュータの基本処理ごと に行ったところにある。 これによつて、 汎用的に適用可能なモジュール のひな型化に成功している。
W 0 2パレツ トは、 入力データ項目の入力にかかわる要素モジュール の集合である。
W 0 3パレ ツ トは出力データ項目の生成式の実行条件の判定にかか わる要素モジュールの集合である。
W 0 4パレツ トは出力データ項目の値の生成 (生成式の実行による) と、 値の出力にかかわる要素モジュールの集合である。
各パレツ トには、 パレツ ト内の複数の要素モジュールを起動するため のパレツ ト制御モジュールを含む。そして,パレツ ト制御モジュールは、 第 2図に示す全体制御モジュールによつて起動される。 全体制御モジュ ールはプログラムに 1つ、 またはシステム全体で 1つでもよレ、。
,( 2 ) 要素モジュール .
要素モジュールは、 処理の種類別にいくつかの種類があり、 要件に依 存しない定型構造を持っている。 ここで説明する一例では 9種類の要素 モジュールがある。 以下に、 パレッ トごとに、 要素モジュールの概要を 説明する。
< W 0 4パレ ツ トの要素モジユーノレ >
W 0 4 ノ《 レ ッ トは、 初期化モジュール S 4 (第 3図においては, 単に f S4j で示す。 他の種類のモジュールも同様) 、 データ項目モジュール L4 ( L4) 、 出力モジュール 04 ( 04) 、 経路判定モジュール R4 ( R4) の 4 種類のモジュールで構成されている。
W 0 4パレッ トに含まれるデータ項目モジュール L4 は、 出力データ 項目の生成式を実行し、 値を決定するモジュールである。 このデータ項 目モジュール L4は出力データ項目の生成式ごとに作成される。上述した 表 1において, 生成式は 2つあるので, 第 3図に示す W 0 ·4パレッ トに 含まれるデータ項目モジュール L4は 2つ存在する。データ項目モジュ ル L4_aが、 出力データ項目 aの生成式 b + c を実行するモジュールを, デ一タ項目モジュール L4— bが出力データ項目 bの生成式 2 * c + 5を実 行するモジュールをそれぞれ表す。
出力モジュール 04 は、 出力データ項目の値の集合 (出力論理レコー ド) を媒体へ出力する処理を行うモジュールである。
経路判定モジュ^ ~ル R4 は、 W 0 4パレツ トが不動点に達した後、 次 に実行する W 0 2パレッ トを指定するモジュールである。
初期化モジュール S4 は、 単位モジュール内の値やフラグの領域の初 期化を行う。
< W 0 2 ノ レッ トの要素モジュール >
W 0 2 ノ、レツ トは、 入力モジュール 12 ( 12 ) 、 データ項目モジュール L2 ( L2) および経路判定モジュール R2 ( R2) の .3種類のモジュールを含 む。 '
入力モジュール 12 は、 入力データ項目の値の集合 (入力論理レコー ド) を、 媒体から読出してメモリ領域へ入力する処理を行うモジュール である。
W 0 2 ノ レツ トに含まれるデータ項目モジュール L2 は、 入力された 値の属性が要件に合致するかどうかのチェックを行うモジュールである。 W 0 2 'パレツ トに含まれるデータ項目モジュール L2は,入力データ項目 ごとに 1つ作成される。 上述した表 1において, 入力データ項目はデー タ項目 cおよびデータ項目 eの 2つであるから, 第 3図において, W 0 2パレツ トに含まれるデータ項目モジュールは, 2つ存在する。
経路判定モジュール R2は、 W02パレツ トが不動点に達した後、 次に実 行する W 0 3 ノ、"レツ トを指定するモジュールである。
< W 0 3パレッ トの要素モジュール > '
W 0 3パレツ トは、 データ項目モジュール L3 ( L3 ) および経路判定モ ジュール R3 ( R3) の 2種類のモジュールを含む。
W 0 3パレツ トに含まれるデータ項目モジュール L3 は、 生成条件判 定を実行するモジュールであり,出力データ項目の生成式の実行条件(生 成条件) ごとに作成される。 第 3図において, データ項目モジュール L3 は 2つ存在する。 データ項目モジュール L3一 aは、 出力データ項目 a の生 成条件 b * e > 2であるかどうかの判定を実行するモジユールであり, データ項目モジュール L3一 bは,出力データ項目 bの生成条件 c > 0であ るかどうかの判定を実行するモジュールである。
経路判定モジュール R3 は、 W O 3パレツ ト内が不動点に達した後、 次に実行するパレッ トを, 単位モジュール内の W04 ノ、レッ ト力 または 他の単位モジュールのパレツ トに指定する。
( 3 ) 要素モジュールの構造 .
要素モジュールのそれぞれはひな型化されており、 処理の対象データ 項目、 生成式および生成条件、 入出力対象の媒体など、 要件によって変 化する情報を代入することによって、 モジュールが完成する。
第 4図は, データ項目モジュールについてのひな形化された処理の流 れを示している。 データ項目モジュールは、 第 4図に示すよ うな共通の 処理フロー構造を持っている。
各要素モジュールはそれぞれ単一の処理を担当しているが、 その目的 処理が未完了かつ実行条件が整っているなら目的処理を実行し、 実行条 件が整わない、 または処理が完了済みであれば実行しない、 という判定 ステップを持っている (ステップ 4 1 ) 。 繰り返し法では、 繰り返し時 の無駄な処理を除くため、 処理すべきモジュールのみを実行したい。 こ の制御が、 ステップ 4 1 の要素モジュールの自律的自己制御によって、 実現されている。
データ項目要素モジュール L4— a (目的処理が, 出力データ項目 aの値 生成であるモジュール) を具体例にとって, 第 4図に示すフローチヤ一 トを説明する。 以下に示す表 5は、 第 4図に示すフローチャートにおけ る各ステップと,データ項目要素モジュール L4_aの処理内容の対応関係 を示している。 '
表 5
Figure imgf000020_0001
ステップ 4 1は、 目的処理を実行するか否かを判定するステップであ る。 ステップ 4 1では 「目的処理未完了?」 および 「実行条件成立? J の 2つの判定が行われる。
第一の判定 「目的処理未完了?」 は、 データ項目 aの値の記録領域に 値があるか否かの判断を行う。 L y e eでは値の.記録領域を適切なタィ ミングで初期化し, データ項目の値が成立したときの 1度だけ領域に値 を記録するので、 このよ う な判定が可能になる。
第二の判定 「実行条件成立?」 は、 L4の場合、 生成条件 (実行する生 成式の実行条件) が成立しているか否かの判断を行う。 すなわち、 b * e > 2が成立か否かを判定する。
これら第一おょぴ第二の 2つの判定が共に真であれば、 目的処理の実 行に進む (ステップ 4 2 ) 。 目的処理は生成式 b + c の実行である。 実 行結果の値は仮領域 a_t rapに記録される。
次のステップは、 要件に適合した結果が得られたか否か判定するステ ップである (ステップ 4 3 ) 。 具体的には、 仮領域 a_t rapに値があるか 否かを判定する。 たとえば、 データ項目 cの値が成立していなかつたと すると、 生成式 b + c の実行は成功せず、 a_tmp に値は記録されない。 この場合, ステップ 4 3の判定の結果は N o となる。
要件に適合した結果が得られていない場合 (ステップ 4 3で N o ) , ステップ 4 5へ進み、 再実行するかどうかが判定される。 具体的には, 再実行するかどうかの判定は, 自パレツ ト内で状態変化があつたか否か の判定である。 自パレツ ト内の状態変化を調べて結果を制御領域に記録 し、 状態変化があつたのであれば、 再実行すべきなので,. ステップ 4 7 に進む (ステップ 4 5で Y e s ) 。 ステップ 4 7では、 自 ノ、。レッ トの L4 群を再度一巡実行させる旨の情報を制御領域に記録する。
他方, 状態変化がなかったのであれば (ステップ 4 5で N o ) 、 ステ ップ 4 6に進み、 目的処理の結果が不成立であつたことを制御領域に記 録する。
ステップ 4 3で、 要件に適合した結果が得られた (目的処理の成功) と判定された場合 (ステップ 4 3で Y e s ) 、 処理結果を確定させるた めに、 仮領域 a— tmpの値が領域 aにコピーされる (ステップ 4 4 ) 。 ( 4 ) パレッ ト関数の処理内容
以下に示す表 6は, 単位モジュール内の要素モジュールの実行を制御 するパレッ ト関数のコードの一例を示す。 表 6は、 表 1の要件の単位モ ジュールの場合であり、 第 3図に対応する。 コメントはコードの意味を 示している。
表 6
Figure imgf000022_0001
5 . 従来の L y e e構造の改良
L y e eは、 要件の正確な実装、 プログラム設計の簡易化、 コーディ ングの自動化を実現する手段を提供するこ とによって、 新規開発および 保守開発の生産性、 品質の向上を達成した。 しかし、 実行速度が遅く、 プログラムサイズが大きいという課題があった。 L y e eによるプログ ラムの構造を、 その宣言的プログラミングの利点をそのままに、 要件的 意味を変更せずに維持しながら、 不要な反復がなく、 よりサイズが小さ く、 より効率的な処理速度のプログラムにするために、 以下のよ うな改 善がなされてきた (この点について, P C T/ J P 2 0 0 6ノ 3 0 8 4 7 5 )
(i)パレツ ト分割を排除して繰り返し回数を削減し、 処理速度を向上 する。
(ii)要素モジュールの簡素化と種類の削減によって、 処理速度を向上 し、 プログラムサイズを小さくする。
(iii)要件に依存しない、 効率の良い繰り返し制御方法によ り、 繰り 返しを最小限にして処理速度を向上する。 また、 開発者の設計の負担を 軽減し、 品質を向上する。 ' · ·
(iv)要件に依存しない初期化の実行条件に改善し、 開発者の要件定義 の負担を軽減し、 品質を向上する。
(V)経路判定条件の簡素化 · 定型化によって、 開発者の要件定義の負 · 担を軽減し、 品質を向上する。
(vi)複数レコードの入力および出力処理制御を明確化にし、 開発者の 設計の負担を軽減し.、 品質を向上する。
(vii)プログラム設計方法の明確化によ り、 開発者の設計の負担を軽 減し、 品質を向上する。 これまでの L y e eの開発の経緯をまとめると, 次のよ うに言える。 従来法では、 設計もコーディングも人に依存する作業で、 また人によ る作業を規定しよ う試みた各種の方法論は仕様に依存するので、 方法論 をうまく適用できるか否か自体が人のスキルに依存してしまう。 このた めに、 ソフ ト ウェアの品質、 保守性、 開発期間が、 携わる人のスキルに 依存してしまう、 という課題があった。 Lyee開発方法論は、 次の 3つを確立したことで、 この課題を解決して きた。
1つ目は、 仕様に依存せず、 汎用的に用いることができるプログラム 構造を確立したこと。
2つ目は、 要件の定型的な定義方法を確定したこと。 これは、 汎用的 な定型のプログラム構造が確立したこと と相関関係にある。
3つ目は、 モジュール設計についても、 仕様に依存しない設計ルール を確立したこと。 上記 3つの方法を確立したことよって、 「LyeeALL」 と呼ばれるプロ グラムソースコード自動生成ツールが実現した。 すなわち、 ひな型であ る定型のプログラム構造に、 Lyee方法論による、 要件定義情報とモジュ ール設計情報を入力することによって、 プログラムソースコードが自動 生成される。 従来の Lyee方法論は、 プログラム設計からコーディングま' での開発工程に対する改善を行って、 ソフ トゥ ア開発の課題を解決し てきた。 この改善の効果は、 新規開発のプログラム設計からコーディン グ、 単体テス トおょぴ結合テス ト, ならびに保守の工程の生産性と質の 向上現れている。
LyeeALL によるプログラム製造を.、 より生産性が高く、 かつ、 よ り高 品質のプログラムを生成可能な方法するためには、 「人が行う設計作業 の人為依存度の問題」 および 「プログラムの処理速度、 サイズの問題」 とレ、う 2つの課題がある。
1 - 人が行う設計作業の人為依存度の課題
ソフ トウェア開発では、 内部設計の後に、 プログラム設計、 モジユ ー ル設計、 という過程を経るが、 Lyeeではプログラムの構造が決まってい るのでモジュール設計は不要である。 内部設計情報から簡易なプログラ ム設計を行い (プログラムの定形構造が決まっているので, Lyee以外の 従来の開発方法に比べると非常に簡易である) , 内部設計情報とプログ ラム設計情報を LyeeALLに入力することによって、 プログラムが自動生 成できる。 Lyeeでは、 プログラム設計図を 「処理経路図」 'と呼ぶ。 Lyee は、 内部設計情報の仕様に依存しない定型的な定義方法、 プログラム設 計の仕様に依存しない設計方法を確立した。 内部設計を行うのは人間で あるが、 内部設計情報の定型化は、 ツールへの入力項目を規定すること によつて達成できている。
一方、 プログラム設計方法は、 規則はあるものの、 設計方法をツール 側が規定する部分が少ないので、 設計方法について設計者に自由度を与 える部分が大きかった。 処理経路図の設計方法は改善をかさねて進歩し て現在に至っている。 後述する LyeeALL 3以前の LyeeALL 2において、 多' 重度の情報を用いて処理経路図を設計するルールが確立されたが、 その ルールに従わない処理経路図の設計情報であっても、 LyeeALL 2に入力す ることが可能であった。 そのため、 処理経路図の設計がルールどおりに 正しく設計されたかどうかは、' 各人のスキルに依存してしまう結果とな つていた。 また、 Lyee 以外の従来のいずれかの.設計方法に慣れた人が、 それらと異なる Lye eの設計法を習得し、正しく設計が行えるよ うになる ためには、 ある程度の学習時間がかかる。 開発未経験者であれ、 開発経 験者であれ、ツール側に正しい設計をサポー トするような機能がないと、 プログラムの品質に大きく影響する。 正しい設計法を規定することがで きる、 また、 人に依存する設計作業量を軽減してよ り少ない設計情報の みでプログラムの生成することができる (すなわち、 内部設計情報から 自動的に設計する部分を拡大すること) ツールの実現が課題である。 2 . プログラムの処理速度おょぴサイズの課題
繰り返し型のプログラム構造は、 最適順序化された構造に改善するこ とで、 処理速度やサイズの点で一層の改善が見込める。 そこで、 要素モ ジュールを自動的に最適順序化する技術が提案されてきた。 しかし、 従 来技術では、 最適処理順序構造を自動的に生成するため.に必要十分な最 小限の要件情報を特定できていなかった。 また、 ループを含むプロダラ ムにおける最適順序化のアルゴリズムが、 明確になっていなかった。 最 適順序化においても、 最適順序化するため人間が設計しなければならな い情報量を減らし、 仕様ごとに決定しなければならない必要十分な内部 設計情報から自動的に最適順序化できるようにすることが課題であった。 発明の開示 ·'
この発明は, 上述した 「人が行う設計作業の人為依存度の課題」 およ' び 「プログラムの処理速度およびサイズの課題」 を解消する, または低 減することを目的とする。 この発明によるプログラム実施順序決定方法は、 定型構造を持った部 品プログラムによって構成されているプロダラ Λ作成方法において、 仕 様によって異なる部品プログラムのループを含む実行順序を決定する方 法であって、 部品プログラムは、 少なく とも、 論理レコー ドの入力を実 行する入力要素と、 出力データ項目の値生成を実行する論理要素と、 論 理レコー ドの出力を実行する出力要素と、 データ記録領域の初期化を実 行する初期化要素と、 プログラム内の実行経路を決定する経路要素を含 み、 1つまたは複数の入力要素、 1つまたは複数の論理要素、 1つまた は複数の出力要素、 1つまたは複数の初期化要素、 1つまたは複数の経 路要素の実行順序を、 論理レコード間の参照の多重度情報と、 出力デー タ項目の値を生成するための生成式と生成式実行条件が示すデー.タ項目 間の参照関係情報に基づいて決定することを特徴とする。 この発明によるプログラム実行順序決定装置は、 仕様によって異なる 入力要素、 論理要素、 出力要素、 初期化要素、 経路要素のループを含む 実行順序を決定する装置であって、 論理レコード間の参照の多重度情報 と、 出力データ項目,の値を生成するための生成式と生成式実行条件が示 すデータ項目間の参照関係に基づいて、 ループ範囲を明示した入力要素 および出力要素の第 1実行順序を決定する手段と、 第 1実行順序に対し て初期化要素の配置を決定して第 2実行順序を決定する手段と、 第 2実 行順序に対して論理要素の配置を決定して第 3実行順序を決定する手段 と、 第 3実行順序に対して経路要素の配置を決定して第 4実行順序を決 定する手段を備えることを特徴とする。 · この発明は, 上述のプログラム実行順序決定装置の制御に適したプロ グラムおょぴそのプログラムを記録した記録媒体 (フレキシブル · 'デメ スク, C D— R O Mなど) も提供する。 この発明によると、 任意の入力要素、 論理要素または出力要素の処理 対象の論理レコードまたはデータ項目の処理 (参照元処理) に対して必 要な論理レコードまたはデータ項目が、 いずれの入力要素、 論理要素ま たは出力要素によって処理されるか (参照先処理) が判定される。 参照 先処理が参照元処理より も後に実行される、 あるいは参照先処理の対象 の初期化が参照元処理が完了する前に実行されると、 参照元処理による 処理結果を得ることができない。 参照元処理の結果を得るためには、 参 照先処理が参照元処理の前に実行され、 かつ、 参照先処理の対処が参照 元処理が完了した後に初期化される必要がある。
これに対して、 参照先処理が先に実行され、 かつ、 参照先処理の対象 が参照元処理が完了した後に初期化されると、 参照元処理による処理結 果を得ることができる。
この発明は, 次のように規定することもできる。 すなわち, この発明 による処理順序決定方法は, 一または複数のデータ項目を含む一または 複数の参照元論理レコードと, 一または複数のデータ項目を含む一また は複数の参照先論理レコードのそれぞれとの間のデータ項目参照関係に 基づいて., 一または複数の参照元論理レコードのそれぞれと一または複 数の参照先論理レコー ドのそれぞれとの'組合せが, 1 : 1 , 1 : N , ま たは N : 1のいずれの参照多重度の関係にあるかを表す参照多重度情報 の入力を受付け, 受付けられた参照多重度情報が 1 : 1であれば, その 参照元論理レコードを処理する要素モジュールと, その参照先論理レコ · 一ドを処理する要素モジュールは同一のループ単位に属すると判定し, 受付けられた参照多重度情報が 1 : Nであれば, その参照元論理レコー ドを処理する要素モジュールと, その参照先論理レコードを処理する要 素モジュールは異なる 2つのル一プ単位のそれぞれに属し, かつその参 照元論理レコードを処理する要素モジュールが.外側ループに位置づけら れ, その参照先論理レコードを処理するための要素モジュールが内側ル ープに位置づけられると判定し, 受付けられた参照多重度情報が N : 1 であれば, その参照元論理レコー ドを処理する要素モジュールと , その 参照先論理レコ一ドを処理する要素モジュールは異なる 2つのループ単 位のそれぞれに属し, かつその参照元論理レコ一ドを処理する要素モジ ユールが内側ループに位置づけられ, その参照先論理レコードを処理す る要素モジュールが外側ループに位置づけられると判定し, 上記参照多 重度情報に基づく上記判定の結果に基づいて, 一または複数の参照元論 理レコー ドを処理する一または複数の要素モジュールおよぴーまたは複 数の参照先論理レコー ドを処理する一または複数の要素モジュールのそ れぞれの処理順序を決定することを特徴とする。
この発明による処理順序決定装置は, 一または複数のデ」タ項目を含 む一または複数の参照元論理レコードと, 一または複数のデータ項目を 含む一または複数の参照先'論理レコー ドのそれぞれとの間のデータ項目 参照関係に基づいて, 一または複数の参照元論理レコードのそれぞれと —または複数の参照先論理レコー ドのそれぞれとの組合せが, 1 : 1, 1 : , または N : 1のいずれの参照多重度の関係にあるかを表す参照 多重度情報の入力を受付ける参照多重度情報受付手段, 受付けられた参 照多重度情報が 1 ·: 1であれば, その参照元論理レコー ドを処理する要 素モジュールと, その参照先論理レコードを処理する要素モジュールは' 同一のループ単位に属すると判定する第 1 の判定手段, 受付けられた参 照多重度情報が 1 : Nであれば, その参照元論理レコードを処理する要 素モジュールと, その参照先論理レコードを処理する要素モジュールは 異なる 2つのループ単位のそれぞれに属し, かつその参照元論理レコー ドを処理する要素モジュールが外側ループに位置づけられ, その参照先 論理レコードを処理するための要素モジュ ルが内側ループに位置'づけ られると判定する第 2の判定手段, 受付けられた参照多重度情報が N : 1であれば, その参照元論理レコー ドを処理する要素モジュールと, そ の参照先論理レコードを処理する要素モジュールは異なる 2つのループ 単位のそれぞれに属し, かつその参照元論理レコードを処理する要素モ ジュール^内側ループに位置づけられ, その参照先論理レコードを処理 する要素モジュールが外側ループに位置づけられると判定する第 3の判 定手段,および上記参照多重度情報に基づく上記判定の結果に基づいて, 一または複数の参照元論理レコー ドを処理する一または複数の要素モジ ユールおよび一または複数の参照先論理レコー ドを処理する一または複 数の要素モジュールのそれぞれの処理順序を決定する決定手段を備えた ことを特徴とする。
この発明において, 参照多重度情報は, 参照関係を持つ' 2つの論理レ コードについて, 参照元論理レコー ドの入力または出力回数 (参照元論 理レコードが処理されるべき回数) と, 参照元論理レコードが参照先論 理レコードを参照する回数 (参照元論理レコー ドの処理において, 参照 先論理レコードが参照される回数) を相対的に表すものである。 参照多 重度情報は, 「 : 」 の左側の数字または符号 N ( Nは 2回以上であるこ とを示す) が参照元論理レコード (参照する側) の相対的処理回数を,
「 : 」 の右側の数字または符号 Nが, 参照先論理レコード (参照される 側) の相対的処理回数を示す。
参照多重度情報は, ユーザが入力するものであってもよいし, 作成さ れるべき (または作成されている) プログラム中に規定される出力デー タの生成式または生成条件に基づいて, コンピュータを用いて入力する ようにしてもよレヽ。
この発明によると, 入力される参照多重度情萍に基づいて, 入力論理 レコー ドおよび出力論理レコー ドをそれぞれ処理する要素モジュール
(プログラム) の順序を決定することできる。 決定される順序は処理結 果を得ることができない状況において, 要素モジュールが実行されてし まうことが防止される順序である (詳細は, 実施例において明らかにな るであろう) 。 効率的な順序によって複数の要素モジュールよる処理が 実行されるので, 複数の要素モジュールを含む包括的な処理の処理速度 を高めることができる。 要素モジュールの処理順序をコンピュータに実 行させることができるので, 人が行う設計作業の人為依存度を軽減する ことができる。
一実施態様では, 参照元論理レコードまたは参照先論理レコードを処 理する要素モジュールによって作成されて, データエリアに一時的に記 憶されている値が不要になったかどうかを判断し, 不要になったと判断 されたときに上記データェリアに一時的に記憶されている値をク リァす る初期化要素モジュールの処理の順序 (タイ ミング) も決定される。 こ の順序 (タイ ミング) は, ループ処理を終えた (参照が完了した) タイ ミングと される。 不要なデータがデータエリアからク リアされるので, メモ リ の効率的な利用を実現することができる。
この発明によるさらなる特徴は, 以下に説明において明らかになるで あろう。 ■ 図面の簡単な説明
第 1図は, データ項目ごとの宣言を実行する実行制御ロジックと, 繰 返し法の考え方を概略的に示す。
第 2図は, L y e eによるシステムの分割構造を示す。
. 第 3図は, 従来の L y e eにおける単位モジュールの構造を示す。 第 4図は, 従来の L y e eにおける W04 レ トの要素モジュールの 処理を示すフローチャートである。 '
第 5図は, 参照関係を示す有向グラフである。
第 6図は, 入力論理レコード L A , 入力論理レコード L Bおよび出力 論理レコー ド L Bの参照関係を示す有向グラフである。
第 7図は, 入力論理レコード L Xおよび出力論理レコード L Dの参照 関係を示す有向グラフである。
第 8図は, 出力論理レコードに着目 した時に決定できる要素モジユー ルの処理順序を示す。
第 9図は, 順序関係がない場合のループ Wおよび Xの処理順序を示す。 第 1 0図は, 入れ子配列を持つループ Yおよび Z の処理順序を示す。 第 1 1図は, 画面と処理との関係を示すブ口ック図である。
第 1 2図は, 処理と I Oュニッ ト との関係を示すブロ ック図である。 第 1 3図は, 3種類の多重度を, 有向グラフを用いて示すものである。 第 1 4図は, 参照の多重度が 1 : 1である場合の参照元論理レコード と参照先論理レコー ドの順序関係を示す。
第 1 5図は, 参照の多重度 1 : Nである場合の参照元論理レコードと 参照先論理レコー ドの順序関係おょぴループ階層関係を示す。
第 1 6図は, 参照の多重度が N : 1である場合の参照元論理レコー ド と参照先論理レコー ドの順序関係およびループ階層関係を示す。
第 1 7図は, 第 1 4図, 第 1 5図および第 1 6図の参照元論理レコー ドと参照先論理レコードの順序関係およびループ階層関係の統合結果を' 示す。
第 1 8図は, 第 1 7図に示す出力論理レコード Xと, 入力論理レコー ド A, Bおよび Cのそれぞれの順序関係おょぴループ階層関係を, 入れ 子構造を用いることによつて表現したものである。
第 1 9図は, 出力論理レコー ド Yと入力論瑪レコー ド B の順序関係 (相対関係) およびループ階層関係を示す。.
第 2 0図は, 第 1 7図および第 1 9図の参照元論理レコードと参照先 論理レコードの順序関係およぴループ階層関係の統合結果を示す。
第 2 1図は, 第 2 0図に示す出力論理レコー ド Xおよび Y , ならびに 入力論理レコード A , Bおよび Cの順序関係おょぴループ階層関係を, 入れ子構造を用いることによって表現したものである。 '
第 2 2図は, 論理レコー ドの配置位置決定処理を示すフローチャート である
第 2 3図は, Lye eALL 3のシステム構成 (ハードウェア構成) を示す ブ口ック図である。
第 2 4図は, LyeeALL 3の処理を示すフローチャートである。
第 2 5図は, 初期化要素配列決定の処理を示すフローチヤ一トである。 第 2 6図は, 論理要素配列決定処理を示すフローチャートである。 第 2 7図は, 経路要素配列決定処理のフローチャートである。
第 2 8図は, 有向グラフを示す。
第 2 9図は, 有向グラフを示す。
第 3 0図は, 有向グラフを示す。
第 3 1図は, 有向グラフを示す。 '
第 3 2図は, 有向グラフを示す。
第 3 3図は, 有向グラフを示す。
第 3 4図は, 有向グラフを示す。 ' 第 3 5図は, 有向グラフを示す。
第 3 6図は, 有向ダラフを示す。 発明を実施するための最良の形態
はじめに, Lyee開発方法 (以下, L y e e と呼ぶ) を概略的に説明す る。 '
1 . Lyeeが情報システム開発にもたらしたこと
Lyeeが情報システム開発にもたらしたことは、 以下の ( 1 ) と ( 2 ) にまとめることができる。
( 1 ) Lye eはプログラムを各要素に分解し定型化できることを示した。 Lyeeは、 プログラムを各要素に分解し, 部品プログラムと して定型化で きることを示した (本願では定型化された要素となる部品プログラムを 要素モジュールと呼ぶ)。要素モジュールをテンプレー トと して提供し、 各要素モジュールのテンプレート (ひな型) に、 定型化された必要情報 を与えて配置すると、 1 0 0 %稼動可能で修正不要なプログラム · ソー スを作成することができる。要素モジュールの種類は,この実施例では, 出力要素モジュール (以下, 出力要素という) , 入力要素モジュール (以 下, 入力要素という) , 論理要素モジュール (以下, 論理要素という) , 経路要素モジュール (以下, 経路要素という) および初期化要素モジュ ール (以下, 初期化要素という) の 5種類ある。 経路要素を除く要素モ ジュール (出力要素, 入 要素, 論理要素おょぴ初期化要素) は, 処理 するデータ対象が決まっている。
以下に示す表 7は, 上述の 5種類の要素モジュールのそれぞれの処理内 容,作成単位,および処理するデータ対象の関係をまとめたものである。 表 7 +·
要素モジュ 出力論理レ コ 入力論理レ コ 出力データ項
ールが処理 一ド 一ド 百 _ するデータ
対象
要素モジュ 出力要素 入力要素 要 経 路 要 ール •出力処理を行 •入力処理を行 ·.出力データの 素
う ラ。 ' 生成を行う。 •プログ
'出力論理レ コ •入力論理レ コ •出力データ項 ラ ム 内 一ド単位に作 一ド単位に作 目 単位に作成 の 経 路 成する。 成する。 する。 の 判 定 を行う。 初期化要素 •論理レ コ ー ドのデータェリァ
の初期化を行う。 入力データ項目の属性チヱック、 出力データ項目の編集などの入力や 出力に付随する処理は、 入力夢素または出力要素が処理するように作成 してもよいし、 独立したモジュールと して作成してもよい。 説明を簡単 にするために、 以下の説明では、 入出力に付随する処理は、 それぞれ入 力要素および出力要素が行う処理とする。 ' 出力論理レ コード, 入力論理レ コ ードおよび出力データ項目ェリアを 特定するための定型化された必要情報 (データ の定義情報) , ならびに 各要素モジュールに与えるべき定型化された必要情報 (実行命令の定義 情報) は、 以下の表 8のとおりである。
表 8
國データの定義情報
出力論理レ コード 同一条件で媒体へ出力するデータ
項目集合の指定
入力論理レコード 同一条件で媒体から入力するデー
タ項目集合の指定 .
出力データ項目エ リ 媒体へ出力するデータ項目名(生成
ァ した値をセッ ト(記録)するエリア)
驪実行命令の定義情報
出力要素 出力論理レ コ ー ドを媒体へ出力す
る方法を指定
出力データ項目値を編集する編集 条件 · 編集内容を指定
媒体から入力論理レコー ド値を入
力する方法を指定。
入力データ値の属性チェック内容
を指定
論理要素 (値の生成) 出力データ項目に値をセッ トする
生成条件 · 生成式を指定
初期化要素 データエリアの値を初期化 (タ リ
ァ) する条件を指定
経路要素 ' 処理終了後に実行すべき処理を指
定。 (終了、他のプログラムへ分岐)
( 2 ) 情報システム開発を、 定型化された必要情報を明確にする作業に 変えた。
情報システム開発の最終成果物はプログラムであり、 プログラム齊造 が定型化され、 その定型化されたプログラム構造のひな型に与えるべき 必要情報も定型化されている。 したがって、 構造と必要情報が定型化で きたのであれば、 情報システム開発作業とは、 定型化された必要情報を 明確にしていく作業であると言える。 .
2 . Lyeeの開発作業内容
Lyee の開発と、 従来の開発手法の 1つである D O A (Data Or i ent ed Approach)の開発とを、開発工程ごとの作業とその成果物で対比してみる と以下の表 9のよ うになる。
表 9 ' Lyeeによる開: 3§ D0Aによる開発
外部設計 業務フ口一 業務フロー
画面遷移図 画面遷移図
画面 · 帳票レイ ア ウ ト ' デ一 画面 ·帳票レイァゥ ト 'デ一 タ項目 タ項目
データベース定義書 データベース定義書 内部設計 制御情報定義 制御ロジック仕様
' イベン ト疋義 - 制御ロジック仕様 :
• イベン ト内の処理定義 モジュール構造設計書
• 処理内の I Oュニッ ト定義 プログラム論理構造設
• I Oユニ ッ ト内の入出力フ
ァィル'定義
• フアイルの入出力方法定義
業務ロジック仕様 業務ロジック仕様
• 出力データ項目の生成条件/ - プログラム仕様書 生成式
プロ ダラ 自動生成 コーディング
ミ ング
• 上記内部設計情報の入力
• 自動生成
表 9において対比して示すように, 「外部設計」 の開発工程の内容は L y e e も DOAも同じであることがわかる。 「内部設計」 および 「プロ グラミング」 の開発工程において, L y e eおよび D0Aは相違する。
L y e eでは、 開発プロ グラムの処理内容が画面を介する処理でも、 帳票処理でも、 あるいは、 バッチ処理でも、 全てが同じ内部設計作業、 同じ定義方法によって行える。 明確にする情報は、 いずれの場合も、 入 出力ファイルとその入出力方法、 出力データ項目の生成条件および生成 式である。 コーディングを行うための詳細なプログラム設計ゃモジユー ル構造設計は不要である。 定型化されたプログラムのひな型に内部設計 で定義した情報を与えることによって、 プログラム ' ソースは自動生成 される。 .
D0A はデータ指向の設計方法を取る開発手法であるという点は、 一見 Lye e と似ているが、 「データ指向」 のあり方自体が異なる。 すなわち、 Lye eのデータ指向は、 要件に依存しない 「入力」 「出力」 「生成」 ある いは 「ク リア」 という、 コンピュータの処理という視点からデータゃデ ータに対する処理を分類する。 しかし、 D0A は他の従来法と同じく、 仕 様に依存した人間からみたデータの意味によってデータを分類する。 し' たがって、 D0A の開発では、 内部設計以降はデータ指向ではなく、 構造 化手法のプログラミングとなり, 仕様に依存した (すなわち開発対象の プログラムの機能に依存した) 設計方法になる。 業務ロジック仕様以外 に制御口ジックと してモジュール構造設計書、 プログラム論理構造設計 書を作り、 構造設計書に従ってプログラミングする必要がある。 仕様に 依存するかぎり、 普遍的に通用するプログラム構造や設計方法を見出す ことは不可能である。 .
他方、 Lyeeによる開発では, 外部設計から内部設計に至るまで、 仕様 に依存しないデータ指向設計になっている。
3 . Lye e開発方法における前提知識
ここで、 本願の説明で用いる言葉や概念を明らかにしておく。 ( 1 ) 論理レコード
論理レコードとは、 同一条件で入力される入力データ項目の集合、 あ るいは同一条件で出力される出力データ項目の集合である。同一条件で、 とは、 同一の入力元媒体から同じタイ ミングに入力されること、 あるい は、同一の出力先媒体へ同じタイ ミングに出力されること、である。 Lye e では、 論理レコー ドの入力は入力要素、 出力は出力要素と呼ぶモジ ルが行う。 1つの入力要素または出力要素が処理する論理レコードは 1 つである。
( 2 ) 参照関係
参照とは、ある処理を行うために何かのデータ項目の値を用いるとき、 参照する、 という。 1つの例は、 出力データ項目の値生成のための参照 である。 たとえば、 出力データ項目 A、 入力データ項目 B、 出力データ項 目 Cがあったとする。 Aの値を生成するための生成式が B + Cであったと する。 Aの値を生成する論理要素 Aは、 Bの値と Cの値を参照して演算を 行い、 その演算結果を Aのデータエリ アに記録する。 このことを、 「デ ータ項目 Α' ·が,デ^タ項目 Β と Cを参照している」 と表現する。そして、 Α と Β Α と Cには 「参照関係がある」 と言い、 Aを 「参照元」 、 Bおよ ぴ Cを 「参照先」 と呼ぶ。 .
第 5図は, 参照関係を有向グラフ (d i rec t ed graph) を用いて示した 者である。 第 5図において, 有向グラフのノー ド (node) (円) はデー タ項目を表し, 有向辺(矢印、 arrow)はデータ項目間の参照関係を表して いる。 矢印の起点が参照元、 終点が参照先である。 生成式実行条件の判 定実行についても、 同様に参照が行われる。
データ項目に参照関係がある場合、 参照関係にあるデ タ項目が属す る論理'レコー ド間にも参照関係があると言える。 すなわち, データ項目 Aが属する出力論理レコー ドを L A、 データ項目 Bが属する入力論理レ コードを L B、データ項目 Cが属する出力論理レコードを L Cとすると、 L Aは L Bと L Cを参照している、 と言える。 第 6図は, 入力論理レコ ー ド L A , 入力論理レコー ド L Bおよぴ出力論理レコー ド L Bの参照関 係を有向グラフで示したものである。
もう 1つの参照の例は、 入力要素がデータベースからデータ入力を行 う (データベースからデータを読出してメモリに出力する) 場合に一般 に必要な 「検索キー」 のデータを得るための参照である。 第 7図を参照 して, たとえば、 入力論理レコード L Xを処理する入力要素 L Xが, 出 力データ項目 Dを検索キーと して,入力論理レコード L Xを入力する(デ ータベースから読出す) のであれば、 入力要素 L Xは Dの値を参照し、 Dの値を検索キーと して入力論理レコー ド L Xを入力する (データべ一 スから読出す) 。 この場合、 入力論理レコード L Xはデータ項目 Dを参 照している、 とも言える。 なぜなら、 入力論理レコード L Xが成立する'
(入力完了となる) (データベースからの読出しが完了する)ためには、 Dの値が必要だからである。 さらに、 上述したように、 データ項目 Dが 出力論理レコー ド L Dに属しているとすると、 入力論理レコー ド L Xは 出力論理レコード L Dを参照している、 と表現することができる。
( 3 ) 処理順序 ·
プログラムが行っている処理は、 入力データの入力 (メモリ上のデー タエリアへの入力など) と、 入力データに基づく出力データの生成と、 出力データの出力 (画面表示など) である。 要件には、. どのようなデー タ項目がどこから、 入力されるか、 どのようなデータ項目がどこへ出力 されるか、 出力されるデータ項目はどのように生成されるか (生成式と 生成式実行条件) が定義されている。 入力、 生成、 出力が要件を満たす よ うに実行されるためには、 この 3つの処理の他に、 デ一タエリ アの初 期化処理と、 プログラム内の経路の分岐点で経路判定を行う処理の 2つ が必要である。
Lyeeでは、 プログラムは、 入力、 生成、 出力、 初期化、 プログラム内 の処理の経路の判定という 5種類の処理によって構成できると考え、 そ の種類別に定型構造のモジュールのひな型を用意し、 これちのモジユー ルの組み合わせでプログラムを作成する、 という方法をとつている。 そ れぞれの処理を担当するモジュールの名称が、 上述した入力要素、 論理 要素、 出力要素、 初期化要素および経路要素である。
これらの要素モジュールを作成する単位は決まっており、 たとえば、 本願の Lyeeでは、入力要素は入力論理レコード 1つに対して 1つ作成す る。 出力要素は出力論理レコード 1つに対して 1つ、 論理要素は出力デ ータ項目の生成式 1つに対して 1つ、 初期化要素は論理レコード 1つに 対して 1つ、 経路要素は経路を選択する条件ごとに 1つ作成する。 要件' に定義されたプログラムに必要な要素モジュールの作成は、 LyeeALL に 要件を入力すれば、 LyeeALLが自動的に行う。
プログラムの処理順序 (処理の実行順序) と言う とき、 Lyeeにおいて は、 それは上述の要素モジュールのあるべき実行順序、 すなわち要素モ ジュールのあるべき配置順序のことをさす。 「あるべき」 とは、 コンビ ユータに, 要件に定義された入力を実行させ、 要件に定義された出力を 実行させるようなプログラムの処理順序と して 「あるべき'」 、 というこ とである。 要件から必然的に導き出せる処理順序に要素モジュールを配 置する本願の Lyeeでは、 その処理順序は最適な処理順序となる。 最適と は、 要件によるループ以外の繰返しがなく、 むだな冗長性がなく、 プロ グラムの処理が最短で実行されるような処理順序である。
処理順序の中には要件に依存しない順序と、 要件に依存する順序があ る。 任意の出力論理レコー ド LX に着目 した時、 その出力論理レ コ ー ド LXを出力する出力要素 Xが実行される前には、 出力論理レ コ ー ド LXに 属する出力データ項目の値を生成する論理要素全てが実行されていなけ ればならない。 それらの論理要素群 Yが実行される前には、 論理要素群 Yが参照する入力論理レ コード LZ (複数の場合もある) を入力する入力 要素 Z (入力論理レ コードが複数であれば複数) が入力されていなけれ ばならない。 入力論理レ コードが複数ある場合、 入力論理レ コ ー ド間に 参照関係があれば、 参照先を入力する入力要素を前に配置する。 参照関 係がなければ、 どのような順序でもよい。 出力論理レ コード LXに着目す ると、この ·出力論理レ コ ード LXに直接または間接的にかかりを持つ入力 要素 Z、 論理要素群 Yの順序は自明的に決ま'る。 論理要素群 Y內の順序 は、 各論理要素が実行する生成式実行条件と生成式の参照関係に自動的 に決定することができる。 これらの一連の入力要素 Z、 論理要素群 Y、 出 力要素 X にかかわる論理レ コ ードの初期化要素は、 ΖΥΧの後に配置され' るべきであることは自明であるが、他の論理レコードが論理レ コード LX や LZを参照している場合もあるので、出力要素 Xの直後におく とは決定 できない。 初期化要素の配置順序については後述する。 経路要素が経路 を判定すべき場合は、 プログラムの全ての処理を終了した後に別のプロ グラムに処理を移す場合か、プログラムが複数の, 10ュニッ ト(後述する) で構成されている場合に、 1つの 10ュニッ.トから別の 10ュニッ トに処 理が移る場合である。 従って、 経路要素を配置するべき位置は、 プログ ラムの最後か 10ュニッ トの最後と決定できる。 第 8図は, 出力論理レ コ ードに着目 した時に決定できる要素モジュールの処理順序を示す。 く Lyee開発方法のプログラム構造設計の考え方 >
Lye eは'、 要件を決定すれば、 その要件情報から自動的にプログラムを生 成できる方法を追及してきたわけであるが、 その実現手段として、 仕様 に依存しないプログラムの定型構造と、 要件に依存しない要件情報の形 式化方法を明らかにした。 要件情報の形式化のうち、 プログラム設計に 必要な情報の形式化方法は、 最も新しい Lyeeの改良技術の 1つである。 プログラム設計に必要な主要情報は以下にまとめることができる。
( 1 ) プログラムを作成する単位が何か
( 2 ) プログラムを構成する単位が何か
( 3 ) プログラムを構成する単位の構造
( 1 ) のプログラム作成の単位については、 前述のよ うにイベン ト単位 処理ごとに作成することを明らかにした。 '
( 2 ) については、 プログラムを構成する最小の単位が要素モジュール で、 それらが一定のルールにしたがって, 所定の単位 (以降、 ループ単 位と呼ぶ) を構成することを明らかにした。
( 3 ) については、 前述のように、 要素モジュールの種類ごとの定型構 造と して明らかにした。
以下、 ループ単位について説明する。
1. プログラムの処理の流れの構造
プログラムを, 処理の流れの観点から分類すれば, ( 1 ) 逐次処理, ( 2 ) ループ処理おょぴ ( 3 ) 分岐処理 ( I F文) の 3つに分類するこ とができる。
( 1 ) 逐次処理
逐次処理とはある一連の処理を 1つ 1つ順次処理することである。
( 2 ) ループ処理
ループ処理とは、 ある一連の逐次処理を一定の条件を満たすまで複数 回 (n回とも記す) 繰り返す処理である。 たとえば, ある入力論理レコ ードまたは出力論理レコードを, n回入力または出力 (必然的に生成も n回) する場合の処理である。
たとえば、 カテゴリ Aに属する複数種類の商品について、 2006年 7月 1 日の購入履歴を表示する、 という処理を考える。 この場合には, 検索 条件と して 「'カテゴリ A」 および 「2006/7八」 が入力される。
プログラムは, コ ンピュータに, 次のような処理を実行'させることに なる。 '
ループ処理 (i )
まず、 「カテゴリ A」 をキーにして, たとえば, 商品マスタからカテ ゴリ Aに属する一または複数の商品 (商品コード) を検索する処理が実 行される。 「商品マスタからのカテゴリ Aに属する商品の 1件分の商品 コー ドの読出し」 と,' 「読み出した商品コー ドのメモ リ へ一時記憶」 と いう一連の処理 (ループ処理(i ) ) が実行され、 1件目のカテゴリ Aに属 する商品コードが得られる。
ループ処理 (i i )
次に、 検索された 「商品コード」 および 「2006/7/ 1」 をキーにして, その両方のキーを有するデータ (レコー ド) を検索する処理が実行され る。 たとえば, 「購入履歴テーブルからの検索された 「商品コード」 お よび 「2006/7/1」 の両方を有するデータの読出レ」 と, 「読出したデー タのメモリへの一次記憶」 という一連の処理 (ループ処理(i i) ) が実行 される。購入履歴テーブルに,検索された「商品コード」およぴ「2006/7/1 J を持つデータが 10件あれば、 ループ処理(i i)は 10回繰り返される。 ループ処理(i i )が終了すると, 再びループ処理 (i ) に戻る。 ループ処 理 (i) が終了するまで (該当データがなくなるまで) 、 ループ処理 (i ) およびループ処理 (i i ) の処理が繰り返される。
ループ処理において重要なのは、 1つのループする単位の中の処理は、 同一の条件のループ条件 (ループを終了する条件と言い換えてもよい) を持っているという ことである。
( 3 ) 分岐処理
( 3 ) 分岐処理
分岐処理は、 ある一連の処理が複数存在し, その複数の一連の処理の 中から、 分岐の条件にしたがって, いずれか一の一連の処理を選択する 処理である。 分岐処理において重要なのは、 どのようなケースであって も, いずれか一の一連の処理が特定されるように, 分岐条件を設定する ことである。 すなわち、 分岐条件の総和が全体を構成し、 かつ、 分岐条 件に重なりがないことである。
分岐処理は、 その分岐条件が設定される目的によって、 以下のように 分類できる。 .
( a ) イベン トによる分岐
イベン トごとにプログラムを作らない場合 (たとえば画面単位にプロ グラムを作成するよ うな場合) 、 プログラム内にイベントが分岐条件と なる分岐が存在する。 たとえば、 「ボタン Aが押される」 、 「コンボボ ックス Bがク リ ックされる丄 などのイベントが条件となる。 この実施例 における L y e eでは、 イベン トごとにプログラムを作成するので、 こ のような分岐はない。 イベン トによる分岐がないので、 1つのプログラ ムの構造が単純になり保守が容易になる。
( b ) 出力データ項目の生成式の実行条件による分岐
1つの出力データ項目に複数の生成式が定義される場合がある。 たと えば、 値引き率が顧客の購入金額によって変わるような業務要件の場合 である。 このよ うな場合、 以下の表 1 0に示すよ うに、 「値引き率」 と いう出力データ項目の生成式ごとに, 実行条件が定義される。 表 1 0
Figure imgf000046_0001
Lye e開発方法では、生成式実行条件は、定型構造の要素モジュール(論 理要素) が実行する処理対象であり、 プログラムめ構造設計に必要なプ 口グラムの経路に関する情報ではない。 生成式実行条件判定と生成式実 行を 1 つの要素モジュールと して作るにしても, 別の要素モジュールに するにしても, 生成式実行条件判定および生成式を実行する論理要素の 順序は、 それぞれの論理要素が実行する条件式および生成式に含まれる データ項目の参照関係から自動的に導き出すことができる。
( c ) その他の分岐条件
その他の分岐条件の 1つは、ループ処理の終了条件である。たとえば、 上述の例で言えば、 Γ Aに該当する商品がなくなった(end of f il e;)」 が ループ処理の終了条件である。 終了条件と して位置づけられる分岐牵件 では,次の処理に進むの力 同じ処理を再度実行するのかが判定される。 この実施例では, ループ終了条件は、 出力の条件の 1つと して、 出力要 素の中に取り込まれている。
,その他の分岐条件の他の 1つは、 他の処理の固まり (プログラムや、 後述する 10ュニッ ト) へ処理を移す条件である。 この実施例 (本願にお ける Lye e) では、 他の処理の固まりへ処理を移す条件だけが、 プロダラ ム内の処理経路を決定する条件になっている。
2 . ループ単位とループ単位間の順序関係
上記のプログラム構造の考察からわかることは、 同一のループの条件 を持つ一連の逐次処理の固まりをと らえ (単なる逐次処理は、 ループ条 件が 「 1巡したら終了」 だと考えることができる) 、 その処理の固まり
( 「ループ単位」 と呼ぶ) の順序関係をと らえれば、 プログラムの構造 を決定するこ とができる、 というこ とである。 順序関係は、 順序関係が ない (どちらが先でもいい) カ 順序関係がある、 のどちらかである。 この観点からプログラム構造を設計するのが、改良された Lyee開発方法 における処理経路図の作成方法であった。 従来の Lyeeでは'、設計者がル ープ単位をと らえて、複数存在するループ単位間の順序関係を判断して、 処理経路図に表していた。 以下に説明するよ うに, 本願の発明者は, 設 計者が行っていた複数存在するループ単位間の順序関係を判断を, コン ピュータに実行させることに成功し, これによ り人が行う設計作業の人 為依存度を軽減し, かつプログラムの処理速度おょぴサイズの課題を軽 減することに成功した。 詳細は後述するが, このループ単位間の順序関 係を判断処理では, 与えられた要件情報が解析され、 あるべきループ単 位と、 ループ単位間のあるべき順序関係を自動的に決定される。 ループ' 単位おょぴその順序関係の解析方法は後述することと し、 ここでは、 あ るべきループ単位の順序関係を決定するための基本的な考え方を述べる。
( 1 ) 逐次配列
2つのループ単位に参照関係がない場合, その 2つのループ単位の相 互に順序関係がないので、 2つのループ単位の処理順序は逐次配列にな る。 順序関係が無いのであるから、 ' 2通りの逐次配列が考えられ、 どち らであっても処理の結果は同じである。
第 9図は, 2つのループ Wおよび Xに順序関係がない場合の, ループ Wおよび Xの処理順序 ( 2つの処理順序) を示している。 第 9図の左に 示す逐次配列では、 ループ Wのループ終了条件が満たされたときに、 ル ープ Xの処理に移り、 ループ Xのループ終了条件が満たされたときにル ープ Xの処理が終了する。 第 9図の右側に示す逐次配列では、 ループ X の処理が先に実行され, 次にループ Wの処理が実行される。
( 2 ) 入れ子配列
2つのループ単位に参照関係がある場合, その 2つのループ単位には 順序関係があることになる。 この場合, 2つのループ単位は, 第 1 0図 に示すような入れ子配列になる。 第 1 0図において, ループ Yと Zは、 ループ Yの処理の途中でループ Zに処理が移り、 ループ Zのループ終了 条件が満たされた時に処理がループ Yに戻る。 ループ Yの残りの処理が 完了してループ Yの処理の 1巡が終了すると、 ループ Yのループ終了条 件が判断され, ループ Yのループ終了条件が満たされていなければ、 ル ープ Yの最初の処理にもどる。 このよ うな処理が繰り返され、 ループ Y のループ終了条件が満たされた時に、 ループ Yが終了する。
ループ単位が入れ子配列のとき、 配列状態を示す表現と して、 「上位 階層 (あるいは外側のループ) 」 および 「下位階層 (あるいは内側のル ープ) 」 という言葉を用いる。 第 1 0図は, ループ Yおよびループ Zの ' の 2階層の例であり, ループ Yが上位階層, ループ Zが下位階層と位置 づけられる。 なお, 入れ子配置の階層は, 2階層に限られず, 論理上の 上限はない。
2階層となる場合を, 論理レコードに着目 して考えると, 次の 2通り の場合である。 その一は、 内側のループ単位内で入力または出力される 論理レコードが、 外側のループ単位'内で入力または出力される論理レコ ードを参照して処理される場合である。 他の一は、 外側のループ単位内 で入力または出力される論理レコードが、 内側のループ単位内で入力ま たは出力される論理レコー ドを参照して処理される場合である。 外側の ループから内側のループに処理が移るタイミングは、 内側ループが外側 ループを参照しているのであれば、 外側ループで参照先データが参照可 能状態になった以降であればよい。 外側ループが内側ループを参照して いるのであれば、 外側ループの参照元データの処理開始の直前までであ ればよい。 上述の Lyee開発方法を基礎にした、 LyeeALL 3によるソフ トウェア開 発について詳しく述べる。
< LyeeALL 3の特徴 >
上述の Lyee開発方法を基本にした、本発明を用いた LyeeALL 3による ソフ トウェア開発の特徴をまとめると以下のとおりである。
1 . 人間によるプログラム設計作業の簡易化
LyeeALL 3においても、改良された L y e e と同じく、 プログラムの作 成単位はィベント毎の一連の処理の単位である。ィベント毎の処理とは、 例えば、 オンラインプログラムの場合でいえば、 画面のボタンをク リ ツ ク したときに実施し画面に処理結果を表示した時に終わるまでの一連の 処理のことである。 以下、 これを 「処理」 または 「イベント.単位処理」 と呼ぶことにする。
第 1 1図は、 本願における 「処理」 (または 「イベント単位処理」 と も呼ぶ)を概念的に示すプロック図を, 第 1 2図は本願発明における 「 I Oユニッ ト」 を概念的に示すプロック図をそれぞれ示している。
イベント毎の処理内容の基本は、 ファイル (画面、 データベース) の データを (メモリに) 入力し、 出方すべきデータ項目に値をセッ ト し、 セッ トされた値をファイル (画面、 帳票、 データベース) に出力するこ とと捉えることができる。
ファイル中のデータを入力し (読出して) 、 データを出力するまでの 処理を 「同期範囲」 と定義し、 この同期範囲をプログラムと して具体化 したものを I Oユニッ トと'定義する。 例えば、 1つの処理内容が、 Aと Bという 2個のファイルのデータを入力し (読出し) 、 Cファイルに出 力 (Cファイルに記録) した後、 Dファイルのデータと Cファイルのデ ータを入力し (読出し) , Eファイルを出力する (Eファイルに記録す る) とする。 このとき、 「A、 Bの 2個のファイルを入力し、 Cフアイ ルを出力する J 処理が 1個目の I Oュニッ トとなり、 「Dファイルと C ファイルから Eファイルを出力する」 処理が 2個目の I Oュニッ トにな る .(第 1 2図を参照) 。
I 〇ュニッ トは、 従来の改良された L y e eにおける処理経路図 1つ にあたる。 プログラムは 1つの I Oユニッ ト、 すなわち 1つの同期範囲 で構成される場合が多い。 1ィベントの処理が別の画面に表示されるよ うな処理の場合は、 2つの I Oユニッ トで構成させた方がよい。 従来の Lyeeの処理経路図でも同様で、 このよ うな場合は複数の処理経路図に分 けて実装する。 .
I Oュニッ ト内のプログラム · ソースはデータ定義部分と実行命令部 分に分かれ、 実行命令部分は、 単に要素モジュールを一定の法則に従つ' て並べた形になっている (実際には、 要素モジュールをコールする) 。 要素モジュールの配置法則には、仕様に依存するようなパターンはない。 データ定義部分とそれらを処理の対象とする主要要素モジュールの関 係を, 表 1 1 に示す。 論理レコードごと、 データ項目ごとのこれらの要 素モジュールが実行順に並んだものが LyeeALL .3により生成されるプロ グラムである。 '
表 1 1 データ 要素モジユーノレ 定義部分 <実行内容 > 入力論理レ 入力論理レ コ ー 入力ェ リ ァにデータ値が 入扁
コードエリ ド単位に設ける なければ、 入力命令を実行 ァ して値をセッ トする。
出力データ 理要 出力データ項目 出力.データ項目エ リ アに 項目エリア 単位に設ける 値がなければ、 生成条件 · 生成式を実行して値をセ ッ トする。
出力論理レ 出力要素 出力論理レ コ ー 出力エ リ アに値がセ ッ ト コードエリ ' ド単位に設ける されていれば、 出力する。' 了
2 . 処理の最適順序の自動解析
定型化した情報に 「参照の多重度」 という'情報を加えると、 処理順序 を考慮したプログラム · ソースを自動的に作成することができる。 処理 順序考慮型のプログラム · ソースを作成するために、 I Oュニッ ト内の 処珲の最適順序を自動解析する手順には、 次の 4つのステップがある。
[ 1 ] 「参照の多重度」 を用いて出力論理レコー ド (出力要素) 、 力 論理レコード (入力要素) の相対位置と処理ループを明確にする。
[ 2 3 初期化処理の位置を明確にする。
[ 3 ] 論理要素の生成条件および生成式に記述されているデータ項目間 の参照関係を用いて論理要素の処理順序を明確にする。
[ 4 ] 上記 1〜 3の順序情報を統合して、 I Oュニッ ト全体の処理順序 を確定する。
1つのプログラム内の I oュニッ トの順序関係は人間が指定するので. 上記の 4つのステップを踏むことで、 と処理順序考慮型のプログラム . ソースが完成する。以下,上記の 4つのステ ップのそれぞれを説明する。
( 1 ) 「参照の多重度」 を用いて出力論理レコード (出力要素) 、 入力 論理レコー ド (入力要素) の相対位置と所属するループ単位の階層の相 対関係を明確にする。
前述したように、 要素モジュール間の順序関係は、 その要素モジユー ルの処理対象である論理レコー ドあるいはデータ項目の参照関係から導 き出すことができる。 出力要素おょぴ入力要素の順序関係を導き出すた めに、参照の多重度から、まず論理レコード間の参照関係を明らかにし、 その参照関係から、 それらの入力または出力を行う入力要素または出力 要素の相対的順序関係と所属するループ単位の階層の相対関係を導き出 すこと とする。
「参照の多重度」 とは、 参照関係を持つ 2つの論理レコー ドがあつたと き、 参照元の論理レコー ドの入力または出力回数 (入力または出力レコ ード件数) に対して、 参照元が参照先を参照する回数 (参照先論理レコ ー ドの入力または出力回数) の相対比率を表したものである。 多重度
( mult ipl i c i ty) の度合いを表す値は 1か N (多重 (mult iple) を示す)' である。 入力または出力回数が 1回は 「 1」 、 回数が 2回以上の場合は
「N」 で表す。 参照元 (参照する側) の多重度を左に、 参照先 (参照さ れる側) の多重度を右におき、 「 1 : N」 のよ うに表す。 参照の多重度 は絶対値ではなく、 参照元を基準にした時の、 参照元と参照先の多重度 の相対的値、 比率である。 たとえば、 A : B = 1 : Nであって、 Bが C を参照している場合、 その多重度が B : C = 1 -: Nとなり える。 参照の多重度は 3通り ある。 「参照関係なし」 も含めれば、 「参照の 多重度」 は 4通りあることになる。 この実施例では, 以降、 「参照の多 重度」 には 「参照関係なし」 も含めること とする。 以下に、 参照関係が ある 3種類の 「参照の多重度」 について、 例を上げて説明する。 く例 1 >
出力論理レコード Xと入力論理レコード Aがある。 出力論理レコード Xが入力論理レコード Aを参照している場合、 出力論理レコード Xと入 力論理レコード Aの多重度情報を, 3種類のケースについて表すと、 以 下の表 1 2のようになる。
表 1 2
Figure imgf000053_0001
,第 1 3図は, 表 1 2に示す 3通りの多重度を、. 有向.ダラフ (directed graph)を用いて表したものである。'ここでは、有向グラフの点(ノード、 node) (円) は論理レ コードを、 有向辺 (矢印、 arrow) は論理レ コード 間の参照関係を表わす。
矢印の起点は参照元論理レコード側におかれ、 終点は参照先論理レコ ード側に置かれている。 2つの論理レ コードの参照関係は、 その 2つの 論理レコー ドの入力または出力が行われるべき相対的順^関係を示す。 すなわち,参照先論理レコ一ドは,参照元論理レコー ドよ り先に入力(ま たは出力) されなければならない。 したがって, 2つの論理レコー ドの 参照関係がわかれば、 それぞれの論理レコードの入力 (または出力) 処 理を担当する入力要素 (または出力要素) の相対的位置関係を決定する ことができる。
複数の論理レコー ドの相対的順序関係を, 図面において, ノード (円) の上下位置で表すことにする。 表 1 2の例を図示する場合, 第 1 3図の ように, 参照先論理レコー ド Aのノードは、 参照元論理レコード Xのソ 一ド'より上側に描かれる。 参照の多重度が示すもう 1つの順序関係は、 2つの論理レコードが入 力または出力処理されるのが、 同じループ単位の中なのか、 異なるルー プ単位の中なのか、 ということと、 異なるループ単位である場合のルー プ単位の階層位置関係である。
第 1 4図は, 参照の多重度が 1 : 1である場合の参照元論理レコー ド' と参照先論理レコー ドの順序関係を示している。 参照の多重度が 1 : 1 であるとき, 参照元論理レコード Xと参照先論理レコード Aは同じルー プ単位に属する。 参照多重度が 1 : 1であるということは, 相対的なル ープ度合いが両方とも同じであることを示しているからである。
, 第 1 5図は, 参照の多重度 1 : Nである場合.の参照元論理レコードと 参照先論理レコー ドの順序関係を示す。 参照の多重度が 1 : Nである場 合, 参照元論理レコード Xと参照先論理レコード Bが異なるループ単位 に属し, かつ、 参照先論理レコード Bは参照元論理レコード Xの下位の (内側の) ループ単位に所属する。
第 1 6図は, 参照の多重度が N : 1である場合の参照元論理レコー ド と参照先論理レコードの鵰序関係を示す。 参照の多重度が N : 1である 場合, '参照元論理レコー ド Xと参照先論理レコー ド Cは異なるループ単 位に属し, 参照先論理レコード Cは参照元論理レコード Xの上位の (外 側の) ループ単位に属する。 .
参照の多重度から得られるループ単位の階層構造に関する情報をまと めると、 次の表 1 3のよ うになる。
表 1 3
Figure imgf000055_0001
上述のよ うに、 「参照の多重度」 を用いると次の 2つを明確にする事 ができる。
(i) 2つの出力要素または入力要素の相対位置。
(ii) 2つの出力要素または入力要素の所属するループ単位の階層の相 対関係。 ' <例 2 >
次に, 複数の出力論理レコードおよび複数の入力論理レコード間にお ける論理レコー ドの順序関係 (階層関係) を説明する。
出力論理レコード X (出力要素 X) ,出力論理レコード Y (出力要素 Y)、 入力論理レコード Α (入力要素 Α), 入力論理レコード Β (入力要素 B) 、 および入力論理レコード C (入力要素 C) があるとする。 このとき、 出 力論理レコードが参照する論理レコードに対する参照の多重度は、 以下 の表 1 4のようになってレヽるとする。
表 1 4
Figure imgf000056_0001
'多重度情報 (参照の多重度) に基づけば, 2つの出力要素または入力 要素のペアの相対位置を明らかにすることができる。
同一の 10 ユニッ ト内に所属する参照関係にある論理レコー ドのペア の全ての参照関係が明らかになると、 10ュニッ ト間の全ての入力論理レ. コードと出力論理レコード間の相対的順序と所属するループ単位と、 ル ープ単位の階層構造が決定する。 その手順は次のとおりである。
[ 1 ] 参照関係の 2つの論理レコードペアの多重度情報から、 それぞれ の出力要素または入力要素の相対位置と, 所属するループ単位の階層の 相対関係を明らかにする。これを同一 10ュニッ ト内の全ての論理レコー ドペアについて行う。
[ 2 ] 上記 [ 1 ] の個々の結果を統合する。
上述の例 2についてその手順を具体的に説明する。 まず、 多重度情報
(参照の多重度) に基づいて, 出力論理レコード と, 入力論理レコー A , B , Cのそれぞれの順序関係 (相対位置) と階層関係 (処理ループ の階層関係) を明らかにする。
表 1 4にしたがう と, 出力論理レコード Xおよぴ入力論理レコード A の順序関係およびループ階層関係は第 1 4図に示すものと, 出力論理レ コー ド Xおよび入力論理レコー K Bの順序関係およびループ階層関係は 第 1 5図に示すものと, 出力論理レコード Xおよび入力論理レコード C の順序関係およびループ階層関係は第 1 6図に示すものと, それぞれ同 じになる。
第 1 7図は, 第 1 4図, 第 1 5図おょぴ第 1 6図に図示されている出 力論理レコード Xと, 入力論理レコー ド A, Bおよび Cのそれぞれの順 序関係およびループ階層関係を総合したもの (一つにまとめたもの) を 示している。
, 第 1 8図は, 第 1 7図に示す出力論理レコ一.ド Xと, 入力論理レコー ド A , Bおよび Cのそれぞれの順序関係およびループ階層関係を, 入れ 子構造を用いることによって表現したものである。 ループ単位の階層構 造と, 出力論理レコード X、 入力論理レコード A, B , Cの相対順序と 所属するループ単位が明らかになつている。 表 1 4を参照して, 出力論理レコー ド Yと入力論理レコー ド Bは, 出 力論理レコード Yが参照元, 入力論理レコード Bが参照先であって, 参 照の多重度は 1 : 1である。 出力論理レコード Yと入力論理レコー ド B の順序関係 (相対関係) およびループ階層関係は, 第 1 9図に示す関係 である。 第 2 0図は, 第 1 7図に図示されている出力論理レコード Xと, 入力 論理レコード A, Bおよび Cのそれぞれの順序関係おょぴループ階層構 造を総合結果 (一つにまとめたもの) と, 第 1 9図に図示されている出 力論理レコー ド Yと入力論理レコー Bの順序関係おょぴループ階層構 造を総合したものである。
第 2 1図は, 第 2 0図に示す出力論理レコード Xおよび Y , ならびに 入力論理レコード A , Bおよび Cの順序関係およびループ階層関係を, 入れ子構造を用いることによって表現したものである。 出力論理レコー ド Xおよび Y , ならびに入力論理レコー ド A、 Bおよび Cの処理順序と ループ階層構造が明らかになつている。
こ こで、 第 1 7図に示すよ うな一次情報 (入力要素および出力要素の 順序関係と、 その所属ループ階層と、 ループ階層間の関係の情報) に基 づいて、 第 1 8図に示すような 2次情報 '(ループ範囲の入れ子構造が示 された、 入力要素および出力要素の縦一列配置順序の情報) に変換する 手順の一例について説明しておく。第 2 0図に^す一次情報に基づいて、 第 2 1図に示す二次情報に変換する手順も、 同様の手順を用いている。 以下の説明では、入力論理レコードまたは出力論理レコードを「ノー ド」、 入力論理レコードおよび出力論理レコードの集合を 「ノ一ドグループ」 と表現する。
( i ) 参照関係に途切れがないノ一ドのグループを 1つ選択する。
( i i ) 選択したノードグループについて、 ループ単位の 番外側の階層 内のノードの中で、 階層が同じか異なるかにかかわらず他のノードを参 照している参照元ノ一ドの配列位置を、 当該ループ単位内の後ろ側に決 定する。 これらのノードには参照関係がないので、 配列順序は任意のル ールを決めて、 ルールに従って配列位置を決定する。 ここまでの配列を 配列 1 とする。 次に、 階層が同じか異なるかにかかわらず他のノードか ら参照のみされている参照先ノードの配列位置を、 配列 1の前に決定す る。 これらのノードにも参照関係がないので、 配列順序は任意のルール を決めてルールに従って決定する。ここで決定した配列を配列 2 とする。 これで、 一番外側のループ'単位の中のノ一ドの配列が決定した。
(iii) 一番外側のループ単位内の配列 1 と配列 2の間に、 下位の階層の ループ単位全体の配置位置を決定する。
(iv)次に、入れ子にした下位階層のループ単位内のノ一ドについても、 上記 (ii) に記載した手順でノー ドの配置位置を決定する。 ノー ドの配 單が完了したら、上記(iii)と同じ手順でさらに下位の階層のループ単位 全体を入れ子にする配置位置を決定する。 '
(V) 上記の (i i) から (iv) の手順を、 ループ単位の全ての入れ子位置 が決定し、 ループ単位内のノ一ドの順序が決定するまで繰り返す。
(vi) 1つのノードグループについて(ii)から(V)の処理が完了したら、 未処理のノ一ドグループがなくなるまで、 同様の処理を繰り返す。
(vii)参照関係に途切れがないノ一ドグループ 入れ子階層構造とノ一 ドの配置位置が決定したら、 ノードグループを任意の配列ルールに従つ て一列に配列する順序を決定する。 ノードグループ間には参照関係がな いので、 順序は任意でよいからである。 以上で、 全体のループ構造と出力論理レコードと入力論理レコー ドの 処理順序が決定する。 上記の処理ステップを処理フローに記述すると、 第 2 2図のようになる。 上記の方法以外の別の処理順序の決定方法につ いてもあるが, これについては後述する。
( 2 ) 初期化処理の位置を決定する。
データエリ アの値が不要になったとき, データエリ アの初期化 (ク リ ァ) が行われる。 これは、 主にはループ処理の場合に、 プログラムとデ 一タエリアを再利用するためである。 データエリアの値が不要になった ときとは、 すなわち、 そのデータエリアが他の処理に参照される必要が なく なった時点である。 LyeeALL 3では、論理レコード単位に初期化をお こない、 その初期化条件は論理レコードの 「参照完了の条件」 で判断す る。 論理要素は、 該当の出力データ項目エリアに値をセッ トする為に, 生成条件および生成式で他のデータ項目の値を参照している。すなわち, 出力データ項目の集まりである出力論理レコードが他の論理レコードの 値を参照していると、 考える事ができる。
任意の出力論理レコードが、 すべての値を参照し終える条件を 「 (論' 理) 参照完了の条件」 と呼ぶ。 たとえば、 以下の例 3を用いて説明する。 く例 3 >
Aファイルと Bファイルを商品コー ドの昇順にマージ (ソー ト) し、 ςファイルを作成するとする。 以下, Αファイルの商品コー ドを A. key で表し、 Bファイルの商品コードを B. keyで表す。
Cファイルの出力論理レコー ドのデータ項目には、 A. key > B. Key の とき、 Bファイルの入力論理レコー ドの値がセッ トされ、(A. keyく B. Key) または (A. key = B. Key) のと き、 Aファイルの入力論理レコー ドの値が セッ トされるとする。
このよ うな場合, Cファイルの出力論理レコー ドの 「論理レコー ドの 参照完了の条件」 は, 次の表 1 5のよ うになる。 表 1 5
Figure imgf000061_0001
Aファイルの入力論理レコー ドの値をク リアする条件は、 Aファイル の入力論理レコー ドを参照する Cファイルの出力論理レコードが参照を 完了する条件 (す わち A. key < B. Key または A. key = B. Key) に等し レ、。
B ファイルの入力論理レコー ドの値をク リアする条件は、 B ファイル の入力論理レコードを参照する Cファィルの出力論理レコードが参照を 完了する条件 (すなわち A. key > B. Key) に等しい。.
参照される論理レコードの値をク リアする条件は、 該当の論理レコー ドを参照する出力論理レコー ドの 「参照完了の条件」 を集めたも.のにな る。 , · く例 4 >
たとえば, 出力論理レコード: Xおよび Y、 入力論理レコード A , Bお ょぴ Cがあるとする。 出力論理レコードが参照する論理レコードに対す る 「参照完了の条件」 を 「X→A」 のよ うにあらわすと、 出力論理レコ ードの 「参照完了の条件」 は, 一例と して, 以下の表 1 6のように示さ れる。 表 1 6
Figure imgf000062_0001
表 1 6に示すような参照完了の条件がある場合, 参照される論理レコ 一ドの値を初期化してよい条件は, 以下の表 1 7のよ うになる。
表 1 7 -
Figure imgf000062_0002
論理レコー ド γ は出力論理レコードであるので、 「γ 自身の出力後」 も初期化条件である。 以上のようにして確定される、 論理レコ一ド単位の初期化条件から、 初期化要素と, 入力要素および出力要素の相対位置を確定することがで きる。
( 3 ) 出力データ項目の生成条件および生成式に記述されているデータ 項目間の参照関係を用いて論理要素の処理順序を明確にする。 く例 5 >
たとえば, 出力データ項目 f の要件と して記述されている生成条件お よび生成式が次のようになつていたとする。
生成条件 j > k
生成式 f = g + h
このとき、 出力データ項目 f が参照しているデータ項目 g、 h、 jおよ ぴ kのそれぞれの論理要素は, 出力データ項目 f の論理要素より先に実 行するように順序付ける。 このように、 データ項目間の参照関係によつ' て、 全ての論理要素の実行順序を明らかにすることができる。 論理要素' の実行順序を確定する方法は、 国際公開第 2 0 0 4 / 6 8 3 4 2号パン フ レツ トおよび国際公開第 2 0 0 4 / 8 1 7 8 8号パンフ レツ トに詳し く述べられている。 .·
( 4 ) 上記 ( 1 ) 〜 ( 3 ) の順序情報を統合して、 I Oュ-ッ ト全体の 処理順序を確定する。
上述の ( 1 ) から、 ループ単位の階層構造が決定し、 出力論理レコー ド (出力要素) と入力論理レコード (入力要素) の相対順序と所属する ループ単位階層が決定する。 ( 2 ) からは、 出力要素おょぴ入力要素に 対する初期化要素の位置が決定する。 ( 3 ) からは、 同一論理体に属す 出力データ項目の値を生成する論理要素群の最適処理順序が決定する。 従って、 次の手順で前記情報を統合すれば、 10ュニッ ト内の全ての要素 モジュールの順序が決定する。
( 1 ) で決定した出力要素と入力要素が配置されたループ単位階層構造 に対して、 ( 2 ) の結果を用いて初期化要素を配置し、 ( 3 ) の結果を 用いて最適処理順序化された論理要素群を、 それらが生成した出力論理 データ群(出力論理レコード)を出力する出力要素の直前に配置し、 ( 1 )
( 2 ) ( 3 ) で配置した要素モジュールの一番最後の要素乇ジユールの 後に、 経路要素を配置する。
<LyeeALL3によるプログラム製造手順〉
LyeeALL3によるプログラム製造手順の概要は以下のよ うになる。詳細 な手順の一部は一般に公開 されるている'技術資料 「使ってみよ う LyeeALL3 その 1 VI.0 (力テナ㈱作成 2005年 11月版) j に紹介されて いる。
1. LyeeALL3に要件情報おょぴ設計情報を入力する。
( 1 ) 入出力の基本情報の入力
プログラムを作成するための素材を登録することである。
(i) 画面情報の入力では, 作成すべき画面ごとの画面 IDが登録され, 画 面 ID によって識別される画面ごとにその画面に属する入力データ項目 よび出力データ項目が登録きれ, かつ画面に所属する論理レコー ドの ひな型を登録する。
(ii)ファイル情報の入力では, 作成されるデータベースのデータベース 名およびそこに所属するテーブルのテーブル ID が登録され, テーブル IDによって識別されるテーブルごとに, テーブルに属する入力データ項 目おょぴ出力データ項目を登録し, かつテーブルに属する論理レコード のひな型を登録する。
( 2 ) プログラム設計情報の入力 (i)プログラム IDの登録 .
ィベン ト単位の処理を 1つのプログラムの単位と してプログラム ID を登録する。
( i i) IOュニッ トフローの登録
プログラムごとに、そこに含まれる 10ュニッ トごとの要件情報を入力 (登録) する。
( 3 ) プログラムごとおよび 10ユニッ トごとの要件情報の入力
(i)プログラムが使用する論理レ コードのひな型を登録し,参照関係のあ る論理レ コ ー ド間の 「参照の多重度」 を入力する。 そして, 登録した出 力論理レ コードに属する出力データ項目の生成式と生成式実行条件を入 力する。 '
2 . プログラム ' ソース コードを生成する。
LyeeALL 3の生成開始ボタンがク リ ックされると, LyeeALL 3が指定し た言語のソースコードが生成、 コンパイルされ、 オブジェク トコー ドが' 作成される。 プログラムの構造は、 最適処理順序の構造となっている。
LyeeALL 3は画面の作成は行わないで、画面は一般的な画面開発法によ つて作成する。 . プログラムの稼動確認 .
LyeeALL 3で作成したプログラムと別途作成した画面を一緒に動かし、 プログラムの稼動を確認する。 なお,参照の多重度は, LyeeALL 3のユーザに入力させる方法もあるし、 他の要件情報から LyeeALL 3が自動的に解析することもできる。
他の要件情報とは、 1つは出力データ項目の生成式と生成式実行条件 である。 生成式と生成式実行条件に基づいて, 出力おょぴ入力データ項 目間の参照関係が決定でき、 出力および入力データ項目間の参照関係か ら、 それぞれの出力おょぴ入力データ項目が所属する論理レコード間の 参照関係が決定できる。 論理レコード間の多重度比率については、 参照 の条件などの情報からも得るこ とができる。 く LyeeALL 3が行う処理の概要 >
以上、 開発者側から述べた LyeeALL 3によるプログラム製造手順で'あ つた。 Lye eALL 3が行う処理に焦点をあててプログラム生成手順をみると、 以下のように手順となる。
( 1 ) 入力手段が中間言語で入力された要件情報 (参照の多重度情報 を含む) と、 プログラム設計情報入力する。'
( 2 ) 記憶手段が、' 入力された要件情報とプログラム設計情報を要件 D Bに保持する。 "
( 3 ) 作成要素モジュール決定手段が、 入力された要件情報とプログ' ラム設計情報から、 作成すべき要素モジュールと要素モジュールひな型 に代入すべき要件情報を決定し、 作成要素モジュール情報と して記憶手 段に記憶する。
( 4 ) 入出力要素配列およびループ階層構造決定手段が、 記憶手段に 記憶された作成要素モジュール情報 (参照の多重度情報を含む) に基づ いて、 ループ単位階層構造と、 入出力要素の相対的配置順序および所属 するループ単位階層を決定し、 順序情報 1 と して記憶する。
( 5 ) 初期化要素配列決定手段が、 記憶手段に記憶された作成要素モ ジュール情報 (参照の多重度情報を含む) に基づいて、 順序情報 1を参 照して、 出力論理要素に対する初期化要素の配置位置を決定し、 順序情 報 1 を拡張して順序情報 2 と して記憶する。
( 6 ) 論理要素配列決定手段が、 作成要素モジュール情報 (生成式お よび生成式実行条件を含む) に基づいて、 同一論理レコードに属する出 力データ項目の論理要素集合内における論理要素の配置順序を決定し、 順序情報 2を参照して、 出力要素に対する論理要素群の配置位置を決定 し、 順序情報 2を拡張して順序情報 3 と して記憶する。
( 7 )経路要素配列決定手段が、作成要素モジュール情報に基づいて、 順序情報 3を参照して、各 10ュニッ ト内の要素モジュール'群の最後に経 路要素を配置するよ う決定し、 順序情報 3を拡張して、 順序情報 4 どし て記憶する。
( 8 ) 言語変換手段は、 中間言語で入力された要件情報を、 入力され 記憶された指定言語情報に基づいて、 記憶された言語変換テーブルに従 つて、 指定言語に変換し、 変換要件情報と じて記憶する。
( 9 ) コード生成手段は、 記憶手段に記憶された作成要素モジュール 情報に基づいて、 記憶手段に記憶された要素モジュールひな型に対して 変換要件情報を代入して要素モジュールを生成し、 生成した要素モジュ' ールを順序情報 4に基づいて配置し、完成ソースコードと して記憶する。
( 1 0 ) 完成ソースコードを、 コンパイル手段がコンパイルし、 ォブ ジェク トコードと して記憶する。 第 2 3図は, 上記の処理を行う LyeeALL 3のシステム構成 (ハードウ エア構成) を示している。 また, 第 2 4図は, 上述した LyeeALL 3の処 理のフローチャートである。 第 2 5図は, 上述した初期化要素配列決定 の処理を示すフローチャー ト, 第 2 6図は論理要素配列決定処理のフ口 一チャートである。 第 2 7図は経路要素配列決定処理のフローチャー ト である。 他の実施例 「参照の多重度」 を用いて出力要素、 入力要素の相対位置と所属する ループ単位の階層の相対関係を決定する他の方法について、 上述した方 法とは別の方法を, 以下説明する。
1 つの 10ュニッ トとするべきある同期範囲に、 7つの論理レコード A、 B 、 C 、 D 、 E 、 F 、 Gがあるとする。 これらの論理レコー ドの参照の 多重度は次の表 1 8のように指定されている。
表 1 8
Figure imgf000068_0001
表 1 8から得られる情報を、 有向ダラフを用いて表すと第 2 8図、 第 2 9図、 第 3 0図のようになる。 参照の多重度情報からは、 全てのノー ド間の関係が直接得られないので、 これだけでは 1つの有向グラフを記 述することができない。 たとえば、 多重度からは Aと Cの順序関係がわ からない。 そこで、 表されていないノー ド間の順序関係を捕足する必要 がある。 多重度から直接把握できるループ単位とその順序関係 (階層) を元に、 不足する情報を補完してループ単位の順序関係を完成させる。 ループ単位の順序関係を有向グラフに表したものをノードフローと呼ぶ。 たとえば、多重度情報からは Aと B、Aと Cの関係しかわからない場合、 Bと Cの関係を決定しなければ完全な順序関係を決定することができな い。 そこで、 Bと Cの関係を補完し、 補完された情報から階層を導き出 し、 矛盾をチェック し、 ループ単位の順序関係を完成させる。 ,上述の表 1 8に不足するノー ドの順序関係を補完してノードフローを完成させる と第 3 1図のようになる。 以下にその過程を説明する。 ステップ 1 : 不足情報の補完
Aと Bの 2つのノードがあつたとき、 Aと Bについての、 可能性がある ノ一ド間順序関係の全候補は表 1 9に示すとおりである。
表 1 9
参照関係 順序関係 (Aは Bに対して)
階層 .前後順序
1 - N A→ B 外側ループ (上位階層) 後
1
A— B 刖
1
A、 B 任意
1 N 6.
8
Figure imgf000070_0001
表 2 0
参照関係 順序関係 順序関係
( Aは Bに対して) ( Bは Aに対して) 階層 前後
順序
1 - N 外側ループ 内側ループ
(上位階層) (下位階層)
A— B
1
B
1 N - 1 A→ B 内側ループ 外側ループ
N 1 (下位階層) (上位階層)
A— B
N 1
A、 B
N 1
1 - 1 同ループ 後 同ループ 刖
(同階層) (同階層)
A— B 刖 後
•1 1
A、 B 任意 ' 任意
1 1
ステップ 2
次に、 2つノー ドのペアの順序関係から、 不明な 3つ目 のノー ド ァ の順序関係を補完する。 たとえば、 ノー ド A、 B、 Cがあったとき、 A と B、 Aと Cの参照の多重度が決定しており、 Bと Cには参照関係がな いために順序関係が未決の場合、 全体の処理順序を決定するためには、 Bと Cの順序を決定する必要がある。 そこで、 順序関係が決定済みの 2 つのノー ドペアの関係を利用して、'不明な 2つ目 のノードペアの順序関 係を解析する。
前述の表 2 0の任意の 2項間補完表をもとにして、 不明なノー ドペア. 全てについて、 3項間補完表を作成する。 前述の A、 B、 Cの場合でい えば、 3項間補完表は下記の表 2 1のようになる。 表 2 1中の記号の意 味は表 2 2の通りである。 これらの記号は、 可能性候補表とチェック し た結果、 可能性候捕に当てはまるか否か、 候補と しての優先度を表した もの <
>である
表 2 1
B→ C
A→ C 上位 下位 同 言 IJ 同 後 同 {±思
1 上位 上位 〇 〇 〇 〇 〇
2 下位 X ◎ X X X
3 同 前 X ◎ X X X .
4 同 後 X ◎ X X X
5 同 任意 X ◎ X X X
A→ B A→ C 上位 下位 同 同 後 同 任意
6 下位 上 ◎ X X X X
7 下位 ' 〇 〇 〇 〇 〇
8 同 目 U ◎ X X X X
9 同 後 ◎ X X X X
10 同 任意 ◎ X X X X .
A→ C 上位 下位 同 目 U 同 後 同 f¾思
1 1 |PJ 前 上位 ◎ X X X X
12 下位 X ◎ X X X
13 同 刖 X X 〇 〇 . 參
14 同 後 X X X ◎ Δ
15 同 任意 X X 〇 〇 攀
A→ B A→ C 上位 下位 同 刖 同 後 同 任意
16 同 後 上位 ◎ X X X X
17 下位 X ◎ X X X
18 同 月 U X X ◎ X Δ 19 同 後 X X 〇 〇 參
20 同 任意 X X 〇 〇 拳
A→ B A→ C 上位 下位 同 目 ϋ 同 後 同 思
21 同 任 上位 ◎ X X X X
22 下位 X ◎ X X ' X
23 同 HU X X 〇 〇 參 .
24 同 後 X X 〇 〇 拳
25 同 任意 X X 〇 〇
Figure imgf000073_0001
表 2 2
Figure imgf000073_0002
ステップ 3
作成した 3項間補完表と、 参照の多重度情報を照合し、 候補のなかか ら、 未決定ノードペアの順序関係を決定する。 表 2 1 の例では、 A : B の多重度が 1 : N、 A : Cの多重度が 1 : 1だとすれば、 Aと Bの関係 は Aが Γ 位」 、 Aと Cの関係は Aが 「同 後」 であるから、 4行目の 候補が選択される。次に 4行目の優先度が最も高い「下位」が選択され、 Bと Cの関係は Bが 「下位」 であることが決定する。 全ての未決定のノ ードペアに対して、 同様の 3項間捕完表を作成し、 多重度情報と照合し て順序関係を決定する。 候補の優先度が同じで順序間決定が決定しない 場合は、 保留と'し、 他の順序関係が決定した後に、 新たな決定情報を利 用して 3項間捕完表の作成と照合を試みる。 この解析を、 未決定のノー ドペアがなくなるまで繰り返す。 この結果決定した順序関係情報を補完 済み多重度情報と呼ぶ。 ステップ 4
全てのノードの順序関係が決定したら、 捕完済み多重度情報から、 階 層 (ループ,単位) の抽出を行う。 同階層に属するノードが 1つのループ 単位になる。 上位となっているノー ドの階層位置は、 出来るだけ子階層 に配置する。 ·'
( i ) まず、 全てのノードの順序関係ステータスを未確定とする。
( i i )未確定のノード集合内で最下階層のノードになり得るノード (最下 層ノード候補) と、 それらと同階層にあるものを集め、 1つの階層とす る。 最下層ノード候補とは、 未確定のノー ドのうち、 未確定ないずれの ノードに対しても上位にならないノード群のことである。 この例を第 3 2図に示す。 .
また、 補完された多重度情報において同階層にはないが、 確定済みノ ードから見て上位階層のノー ド群は同一階層に属する (順序無しの同階 層になる) 。 この例を第 3 3図に示す。
( i i i ) 階層に属するノードを確定とする。 (ノードの所属階層の決定) ( iv)全てのノードが確定したら終了とする。未確定ノードがある場合は、 (i i )へ戻って同様の処理を繰り返す。 ステップ 5
階層間の多重度闋係作成を行う。抽出された階層をノードと見なして、 階層間の多重度関係を作成する。 これを階層間多重度情報と呼ぶ。 これ は、 補完された多重度情報とノー ドの所属情報から作成する。 ノー ドの 関係を同一階層に属するノード集合 (階層) の関係に置き換えたもので ある。 第 3 4図にイメージ図を示す。 '
第 3 4図の階層間多重度情報をまとめると表 2 3のようになる。
表 2 3
Figure imgf000075_0001
ステップ 6
単階層化多重度関係の作成を行う。 多重度情報と補完された多重度情 報と階層間多重度情報から、 単階層化多重度情報を導き出す。 単階層化 多重度関係とは、 ノードの階層関係を省いて、 前後の順序関係のみを取 り出したものである。 第 3 4図の階層構造を単階層化したものを第 3 5 図に示す。 ステップ 7
ノードの階層所属情報と単階層化多重度情報を使用して、 ループ階層 化ノードフローを作成する。 単階層化多重度情報でと らえたノードフロ 一に、 ノードが所属する階層情報を追加することによって作成する。 第 3 6図は, 第 3 5図のノー ドフローをループ階層化したものを示し
C.6STC/900Zdf/X3d S6Z8T0/.00Z OAV

Claims

請求の範囲
1 . 定型構造を持った部品プログラムによって構成されているプロ'グラ ム作成方法において、'仕様によって異なる部品プログラムのループを含 む実行順序を決定する方法であって、 部品プログラムは、 少なく とも、 論理レコー ドの入力を実行する入力要素と、 出力データ項目の値生成を 実行する論理要素と、 論理レコー ドの出力を実行する出力要素と、 デー タ記録領域の初期化を実行する初期化要素と、 プログラム内め実行経路 を決定する経路要素を含み、 1つまたは複数の入力要素、 1つまたは複 数の論理要素、 1つまたは複数の出力要素、 1つまたは複数の初期化要 素、 1つまたは複数の経路要素の実行順序を、 論理レコー ド間の参照の 多重度情報と、 出力データ項目の値を生成するための生成式と生成式実 行条件が示すデータ項目間の参照関係情報に基づいて決定することを特 徴とする, プログラム実施順序決定方法。 ·
2 . 仕様によって異なる入力要素、 論理要素、 出力要素、 初期化要素、 経路要素のループ 含む実行順序を決定する装置であって、 論理レコー ド間の参照の多重度情報と、 出力データ項目の値を生成ずるための生成 式と生成式実行条件が示すデータ項目間の参照関係に基づいて、 ループ 範囲を明示した入力要素および出力要素の第 1実行順序を決定する手段、 第 1実行順序に対して初期化要素の配置を決定して第 2実行順序を決 定する手段、
第 2実行順序に対して論理要素の配置を決定して第 3実行順序を決定 する手段、
ならぴに第 3実行順序に対して経路要素の配置を決定して第 4実行順 序を決定する手段を備えることを特徴とする, プログラム実行順序決定装置。
3 . 仕様によって異なる入力要素、 論理要素、 出力要素、 初期化要素、 経路要素のループを含む実行順序を決定する装置を制御するプログラム であって、
論理レコード間の参照の多重度情報と、 出力データ項目の値を生成す るための生成式と生成式実行条件が示すデータ項目間の参照関係に基づ いて、 ループ範囲を明示した入力要素おょぴ出力要素の第 1実行順序を 決定し,
第 1実行順序に対して初期化要素の配置を決定して第 2実行順序を 決定し,
第 2実行順序に対して論理要素の配置を決定して第 3実行順序を決 定し,
第 3実行順序に対して経路要素の配置を決定して第 4実行順序を決' 定するよ うに制御する, プログラム。
4 . 請求の範囲第 3項に記載のプログラムが記録された, コ ン ピュータ 読み取り可能な記録媒体。
5 . —または複数のデータ項目を含む一または複数の参照元論理レ コ ー ドと, 一または複数のデータ項目を含む一または複数の参照先論理レ コ 一ドのそれぞれとの間のデータ項目参照関係に基づいて, 一または複数 の参照元論理レ コ ードのそれぞれと一または複数の参照先論理レ コード のそれぞれとの組合せが, 1 : 1 , 1 : N , または N : 1のいずれの参 照多重度の関係にあるかを表す参照多重度情報の入力を受付け,
受付けられた参照多重度情報が 1 : 1であれば, その参照元論理レコ ードを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュールは同一のループ単位に属すると判定し,
受付けられた参照多重度情報が 1 : Nであれば, その参照元論理レコ ードを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュールは異なる 2つのループ単位のそれぞれに属し, かつその 参照元論理レコードを処理する要素モジュールが外側ループに位置づけ られ, その参照先論理レコードを処理するための要素モジュールが内側 ループに位置づけられると判定し,
受付けられた参照多重度情報が N : 1であれば, その参照元論理レコ 一ドを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュールは異なる 2つのループ単位のそれぞれに属し, かつその 参照元論理レコー ドを処理する要素モジュールが内側ループに位置づけ られ, その参照先論理レコードを処理する要素モジュールが外側ループ に位置づけられると判定し,
上記参照多重度情報に基づく上記判定の結果に基づいて, 一または複 数の参照元論理レコー ドを処理する一または複数の要素モジュールおよ び一または複数の参照先論理レコードを処理する一または複数の要素モ ジュールのそれぞれの処理順序を決定する,
処理順序決定方法。 ,
6 . —または複数のデータ項目を含む一または複数の参照元論理レコー ドと, 一または複数のデータ項目を含む一または複数の参照先論理レコ ードのそれぞれとの間のデータ項目参照関係に基づいて, 一または複数 の参照元論理レコードのそれぞれと一または複数の参照先論理レコード のそれぞれとの組合せが, 1 : 1 , 1 : N , または N : 1のいずれの参 照多重度の関係にあるかを表す参照多重度情報の入力を受付ける参照多 重度情報受付手段,
受付けられた参照多重度情報が 1 : 1であれば, その参照元論理レコ ードを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュールは同一のループ単位に属すると判定する第 1の判定手段, 受付けられた参照多重度情報が 1 : Nであれば, その参照元論理レコ 一ドを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュ ルは異なる 2つのループ単位のそれぞれに属し, かつその 参照元論理レコー ドを処理する要素モジュールが外側ループに位置づけ られ, その参照先論理レコ一ドを処理するための要素モジュールが内側 ループに位置づけられると判定する第 2 の判定手段,
受付けられた参照多重度情報が N : 1であれば, その参照元論理レコ 一ドを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュールは異なる 2つのループ単位のそれぞれに属し, かつその 参照元論理レコー ドを処理する要素モジュールが内側ループに位置づけ' られ, その参照先論理レコードを処理する要素モジュールが外側ループ に位置づけられると判定する第 3 の判定手段, ならぴに
上記参照多重度情報に基づく上記判定の結果に基づいて, 一または複 数の参照元論理レコー ドを処理する一または複数の要素モジュールおよ ぴーまたは複数の参照先論理レコー ドを処理す?)一または複数の要素モ ジュールのそれぞれの処理順序を決定する決定手段,
を備えた処理順序決定装置。
7 . 一または複数のデータ項目を含む一または複数の参照元論理レコー ドと, 一または複数のデータ項目を含む一または複数の参照先論理レコ 一ドのそれぞれとの間のデータ項目参照関係に基づいて,'一または複数 の参照元論理レコー ドのそれぞれと一または複数の参照先論理レコー ド のそれぞれとの組合せが, 1 : 1 , 1 : N , または N : 1のいずれの参 照多重度の関係にあるかを表す参照多重度情報の入力を受付ける処理, 受付けられた参照多重度情報が 1 : 1であれば, その参照元論理レコ 一ドを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュールは同一のループ単位に属すると判定する第 1の判定処理, 受付けられた参照多重度情報が 1 : Nであれば, その参照元論理レコ ードを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュールは異なる 2つのループ単位のそれぞれに属し, かつその 参照元論理レコードを処理する要素モジュールが外側ループに位置づけ られ, その参照先論理レコ一ドを処理するための要素モジュールが内側 ループに位置づけられると判定する第 2 の判定処理,
受付けられた参照多重度情報が N : 1であれば, その参照元論理レコ 一ドを処理する要素モジュールと, その参照先論理レコードを処理する 要素モジュールは異なる 2つのループ単位のそれぞれに属し, かつその. 参照元論理レコー ドを処理する要素モジュールが内側ループに位置づけ られ, その参照先論理レコードを処理する要素モジュールが外側ループ に位置づけられると判定する第 3の判定処理, ならびに
上記参照多重度情報に基づく上記判定の結果に基づいて, 一または複 数の参照元論理レコードを処理する一または複¾の要素モジュールおよ び一または複数の参照先論理レコー ドを処理する一または複数の要素モ ジュールのそれぞれの処理順序を決定する決定処理,
をコンピュータに実行させる処理順序決定処理プログラム。
8 . 請求の範囲第 7項に記載のプログラムを記録したコ ンピュータ読み 取り可能な記録媒体。
PCT/JP2006/315973 2005-08-05 2006-08-07 プログラム実行順序決定装置および方法 WO2007018295A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007529642A JPWO2007018295A1 (ja) 2005-08-05 2006-08-07 プログラム実行順序決定装置および方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-228923 2005-08-05
JP2005228923 2005-08-05

Publications (1)

Publication Number Publication Date
WO2007018295A1 true WO2007018295A1 (ja) 2007-02-15

Family

ID=37727471

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/315973 WO2007018295A1 (ja) 2005-08-05 2006-08-07 プログラム実行順序決定装置および方法

Country Status (2)

Country Link
JP (1) JPWO2007018295A1 (ja)
WO (1) WO2007018295A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259063A (zh) * 2018-11-30 2020-06-09 北京数聚鑫云信息技术有限公司 一种以api方式实现数据导出的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002312167A (ja) * 2001-04-13 2002-10-25 Fujitsu Ltd 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法
WO2005029323A1 (ja) * 2003-09-22 2005-03-31 Catena Corporation ソフトウェア生成方法
WO2005043271A2 (ja) * 2003-10-06 2005-05-12 Catena Corp ソフトウェア生成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002312167A (ja) * 2001-04-13 2002-10-25 Fujitsu Ltd 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法
WO2005029323A1 (ja) * 2003-09-22 2005-03-31 Catena Corporation ソフトウェア生成方法
WO2005043271A2 (ja) * 2003-10-06 2005-05-12 Catena Corp ソフトウェア生成方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111259063A (zh) * 2018-11-30 2020-06-09 北京数聚鑫云信息技术有限公司 一种以api方式实现数据导出的方法及装置
CN111259063B (zh) * 2018-11-30 2023-08-15 北京数聚鑫云信息技术有限公司 一种以api方式实现数据导出的方法及装置

Also Published As

Publication number Publication date
JPWO2007018295A1 (ja) 2009-02-19

Similar Documents

Publication Publication Date Title
Saridakis et al. Soft computing in engineering design–A review
Erden et al. A review of function modeling: Approaches and applications
US7546577B2 (en) Method and apparatus for producing software
JP2506991B2 (ja) 回路変換システムと回路変換方法と反転論理生成方法および論理設計システム
CN101739484A (zh) 一种基于知识组件的工程设计方法
Avramenko et al. Case based design: Applications in process engineering
Kusiak et al. A structured approach for analysis of design processes
Kusmenko et al. Modeling and training of neural processing systems
Arista et al. An Ontology-based Engineering system to support aircraft manufacturing system design
JPWO2002097727A1 (ja) 知識の自動生成方法、知識の自動生成システム、知識の自動生成プログラム、自動設計方法及び自動設計システム
Stacey et al. Signposting: an AI approach to supporting human decision making in design
Benjamins et al. Knowledge-system technology: ontologies and problem-solving methods
Raffaeli et al. Improving the link between computer-assisted design and configuration tools for the design of mechanical products
Horváth et al. A new method for enhanced information content in product model
WO2007018295A1 (ja) プログラム実行順序決定装置および方法
Cabrera et al. Architecture-centric design approach for multidisciplinary product development
JPWO2005043271A1 (ja) ソフトウェア生成方法
Ahmad et al. An intelligent expert systems' approach to layout decision analysis and design under uncertainty
Nonsiri et al. A combined design structure matrix (DSM) and discrete differential evolution (DDE) approach for scheduling and organizing system development tasks modelled using SysML
Javidi et al. A new method based on formal concept analysis and metaheuristics to solve class responsibility assignment problem
Schaefer et al. Splicing TABASCO: custom-tailored software product line variants from taxonomy-based toolkits
Chmarra et al. Revisiting the divide and conquer strategy to deal with complexity in product design
Jungmanna et al. Towards Fusing Data and Expert Knowledge for Better-Informed Digital Twins: An Initial Framework
Carter Applications and prospects for AI in mechanical engineering design
Clausner Semantics-enriched workflow creation and management system with an application to document image analysis and recognition

Legal Events

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

Ref document number: 2007529642

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06796388

Country of ref document: EP

Kind code of ref document: A1