WO2005029323A1 - ソフトウェア生成方法 - Google Patents

ソフトウェア生成方法 Download PDF

Info

Publication number
WO2005029323A1
WO2005029323A1 PCT/JP2004/013855 JP2004013855W WO2005029323A1 WO 2005029323 A1 WO2005029323 A1 WO 2005029323A1 JP 2004013855 W JP2004013855 W JP 2004013855W WO 2005029323 A1 WO2005029323 A1 WO 2005029323A1
Authority
WO
WIPO (PCT)
Prior art keywords
lyee
value
software
word
program
Prior art date
Application number
PCT/JP2004/013855
Other languages
English (en)
French (fr)
Inventor
Mohamed Mejri
Bechir Ktari
Hamido Fujita
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 JP2005514111A priority Critical patent/JPWO2005029323A1/ja
Priority to US10/572,921 priority patent/US20070250806A1/en
Priority to EP04788038A priority patent/EP1693745A4/en
Priority to CA002539794A priority patent/CA2539794A1/en
Publication of WO2005029323A1 publication Critical patent/WO2005029323A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/311Functional or applicative languages; Rewrite languages

Definitions

  • the present invention relates to a software generation method, and more particularly, to a software generation method using formalization by process algebra in Lyee methodology.
  • Non-Patent Document 1 J. A. Bergstura, J. A. W. Crop, "Communication Using Abstraction 'Algebra of Processes'", 1985, Theoretical Computer Science, 37 (1), p. 77-121
  • Non-Patent Document 2 G. Berry and G. Boudol, "Chemical Abstraction Machine", 1992, Theoretical Computer Science, 96 (1), p. 217-248
  • Non-Patent Document 3 C.A.R.Hoare, "Communicating Order Process", Prentice's Whole Computer Science International Series, Prentis' Hall Publishing, 1985
  • Non-patent Document 4 M'Mejri, B.Ktari, and M.Mejri, B.Ktari, and M. Erhioui), ⁇ Static Analysis of Lyee Oriented Software, '' Proceedings of the First International Workshop on Lyee Methodology in Paris, No. and Mido, eds. Ed. New Trends, "p. 375-394, IOS Publishing, 2002
  • Non-Patent Document 5 R. Milner, “Communication 'Computing Methods for Systems'", 92 Lectures in Computer Science, Berlin, 1980, Springer's Fairmark
  • Non-Patent Document 6 Fumio Negoro, "Lyee Principles of Software ", International Conference on Information Science in the 21st Century 2000 (IS2000), p. 121-189, November 2000
  • Non-Patent Document 7 Fumio Negoro, "Introduction to Lyee", Software Production Engineering Laboratory, Tokyo, Japan, 2001
  • Non-Patent Document 8 Fumio Negoro and I. Hamid, "Proposal of Willing Engineering", Fifth East European Conference on Databases and Information Systems (ADBIS '2001), September 2000
  • Non-Patent Document 9 Fumio Negoro, I. Hamid, “Proposal of Willing Engineering”, International Conference on Advances in the Infrastructure of Electronic Commerce, Science and Education on the Internet (SSGR R2001), 2001
  • the main object of the present invention is, firstly, to use a process algebra to formalize the semantics of software generated by Lyee and the automatic software generation process.
  • process algebra essentially supports many of the concepts of Lyee methodology, and thus formalizes Lyee methodology concisely and neatly.
  • the second objective is that process algebra provides a better abstraction machine to Lyee methodology than von Niemann's. In fact, this new abstract machine sees the program as a solution, where molecules (different vectors in Lyee methodology) interact to achieve a common goal.
  • the present invention provides a user name implemented as one program, for each logical body, for each word on the logical body, a word name, a definition formula, and a definition formula.
  • the method includes a fourth step of arranging one control function module ⁇ for each set, and a fifth step of arranging one control function module ⁇ in the program.
  • a program (software), a program generation device, a program processing device, and a tool (including both as a device or software) for producing "software to be developed” as different embodiments of the present invention.
  • Software development equipment, software development support equipment, and software development management equipment are composed of logic elements (L, L, L) and operation elements (L, L, L) that are modularized as process cells with input / output channels by the Lyee calculation method.
  • control function module ⁇ For each logical body, for each word on the logical body, insert information that has been computerized as a word name, a definition expression, an execution condition of the definition expression, an input / output attribute, and a declaration that also has the attribute power of the word value. Associating one control function module ⁇ so as to control the unit, with the insertion unit and the set unit whose interaction condition is to cause the logical element and the action element to be interacted by a command from the same screen; Control function ⁇ allocation means and one control function module
  • may be configured to include a control function ⁇ arrangement means for associating ⁇ with the control function ⁇ so as to control the control function ⁇ .
  • the present invention further provides software produced by the above-described "method of producing software to be developed", and a recording medium on which the software is mounted or an apparatus on which the software is mounted (e.g., In this case, the present invention specifies the user requirements to be implemented as one program for each logical entity and for each word on the logical entity.
  • Word names, definition formulas, execution conditions of the definition formulas, input / output attributes, and information quantified as declarative powers of word values are modularized as process cells with input / output channels by Lyee calculation.
  • Logical elements (L, L, L) and action elements (I, O, S) are modularized as process cells with input / output channels by Lyee calculation.
  • the present invention provides software as a template of software code used for producing software by the above-mentioned "method of producing software to be developed", and a recording medium on which the software is mounted. Or a device with the software installed
  • the user requirements to be implemented as a single program include, for each logical body, a word name, a definition formula, and a word for each word on the logical body.
  • Modular logical element (L) Modular logical element
  • control function ⁇ may be realized as a model that can be coded as software including a model of a control function module ⁇ ⁇ having a function of controlling the control function ⁇ with one control function module ⁇ .
  • the present invention provides a method of extracting information (document (paper, data)) extracted from requirements by the above-mentioned "method of producing software to be developed", and an extraction method by such an extraction method.
  • information document (paper, data)
  • the present invention provides a process including input / output channels by the Lyee calculation method.
  • 'A template for logical elements (L, L, L) and action elements (I, O, S) modularized as cells.
  • Lyee which aims to efficiently handle a wide range of software issues related to different disciplines, allows software to be developed simply by defining its requirements.
  • the main object of the present invention is firstly to formalize the semantics of software generated by Lyee and the automatic software generation process using process algebra.
  • process algebra essentially supports many of the concepts of Lyee methodology, and thus formalizes Lyee methodology concisely and neatly.
  • process algebra provides a better abstraction machine to Lyee methodology than von Niemann's.
  • this new abstract machine sees the program as a solution, where molecules (different vectors in Lyee methodology) interact to achieve a common goal.
  • Lyee (“ri ⁇ ”? _ ?, a tail letter of “goverdgingaL methodologY for softwarE pro V iden C E”) (see Non-Patent Documents 6, 7, 8, and 9)
  • Lyee allows you to develop software simply by defining its requirements.
  • developers only need to provide words, formulas, calculation conditions (preconditions) and layout of screens and forms, and then the computer will perform all subsequent troublesome programming processes (eg, , Aspects related to control logic, etc.).
  • the results of using Lyee are: Shows that there are so many potential.
  • Non-Patent Document 7 in order to improve many aspects of this methodology, especially the Lyee requirement, we proposed some classical static analysis techniques.
  • process algebra provides a formal and valuable basis for supporting the Lyee methodology concept.
  • One of the many advantages of using process algebra in the Lyee methodology is that many components (whole vectors or parts of vectors) in real versions of Lyee are no longer needed. Because these components are written in a sequential processing language, the forces needed to control the execution order of a set of processes are essential.These roles support parallel processing and communication of processes. This is because it is inevitably supported by process algebra. In fact, the routing vector is no longer needed.
  • this formal description is an essential starting point for many interesting analyzes of various aspects of the methodology. For example, in Lyee To optimize the generated software or the software generation process, you need formal evidence that the optimized program is the same as the original version. Using process algebra, we can do a good job of checking for formality or, more generally, model checking.
  • Lyee-Calculus which supports the basic concept of Lyee methodology easily and naturally, is first described. Define. In fact, we consider this method to be an abstract machine that is more suitable for supporting the Lyee methodology than a von Neumann (sequential processing) computer. be able to. This machine views a program as a collection of molecules that interact together to produce the final result. Second, we show how this calculation method can formalize and simplify both the Lyee component (called a vector in Lyee) and the entire software generation process of the Lyee methodology. In fact, we formalized the entire process of automatically generating Lyee software.
  • Section 2 defines the syntax and semantics of the Lyee calculus.
  • Section 3 presents a technical introduction to the Lyee methodology and an overview of its formal shading by Lyee computation.
  • Section 4 proposes a detailed and complete formalization of the Lyee methodology using Lyee calculations.
  • Section 5 describes one case study that demonstrates both how the simple requirements program is automatically generated, along with a description of the generated program at each execution stage. I do.
  • Section 6 concludes the study and describes some of the future work.
  • Process algebra is a formal description technique for complex computer systems, especially computer systems that include components that communicate and execute in parallel (see Non-Patent Documents 1, 3, and 5). Process algebra is commonly referred to in the literature as a calculus. Because process algebra goes beyond the field of process algebra, it has various mathematical and logical summaries. Some of them include reminders (concurrency theory, operational semantics, complexity theory, logic, etc.).
  • the Lyee calculation program uses a handshake technique (a technique in which one of the two processes communicates by placing one of the two processes in a receivable state and the other in a transmittable state) on a specified channel. It is a system consisting of independent parallel processes that communicate. Channels can be limited so that only certain processes can communicate.
  • a process works [? ! e] to make a channel? Value through? (? Is the evaluation result of expression e).
  • a process acts as a [? ? e] to convert the value of channel? to expression e? (? Is the value used to calculate equation e).
  • Certain processes can also perform a silent action ⁇ . This special effect is due to the internal behavior of the system, such as synchronization between processes (a process in which one process sends a value at the same time as another process receives it). ). In addition, indeterminacy in the progress of a process, i.e., when there are multiple process options and it is not possible to predict which process will be executed (see ⁇ selection '' in Process Syntax Definition 1 below) ), Is useful to capture.
  • the set of actions is either a set with one action as an element ( ⁇ ) or a set of combined action sets (K U K).
  • the set of channels can be an empty set with no elements (0), a set with only one channel as an element ( ⁇ ? ⁇ ), Or a set of combined channels (LUL).
  • Definition Syntax 4 is as follows. That is, when there is an action ⁇ , the action is a transmission action ( nowadays E) that transmits the value of the calculation result of the expression e on the channel? Either the receiving action (?? e) that receives the value of the expression e above or the inactive action ( ⁇ ).
  • the meaning of the syntax defined in the definition syntax 1 will be described in detail.
  • the process [K] .P is a process that behaves as ⁇ ⁇ after executing all the actions belonging to ⁇ which is a set of actions, that is, ⁇ ,..., ⁇ .
  • the order in which the actions belonging to ⁇ are performed is not important.
  • Process P I Q behaves as processes P and Q executed in parallel. Each process can interact with each other on channels that both know, or each process can independently interact with the external world (system environment or end user). it can. When two processes synchronize on the same channel (synchronize: in inter-process communication, one process sends a value at the same time as another process receives it), the whole process works (an inactive effect). ) And then act as the rest of the process. Specifically, consider the following process example.
  • PI and P2 are defined as follows.
  • P1 channel value 4? Is a process that sends it up and then acts as process ⁇ .
  • ⁇ 2 is a channel? This is a process that waits for the value of equation X above, receives it if it is given, and then behaves as process # 2.
  • process ⁇ performs an ineffective effect ⁇ when processes P1 and ⁇ 2 are synchronized (because it is actually receiving by ⁇ 2 at the same time as sending value 4 from P1), and then And act as the rest of the process PI 'IP2'.
  • this transition is represented as follows.
  • Process P + Q is a process that behaves as process P or Q.
  • the choice of which process is performed is deterministic, depending on the environment, unless the force onset of both P and Q is inactive. On the other hand, if both processes start with no effects, no choice is made.
  • Q is a process that behaves as P until process Q is activated. Whenever the latter Q is activated, P stops and is cleared from memory.
  • Process P / L behaves as process P, which can communicate with the environment using only the channels given to the set L of channels.
  • Equation 3 the following expression can be defined by the symbol of Equation 3.
  • X I a variable (parameter) of process A, and the process on the left is defined as the process P on the right.
  • Process P can recursively include A.
  • a process, V, or a dead process which cannot perform any action.
  • a process terminates, it usually becomes a nil process.
  • the process ends and becomes a nil process, the process is no longer activated, so no action can be performed, even if the conditions for performing the action are met.
  • This section describes how to model a cell, a memory, that holds a value, as a process that interacts with its environment through its communication channel.
  • a memory 'cell is considered to have two ports (channels) in and out for communication.
  • the basic task of this memory 'cell is to wait indefinitely for a value on channel in and make that value available on channel out.
  • the memory 'cell can output the same value to channel out as many times as necessary until a new value is input to channel in. The channel itself does not hold the value!
  • C x ⁇ v) [in x 7y ⁇ .C x (y) + [out x lv].
  • C x (v) What is the intuitive meaning of this formal description? When the process C x (?) Holding the value of the expression y on the channel in x receives the value of the expression y from the process C x (y), Will be changed to), holding value? Is transmitted over the channel out x , the process behaves as a process C x (?) While retaining the value? After the transmission operation.
  • Process Cell (x) [in x 7y] .C x (y)
  • Process Cell (x) receives the value of expression y on channel m and then stores the value of expression y in process C x (y) (The process that receives the value of expression y and retains the value of expression y, but does not send it.)
  • Process PI is the process that sends the value 5 on channel m and becomes nil (terminates) (the process that sends the value 5).
  • Process P2 is a process that becomes nil (terminates) after receiving the value of expression y on channel out x (the process of receiving the value of expression y)
  • This program is a program in which process Pl, process Cell (x), and process P2 are executed in parallel.
  • FIG. 2 shows the interaction between all the processes included above.
  • the process PI I Cell (x) IP2 is executed through the following first and second steps. (The right-hand side described by the equal sign is one step.)
  • the underline indicates the transmission / reception action that causes interaction (synchronization).
  • An interaction (synchronization) between processes occurs: (1) completes the transmission of the value 5 on the channel, and (2) receives the value 5 on the channel.
  • C x (5) is a selection process (4) 1 ([in x ? Y] .C x (y) + [out x ??]. C x (?) ).
  • represents a “relation”
  • represents an action.
  • a “relationship” is a set of a plurality of “relationships”, and each "relationship” that is a set element is composed of the following three elements. The first element is the “process before change”, the second element is the “process after change”, and the third element is “the action performed during change”.
  • Equation 14 the meaning of Equation 14 is that the interaction (reaction) in the subprocess P causes the entire process to be an atomic action; a series of indivisible actions that do not allow interrupts. Must be completed in order to start another action). This means that ⁇ is executed to become subprocess Q.
  • the idea of an interaction relation was inspired by the Berry and Boudol (see Non-Patent Document 2) Chemical Abstract Machines. In this model, a process is considered to be a chemical solution of molecules waiting to undergo an interaction.
  • Equation 15 is a symbol used to simplify the process, and indicates that the left side is equal to the right side which is a simplified process. As shown below, the process can be simplified by eliminating the no-process.
  • e is a variable
  • the domain of the result of the calculation is the same as the domain (integer, real number, etc.) of the variable.
  • all variables are assumed to belong to a set of real numbers.
  • the set ( ⁇ ) of “relationships” is a “relationship” having a minimum number of “relationships” that satisfy the 15 rules shown in Table 5 as elements.
  • the various R symbols shown without stiffness are symbols indicating rule names.
  • the rules consist of preconditions and results, and each rule is such that when the conditions shown in the upper part of the horizontal line give the results shown in the lower part.
  • “Word” is a word name
  • “Definition” is a definition expression for generating a word value
  • Condition is a calculation condition for executing the definition expression
  • “10” is an input / output attribute of the word value.
  • OF indicates output to a file
  • OS indicates output to a screen
  • IS indicates input from a screen
  • IF indicates input from a file (not shown in the table).
  • Type is a value attribute, int represents an integer, and float represents a fixed-point number.
  • “Security” indicates an attribute related to the security of the value. secret indicates private, public indicates public.
  • the code for the declaration S for the word a is
  • the code of the declaration S means "input a value to the word c".
  • Lyee can generate code that calculates all defined words.
  • This simple idea as shown in [6], [7], [8], and [9], produces a number of advantageous results at different steps in software development.
  • software development can be started even with incomplete requirements.
  • the user does not need to deal with the problem of word execution order control logic as in the more classical methodology.
  • the control logic portion of the software is automatically generated in the Lyee methodology, resulting in reduced programming errors and reduced programming time. Flexibility is also a major advantage of the Lyee methodology. This is because maintenance work can be reduced to simple modification of requirements (addition, deletion and Z or modification of word definitions).
  • the Lyee system can be viewed as a collection of independent components (declarations) that interact together to produce the desired result.
  • process algebra in this paper agrees very well with this view.
  • the Lyee calculus sees a program as a chemical solution of molecules (processes) that interact with each other to reach an end goal. Power is also.
  • the Lyee requirement LR which consists of a set of declarations is..., ⁇ , Can be viewed as a concurrent process in Lyee computation. That is, as shown below.
  • requirement LR is a process in which processes s,..., S are executed in parallel.
  • the Lyee program also starts the pallet W force and keeps all settings until the fixed point is reached.
  • the author of the Lyee methodology determines the order in which the palettes are executed, the order in which the vectors (modules) in the same palette are to be executed, and some vector forces. I had to clearly specify how to pass control to other vectors.
  • the sequential processing language does not belong to the basic concept of the Lyee methodology, and also introduces some aspects that have made this methodology powerful and complicated.
  • it was necessary to control the repetition of the execution of the vectors in each pallet specify the method (including between different basic structures) to shift the execution from the pallet to another pallet, and specify the timing. For these, a pallet function (execution control within the pallet), a path action element (deciding the next pallet to execute), and a pallet chain function (execution control between pallets) are installed! Pita.
  • the basic structure SF process is the same as the three pallet processes W, W, and W.
  • Lyee has established a simple program with fixed structure (called a predicate vector in Lyee terminology). This structure ensures that the structure of the generated code is immutable and independent of the requirements.
  • the role of the palette function, the global program that controls the execution of the vector, is simply to call the predicate vector.
  • FIG. 6 shows the structure of the predicate vector.
  • the purpose of the predicate vector differs for each palette.
  • palette W The primary purpose of palette W is to give values to words by definition. This role
  • the predicate vector to be performed is called L4.
  • L4 of word a and word b in the example of FIG. 4 is as shown in FIG.
  • An input action element (called Input Vector: 12) that inputs data into the main memory (outside the Lyee program area), and L2 that performs attribute checking and input into the Lyee program area.
  • predicate vector L3 in palette W is specified in the requirement, as shown in Figure 8.
  • Table 8 shows a Lyee program that implements the requirements of Table 6.
  • Palette function force placed in each pallet Calls (starts) a predicate vector in the pallet.
  • the pallet function is called by a pallet chain function placed in the program.
  • the pallet chain function calls the corresponding pallet function according to the specification of R4, R2, and R3 of each pallet.
  • the meanings of the other programs are shown in the comments in Table 8.
  • the processing targets of the predicate vectors L4, L2, and L3 are word units, and the processing targets of the input / output operation elements (12 and 04) and the structure operation element (S4) are a set of words. You.
  • the W process is a parallel process of the S4, L4a, L4b, and 04 processes.
  • the W process is a parallel process of the L3a and L3b processes.
  • the W process is a parallel process of the L2 e, L2 c, and 12 processes.
  • the basic structure shown in the previous section may be considered as an entire program in any case where the requirements are simple. In particular, it is a program where all input words and output words belong to the same screen and the database is not used at all. The situation is complicated when the input and output words belong to several databases or different screens interconnected. For the sake of simplicity, in the following description, a case where there are only a plurality of screens will be described. As shown in Fig. 9, there are three screens connected to each other, and the user can move to a screen of different screen power. On each screen, the user can enter, calculate, and output words. Therefore, in the specification, the user must specify how these screens are interconnected.
  • a screen s is transformed into a process k k that controls the execution of the process SF (s).
  • the process ⁇ (3) is a process SF (s) (the basic structure of the process related to the screen s k k k
  • Seth ⁇ (3) As an actual movement, the control process ⁇ (3) activates the process SF (S) k k k and the screen s
  • the Lyee program consists of several processing path diagrams (PRD). Each PRD is a set of interconnected basic structures (SFs). Each basic structure consists of three interconnected pallets W
  • the palette is composed of predicate vectors.
  • a word vector is the smallest unit of the Lyee program, so it is also called an atomic 'beta vector'.
  • the predicate Beta Tonore has an element (signature vector: L2, L3, L4) and an action element (action vector: 12, 04, S4, R2, R3, R4).
  • a palette function is set for each pallet as a control module that controls the execution of these predicate vectors, and one pallet chain function is set in the program as a module that controls the execution of the pallet function.
  • the Lyee program P including the screens s,.
  • V ⁇ si,..., S k ⁇ ⁇ ..., s k ) / C ⁇ s..., s k )
  • L (s,..., S) is a set of input and output channels. It is. this
  • process ⁇ (3) is started to start SF (s) corresponding to screen s.
  • the above channel is a button used by the user to launch the corresponding screen. This is a formal version of the menu.
  • the function ⁇ receives a true value on the channel?, It terminates all other processes, and the function ⁇ itself terminates (becomes nil).
  • Channel? S the end button (or the corresponding menu item) is to be calculated and formalized.
  • the Lyee system can be viewed as a collection of independent concurrent processes that communicate with each other to compute the desired output word.
  • the role of the control function which does not require all path action elements, is greatly simplified, and no working memory is required. ⁇ (s,..., S)
  • each screen is
  • each declaration has the following format: (w, e, c, InOut, type). Where w is the word name, e is its definition, c is the execution condition of the definition, InOut specifies whether the word is input or output, or both, or neither input nor output (value i is the input word Where the value o is the output word, io is used for both input and output, empty fields are used for neither input nor output), and type indicates the attribute (type) of the value (eg, type B is assigned as a symbol indicating a button).
  • F (S) takes a set of input values as a variable S, and sets a set of receiving actions that perform that input. This is a force function.
  • Table 9 shows the c [0094] logical elements (Signification Vectors), which are the union of the receiving operation that receives the value of X on [Equation 25] and the receiving operation F (A) of the input A.
  • Table 10 shows the action elements.
  • I 2 (x) I 2 > of the input word Darup whose elements are ⁇ x ⁇
  • S is a memory that holds the values described in 2.2.
  • the three palettes W 1, W 2 and W 3 on any screen s are formulated as shown below.
  • Equation 27 indicates any type (complement of B) except B (indicating a button), and * indicates that it can be anything.
  • the basic structure SF (s) of the screen s is formalized as in the following equation.
  • control function associated with screen s is formalized as the following equation.
  • SF is formalized so as to include one process per screen and one input / output and calculation process related to the screen corresponding to one SF force. Therefore, there is one SF control function ⁇ on the screen.
  • SF control function ⁇ on the screen.
  • ⁇ - ⁇ , .3 ⁇ 4) (..., .3 ⁇ 4)
  • L (s,..., S) is the set of all input channels and outputs to and from the environment.
  • the Lyee program will be used to calculate words using the Lyee algorithm.
  • This screen s consists of three declarations.
  • the behavior of the user can be grasped by the following process ⁇ .
  • ⁇ Synchronization The value of b 1 4 is transmitted from the L 4 (b), stores the value in the memory of the> ( "(7) 15 ( 14) I 0 4 ⁇ b) ⁇ Rs (B 0, dick, s 0 ))-.
  • control function ⁇ (s) When the command to start the program is sent, the control function ⁇ (s) is started, the control function ⁇ (3) starts the control function ⁇ (S), and the control function (S) is initialized.
  • the program starts by launching the screen ⁇ and SF (s).
  • the value 7 of a transmitted by L (a) is stored in the memory, that is, S (a). (The initial value is stored in S4 (a).
  • ⁇ (3) which receives the true value 1, terminates ⁇ (3) before ending itself, and ⁇ (3) terminates SF (S) before ending itself.
  • Lyee calculus This paper first defined a formal process algebra called the Lyee calculus, which easily and essentially supports the basic concepts of the Lyee methodology. In fact, this computation can be viewed as a better abstraction machine to support the Lyee methodology concept than von Neumann's. This machine views the program as a collection of molecules that interact together to produce the final result. Second, we showed how this calculation can formalize and simplify both the entire software generation process and the Lyee vector. In fact, the routing vector is no longer needed. Also, the pallet function becomes unnecessary, and the role of the control function is greatly simplified. The entire process of automatic generation of Lyee software generation was formalized. With this formal ridge, the semantics of this methodology can be formalized so that the concepts behind this methodology can be clearly understood.
  • FIG. 14 shows a screen of the program. Screen S is displayed when this program is started. On screen S, the user enters word a and the value of word b appears.
  • Table 18 shows the two cases.
  • W (s), W (s), W (s) and W (s), W (s) are:
  • the control function ⁇ (s, s) is issued by the end user by sending a command to start the program.
  • control function ⁇ (s, s) When activated, the control function ⁇ (s, s) activates the control function ⁇ (s), and the control function (s) activates the initial screen s and SF (s), thereby starting the program.
  • Synchronization occurs between P (s, s) and ⁇ (transmission and reception of program start command), and P (s, s) and ⁇
  • V 1 (s 1 , s 2 ) ((8 1 ) I [ 2 ? 1] . ⁇ (.) ⁇
  • Synchronization occurs with PP ((Ss, 5 S) (send and receive the value of word a), and parallel processing with P (s s)
  • the first step is as follows. Synchronization occurs in P (s, s) (between I (a) and L (a)
  • the value of a is stored in the memory S (a) of W (the initial value is stored in S (a)).
  • V 4 (s 1: s 2 ) ((((5 (7) IS (b) IL 4 (b, 2 * a) I 0 4 (6)
  • V 7 (s 1 , s 2 ) (((3 ⁇ 4 (7) I ck))
  • V ⁇ s 2 (((3 ⁇ 4 ⁇ 7) I (14) IR 3 (B 2 , s 2 , click)) [> 1] . ⁇ ()
  • R3 receives the Click value of button B, and R3 (B, click, s)
  • Synchronization occurs (transmitting and receiving between memory S of (a) and (e, b> 0)), and P (s, s) and ⁇
  • Vn ( ⁇ s 2 ) (((3 ⁇ 4 "(7) I (14)) O [i s ] si) I
  • V u (ss 2 ) ((((S (7) I (14)) O '? 1] . ⁇ () j (5
  • the present invention is not limited to the above embodiments and examples, and various modifications can be made within the scope of the technical idea of the present invention.
  • the business can be implemented as a dedicated machine such as a method, a software development device, a software development support device, a software development management device, or software for implementing these functions on a computer and a recording medium loaded with the software. It is possible to do.
  • the present invention can be implemented as a method, as software having powerful functions, as an apparatus' tool (including software itself) on which the software is installed, and also as a system. However, it can be realized.
  • FIG. 16 shows, as another embodiment of the present invention, a program (software) for producing “software to be developed”, a program generating device, a program processing device, a tool (as a device or FIG. 2 is a functional block diagram showing a configuration provided as a function when implementing the present invention as one of a software development device, a software development support device, and a software development management device.
  • a program (software), a program generation device, a program processing device, a tool (including both as a device or software), a software development device, a software development support device, or
  • the software development management device includes an overall control unit 1601, a declaration information insertion unit 1602, a control function ⁇ arrangement unit 1603, a control function ⁇ arrangement unit 1604, and an information storage unit 1605.
  • the overall control unit 1601 includes a program (software), a program generation device, a program processing device, a tool (including both as a device or software), a software development device, a software development support device, or a software development management device.
  • the whole movement of It has a function to perform operation control, timing control, input / output control, etc., and a dedicated chip or circuit with the function, or software for causing a computer to perform the function (including software as a tool)
  • the present invention is realized as a recording medium on which the software is recorded, a processing device, a management device, and a tool equipped with the recording medium.
  • the declaration information insertion unit 1602 includes a logical element (L2, L3, L4) and an operation element (12, 04, S4) modularized as a process cell having an input / output channel by the Lyee calculation method.
  • the user requirements to be implemented as a single program in the undefined part of the template include, for each logic, word names, definition formulas, execution conditions of the definition formulas, input / output attributes, and words for each word on the logic. It has a function to insert information that has been digitized as a value attribute powerful declaration, and a dedicated chip or circuit having the function, or software (a tool as a tool) for performing the function. (Including software), or a recording medium on which the software is recorded, and a processing device / management device / tool equipped with the recording medium.
  • the control function ⁇ arrangement unit 1603 controls the logical element and the action element in a unit of a set having a set condition that an interaction is caused by a command having the same screen force, so that one control function module ⁇ controls the control element.
  • a dedicated chip, dedicated circuit, or software that causes a computer to perform the function, or a record of the software. It is realized as a recording medium, a processing device equipped with the recording medium, a management device, and a tool.
  • the control function ⁇ ⁇ arranging unit 1604 has a function of relating one control function module ⁇ to the control function ⁇ so as to control the control function ⁇ , and a dedicated chip having the function, Dedicated circuit or software (including software as a tool) for causing a computer to perform the function, or a recording medium on which the software is recorded, a processing device equipped with the recording medium, a management device, implemented as a tool Is done.
  • the information storage unit 1605 stores, in addition to the program information, various types of control information, the logic elements (L2, L3, L4) modularized as process cells, and the models of the action elements (12, 04, S4).
  • the model of the control function module ⁇ , the model of the control function module ⁇ , and a target program it is also used as a memory for temporary storage.
  • FIG. 17 shows a program (software) having the above configuration, a program generation device, a program processing device, a tool (including both as a device or software), a software development device, a software development support device, or 5 is a flowchart showing an operation of the present invention implemented as any of the software development management devices.
  • the declaration information insertion unit 1602 includes a logic element (L2, L3, L4) modularized as a process' cell having an input / output channel by the Lyee calculation method, and In the undefined part of the template of the action element (12, 04, S4), user requirements to be implemented as one program are specified for each logical entity, for each word on the logical entity, for the word name, definition formula, and definition. Insert the information that has been computerized as a powerful declaration of the execution condition, input / output attribute, and word value. (Step 1701).
  • control function ⁇ arranging unit 1603 sets one control function module ⁇ force control in units of a set in which the logical element and the action element are set to have an interaction by a command from the same screen. Associating. (Step 1702).
  • control function ⁇ ⁇ placement unit 1604 associates one control function module ⁇ with the control function ⁇ so as to control the control function ⁇ . (Step 1703).
  • the requirement definition is captured based on the unique system of the present invention, and is modularized as a process cell having the unique structure of the present invention, and the logic is defined.
  • the desired software can be obtained without personality by substituting the elements (L2, L3, L4) and the undefined part of the model of the action element (12, 04, S4).
  • a program (software), a program generation device, a program processing device, and a tool (including both as a device or software) for producing "software to be developed” as different embodiments of the present invention.
  • Software development equipment, software development support equipment, and software development management equipment are composed of logical elements (L 1, L 2, L 3) and operation elements (L 1, L 2, L 3) I,
  • may be configured to include a control function ⁇ arrangement means for associating ⁇ with the control function ⁇ so as to control the control function ⁇ .
  • the present invention further provides software produced by the above-described "method of producing software to be developed", and a recording medium on which the software is installed or a device on which the software is installed (e.g.,
  • the user requirements to be implemented as one program are defined for each logical entity, for each word on the logical entity, a word name, a definition formula, and execution of the definition formula.
  • the information that has been computerized as a declaration that is a condition, input / output attribute, and attribute of the value of a word is transformed into a logic element (L
  • the module group inserted in the undefined part of the model of model 4 and the module group are grouped on the condition that the interaction is performed by a command with the same screen force, and one control function module ⁇
  • the present invention provides software as a model of software code used for producing software by the above-described "method of producing software to be developed", and a recording medium on which the software is mounted. Or a device with the software installed
  • the user requirements to be implemented as a single program include, for each logical body, a word name, a definition formula, and a word for each word on the logical body.
  • Modular logical element (L) Modular logical element
  • the control function ⁇ is controlled by one control function module ⁇ It may be realized as a model that can be coded as software having a control function module ⁇ having a function for performing the function.
  • the present invention provides a method for extracting information (document (paper, data)) extracted from requirements according to the above-described "method for producing software to be developed", and also includes a method for extracting information (document (paper, data)).
  • a method for extracting information (document (paper, data))
  • Software and a recording medium on which the software is installed can be realized as a device (hardware).
  • the present invention provides a process having input / output channels based on the Lyee calculation method. 'A template of logic elements (L, L, L) and action elements (I, O, S) modularized as cells
  • the present invention allows various modifications, additions, substitutions, enlargements, reductions, and the like within the scope of the same and equivalent technical ideas. Further, even if an apparatus, method, software, or system produced by using the present invention is registered as a secondary product and commercialized, the value of the present invention is not reduced at all. .
  • FIG. 1 is a conceptual diagram for explaining the concept of a cell according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating an example of an interacting process according to an embodiment of the present invention.
  • FIG. 3 is a conceptual diagram for explaining a concept of executing a requirement according to an embodiment of the present invention.
  • FIG. 4 is a conceptual diagram for explaining the concept of a Lyee palette according to one embodiment of the present invention.
  • FIG. 5 is a conceptual diagram for explaining a concept of a basic structure according to one embodiment of the present invention.
  • FIG. 6 is a conceptual diagram for explaining the concept of a predicate vector according to one embodiment of the present invention.
  • FIG. 7 is a conceptual diagram for explaining the concept of L4_a and L4_b predicate vectors according to an embodiment of the present invention.
  • FIG. 8 is a conceptual diagram for explaining the concept of L3_a and L3_b predicate vectors according to an embodiment of the present invention.
  • FIG. 9 is a conceptual diagram for explaining the concept of screen interaction according to one embodiment of the present invention.
  • FIG. 10 is a conceptual diagram for explaining a processing path diagram according to one embodiment of the present invention.
  • FIG. 11 is a conceptual diagram showing a case where there is one screen according to an embodiment of the present invention (Example 1)
  • FIG. 12 is an explanatory diagram showing a process of a program P (S) and a process of an end user by a Lyee calculation method according to an embodiment of the present invention.
  • FIG. 13 is a conceptual diagram for explaining an interaction between processes according to an embodiment of the present invention.
  • FIG. 14 is a conceptual diagram showing a case where there are two screens according to an embodiment of the present invention (Example 2
  • FIG. 15 The process and program of a program P (S) by the Lyee calculation method according to an embodiment of the present invention.
  • FIG. 6 is an explanatory diagram for illustrating a process of a user.
  • FIG. 16 As another embodiment of the present invention, a program (software) for producing “software to be developed”, a program generating device, a program processing device, and a tool (including both as a device or as software) , Software development equipment, software development FIG. 2 is a functional block diagram showing a configuration provided as a function when the present invention is implemented as either a development support device or a software development management device.
  • FIG. 17 A program (software) having the above configuration according to an embodiment of the present invention, a program generation device, a program processing device, a tool (including both as a device or software), a software development device, and software development 5 is a flowchart showing the operation of the present invention implemented as either a support device or a software development management device.

Abstract

 プロセス代数を用いて、ソフトウェアの自動生成プロセス及びLyeeにより生成したソフトウェアの意味論を形式化する。  本発明は、1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとに、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性によって宣言(規定)する第1のステップと、単語単位の宣言から、Lyee計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素(L2、L3、L4)および、作用要素(I2、O4、S4)を作成する第2のステップと、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合に集合化する第3のステップと、前記集合ごとに、1つの制御関数モジュールΦを配置する第4のステップと、前記プログラムに1つの制御関数モジュールΨを配置する第5のステップとを具備する。

Description

明 細 書
ソフトウェア生成方法
技術分野
[0001] 本発明は、ソフトウェア生成方法に係り、特に、 Lyee方法論におけるプロセス代数 による形式ィ匕を用いたソフトウェア生成方法に関する。
背景技術
[0002] ここ数年の間に、ソフトウェアの開発ライフサイクルに関連する 1つまたは多くの局面 を改善するために種々の方法論および技術が考案され提案されてきた。しかし、この 研究分野における熱心な努力にもかかわらず、明快に理解でき、修正可能なシステ ムの製造は、いまだに野心的目標であり達成するにはほど遠い。その理由の 1つは、 ソフトウェア自身が複雑なものであり、捕らえにくいものである力 であり、もう 1つの理 由は、現在の方法論に限界があるからである。最近、 Lyee (商標)と呼ばれる新しぐ 非常に有望な方法論が提案された。異なる分野に関連する広い範囲のソフトウェア の問題を効率的に処理することを目的とした Lyeeにより、その要件を定義するだけで ソフトウェアを開発することができるようになった。
[0003] しかし、 Lyeeにより生成されたソフトウェアの意味論も、要件力ものソフトウェア自動 生成プロセスも、形式的でない言語で説明されるので、この方法論を理解し研究しよ うとすると、難しぐ混乱が生じる恐れがある。
非特許文献 1:ジエイ ·エイ ·ベルグストゥラ、ジエイ ·ダブリュ'クロップ(J.A. Bergstra and J. W. Klop)著、「抽象化を用いたコミュニケーション 'プロセスの代数」、 1985年 ,理論コンピュータ科学、 37 (1)、 p. 77-121
非特許文献 2 :ジ一'ベリー、ジ一'バウドル(G. Berry and G. Boudol)著、「化学抽象 機械」、 1992年,理論コンピュータ科学、 96 (1)、 p. 217-248
非特許文献 3:シ一'ェ一'アール ·ホーア(C.A.R.Hoare)著、「コミュニケ一ティング順 次プロセス」、プレンティス 'ホールコンピュータ科学国際シリーズ、プレンティス 'ホー ル出版、 1985年
非特許文献 4 :ェム 'メジリ、ビ一'クタリ、ェム 'ァーヒォウイ(M.Mejri, B.Ktari, and M.Erhioui)著、「Lyee指向ソフトウェアについての静的分析」、パリにおける Lyee方法 論に関する第 1回国際ワークショップ予稿集、ノ、ミド '藤田、ポウル'ジョナネッセン編「 ソフトウェア方法論、ツール及び技術における新潮流」 p. 375—394、アイォーエス 出版、 2002年
非特許文献 5 :アール'ミルナー(R.Milner)著、「コミュニケーション 'システムの計算法 」、コンピュータ科学 92講義録、ベルリン、 1980年、スプリンガー'フエアラーク出版 非特許文献 6 :根来文生著、「Lyeeソフトウェアの原理」、 21世紀の情報科学につい ての国際会議 2000 (IS2000)、 p. 121-189, 2000年 11月
非特許文献 7 :根来文生著、「Lyee入門」、ソフトウェア生産技術研究所、東京、 日本 、 2001年
非特許文献 8 :根来文生、アイ'ハミド (I.Hamid)著、「意思工学の提案」、データべ一 スと情報システムに関する第 5回東ヨーロッパ会議研究(ADBIS' 2001)、 2000年 9月
非特許文献 9 :根来文生、アイ'ハミド (I.Hamid)著、「意思工学の提案」、インターネッ ト上の電子商取引、科学及び教育の基盤における進歩に関する国際会議(SSGR R2001)、 2001年
発明の開示
発明が解決しょうとする課題
[0004] 本発明の主な目的は、第 1に、プロセス代数を用いて、 Lyeeにより生成したソフトゥ エアの意味論とソフトウェアの自動生成プロセスを形式ィ匕することである。実際、プロ セス代数は、本質的に Lyee方法論の多くの概念を裏付けるので、従って Lyee方法 論を簡潔かつ巧みに形式化する。そして、第 2の目的は、プロセス代数は、フォン'ノ ィマンのものより、より適した抽象機械を Lyee方法論に提供することである。実際、こ の新しい抽象機械は、プログラムをィ匕学溶液と見なし、そこでは、分子 (Lyee方法論 の異なるベクトル)が共通の目的を達成するために相互に作用しあっている。
課題を解決するための手段
[0005] 力かる課題を解決するために本発明は、 1つのプログラムとして実装するユーザ要 件を、論理体ごとに、該論理体上の単語ごとに、単語名、定義式、該定義式の実行 条件、入出力属性、単語の値の属性によって宣言 (規定)する第 1のステップと、単語 単位の宣言から、 Lyee計算法による入出力チャネルをそなえたプロセス 'セルとして モジュール化された論理要素 (L、 L、 L )および、作用要素 (I、 O、 S )を作成す
2 3 4 2 4 4 る第 2のステップと、前記論理要素と作用要素を、同一画面からのコマンドで相互作 用を起こすことを集合条件とする集合に集合ィヒする第 3のステップと、前記集合ごと に、 1つの制御関数モジュール Φを配置する第 4のステップと、前記プログラムに 1つ の制御関数モジュール Ψを配置する第 5のステップとを具備する。
[0006] 本発明の異なる実施体としての「開発対象のソフトウェア」を生産するためのプログ ラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール (装置として或 いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援 装置、ソフトウェア開発管理装置は、 Lyee計算法による入出力チャネルをそなえたプ ロセス ·セルとしてモジュールィ匕された論理要素(L、 L、 L )および、作用要素(I、
2 3 4 2
O、 S )のひな型の未定義部分に、 1つのプログラムとして実装するユーザ要件を、
4 4
論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、 入出力属性、単語の値の属性力もなる宣言として情報化した情報を挿入する、宣言 情報挿入手段と、前記論理要素と作用要素を、同一画面からのコマンドで相互作用 を起こすことを集合条件とする集合単位に、 1つの制御関数モジュール Φを、前記単 位を制御するように関連づける、制御関数 Φ配置手段と、 1つの制御関数モジュール
Ψを、前記制御関数 Φを制御するように前記制御関数 Φに関連づける、制御関数 Ψ 配置手段とを具備するよう〖こ構成することもできる。
[0007] 本発明はさらに、上述の「開発対象のソフトウェアを生産する方法」によって生産さ れたソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトゥェ ァが搭載された装置 (ノ、一ドウエア)としても実現される力 この場合の本発明は、 1つ のプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの
、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性力 なる宣 言として情報化した情報を、 Lyee計算法による入出力チャネルをそなえたプロセス' セルとしてモジュールィ匕された論理要素 (L、 L、 L )および、作用要素 (I、 O、 S )
2 3 4 2 4 4 のひな型の未定義部分に挿入したモジュール群と、前記モジュール群を、同一画面 力ものコマンドで相互作用を起こすことを集合条件とする集合単位に、 1つの制御関 数モジュール Φで制御するように関連づけている 1つまたは複数の制御関数モジュ ール Φと、前記制御関数 Φを、 1つの制御関数モジュール Ψで制御するように関連 づけている制御関数モジュール Ψで構成されることもできる。
[0008] またさらに本発明は、上述の「開発対象のソフトウェアを生産する方法」によってソフ トウエアを生産するために用いられるソフトウェアコードの雛型としてのソフトウェア、及 び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置
(ノヽ一ドウエア)としても実現される力 この場合の本発明は、 1つのプログラムとして実 装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該 定義式の実行条件、入出力属性、単語の値の属性力 なる宣言として情報化した情 報を、埋め込むべき未定義部分を有した、 Lyee計算法による入出力チャネルをそな えたプロセス 'セルとしてモジュールィ匕された論理要素(L
2、 L
3、 L )および、作用要 4
素 (I、 O、 S )のひな型と、前記宣言の情報を未定義部分に挿入した前記論理要素
2 4 4
と作用要素を、同一画面力 のコマンドで相互作用を起こすこと^^合条件とする集 合単位に、 1つの制御関数モジュール Φで制御するための機能を有した制御関数モ ジュール Φのひな型と、前記制御関数 Φを 1つの制御関数モジュール Ψで制御する ための機能を有した制御関数モジュール Ψのひな型とを備えるソフトウェアとしてコー ド化可能なひな型として実現してもよ 、。
[0009] さらに、本発明は、上述の「開発対象のソフトウェアを生産する方法」による、要件か ら抽出した情報 (ドキュメント (紙、データ))の抽出方法として、またかかる抽出方法に よって抽出された情報 (ドキュメント (紙、データ))として、さらには当該抽出された情 報の使用方法として、或いは、これらの情報が搭載された情報記録媒体として、また は情報の抽出方法 Z使用方法がコード化されたソフトウェア、当該ソフトウェアが搭 載された記録媒体 Z装置 (ハードウ ア)として、いずれも実現することができるが、こ の場合の本発明は、 Lyee計算法による入出力チャネルをそなえたプロセス 'セルとし てモジュール化された論理要素 (L、 L、 L )および、作用要素 (I、 O、 S )のひな
2 3 4 2 4 4 型の未定義部分に挿入すべき、 1つのプログラムとして実装するユーザ要件を、論理 体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出 力属性、単語の値の属性からなる宣言として情報化した情報と、前記宣言の情報を 未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互 作用を起こすことを集合条件とする集合単位に、 1つの制御関数モジュール Φで制 御するように関連づけるための情報と、前記制御関数 Φを 1つの制御関数モジユー ル Ψで制御するように関連づける情報とを備えるソフトウェア開発要件力 抽出した 情報として実現してもよい。
[0010] なお、論理体については、同一出願人による特願 2004— 272400を参照し、これを 引用し、開示の一部とする。
発明の効果
[0011] 異なる分野に関連する広範囲のソフトゥ アの問題を効率的に処理し、従来の方法 論と比較した場合には、 Lyeeを使用すると開発時間、保守時間およびドキュメント量 はかなり少なくなる(70— 80%程度)。
発明を実施するための最良の形態
[0012] Lyee方法論:プロセス代数による形式ィ匕
概要:ここ数年の間に、ソフトウェアの開発ライフサイクルに関連する 1つまたは多くの 局面を改善するために種々の方法論および技術が考案され提案されてきた。しかし 、この研究分野における熱心な努力にもかかわらず、明快に理解でき、修正可能な システムの製造は、いまだに野心的目標であり達成するにはほど遠い。その理由の 1 つは、ソフトウェア自身が複雑なものであり、捕らえにくいものであるからであり、もう 1 つの理由は、現在の方法論に限界があるからである。最近、 Lyeeと呼ばれる新しぐ 非常に有望な方法論が提案された。異なる分野に関連する広い範囲のソフトウェア の問題を効率的に処理することを目的とした Lyeeにより、その要件を定義するだけで ソフトウェアを開発することができるようになった。
[0013] しかし、 Lyeeにより生成されたソフトウェアの意味論も、要件力ものソフトウェア自動 生成プロセスも、形式的でない言語で説明されるので、この方法論を理解し研究しよ うとすると、難しぐ混乱が生じる恐れがある。
[0014] 本発明の主な目的は、第 1に、プロセス代数を用いて、 Lyeeにより生成したソフトゥ エアの意味論とソフトウェアの自動生成プロセスを形式ィ匕することである。実際、プロ セス代数は、本質的に Lyee方法論の多くの概念を裏付けるので、従って Lyee方法 論を簡潔かつ巧みに形式化する。そして、第 2の目的は、プロセス代数は、フォン'ノ ィマンのものより、より適した抽象機械を Lyee方法論に提供することである。実際、こ の新しい抽象機械は、プログラムをィ匕学溶液と見なし、そこでは、分子 (Lyee方法論 の異なるベクトル)が共通の目的を達成するために相互に作用しあっている。
1.始めに
高 、品質を持つソフトウエアを容易に迅速に製造することは、ソフトウエア開発研究 分野の基本的な関心事である。ここ数年にわたって、ソフトウェアの開発ライフサイク ルに関連する 1つまたは多くの局面を改善するために、種々の方法論および技術が 考案され提案されてきた。しかし、この研究分野における熱心な努力にもかかわらず 、明快に理解でき、修正可能なシステムの製造は、いまだに野心的目標であり達成 するにはほど遠い。その理由の 1つは、ソフトウェア自身が複雑なものであり、捕らえ にくいものである力もであり、もう 1つの理由は、現在の方法論に限界がある力もであ る。実際、提案されたほとんどすべての方法論は、明快に理解でき、修正可能なシス テムの製造に失敗しており、その使用は、いまだに非常に広範囲の能力、技術およ び知識を持つ専門家だけが可能なことだと見なされている。そのため、人件費や維 持費が高いものになり、ソフトウェアに対して広範なチェックが必要になる。これらの理 由で、企業は、ソフトウエア開発サイクルにおける実証可能な改善を約束するすべて の新 ヽ方法論を歓迎する傾向にある。
最近、 Lyee (「リ ~~」と ? _?。「governementaL methodologY for softwarE proVidenCE」の尾文字語)(非特許文献 6、 7、 8、 9参照)と呼ばれる新しぐ非常に 有望な方法論が提案された。異なる分野に関連する広範囲のソフトウェアの問題を 効率的に処理することを目的とした Lyeeにより、その要件を定義するだけでソフトゥェ ァを開発することができる。もっと正確に言えば、開発者は、単語、計算式、計算条件 (前提条件)および画面と帳票のレイアウトを与えさえすれば、後は、コンピュータが、 以降のすべての面倒なプログラミング 'プロセス (例えば、制御ロジックに関する局面 など)をすベて行ってくれる。その新しさにもかかわらず、 Lyeeの使用結果は、 Lyee には非常に多くの潜在的可能性があることを示している。実際、従来の方法論と比較 した場合には、 Lyeeを使用すると開発時間、保守時間およびドキュメント量はかなり 少なくなる(70— 80%程度)(非特許文献 7参照)。非特許文献 4において、この方法 論の多くの、特に Lyee要件の、局面を改善するために、我々は、いくつかの古典的 静的分析技術を提案した。
しかし、 Lyeeにより生成したソフトウェアの意味論も、要件力ものソフトウェア自動生 成プロセスも、形式的でない言語で説明されているので、この方法論を理解し研究し ようとすると、難しぐ混乱が生じる恐れがある。さらに、この方法論の背後にあるアイ デァは、このようなアイデアをサポートするのに適当でない、逐次処理言語( sequential language)によって記述されている。実際、 Lyeeにより生成したソフトウェア は、基本的には、小さなコンポーネント(Lyee用語でベクトル (vector)と呼ばれる)群 からできている。ここでは、各コンポーネントはそれぞれのアトミック 'ゴール(atomic goal:要素の目的)を持って相互作用によって互いに協力し合 、、要求される結果 (グ ローバル ·ゴール (global goal:全体の目的))を生成する。一方、平行性 ( concurrency:複数の計算主体が互いに情報のやりとりを行いながら動作すること)お よび通信(communication)をサポートするプロセス代数は、共同作用しあう( concurrent)コンポーネントを記述するのに本質的に適した言語であることはよく知ら れている。それ故、プロセス代数は、 Lyee方法論の概念をサポートするための、形式 的で価値ある基礎を提供する。 Lyee方法論にプロセス代数を使用することによる数 ある利点のなかには、 Lyeeの現実のバージョンにおける多くのコンポーネント(ベタト ル全体またはベクトルの一部)は、もはや必要でなくなる、ということがある。これらのコ ンポーネントは、逐次処理言語によって記述されているがために、ある処理のまとまり の実行順序を制御するためにどうしても必要であった力 これらの役割は、プロセス の平行処理と通信をサポートするプロセス代数により、必然的にサポートされるからで ある。実際、経路作用要素 (routing vector)は、もはや必要ではなくなる。より小さぐ 処理時間がより短ぐ必要メモリがより少ないプログラムを生成する、シンプルな Lyee の形式的記述を手にすることができる。その上、この形式的記述は、この方法論のい ろいろな局面の多くの興味ある分析に不可欠なスタート点になる。例えば、 Lyeeで 生成したソフトウェア、またはソフトウェア生成プロセスを最適化するために、最適化さ れたプログラムが元のバージョンと同じものであるという形式的証拠を必要とする。プ ロセス代数を使用すれば、形式的に同じものであることのチェック、またはもっと一般 的にモデル ·チェックをうまく行うことができる。
[0017] 本稿においては、最初に、 Lyee方法論の基本的なコンセプトを容易かつ本質的( naturally)にサポートする、 Lyee計算法(Lyee- Calculus)と呼ぶ开式的プロセス代数 (formal process algebra)を定義する。実際に、この計算法は、フォン ·ノイマン型(逐 次処理型)の計算機より、 Lyee方法論の概念をサポートするのにより適した抽象機械 (abstract machine :計算機の概念を抽象化したもの)と見なすことができる。この機械 は、プログラムを、最終結果を生成するために共に相互作用を行う分子の集合と見な す。第二に、この計算法が、どのようにして、 Lyeeコンポーネント(Lyeeではベクトルと 呼ぶ)と Lyee方法論の全ソフトウェア生成プロセスの両方を形式ィ匕し、簡単にするこ とができるのかを示す。実際に、 Lyeeソフトウェア生成の自動生成全プロセスを形式 化した。
[0018] 本稿の残りの部分は、下記のような構成になっている。セクション 2において、 Lyee 計算法の構文論 (syntax)および意味論 (semantics)を定義する。セクション 3にお ヽ ては、 Lyee方法論の技術的紹介を行い、 Lyee計算法によるその形式ィ匕の全体像を 紹介する。セクション 4においては、 Lyee計算法による Lyee方法論の詳細かつ完全 な形式化を提案する。セクション 5においては、生成したプログラムの、実行段階毎の 記述と一緒に、どのようにして簡単な要件力 プログラムが自動的に生成されるのか 、の両方を具体的に示す 1つのケーススタディについて説明する。最後に、セクション 6においては、この研究の結論を述べ、将来の研究のいくつかについて説明する。
2. Lyee計算法
プロセス代数は、複雑なコンピュータ 'システム、特に、通信し、平行に実行するコン ポーネントを含むコンピュータ ·システムのための形式的記述技術である(非特許文 献 1、 3、 5参照)。プロセス代数は、通常、文献で計算法 (calculus)と呼ばれる。何故 なら、プロセス代数は、プロセス代数の分野を超えて、種々の数学的および論理的概 念(平行性理餘 (concurrency theory),動作意味餘 (operational semantics)、複雑性 理論(complexity theory)、ロジック等)を含んで ヽるカもである。
[0019] このセクションにおいては、 Lyee方法論を形式ィ匕するために特に定義した Lyee計 算法と呼ぶ新 U、計算法の構文法および意味論につ!、て説明する。
2. 1 構文法 (Syntax)
Lyee計算法プログラムは、指定されたチャネル上でノヽンドシェイク技術( hand-shake technique : 2つのプロセスの一方を受信可能状態に、他方を送信可能状 態におくことによって通信させる技術)により通信 (communicate)する独立した並行プ ロセスからなるシステムである。チャネルは、その上では特定のプロセスだけが通信 することができるように制限できる。あるプロセスは、作用 [?! e]を行うことにより、チヤ ネル?を通して値?を送ることができる(?は、式 eの計算結果(valuation))。同様に、あ るプロセスは、作用 [?? e]を行うことにより、チャネル?から式 eにの値?を受信すること ができる (?は、式 eの計算に使用する値)。
[0020] あるプロセスは、また、不作用作用(silent action) τを行うこともできる。この特別な 作用は、プロセス間の同期(synchronization :プロセス間通信において、あるプロセス が値などを送信したと同時に、他のプロセスがそれを受信すること)のような、システム 内部のふるまい(internal behavior)を表わすことを意図している。また、プロセスの進 展における予見不能性 (indeterminism)、すなわち、複数のプロセスの選択肢があつ てどのプロセスが実行させれるか予測できな 、ような場合 (後述のプロセス構文法定 義 1の「選択」の説明を参照)、を捉えるために有益である。
[0021] プロセスの構文法 (syntax)を以下に定義する。
<定義 <構文法 1 >
[0022] [数 1]
p, Q : [Ι .Ρ \ (P \ 0 \ P + Q \ P> Q \ P/L I A{1) ^ P nil
<定義 <構文法 2 >
K, K , K ::= { κ } I K U K <定義 <構文法 3 >
[0023] [数 2]
L, Ll5 L2 :: = 0 I {ι} I L, U L2 I
<定義 <構文法 4>
κ ::=??!e I?? e I τ |
上記の定義構文法に使われる記号の意味と、その直感的構文法の意味は下記の とおりである。
<定義 <構文法 1 >
[0024] [表 1]
Figure imgf000012_0001
定義構文法 1の直感的意味は次のとおりである。すなわち、プロセス Pと Qがあった とき、その関係や内容は、以下のいずれかとして定義される。すなわち、シーケンス( M.P)、並行構成 (P I Q)、選択 (P + Q)、条件付き選択 (P〉
Q)、制限 (P/ L)、定義、無プロセス (nil)、のいずれかである。ここで、「定義」とは、
[0025] [数 3]
-f のことで、記号の左辺は、右辺によって定義される。
[0026] 各構文の解釈については後述する。
<定義 <構文法 2>
[0027] [表 2] 記号 意味
κ, κ1; κ2 作用の集合 (Set of actions)
作用 (Action)
]っの作用 (Single action) を要素とする集仓
Kt υ κ2 作用の集合の結合集合 (Set union) 定義構文法 2の直感的意味は次のとおりである。すなわち、作用の集合 K、 Κ、 Κ
1 2 があるとき、その作用の集合は、 1つの作用を要素とする集合 ({ })、作用集合が結 合した集合 (K U K ) ,のいずれかである。
1 2
<定義 <構文法 3 >
[0028] [表 3]
Figure imgf000013_0001
定義構文法 3の直感的意味は、次のとおりである。すなわち、チャネルの集合 L, L
1
Lがあるとき、そのチャネルの集合は、要素を持たない空集合 (0)、 1つのチャネル だけを要素とする集合 ({?})、チャネルの集合が結合した集合 (L U L )、のいずれか
1 2
である。
<定義 <構文法 4>
[0029] [表 4]
Figure imgf000013_0002
定義構文法 4の直感的意味は、次のとおりである。すなわち、作用 κがあるとき、そ の作用は、チャネル?上で式 eの計算結果の値を送信する送信作用(? !e)、チャネル? 上で式 eの値を受信する受信作用(?? e)、不作用作用( τ )、のいずれかである。 [0030] 定義構文法 1に定義した、構文法の意味を詳しく説明する。
1) [K].P:シーケンス(Sequence)
プロセス [K].Pは、作用の集合である Κに属す全ての作用(action)、すなわち { κ , . . . , κ }、を実行した後に Ρとしてふるまうプロセスである。 Κに属する作用を実行す る順序は重要ではない。ここでは、説明を簡単にするために、 [ , . . . , κ }]と 書く代わりに [ κ , . . . , κ ]と書く。
2) P I Q:並行構成 (Parallel composition)
プロセス P I Qは、並行に実行されるプロセス Pおよび Qとしてふるまう。各プロセスは 、両方が知っているチャネル上で互いに相互作用することができるし、または各プロ セスが他方力 独立して外部世界 (システムの環境またはエンドユーザ)と相互作用( interact)することもできる。同じチャネル上で 2つのプロセスが同期する(synchronize : プロセス間通信において、あるプロセスが値などを送信したと同時に、他のプロセス がそれを受信する)と、プロセス全体は、作用て (不作用作用)を実行し、その後、残り のプロセスとしてふるまう。具体的に、下記のプロセスの例で考えてみる。
[0031] P = P1 I P2
PIおよび P2を下記のように定義する。
[0032] 画
PI =f [ύΑ] .Ρ\!
Figure imgf000014_0001
上記式の直感的意味は、
P1は、値 4をチャネル?上に送信し、その後は、プロセス Ρ としてふるまうプロセスで ある。 Ρ2は、チャネル?上に式 Xの値が与えられるのを待って、値が与えられたら受 信し、その後は、プロセス Ρ2,としてふるまうプロセスである。
従って、プロセス Ρは、プロセス P1と Ρ2が同期したとき(それは実際には P1からの値 4の送信と同時に Ρ2による受信が行われることによる)、不作用作用 τを実行し、そ の後は、残りのプロセス PI ' I P2'としてふるまう。意味論上、この遷移を下記のよう に表わす。
[0033] [数 5] P → Pl' l P2' この式の直感的意味は、プロセス Pにおける相互作用の結果、不作用作用てが実行 され、プロセス全体力 並行プロセス Ρ | P2,に移行する、ということである。
[0034] 関係
[0035] [数 6]
の形式的定義はこのセクションの後の方で示す。
3) P + Q :選択(Choice)
プロセス P + Qは、プロセス Pまたは Qとしてふるまうプロセスである。 Pおよび Qのどち らも力 始まりが不作用作用であるような場合を除いて、どちらのプロセスが実行され るかの選択は、環境によって決定論的に決まる。一方、両方のプロセスが不作用作 用で開始する場合には、選択は決定されない。
4) P>
Q :条件付き選択(Guarded choice):
プロセス P〉
Qは、プロセス Qが活性化(activated)されるまで、 Pとしてふるまうプロセスである。後 者 Qが活性ィ匕されたときはいつでも、 Pは停止し、メモリからクリアされる。
5) P/L:制限(Restriction)
プロセス P/Lは、チャネルの集合 Lに与えられたチャネルだけを使って環境と通信す ることができるプロセス P、としてふるまうプロセスである。
6)数 3の記号:定義(Definition)
たとえば、数 3の記号によって、下式のような定義ができる。
[0036] [数 7]
Figure imgf000015_0001
数 7の式において、 Aはプロセスの識別名、
[0037] [数 8]
X はプロセス Aの変数 (パラメータ)で、左辺のプロセスは、右辺のプロセス Pに等しいと 定義されている。プロセス Pは再起的に Aを含むことができる。
7) nil:無プロセス(nil process):
どんな作用も実行できな 、プロセス、 V 、かえると終了して!/、るプロセス(dead process)である。あるプロセスが終了すると、通常 nilプロセスになる。終了して nilプロ セスになったとき、そのプロセスはもはや起動して(activated)いないので、作用を実 行する条件が整ったとしても、何の作用も実行できな 、。
2. 2 例値を保持するプロセスのモデル化
このセクションにおいては、メモリという、値を保持するセル(cell)を、その通信チヤ ネルを通して、その環境と相互作用を行うプロセスとしてモデルィ匕する方法にっ 、て 説明する。図 1に示すように、メモリ'セルは通信のための 2つのポート(チャネル) in および outを持つものと見なす。このメモリ'セルの基本的なタスクは、チャネル in上で 値を無制限に待つことであり、チャネル out上でその値を利用可能にすることである。 メモリ'セルは、新しい値がチャネル inに入力されるまで、同じ値を必要な回数だけチ ャネル outに出力することができる。チャネル自体は値を保持しな!、。
[0038] メモリ ·セル Xが値?を保持して!/、るプロセス ·セル Cx (?)は、下記のように表わす。
[0039] [数 9]
Cx{v) = [inx7y} .Cx (y) + [outxlv] . Cx (v) この形式的記述の直感的意味は、値?を保持しているプロセス Cx(?)は、チャネル inx 上で式 yの値を受信したときは、プロセス Cx(y)としてふるま 、 (すなわち保持する値が ?から式 yの値に変更される)、保持している値?をチャネル outx上に送信したときには 、送信作用の後も値?を保持したままプロセス Cx(?)としてふるまうプロセスである。
[0040] 値を保持するメモリ'セルをプロセスとして捉えることにより、メモリ'セルにさらに知能 を付加することができる。例えば、初期化される (初期値を受信する)までその内容に アクセスさせな 、セルを書くことができる。情報処理能力のあるこのスマート'セル( smart cell)は、下記のように定義することができる。 [0041] [数 10]
Cell(x) = [inx7y] .Cx {y) プロセス Cell(x)は、チャネル m上で式 yの値を受信した後、式 yの値を保持するプロ セス Cx(y)としてふるまうプロセスである(式 yに値を受信し、式 yの値を保持するプロセ スで、送信は行わない)。
[0042] ここで、下記のように定義した 2つのプロセスについて考えてみる。
[0043] [数 11]
PI =f [inx 5] .nil
P2 d=f [ou†x?y) .ni!. プロセス PIは、チャネル m上に値 5を送信し、 nilになる(終了する)プロセスである( 値 5を送信するプロセス)。プロセス P2は、チャネル outx上で式 yの値を受信した後に nilになる(終了する)プロセスである (数式 yに値を受信するプロセス)
これらの 2つのプロセス力 セル x (Cx)を通して通信するようなプログラムを書くこと が容易にできる。
[0044] PI I Cell (x) | P2
このプログラムは、プロセス Pl、プロセス Cell(x)、プロセス P2が並行に実行されるプ ログラムである。
[0045] 図 2は、上記に含まれる全てのプロセス間の相互作用を示したものである。
[0046] このプログラムの実行における、個々のステップの詳細は以下のようになる。
[0047] [数 12]
Figure imgf000017_0001
上記の式の意味を直感的に表わせば、プロセス PI I Cell(x) I P2は、以下の第 1ス テツプと第二ステップを経て実行される。(等号記号で記載される右辺が 1つのステツ プである)下線は相互作用(同期)を起こす送受信作用を示している。
<第 1ステップ > (l)[inx!5].nil (チャネル mに値 5送信)、(2)[inx!5].Cx(y) (チャネル mで式 yに与える値を 受信し、受信後はセル Xに式 yの値を保持)、(3)[outx?y].nil (チャネル outxで式 yの値を 受信)、の 3つのプロセスが並行に行われた結果、
(1)がチャネル に値 5を送信完了し、同時に (2)がチャネル で値 5を受信する、とい うプロセス間の相互作用(同期)が起こって、
不作用作用てが実行され、
(4) Cx(5) (セル Xに値 5を保持)、と (3)[outx?y].nil (チャネル outxで式 yの値を受信)、の 2 つのプロセスの並行プロセスに移行する。
<第 2ステップ >
前述の数 1 19の定義から、 (4) Cx(5)は選択プロセス (4) 1 ([inx?y].Cx(y) + [outx??].C x(?))に置き換えることができる。
すなわち、
プロセス (4) 1と、(3)が並行に行われた結果、
(4)— 1の [outx??].Cx(?) (チャネル outxに値 5を送信)と同時に (3)の(チャネル outxで式 y の値 5を受信)力 S起こる、という相互作用(同期)が起こって、
不作用作用てが実行され、
その結果、残りのプロセスは Cx(5) (セル Xに値 5を保持)としてふるまわれる。
2. 3 意味論
以下に、 Lyee計算法の形式的意味論について説明する。この意味論は、相互作 用関係
[0048] [数 13]
により定義される。この時、演算子→は「関係」(relation)を表わし、 κは作用を表わ す。「関係」は複数の「関係」の集合であり、その集合要素である 1つ 1つの「関係」は 次の 3つの要素で構成されている。第 1の要素は「変化前のプロセス」、第 2の要素は 「変化の後のプロセス」、第 3の要素は「変化の間に実行された作用」である。
[0049] [数 14]
Ρ → Q と書くとき、関係→の 3要素は(P, Q, K)である。
[0050] 上記のように定義するとき、数 14の意味は、サブプロセス Pの中の相互作用( reaction)によって、全体プロセスがアトミック 'アクション(atomic action ;割込みを許さ ない一連の不可分な作用で、次の別の作用を開始させるために、必ず完了されなけ ればならない) κを実行してサブプロセス Qとなる、ことを意味する。相互作用関係( interaction relation)とういう着想は、ベリー(Berry)およびバウドル(Boudol) (非特 許文献 2参照)の化学抽象機械(Chemical Abstract Machine)によって触発されたも のである。このモデルでは、プロセスは、相互作用を起こすことを待っている分子の化 学溶液であると見なして 、る。
[0051] 数式 13の関係を形式的に表わすために、下記の概念を定義する必要がある。
[0052] [数 15] は、プロセスを簡単にするために用いる記号で、左辺が、簡素化されたプロセスであ る右辺と等しいことを表わす。下記に示すように、無プロセスを除去することによりプロ セスを簡単にすることができる。
[0053] [数 16]
P I nil ^→ P nil + P → P nil t> P °r* P
nil I 4→ P P + nil ^ P P t> nil → P nil/ L nil 式 eの計算結果である値の集合を
[0054] [数 17]
で示す。 eが変数である場合には、その計算結果の値の変域も、その変数の変域( domain) (整数、実数等)と同じである。説明を簡単にするために、すべての変数は実 数の集合に属するものと見なす。
[0055] [数 18] は、作用 κが使用するチャネルの名前である。たとえば、
p
[0056] [数 19]
rt = 0 ,
= (t?e) i = {ι} の意味は次の通り: Q
不作用作用てが使用するチャネルは存在しないので、空集合 (0)である。
送信作用(? !e)と受信作用(?? e)が使用するチャネルは、?である。
[0057] 「関係」の集合 (→)は、要素として、表 5に示す 15個の規則を満足させるような「関 係」を最小数持つ「関係」である。
[0058] 力つこ内ないに示した各種の R記号は、規則名を示す記号である。規則は、前提条 件と結果からなっており、各規則は、横線の上段に示される条件のとき、下段に示し た結果になるような規則である。
[0059] [表 5]
p → QL g'^q
P → Q
(Ri)
Figure imgf000020_0001
Λ].Ρ → Ρ'
( []) [^u K2].P → [κ2]ρ·
Ρ → Ρ'
(Rl+)
P+ → Ρ' P + Q → Q'
Figure imgf000020_0002
P P' Q → Q'
(R )
P \ Q → P' \ Q P \ Q → P \ Q'
Figure imgf000020_0003
たとえば、第 2番目の規則 (R t )の意味は以下のとおりである:
値?が式 eの値の集合に属すとき (上段の前提条件が成立するとき)、チャネル?上 式 eの値を送信後、プロセス Pとなる [? !e].Pは、チャネル?上への値?送信作用が起こ つた後、プロセス Pに移行する(下段の結果)。
3. Lyee要件の非形式的形式ィ匕
このセクションにおいては、 Lyee方法論力 どのようにして基本的なユーザ要件か らソフトウェアを生成するの力、その全体像について説明する。カロえて、この全体像か ら、 Lyee計算法によってこの方法論をどのようにして簡単かつ効率的に形式ィ匕する ことができるのかを順次紹介する。 Lyee方法論のソフトウェア生成プロセスの完全な 形式ィ匕については、次のセクションで説明する。
3. 1 Lyee要件
Lyee方法論において、要件は、宣言的な方法で、単語名、その定義式、その計算 条件、およびその属性 (入出力、タイプ、セキュリティタイプ等)という要素を含む宣言 の集合として与えられる。表 6は、 Lyee要件の一例である。
[0060] 「Word」は単語名、「Definition」は単語の値を生成するための定義式、 Conditionは 定義式を実行する計算条件、「10」は単語の値の入出力の属性を示す。 OFはフアイ ルへの出力、 OSは画面への出力、 ISは画面からの入力、 IFはファイルからの入力(表 にはない)、を表わす。「Type」は、値の属性で、 intは整数(integer)、 floatは不動小 数点数を表わす。「Security」は、値のセキュリティに関する属性を表わす。 secretは非 公開、 publicは公開、を表わす。
[0061] [表 6]
Figure imgf000021_0001
表 6の要件は、感覚的にとらえれば、従来のプログラミング言語の表 7のコードに対 応する。 Sは、単語 aの宣言を意味する。 [0062] [表 7]
Figure imgf000022_0001
たとえば、単語 aの宣言 Sのコードは、
a
「もし、 b*e〉2が真ならば、単語 aに b+cの計算結果を代入し、単語 aの値を出力」、を意 味している。
[0063] 宣言 Sのコードは、「単語 cに値を入力」、を意味している。
[0064] Lyee方法論においては、ユーザは、これらの定義が実行される順序 (制御ロジック )を指定する必要はない。表 7に示すように、単語 aの定義は、単語 bを使用している にもかかわらず、宣言 Sは、宣言 Sの後に位置している。以下に説明するように、これ b a
らの要件から、また、宣言の順序とは無関係に、 Lyeeはすべての定義した単語を計 算するコードを生成することができる。このシンプルなアイデアは、非特許文献 6、 7、 8、 9に示されるように、ソフトウェア開発上の異なるステップにおいて、数々の有利な 結果を生む。実際、このアイデアを使用することにより、要件が不完全であってもソフ トウエアの開発をスタートすることができる。さらに、ユーザは、もっと古典的な方法論 の場合のように、単語の実行順序の制御ロジックの問題を扱う必要がない。ソフトゥェ ァの制御ロジック部分は、 Lyee方法論においては、自動的に生成され、その結果、 プログラミング.エラーが低減し、プログラミング時間が短縮される。柔軟性も、 Lyee方 法論の主要な利点である。何故なら、保守業務を、要件の簡単な修正 (単語の定義 の追加、削除および Zまたは修正)作業にまで軽減できるからである。
[0065] 従って、 Lyeeシステムは、求められる結果を生成するために共に相互作用を行う独 立したコンポーネント(宣言)の集合体と見なすことができる。本論のプロセス代数の 概念は、この見方と非常によく一致する。何故なら、 Lyee計算法は、プログラムを、最 終目的に到達するために、共に相互作用しあう分子 (プロセス)の化学溶液と見なす 力もである。それ故、一見して、宣言の集合 is . . . , }からなる Lyee要件 LRを、 Lyee計算法の並行プロセス(concurrent process)として見ることができる。すなわち、 次に表わすとおりである。
[0066] LR = s | . . . | s
直感的説明によれば、要件 LRは、プロセス s 、 . . . 、 sが並行に実行されるプロセ スである。
3. 2 パレット(Pallet)および基本構造(Scenario Function)
表 6の要件から、 aおよび bの値を計算し、それらを出力するプログラムを、自動的に 生成することができる。このプログラムは、不動点(fixed point)に達するまで、すなわ ち、図 3に示されるように、繰り返し処理力 ^、かなる単語の値も変えなくなるまで、これ らの命令の実行を単純に反復する。
[0067] プロセス代数の観点からいうと、「不動点に達する」という概念は、当然意味規則に 組み込まれる。実際に、プロセス (分子)は、いかなる進展も可能でなくなる状態 (不 動点)に達するまで、共に相互作用する。
[0068] 要件力 Lyeeにより自動的に生成されるプログラムの構造および内容についてさら に正確に説明する。 Lyee方法論においては、表 6に示すような宣言の集合の実行は 特定の方法により行われる。実際は、 Lyeeは、図 4に示すように、 Lyee用語で、パレ ット (W , W および W )と呼ばれる 3つの領域上に宣言に関連するコードを分配
02 03 04
する。 ノ《レット w :
02
入力単語を処理する。
ノ《レット W :
03
単語の計算条件を計算し、結果をブール型 (真偽値を値としてもつ)の変数で保存す る。例えば、単語 aの定義の中で使用されている計算条件「b*e > 2」は W で計算さ
03 れ、真 Z偽の結果は、別の変数「a— cond」に保存される。
ノ《レット W :
04
要件に含まれるその定義式によって単語の計算を行う。パレット W は、また、計算し
04 た単語の値を出力する。
[0069] Lyeeプログラムは、パレット W 力もスタートして、不動点に達するまで、すべての定
04
義した単語の値を計算しょうとする。単語の値の計算に係わる W 内に進展が見られ
04
なくなると、経路作用要素 R4によりパレット W に制御が与えられる。今度は、この第
02
2のパレットが、単語の値の入力を繰り返し、不動点に達した (他に新たな入力対象 がなくなった)とき、次に、経路作用要素 R2が制御をパレット W に渡す。最後に、そ
03
してパレット W と同じように、パレット W 力 不動点に達するまで、要件に従って単
04 03
語の計算条件を計算しょうとする。図 5に示すように、この全プロセス (W →W →W
04 02
)は、全体が安定状態に達するまで繰り返され、連結されている 3つのパレットは基
03
本構造(Scenario Function)と呼ばれる。
[0070] Lyee要件を組み込むために逐次処理言語を使用することによって、 Lyee方法論 の作者は、パレットが実行される順序、同じパレット内のベクトル (モジュール)が実行 されるべき順序、およびあるベクトル力 他のベクトルに制御を渡す方法を明確に指 定せざるをえなかった。言い換えれば、この逐次処理言語がゆえに、 Lyee方法論の 基本概念に属さない、また、この方法論を力なり複雑にしてきたいくつかの局面がも たらされることになつた。すなわち、各パレット内のベクトルが実行される繰り返しの制 御、パレットから他のパレットに実行を移す (異なる基本構造間を含め)方法および時 期等を指定するという必要があった。これらのために、パレット関数 (パレット内の実行 制御)、経路作用要素(次に実行するパレットの決定)、パレット連鎖関数 (パレット間 の実行制御)が設置されて!ヽた。
[0071] しかし、 Lyee計算法を使用することにより、パレットが実行される順序、各パレットの ベクトルが実行される順序、パレットから他のパレットに制御を渡す方法および時期 等を指定する必要力 Sもはやなくなる。このような詳細は、当然ながら本論の抽象機械 Lyee計算法により本質的に管理される。それ故、基本構造は、下式のように形式ィ匕 することができる。
[0072] SF=W I W I W
04 03 02
すなわち、基本構造 SFのプロセスは、 W 、 W 、 W の 3つのパレットのプロセスの
04 03 02
並行プロセスである。 [0073] W 、W および W を実行する順序はもはや重要ではなくなり、これらパレットを接
04 03 02
続している経路作用要素も除去されていることに留意されたい。
[0074] Lyeeは、固定構造を持つ簡潔なプログラム(Lyee用語で述語ベクトル(predicate vector)と呼ばれる)を確立した。この構造により、生成されたコードの構造は不変か つ要件の内容に依存しないものになっている。ベクトルの実行を制御する統括プログ ラム(global program)であるパレット関数の役割は、単に述語ベクトルを呼び出すだ けである。図 6は、述語ベクトルの構造を示す。
[0075] 述語ベクトルの目的は、各パレットにより異なる。
<ノ《レット W >
04
パレット W の第 1の目的は、定義式により単語に値を与えることである。この役割を
04
行う述語ベクトルを L4と呼ぶ。図 4の例における単語 aおよび単語 bの L4は、図 7に示 すようになる。
[0076] 単語の計算に進展がなくなり、かつ、単語の値が全て成立すると、 Lyeeの生成コー ドは、次の目的となる単語の出力を実行しょうとする。値を出力するという目的を持つ 述語ベクトルは、出力作用要素(Output Vector : 04と呼ぶ)と呼ばれる。他に、領域 のクリアを行う構造作用要素 (S4と呼ぶ)がある。
<ノ《レット W >
02
値を入力単語に関連付けるという目的を持つ 2つの述語ベクトルがある。メインメモ リ上(Lyeeプログラム領域の外)への入力を行う入力作用要素(Input Vector: 12と呼 ぶ)と、属性チェックと Lyeeプログラム領域内への入力を行う L2である。
<ノ《レット W >
03
パレット W の述語ベクトル L3の目的は、図 8に示すように、要件内に指定されてい
03
る、単語の定義式 (すなわち L4)を実行するための条件を判定することである。
[0077] 最後に、表 8は、表 6の要件を実装した Lyeeプログラムを示す。
[0078] 各パレットに 1つおかれたパレット関数力 パレット内の述語ベクトルをコール(起動 )する。パレット関数は、プログラムに 1つおかれたパレット連鎖関数によってコールさ れる。パレット連鎖関数は、各パレットの R4、 R2、 R3の指定に従って、該当するパレ ット関数をコールする。その他のプログラムの意味は、表 8のコメントのとおりである。 述語ベクトル L4、 L2、 L3 (総称して論理要素と呼ぶ)の処理対象は単語単位であり、 入出力作用要素 (12および 04)、構造作用要素 (S4)の処理対象は単語の集合であ る。
[0079] [表 8]
Figure imgf000026_0001
ここで Lyee計算法を使用すると、 W 、W および W のプロセスは、それぞれ下記
04 03 02
のように定義することができる。
[0080] [数 20]
WQ = S4 I L4-a | L4—b | 04
IV03 = L3- I L3J)
W02 = L2-e I L2_c | 12
W プロセスは、 S4、 L4 a、 L4 b、 04の各プロセスの並行プロセスである。
04
W プロセスは、 L3 a、 L3 bの各プロセスの並行プロセスである。
03
W プロセスは、 L2 e、 L2 c、 12の各プロセスの並行プロセスである。
02
異なる述語ベクトル (L2、 L3、 L4、 12、 04、 S4)の形式的定義については、次のセクシ ヨンで説明する。
3. 3 処理経路図(Process Route Diagram) 前のセクションで示した基本構造は、任意の、要件が簡単なケースのプログラム全 体だと見なしてもよい。特に、すべての入力単語および出力単語力 同じ画面に属し ていて、データベースが全く使用されていない場合のプログラムである。入力単語お よび出力単語が、いくつかのデータベースまたは、相互に接続された異なる画面に 属する場合には、状況はもつと複雑になる。説明を簡単にするために、以下の説明に おいては、画面の数が複数あるだけの場合について説明する。図 9に示すように、相 互に接続している画面が 3つあり、ユーザは画面力 別の画面に移動することができ る場合について考える。各画面において、ユーザは単語の入力、計算、また出力が できる。従って、仕様書では、ユーザは、これらの画面がどのように相互接続している のかを指定しなければならな 、。
[0081] さらに言えば、 1つの基本構造だけを定義して、そこで全画面中の定義された単語 全てを計算するのは都合がよくない。なぜなら、実際、プログラムの任意の実行にお いて、ある画面は訪問されないかもしれず、その場合、訪問されな力つた画面の単語 の値の計算が無駄になるからである。そのため、 Lyeeは、各画面に、その画面が訪 問された場合だけ実行されるような担当基本構造を関連づける。画面に係わる基本 構造は、 1つの画面力も他の画面への移動を示すように、接続されている。 Lyee用 語において、複数の基本構造が接続されたものが、図 10に示すような、処理経路図
(Process Route Diagram)である。
[0082] Lyee計算法を使用して、ある画面 sを、プロセス SF(s )の実行を制御するプロセス k k
Φ (8 ),として下式のように形式ィ匕できる。
k
[0083] [数 21]
Figure imgf000027_0001
すなわち、プロセス Φ (3 )は、プロセス SF(s ) (画面 sに係わる処理の基本構造のプ k k k
口セス)としてふるまい、チャネル? sk上で真の値を受信したとき、 SF(s )を停止してプロ k
セス Φ (3 )としてふるまう。実際の動きとしては、制御プロセス Φ (3 )は、プロセス SF(S ) k k k を活性化し、画面 s
kに関連するチャネル? sk上で信号を受信したとき (すなわち画面 s k が再活性化されたとき)、 Φ (3
k )自身が再活性化される。従って、制御プロセス Φ (3 k )が 再活性化されることによって、 SF(s )は一度終了して再活性化され、初期状態 (fresh instance)【こ民る。
[0084] 関数 Φ(3 )がどのように機能するかを示す具体例は、本明細書の後の方に記す。
k
3. 4 Lyeeプログラム
まとめると、 Lyee方法論による Lyeeプログラムの構造は次のとおりである。 Lyeeプ ログラムはいくつかの処理経路図(PRD)で構成される。各 PRDは、相互に接続され た基本構造 (SF)の集合である。各基本構造は、 3つの相互に接続されたパレット W
0
、w 、w で構成される。最後に、パレットは、述語ベクトルによって構成される。述
2 03 04
語ベクトルには、 Lyeeプログラムの最小単位のモジュールであるので、アトミック'ベタ トノレ(atomic vector)とも呼ぶ。述語べタトノレには、餘理要素(signification vector : L2、 L3、 L4の総称)および作用要素(action vector : 12, 04、 S4、 R2、 R3、 R4の総称)があ る。これらの述語ベクトルの実行を制御する制御モジュールとして、パレットごとにパレ ット関数がおかれ、そのパレット関数の実行を制御するモジュールとして、プログラム に 1つのパレット連鎖関数がおかれる。
[0085] Lyee計算法を使用することにより、画面 s , . . . , sを含む Lyeeプログラム Pは、下
1 k
式のように形式化される。
[0086] [数 22]
V {si, . . . , sk) = ^{ …, sk)/C {s …, sk) ここで、 L (s , . . . , s )は、入力チャネルおよび出力チャネルの集合である。この
1 k
式は、 ¥ (s , . . . , s )が、 L (s , . . . , s )に属すチャネルだけを通して環境とコミュ
1 k 1 k
二ケートするように制限する。
[0087] 関数 Ψは、下式のように定義される。
[0088] [数 23]
Φ 丄, · · .,. ) = (! se{S] j...,Sfc} ? 1] .Φ ( ) [is ] .nil この関数 Ψは、画面 s (sは画面 s , . . . , sのいずれ力)に対応するチャネル? s上で
1 k
真の値を受信するたびに、画面 sに対応する SF(s)を起動するために、プロセス Φ(3) を起動。上記チャネル? sは、対応する画面を起動するためにユーザが使用するボタ ンゃメニューを形式ィ匕したものである。また、この関数 Ψは、チャネル? 上で真の値 を受信した時ときに、すべての他のプロセスを終了させて、関数 Ψ自身も終了(nilに なる)する。チャネル? sは終了ボタン (または、対応するメニュー項目)を形式化したも のである。
[0089] 従って、 Lyeeシステムは、求める出力単語を計算するために相互にコミュニケート する、独立した並行プロセス(concurrent process)の集合体と見なすことができる。 Ly ee方法論の従来の逐次処理的(sequential)見方とは対照的に、すべての経路作用 要素は必要なぐ制御機能の役割は大幅に簡易化され、作業メモリ領域 (working memory)等も必要ない。 Ψ (s , . . . , s )については、具体例と一緒に以下にさらに
1 k
詳細に説明する。
[0090] 次のセクションにおいては、 Lyee方法論のより詳細かつ完全な形式ィ匕について説 明する。
4. Lyee方法論の形式ィ匕
Lyee計算法を使用して、簡単なユーザ要件からどのようにしてソフトウェアを自動 的に生成するかを見る。
ユーザ要件は、 k個の画面 { s , . . . , s }を含んでいるとする。また、各画面は宣言の
1 k
集合を含んでいるとする。この場合、各宣言は、次の形式、すなわち、(w, e, c, InOut, type)を持つ。ここで、 wは単語名、 eはその定義式、 cは定義式の実行条件、 InOutは単語が入力か出力力、あるいは両方か、または入力でも出力でもないのかの 指定 (値 iは入力単語に、値 oは出力単語に、 ioは入力および出力両方である場合に 、空のフィールドは入力でも出力でもない場合に使用される)、 typeは値の属性 (タイ プ)を示す (たとえばタイプ Bは、ボタンを示す記号として割り当てられる)。
この要件に関するプログラム P (s , . . . , s )を定義するために、下記の表に示したよ
1 k
うに論理要素および作用要素のベクトル (プロセス)を形式化する。
[0091] まず、形式化に用いられている未定儀定義の記号を説明する。
Use (e)は、式 eで使用する単語の集合を示すものとする。例えば、 Use (a*b + 1) = { a, b}である。
また、 F (S)は、変数 Sとして入力値の集合をとり、その入力を行う受信作用の集合を 力えす関数である。
[0092] [数 24]
(0) = 0
T{{x) U A) = {?,| ?.x} U ^(A) 上記の意味は次のようになる。
入力値がなレ、とき (F(O))、受信作用はなレ、 (0は空集合)。
入力値 Xと入力値 Aの受信作用(F({x} U A))は、チャネル
[0093] [数 25] 上で Xの値を受信する受信作用と、入力 Aの受信作用 F(A)の和集合である c [0094] 論理要素(Signification Vectors)は表 9に示す。
[0095] [表 9]
Figure imgf000030_0001
作用要素(Action Vector)は表 10に示す。
[0096] [表 10] 人力作用要素 コメント
(Input Vector)
I2 (x) = く {x} を要素とする入力単語ダループの I2 >
[d x]. 入力チヤネゾレ 上で单 X への値を受信する ために待機。
≠M - 出力チャネル ½ 卜-へ (L2に対して) 単語 Xの値 を送信。
nil 終了。
出力作用要素 コメント
(Output Vector)
< 1 x1 を要素とする出力単語グループの 04 > メモリから Xの値を受信するために待機。
[dx\x\- 出力チャネル d xから Xの値を送信。
nil 終了。
メ モ リ (構造作用要素) コメント
(Structural Vector)
S4 (x) = く単語 Xの S4 >
任意の値を受信すろために待機。 受信するまで は、 値の送信は行えない。 镇を受信したら (初 期化と呼ぶ)、 受信した値を保持して とし てふるまう。
( ' =
新しい値 z を受信したときは、 ^ としてふ るまう
(セル Xの内容の変更)。
保持していた値 yを送信したときは 4 w とし てふるまう u
(セル Xの内容を変更しない)。
すなわち、 一度値を受信して保持した後は、 値 の受信と保持以外に値の送信も可能となる。 経路作川要素 コメント
(Routing Vector)
R a(b, e, s) ― <単語 b (ボタン b ) の R 3 >
ポタン bが押されるまで待機。
{dtlclik}.
ボタンの条件を判定。
結果を画面 Sへ送 ί言 (すなわち、 6 1なら、 3 を起動)。
nil 終了。 ベクトルのうち、 Sは、 2. 2で述べた値を保持するメモリ.セルで、かつ、「初期化され
4
る(初期値を受信する)までその内容にアクセスさせなレ、」能力をもったスマート.セル である。 [0097] 経路作用要素は、 Lyee計算法においては本質的には不要なプロセスである力 L yee計算法でどのように形式ィ匕できるかを示すために記載して 、る。 ノ レツ卜:
任意の画面 sの 3つのパレット W 、W および W は、下式のように开式化される。
02 03 04
[0098] [数 26]
Wos(^) = , *,c,* )es L3(W, c) j c,C)i,*lB)es R3{w, c, e)
Μ½( = ) es \
Figure imgf000032_0001
04{w) ここで、
[0099] [数 27] は、 B (ボタンを示す)を除く任意のタイプ (Bの補集合)を示し、 *は何であってもよい ことを示す。 本構造:
画面 sの基本構造 SF(s)は、下式のように形式ィ匕される。
[0100] [数 28]
SF(. ) = WQi(s) I W03(s) I WQ2(s) 制御機能:
画面 sに付随する制御機能は、下式のように形式化される。
[0101] [数 29]
Figure imgf000032_0002
画面の集合に付随する制御機能は、下式のように形式化される。
[0102] [数 30]
... ) = (|se{sil...!SJi} ? Φ ( ) ? 1 sは、プログラムを終了したときの画面(プログラム自身の画面群には属さない終了 0
画面)であるとする。
[0103] ここで制御機能の役割についてまとめると、下記のようになる。
[0104] [表 11]
Figure imgf000033_0002
本論では、 Lyee計算法の実現方法の 1つとして、 SFは、画面に対して 1つもうけ、 1 つの SF力 対応する画面に係わる入出力および計算の全てのプロセスを含むように 形式化した。従って SFの制御関数 Φも、画面に 1つである。しかし、画面に対して複 数の SFおよび制御関数 Φを設けるように形式ィ匕することも選択しとして可能である。 実装方法は、プログラムとしての効率性によって決定すればょ 、。
Lyeeプログラム:
最後に、画面 s , . . . , sを含む要件に関する Lyeeプログラム P(s , . . . , s )は下
1 k l k 式で表される。
[0105] [数 31]
■-· ,.¾) = ( ...,
Figure imgf000033_0001
.¾) ここで、 L(s , . . . , s )の集合は、環境との間のすべての入力チャネルおよび出力
1 k
チャネルを含み、下式により定義される。
[0106] [数 32]
C(Sl, ...,sk) = ( \J {dw}) O {iSi} i/oの意味は、この項目は値 i、 oまたは ioを含んでいなければならないことをさす。ま た、 sは、ユーザがこのプログラムを実行した場合に最初に現れる画面である。
実施例 1
[0107] 5.ケーススタディ 1
このセクションにおいては、 Lyee計算法で単語を計算するために、 Lyeeプログラム 力 Sどのように進行するかを、具体例を上げて段階的に説明する。
[0108] ここに示す例は、画面を 1つし力持たない(2つの画面を持つ他の例は付録に記載 した)。表 12の要件に示すように、ユーザは、単語 aを入力し、単語 bの値を待ち、次 に、ボタン Bを押して画面を終了する。図 11はこのような画面を示す。
0
[0109] [表 12]
Figure imgf000034_0001
この画面 sは 3つの宣言からなる。
[0110] [数 33]
.sj = {la, , , i, real), (b,2 * α,α > 0, o, real), (B0, s0l Click, B)} 前のセクションで説明した一般的な Lyeeプログラムの定義によれば、表 12の要件 に関する Lyeeプログラムは、下式により表される。
[0111] [数 34]
SF(Sl) = W04(Sl) I Wo^s,} I Wo2(,Sl)
Φ ( ) = SF{Si) \> [tsin} si)
Φ ( ) = ( ? 1].Φ ( )) [ ? ) = Φ(^ ここで、 W (s ) W (s )および W (s )は、下記の通りである。前述したように、 R
02 1 03 1 04 1 3 のプロセスは Lyee計算法では必須ではな 、ので、省くことも可能である。
[0112] [表 13]
Figure imgf000035_0002
Figure imgf000035_0001
Figure imgf000035_0003
ここで、このプログラム P(S )のエンドユーザ (環境)が、下記の一連の行動を行いた
1
いと考えていると仮定しょう。プログラムを実行し (画面 sを起動し)、単語 aに値「7」を 与え、単語 bの値を得るのを待ち、ボタン Bを押してプログラムを終了する。このェン
0
ドユーザの行動は、下記のプロセス εにより捉えることができる。
[0113] [表 14]
Figure imgf000035_0004
上記に示した、 Lvee計算法によるプログラム P(S )のプロセスとエンドユーザのプロセ
1
スを図 12に示した。
[0114] 次に、求められる目的に到達するために、プログラム P(S )がこの環境とどのように相
1
互作用を行うかを見る。言い換えると、エンドユーザの行動を取り込むプログラム εと 並行に実行されるプログラム P(S )の進行プロセスを追うのである。これは、すなわち、
1
P (s ) I εのふるまいを探すことである。このプロセスのステップは下記の通りである 。定義式には、等号記号の左辺が右辺に置き換えられる根拠となる定義をコメントと して付した。また、プロセス間の相互作用によって、同期(synchronization) (同一チヤ ネル上で値の送信と受信が同時に成立した)が起こった部分にもコメントを付した。下 線部分が同期した送信および受信作用である。
[表 15]
〈Pおよび Eの定義により〉
Φ()/ I [^!l].^
〈Ψの定義により〉
Figure imgf000037_0001
〈同期:ェンドュ一ザは、 画面 s iを起動してプログラムを実行〉 Φ(«ι) [tSD l}. nil )/£($:) I ε
く と f iの定義により〉
Figure imgf000037_0002
〈S Fの定義により〉
( 0 ) I W02(Sl) I W。 )) ?リ. Φ ( )) > n )/£(Sl) I [da 7\.£2 く W0 2およびその結果としての I 2の定義により〉
((^04(*i) I L2(a) I ( ? ].½!«]·™ I Η¾( ι)) ... ) - .. )/C{Sl) | \da 7}£2
〈同期: I 2を通してエンドユーザが値「7」を単語 aに与える〉
((WQd(Si) I L2(a) I ( !7j. 'i) | Wm(S )) > ... ) - .. )/£(5l) | £2
〈L 2の定義により〉
( (W04(Sl) I (½?Q].[j4 n!a].mQ | ([ι2 α ] .nil) | W^)) > ... ) E> ... )/£(s ) | ど 2 く同期: aの値 7が L 2( a )に送られる〉
( (WM(Sl) I (½'7].m7) I W03(Sl)) ΐ> ... } > ... }/£(s1) | <f2
〈W。4の定義により〉
(¾(α) I S4(b) I L4(b,2 * a) | 04(b) |
Figure imgf000037_0003
\ W03(Sl)) )/£(Sl) | S2 く S 4(a)の定義により〉
(([^?α].¾α( )) 1 S4(b) I L4(b, 2 *a)l 04(b) | ( . | Wos(s ))
〈同期: aの値 7が L 2(a)から送信され、 メモリに記憶〉
(¾(7) I S (b)_\ L (b, 2*α) | 4(ί>) I WM) > ...
α(7)および W0 3の定義により〉
(([ 4-!z}.S^z) + ½!7].54°(7)) 1... I (L3(b, α > 0) | ¾(¾' click, sn))) .
〈L 3の定義により〉
Figure imgf000037_0004
\■·· I ( 1. [ > 0) ) I -..
〈同期: b条件を計算するために、 aの値が L 3(b)に送られる〉
( (7)! S4(b) I L4(ら, 2 *a) I 04(6) | ([ (7 > )].nil) \ ... ·
< L 4の定義および (7 > 0 ) の判定により〉
a(7) I S,(b) i [ ! (2 * a)}.ml) | 04{6) | ( ! 1 ί) | ... : く问期: bの計算を実行するために、 b条件が判定され、
L4(b)に送られる〉
(54 α(7) I (&) I ([ ?4レ !(2 * a)].nil) \ 04(b) | -..
く ί¾(7)の定義により〉
m7z].St(z) +
Figure imgf000038_0001
...
〈同期 : aの値が L 4に送られる〉
(5?(7) I S4(b) S (hb (2 * 7)1.™:り I 04(b) I ΚΆ0, click, s0)) -..
く34( 13)の定義ぉょぴ(2 * 7 ) の計算により〉
(54 a(7) I (¾54 6(6)) I ([j4 b\(U)].nil) | 0,(b) | R,(B0,click, s0)) ...
〈同期: bの値 1 4が L 4(b)から送信され、 の値をメモリに記憶〉 ( "(7) 15 (14) I 04{b) \ Rs(B0, dick, s0)) -.
6(14)および 04 ( b ) の定義により〉
I ? ( 十 l'4!14j.5 (14)) I | ΆΛυ, click, β0)) > -..
〈同期: bの値 1 4が 04に送られる〉
( "(7) I 54 ¾(14) I ([^!14].™/) | R3(BC, click, s0)) O ... )/ ι) | £2
2の定義により〉
( ) I S4 b{U) I (\dh U}.nii) I 3(β。, click, s。)) ΐ> -.. )/£ | [ 4ど 3
〈同期: 〇4内に記憶されている bの値が環境に送られる〉
( ) I s4 b{u) I R3( 0,di ki So)) ... )/c{Sl) ! εΆ
<R 3および ε 3の定義により〉
(54 α(7) I 5|(14) I
Figure imgf000038_0002
く同期 :エンドユーザが終了のためにボタン B Uを押す〉
( α(7) I (14) I ( ! 1レ^)) [ΐ¾?1]·Φ(5ι) ) > ? U.n"
〈同期: システムがその実行を終了〉
nil
まとめると、プログラムの進行の主要なステップは下記の通りである。
reニ:ンドユーザ力 プログラム起動のコマンドを送ることによって、制御関数 Ψ (s )が起 動されて、制御関数 Ψ (3 )が制御関数 Φ (S )を起動し、制御関数 (S )が初期画面 ^ と SF(s )を起動することによって、プログラムが起動する。
[数 35]
( ([Ϊ?1]. (5Ι)) [> {iSn?l}.nil)/ (Sl) \ [^ l].^ エンドユーザが単語 aに値「7」を与える(送信する)と、 SF(s )の中の I (a)が値 7を受
1 2
信する。
[0118] [数 36]
( (
Figure imgf000039_0001
| W03 ( )) ... ) > ... )/C(s1) | [d 7]£2 I (a)は、 aの値 7を L (a)に送信する。
2 2
[0119] [数 37]
( ( (W0i(sj) I (½?gj. !a].m/) |
Figure imgf000039_0002
\ W03('s ) [>...) ■■. | £
L (a)が送信した aの値 7が、メモリ、すなわち、 S (a)に記憶される (S4(a)に初期値
2 4
が記憶されることによって初期化された)。
[0120] [数 38]
( ? ]. ( ) I j L4(b, 2* a) \ 04(b) I ( !7].m/) | WM) O ... bの計算条件を計算するために、 aの値 7が、初期化された aのメモリ S力も L (b, a>0
4 3
)に送られる。
[0121] [数 39]
( ( + [ ].3 (7)) I ... I ((½ α]■[¾¾!(« > 0)].m/)し., bの計算条件が判定され (a>0は真(1)と判定)、 L (b, 2*a)に値 1が送られる。
4
[0122] [数 40]
( I S4(b) I
Figure imgf000039_0003
| . - - aの値 7力 値 7を保持している aのメモリ S力 L (b, 2*a)に送られる。
4 4
[0123] [数 41]
(
Figure imgf000039_0004
* a)].m7) | 04(b) | ... bの定義式「2*a」が計算され、 bの値 14力 メモリ、すなわち、 S (b)に記憶される(S
4 4
(b)が初期化された)。
[0124] [数 42]
( (Sf(7) I
Figure imgf000039_0005
I ([j¾!(14)].mQ | 04(6) | R3(B0, click, s0}) > -.. bの値 14力 bのメモリ Sから、出力プロセス O (b)に送られる。
4 4
[0125] [数 43] ( ( α(7) I
Figure imgf000040_0001
\ ¾(H。, click, s0)) O ...
10. Oによって bの値が環境に送られ、エンドユーザは bの値を受信する。この時点
4
で起動中の SF(s )に属するプロセスは、値を保持している aおよび bの Sと、 R3(B ,
1 4 0 click, s )で&>る。
0
[0126] [数 44]
( (S (7) I (14) I
Figure imgf000040_0002
11.エンドユーザが、プログラム終了のためにボタン Bを押し、 R3(B , click, s )は値
0 0 0 clickを受信、自身の計算条件を判定して真の値 1を制御関数 Ψ(3 )に送信する。真 の値 1を受信した Ψ(3 )は、自身が終了する前に Φ(3 )を終了させ、 Φ(3 )は自身 が終了する前に SF(S )を終了させる。
[0127] [数 45]
( (5^(7) i 5^(14) I {[dBn?dick].[isn\l].nil)) [> ... )/C{Sl) | [dB(i\cli k].nil 図 13は、これらの各ステップを示す。
[0128] 力つこ付き番号は、上記のステップの説明に対応する。力つこなしの数字は、送受 信される値を示している。
[0129] さらに、各プロセスの遷移は証明によって確認することができる。例えば、下記のプ 口セスの遷移がある(上記ステップ 1に対応)。 P(s )と εの間に同期が起こり(プロダラ
1
ム起動コマンドの送受信)、 Ρ (3)と£ の並行プロセスに移行するプロセス遷移を表
1 1 1
わしている。
[0130] [数 46]
ど) Λ (7 ) | )
このとき、
[0131] [数 47]
Figure imgf000040_0003
である。 上記は、表 5の規則を用いて、次の証明で正しいことが確認できる。
[0132] [数 48]
Figure imgf000041_0001
6.結論
本稿は、最初に、 Lyee方法論の基本概念を容易かつ本質的にサポートする Lyee 計算法と呼ぶ形式的プロセス代数を定義した。実際に、この計算法は、フォン'ノイマ ンのものより、 Lyee方法論の概念をサポートするのにより適した抽象機械と見なすこ とができる。この機械は、プログラムを最終結果を生成するために共に相互作用し合 う分子の集合と見なす。二番目に、この計算法がどのようにして、全ソフトウェア生成 プロセスと Lyeeベクトルの両方を形式ィ匕し、簡易化することができるのかを示した。実 際、経路作用要素 (routing vector) ,はもはや必要としない。また、パレット関数も不 要となり、制御機能の役割は大幅に簡易化される。 Lyeeソフトウエア生成の自動生成 の全プロセスを形式ィ匕した。この形式ィ匕によって、この方法論の意味論を、この方法 論の背後にある概念を明快に理解することができるように形式ィ匕することができる。そ の上、この形式的記述は、いろいろな局面におけるこの方法論の多くの興味ある分 析を始めるためには不可避である。例えば、 Lyeeで生成したソフトウェアまたはソフト ウェア生成プロセスを最適化するためには、最適化されたプログラムがその元のバー ジョンと同じものである、という形式的証明を必要とする。プロセス代数を使用すれば 、形式的に同じものであることのチェック、またはもっと一般的にモデル'チェックをうま く行うことができる。
[0133] 将来の研究として、我々は Lyee方法論の意味論をさらに研究し、 Lyee方法論をよ り簡素化し、要件力もより信頼性の高 、最適化されたコードの生成が行えるようにした い。最適化するために、 Lyee計算法のプロセス間の適合 (congruence)関係を定義し 、それによつてすベてのそこ力も帰結する最適化が正 U、ことを証明した 、と考えて いる。 実施例 2
[0134] <付録 >
ケーススタディ 2—画面が 2つの場合
複数画面間の相互作用を示すために、 2つの画面からなるプログラムのケースにつ いて述べる。図 14がそのプログラムの画面を示した図である。このプログラムを起動 すると画面 Sが表示される。画面 Sで、ユーザは、単語 aを入力し、単語 bの値が出
1 1
力されるのを待つ。ボタン Bを押すと、画面 Sが表示され、単語 bの値が出力される
2 2
のを待つ。画面 Sでボタン Bをおすと、プログラムを終了する。
2 0
[0135] 図 14のプログラムの要件の宣言をまとめると、画面 Sの要件は表 17、画面 Sの要
1 2 件は表 18のようになる。
[0136] [表 17]
Figure imgf000042_0001
[0137] [表 18]
Figure imgf000042_0002
前のセクションで説明した一般的な Lyeeプログラムの定義によれば、表 17および 表 18の要件に関する Lyeeプログラムは、下式により表される。
[0138] [数 49]
SF {Sl) = WO ^) I Wosisx ) I Wo^) 画面 sに対する W が存在しないことに留意されたい。何故なら、 W は、ボタン以
2 02 02 外に入力単語を含んで ヽな 、からである。
[0139] [数 50] (ίι) = SFisi) > 1? 1].Φ ( )
) = SF{s2) ? 1].Φ 2)
Φ (' s2)
Figure imgf000043_0001
) I [? 2?1]. (.92)) [?Sn?l].ni/
£(' , s2) = {da, db, de, dB。, dB2}
ここにおいては、 W (s)、W (s )、W (s )および、 W (s )、W (s )は、以下
02 1 03 1 04 1 03 2 04 2 のように定義される。ケーススタディ 1と同様に、 Rのプロセスは Lyee計算法では必須
3
ではないので、省くことも可能である。
[0140] [表 19]
Figure imgf000043_0002
[0141] [表 20]
Figure imgf000043_0003
[0142] [表 21]
Figure imgf000044_0001
ここで、このプログラムのエンドユーザ (環境)が、下記の一連の行動を行いたいと考 えているとする。プログラムを実行し (画面 sを起動し)、単語 aに値「7」を与え、単語 b の値を得るために待機し、画面 sに行くためにボタン Bを押し、値 eを得るために待
2 2
機し、ボタン Bを押すことによりプログラムを終了する。この行動は、下記のプロセス
0
εにより捉えることができる。
[0143] [表 22]
Figure imgf000044_0002
上記に示した、 Lyee計算法によるプログラム P(S )のプロセスとエンドユーザのプロセ
1
スを図 15に示した。
[0144] プログラムの進行の主要なステップは下記の通りである。
エンドユーザが、プログラム起動のコマンドを送ることによって、制御関数 Ψ (s , s )が
1 2 起動されて、制御関数 Ψ (s , s )が制御関数 Φ (s )を起動し、制御関数 (s )が初期 画面 sと SF (s )を起動することによって、プログラムが起動する。
P (s , s )と εの間に同期が起こり(プログラム起動コマンドの送受信)、 P (s , s )と ε
1 2 1 1 2 1 の並行プロセスに移行。 [0145] [数 51]
ここで、
[0146] [数 52]
V1{s1,s2) = ( (81) I [ 2?1].Φ(. ) Ο
Figure imgf000045_0001
エンドユーザが単語 aに値「7」を与える(送信する)と、 SF(s )の中の I (a)が値 7を受 信する c
PP ((Ss , 5 S )と の間に同期が起こり(単語 aの値の送受信)、 P (s s )と の並行プ
1 1 2 2
口セスに移行。
[0147] [数 53]
T 'si, ' ) 1ど 1 → V2{s s2) \ S2 ここで、
[0148] [数 54]
Figure imgf000045_0002
V 03( )) ? 1].Φ ( ) | [ ? 1].φ(,¾2))
C [? s。?l]. :0/ (,si,s2) aの値 7がメモリ S (a)に記憶される。この記憶は、 2つのステップにより行うことができ
4
る。第 1のステップにおいて、 aの値 7が L (a)に送られる。第 2のステップにおいて、 L
2
(a)は、この値をメモリ S (a)に送る。
2 4
第 1のステップは下記の通りである。 P (s , s )の中で同期が起こり(I (a)と L (a)間の
2 1 2 2 2 単語 aの値 7の送受信)、 P (s , s )と ε の並行プロセスに移行。
3 1 2 2
[0149] [数 55] 2(si,s2) I ε2 → vz{s s2) I ε2 ここで、
[0150] [数 56] ( = (((Κ' ) I bV-Ά-ηίΐ I w0 )) ΐ> ? 1].Φ ( ) I ? 1].Φ( ))
E>[7 n?l].mi)/£(-Si, .?2)
第 2のステップにおいて、 aの値 7は W のメモリ S (a)に記憶される(S (a)に初期値
04 4 4
が記憶されることによって初期化された)。 P (s , s )の中で同期が起こり(L (a)と S (
3 1 2 2 4 a)間の単語 aの値 7の送受信)、 P (s , s )と ε の並行プロセスに移行。
4 1 2 2
[0151] [数 57] , [ ε2→ v4{s s2) Iど 2 ここで、
[0152] [数 58]
V4(s1: s2) = (((5 (7) I S {b) I L4{b, 2 * a) I 04(6) | [> [ 1].Φ ( ) I h^l]^( 2))
>卜' s。?l).m:り/ (,s丄, s2) bの計算条件を計算するために、 aの値 7が、初期化された aのメモリ S力も L (b, a>0
4 3
)に送られる。 P (s , s )の中で同期が起こり(S (a)と L (b, a〉0)の間の送受信)、 P (
4 1 2 4 3 5
S, S )と £ の並行プロセスに移行。:
1 2 2
[0153] [数 59]
Vi{s s2) I ε2→ ν^,^) Iど 2 ここで、
[0154] [数 60]
V (SI,S2) = | s , click))
Figure imgf000046_0001
bの計算条件が判定され (a>0は真(1)と判定)、 L (b, 2*a)に値 1が送られる。 P (s
4 5 1
, s )の中で同期が起こり(L (b, a〉0)と L (b, 2*a)の間の真偽値 1の送受信)、 P (s,
2 3 4 6 1
3)と£ の並行プロセスに移行。:
2 2
[0155] [数 61] 卩 5 Iど 2 → Vr,{s1,s2) I ε2 ここで、
[0156] [数 62] P , ) = (((¾α(7) I S4(b) I [f4l(2 * a)).nil | 04(b) | ¾(H2, ,s2, click))
Figure imgf000047_0001
I [ ?1].Φ ( )) > [zsn?l}.ml)/C(Sl,s2) aの値 7が aのメモリ S力 L (b, 2*a)に送られ、 bの定義式「2*a」が計算され、 bの値
4 4
14が、メモリ S (b)に記憶される(S (b)が初期化された)。 P (s , s )の中で同期が起
4 4 6 1 2
こり(aのメモリ Sとし(b, 2*a)との間、 L (b, 2*a)と bのメモリ Sの間の送受信)、 P (s,
4 4 4 4 7 1
3)と£ の並行プロセスに移行。:
2 2
[0157] [数 63]
VG、Sl, S^) Iど 2 → 7 'Sl,. ) Iど 2 ここで、
[0158] [数 64]
V7(s1,s2) = (((¾(7) I ck))
[> ? 1].Φ
Figure imgf000047_0002
bの値 14力 bのメモリ Sから、出力プロセス O (b)に送られる。 O (b)によって bの値
4 4 4
が環境に送られ、エンドユーザは bの値を受信する。 P (s , s )の中の同期(L (b, 2*a
7 1 2 4
)と O (b)の間の送受信)と、 P (s , s )と ε 間の同期(単語 bの値の送受信)が起こり
4 7 1 2 2
、 P (s , s )と ε の並行プロセスに移行。
8 1 2 3
この時点で起動中の SF(s )に属するプロセスは、値を保持している aおよび bの Sと
1 4
、 R3(B , click, s )である。:
0 0
[0159] [数 65]
v7{si, s2) I ε2→ vs{s s2) I εi- ここで、
[0160] [数 66]
V^s2) = (((¾{7) I (14) I R3(B2,s2, click)) [> 1].Φ( ) | [^?1].Φ(.^)) 画面 2に行くために、エンドユーザは画面 s上のボタン Bを押す。 ε から送信された
1 2 3 ボタン Bの Click値を R3(B , click, s )が受信、 R3(B , click, s )は自身の計算条件を
2 2 2 2 2
判定して真の値 1を制御関数 ψ (s , s )に送信する。値 1を受信した制御関数 Ψ (s ,
1 2 1 s )は制御関数 Φ (s )を起動。値 1を受信した制御関数 Φ (s )は、 SF(s )を起動し、
2 2 2 2
画面 Sを起動する。
2
P (s, s )と ε の間の同期(ボタン Bの click値の送受信と)、 P (s, s )の中の同期(R
8 1 2 3 2 8 1 2
3(B , click, s )と、 Ψ (s , s )および制御関数 Φ (s )間の送受信)が起こり、 P (s , s )
2 2 1 2 2 9 1 2 と ε の並行プロセスに移行。:
4
[0161] [数 67]
VS(Sl, S2) I ¾ → "P9('Sh 'S2j Iど 4
ここで、
[0162] [数 68]
7¾( , ) = (((¾α(7) i (14)) 1? 1].Φ ( ) I Φ ( )) Ο ?1] eの条件を計算するために、 bのメモリ S力も値 14を L (e, b>0)に送信する。 P (s , s
4 3 9 1 2
)の中で同期が起こり(aのメモリ Sとし (e, b〉0)との間の送受信)、 P (s , s )と ε の
4 3 10 1 2 4 並行プロセスに移行。:
[0163] [数 69]
P9(si,s2) I S4 → -Pw(si,s2) j S4 ここで、
[0164] [数 70]
7½ ( ,. s2) = (((54»(7) j (14)) t> [^?1].Φ( ) I (W0i(s2) I [ (14 > 0)].m/ |
R3(B0,s0, click)) t> [? ?1] ( )) [ ? 1].ηり//: ( , s2) eの計算条件 b>0が真 (1)と判定され、 L (e, b〉0)力 真の値 1が L (e, 1+b)に送信
3 4
され、 eの値が計算される。 P (s , s )の中で同期が起こり(L (e, b〉0)と L (e, 1+b)の
10 1 2 3 4 間の送受信)、 P (s , s )と ε の並行プロセスに移行。:
11 1 2 4
[0165] [数 71] ) \ £4 → Vn(s 2) ! ¾ ここで、
[0166] [数 72]
Vn(^ s2) = (((¾"(7) I (14)) O [is ] si) I | l(l + )].mZ | 04(e) \
R3{B0l so, click)) t> ?1 ( )) [ί ?1].η?;Ζ)/£(,9ι, ,92) eの値を、 L (e, 1+b)から、 eのメモリ S (b)に記憶する(S (b)が初期化された)。 P (
4 4 4 11 s , s )の中で同期が起こり(L (e)と eのメモリ Sの間の送受信)、 P (s , s )と ε の並
1 2 4 4 11 1 2 4 行プロセスに移行。:。:
[0167] [数 73]
Figure imgf000049_0001
ここで、
[0168] [数 74]
Vu(s s2) = (((S (7) I (14)) O '? 1].Φ( ) j (5|(15) | 04(e) |
Rs{B0,s0, click)) t> ? 1].Φ( )) [ ? 1] , s2) eのメモリ S (b)から eの値 15を、 O (e)に送信、 O (e)からエンドユーザ ε に eの値を
4 4 4 4 出力する。 P (3 , 3)と£ の間で同期が起こり(単語 eの値 14の送受信)、 P (s , s )
11 1 2 4 12 1 2 と ε の並行プロセスに移行。:
5
[0169] [数 75]
ここで、
[0170] [数 76] ) = (((54«(7) I (14)) [ ? 1].Φ ( ) I (5 (15)
R3(B0, s0, dick)) [? ]?1].Φ(5 ) [> [ί s« ?1 ].«,?;;) (.? ι, エンドユーザが、プログラムを終了するためにボタン Bを押す。 R3(B , click, s )は、
0 0 0 エンドユーザ ε らボタン Βの値 clickを受信し、制御関数 Ψ (s , s )に送信する。 Ψ (s
5 0 1 2 1
, S )は、自身が終了する前に Φ(3 )および Φ(3 )を終了させ、 Φ(3 )および Φ(3 )
2 1 2 1 2 は自身が終了する前に、それぞれ SF(s )ぉよび SF(s )を終了させる。 P (s , s )と
1 2 12 1 2 ε の間で同期が起こり(CClick値の送受信)、次に P (s , s )の中で同期(R3(B ,
5 12 1 2 0 click, s )と、 Ψ (s , s )、制御関数 Φ (s )および Φ (s )間の送受信)が起こり、すべて
0 1 2 1 2
のプロセスが nilに移行する。:
[0171] [数 77]
G s2) |ど 5 → (( (7) I b(14)) o [ ? 1].Φ ) I ( (15) I
[isan] .nil) > [ ?l] . (s ) C> [i,sn?lj.n ) /£ ( , s2)
→ nil なお、本発明は、上述した実施形態および実施例には限定されず、本発明の技術 思想の範囲内で様々な変形が可能である。たとえば、ビジネス 'メソッド、ソフトウェア 開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置、あるいはこれらの 機能をコンピュータに実現するためのソフトウェア並びに該ソフトウェアを搭載した記 録媒体'専用機、などとしてもそれぞれ実現することが可能である。さらに、上記で説 明したように本発明は、方法としても、或いは力かる機能を備えるソフトウェアとしても 、該ソフトウェアが搭載される装置'ツール (ソフトウェア自体の場合も含む)としても、 さらにはシステムとしても、実現され得るのはもとよりである。
[0172] 例えば図 16は、本発明の異なる一実施形態として、「開発対象のソフトウエア」を生 産するためのプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ッ ール (装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフ トウエア開発支援装置、或いはソフトウェア開発管理装置のいずれ力として本発明を 実施する場合に機能として備える構成を示した機能ブロック図である。同図に示すよ うに、本発明に係るプログラム (ソフトウェア)、プログラム生成装置、プログラム処理装 置、ツール (装置として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装 置、ソフトウエア開発支援装置、或いはソフトウェア開発管理装置は、全体制御部 16 01、宣言情報挿入部 1602、制御関数 Φ配置部 1603、制御関数 Ψ配置部 1604及 び情報記憶部 1605を備えて構成される。
[0173] 全体制御部 1601は、本プログラム(ソフトウェア)、プログラム生成装置、プログラム 処理装置、ツール (装置として或いはソフトウェアとしての双方を含む)、ソフトウェア 開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置の全体の動 作制御、タイミング制御、入出力制御等を行う機能を有しており、当該機能を持つ専 用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア (ツールとしてのソフトウェアも含む)、或いは該ソフトウェアを記録した記録媒体、当 該記録媒体を搭載した処理装置 ·管理装置 ·ツールとして実現される。
[0174] 宣言情報挿入部 1602は、 Lyee計算法による入出力チャネルをそなえたプロセス- セルとしてモジュールィ匕された論理要素(L2、 L3、 L4)および、作用要素(12、 04、 S4)のひな型の未定義部分に、 1つのプログラムとして実装するユーザ要件を、論理 体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出 力属性、単語の値の属性力 なる宣言として情報化した情報を挿入するための機能 を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンビユー タに果たさせるためのソフトウェア(ツールとしてのソフトウェアも含む)、或いは該ソフ トウ アを記録した記録媒体、当該記録媒体を搭載した処理装置 ·管理装置 ·ツール として実現される。
[0175] 制御関数 Φ配置部 1603は、前記論理要素と作用要素を、同一画面力ものコマンド で相互作用を起こすことを集合条件とする集合単位に、 1つの制御関数モジュール Φが、制御するように関連づけるための機能を有しており、当該機能を持つ専用チッ プ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア (ツー ルとしてのソフトウェアも含む)、或いは該ソフトウェアを記録した記録媒体、当該記録 媒体を搭載した処理装置 ·管理装置 ·ツールとして実現される。
[0176] 制御関数 Ψ配置部 1604は、 1つの制御関数モジュール Ψを、前記制御関数 Φを 制御するように前記制御関数 Φに関連づけるための機能を有しており、当該機能を 持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフ トウエア(ツールとしてのソフトウェアも含む)、或いは該ソフトウェアを記録した記録媒 体、当該記録媒体を搭載した処理装置 ·管理装置 ·ツールとして実現される。
[0177] 情報記憶部 1605は、プログラム情報のほか、各種制御情報、プロセス 'セルとして モジュール化された論理要素(L2、 L3、 L4)および、作用要素(12、 04、 S4)の前記 ひな型、前記制御関数モジュール Φのひな型、前記制御関数モジュール Ψのひな 型、目的プログラム等の格納のほか、一時記憶のためのメモリとしても用いられる。 [0178] 図 17は、上記の構成を備えるプログラム (ソフトウェア)、プログラム生成装置、プロ グラム処理装置、ツール (装置として或いはソフトウェアとしての双方を含む)、ソフトゥ ア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいず れカとして実施される本発明の動作を示したフローチャートである。
[0179] 同図に示すように、まず、宣言情報挿入部 1602は、 Lyee計算法による入出力チヤ ネルをそなえたプロセス 'セルとしてモジュール化された論理要素(L2、 L3、 L4)およ び、作用要素 (12、 04、 S4)のひな型の未定義部分に、 1つのプログラムとして実装 するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定 義式の実行条件、入出力属性、単語の値の属性力 なる宣言として情報化した情報 を挿入する。(ステップ 1701)。
[0180] すると、制御関数 Φ配置部 1603は、前記論理要素と作用要素を、同一画面からの コマンドで相互作用を起こすことを集合条件とする集合単位に、 1つの制御関数モジ ユール Φ力 制御するように関連づける。 (ステップ 1702)。
[0181] 次に、制御関数 Ψ配置部 1604は、 1つの制御関数モジュール Ψを、前記制御関 数 Φを制御するように前記制御関数 Φに関連づける。(ステップ 1703)。
[0182] よって、上記のような構成を備える本発明によれば、本発明の独自の体系に基づい て要求定義をとらえ、それを本発明独自の構造を備えるプロセス 'セルとしてモジユー ル化され論理要素(L2、 L3、 L4)および、作用要素(12、 04、 S4)のひな型の未定 義部分に代入するので、所望のソフトウェアが、属人性なく得られる。
[0183] 本発明の異なる実施体としての「開発対象のソフトウェア」を生産するためのプログ ラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール (装置として或 いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援 装置、ソフトウェア開発管理装置は、 Lyee計算法による入出力チャネルをそなえたプ ロセス ·セルとしてモジュールィ匕された論理要素(L 、 L 、 L )および、作用要素(I 、
2 3 4 2
O 、 S )のひな型の未定義部分に、 1つのプログラムとして実装するユーザ要件を、
4 4
論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、 入出力属性、単語の値の属性力もなる宣言として情報化した情報を挿入する、宣言 情報挿入手段と、前記論理要素と作用要素を、同一画面からのコマンドで相互作用 を起こすことを集合条件とする集合単位に、 1つの制御関数モジュール Φを、前記単 位を制御するように関連づける、制御関数 Φ配置手段と、 1つの制御関数モジュール
Ψを、前記制御関数 Φを制御するように前記制御関数 Φに関連づける、制御関数 Ψ 配置手段とを具備するよう〖こ構成することもできる。
[0184] 本発明はさらに、上述の「開発対象のソフトウェアを生産する方法」によって生産さ れたソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトゥェ ァが搭載された装置 (ノ、一ドウエア)としても実現される力 この場合の本発明は、 1つ のプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの 、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性力 なる宣 言として情報化した情報を、 Lyee計算法による入出力チャネルをそなえたプロセス' セルとしてモジュールィ匕された論理要素 (L
2、 L
3、 L )および、作用要素 (I
4 2、 O
4、 S ) 4 のひな型の未定義部分に挿入したモジュール群と、前記モジュール群を、同一画面 力ものコマンドで相互作用を起こすことを集合条件とする集合単位に、 1つの制御関 数モジュール Φで制御するように関連づけている 1つまたは複数の制御関数モジュ ール Φと、前記制御関数 Φを、 1つの制御関数モジュール Ψで制御するように関連 づけている制御関数モジュール Ψで構成されることもできる。
[0185] またさらに本発明は、上述の「開発対象のソフトウェアを生産する方法」によってソフ トウエアを生産するために用いられるソフトウェアコードの雛型としてのソフトウェア、及 び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置
(ノヽ一ドウエア)としても実現される力 この場合の本発明は、 1つのプログラムとして実 装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該 定義式の実行条件、入出力属性、単語の値の属性力 なる宣言として情報化した情 報を、埋め込むべき未定義部分を有した、 Lyee計算法による入出力チャネルをそな えたプロセス 'セルとしてモジュールィ匕された論理要素(L
2、 L
3、 L )および、作用要 4
素 (I、 O、 S )のひな型と、前記宣言の情報を未定義部分に挿入した前記論理要素
2 4 4
と作用要素を、同一画面力 のコマンドで相互作用を起こすこと^^合条件とする集 合単位に、 1つの制御関数モジュール Φで制御するための機能を有した制御関数モ ジュール Φのひな型と、前記制御関数 Φを 1つの制御関数モジュール Ψで制御する ための機能を有した制御関数モジュール Ψのひな型とを備えるソフトウェアとしてコー ド化可能なひな型として実現してもよ 、。
[0186] さらに、本発明は、上述の「開発対象のソフトウェアを生産する方法」による、要件か ら抽出した情報 (ドキュメント (紙、データ))の抽出方法として、またかかる抽出方法に よって抽出された情報 (ドキュメント (紙、データ))として、さらには当該抽出された情 報の使用方法として、或いは、これらの情報が搭載された情報記録媒体として、また は情報の抽出方法 Ζ使用方法がコード化されたソフトウェア、当該ソフトウェアが搭 載された記録媒体 Ζ装置 (ハードウ ア)として、いずれも実現することができるが、こ の場合の本発明は、 Lyee計算法による入出力チャネルをそなえたプロセス 'セルとし てモジュール化された論理要素 (L 、 L 、 L )および、作用要素 (I 、 O 、 S )のひな
2 3 4 2 4 4 型の未定義部分に挿入すべき、 1つのプログラムとして実装するユーザ要件を、論理 体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出 力属性、単語の値の属性からなる宣言として情報化した情報と、前記宣言の情報を 未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互 作用を起こすことを集合条件とする集合単位に、 1つの制御関数モジュール Φで制 御するように関連づけるための情報と、前記制御関数 Φを 1つの制御関数モジユー ル Ψで制御するように関連づける情報とを備えるソフトウェア開発要件力 抽出した 情報として実現してもよい。
[0187] さらに本願発明は、その技術思想の同一及び等価に及ぶ範囲において様々な変 形、追加、置換、拡大、縮小等を許容するものである。また、本願発明を用いて生産 される装置、方法、ソフトウェア、システムが、その 2次的生産品に登載されて商品化 された場合であっても、本願発明の価値は何ら減ずるものではな 、。
産業上の利用可能性
[0188] 異なる分野に関連する広範囲のソフトゥ アの問題を効率的に処理し、従来の方法 論と比較した場合には、 Lyeeを使用すると開発時間、保守時間およびドキュメント量 はかなり少なくなる(70— 80%程度)。
図面の簡単な説明
[0189] [図 1]本発明の一実施形態に係るセルの概念を説明するための概念図である。 [図 2]本発明の一実施形態に係る相互に作用するプロセスの例を示す図である。
[図 3]本発明の一実施形態に係る要件の実行の概念を説明するための概念図である
[図 4]本発明の一実施形態に係る Lyeeパレットの概念を説明するための概念図であ る。
[図 5]本発明の一実施形態に係る基本構造の概念を説明するための概念図である。
[図 6]本発明の一実施形態に係る述語ベクトルの概念を説明するための概念図であ る。
[図 7]本発明の一実施形態に係る L4_aおよび L4_bの述語ベクトルの概念を説明する ための概念図である。
[図 8]本発明の一実施形態に係る L3_aおよび L3_bの述語ベクトルの概念を説明する ための概念図である。
[図 9]本発明の一実施形態に係る画面相互作用の概念を説明するための概念図で める。
[図 10]本発明の一実施形態に係る処理経路図を説明するための概念図である。
[図 11]本発明の一実施形態に係る画面が一つの場合を示す概念図である(実施例 1
) o
[図 12]本発明の一実施形態に係る Lyee計算法によるプログラム P(S )のプロセスとェ ンドユーザのプロセスを示すための説明図である。
[図 13]本発明の一実施形態に係るプロセス間の相互作用を説明するための概念図 である。
[図 14]本発明の一実施形態に係る画面が二つの場合を示す概念図である(実施例 2
) o
[図 15]本発明の一実施形態に係る Lyee計算法によるプログラム P(S )のプロセスとェ
1
ンドユーザのプロセスを示すための説明図である。
[図 16]本発明の異なる一実施形態として、「開発対象のソフトウエア」を生産するため のプログラム(ソフトウェア)、プログラム生成装置、プログラム処理装置、ツール (装置 として或いはソフトウェアとしての双方を含む)、ソフトウェア開発装置、ソフトウェア開 発支援装置、或いはソフトウエア開発管理装置のいずれかとして本発明を実施する 場合に機能として備える構成を示した機能ブロック図である。
[図 17]本発明の一実施形態に係る上記の構成を備えるプログラム (ソフトウェア)、プ ログラム生成装置、プログラム処理装置、ツール (装置として或いはソフトウェアとして の双方を含む)、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトゥェ ァ開発管理装置のいずれかとして実施される本発明の動作を示したフローチャート である。
符号の説明
W04 W04パレット
W02 W02ノ《レット
W03 W03ノ《レット
1601 全体制御部
1602 宣言情報挿入部
1603 制御関数 Φ配置部
1604 制御関数 Ψ配置部
1605 情報記憶部

Claims

請求の範囲
[1] 1つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語 ごとに、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性によ つて宣言 (規定)する第 1のステップと、
単語単位の宣言から、 Lyee計算法による入出力チャネルをそなえたプロセス ·セル としてモジュール化された論理要素 (L、 L、 L )および、作用要素 (I、 O、 S )を作
2 3 4 2 4 4 成する第 2のステップと、
前記論理要素と作用要素を、同一画面力 のコマンドで相互作用を起こすことを集 合条件とする集合に集合化する第 3のステップと、
前記集合ごとに、 1つの制御関数モジュール Φを配置する第 4のステップと、 前記プログラムに 1つの制御関数モジュール Ψを配置する第 5のステップと を具備することを特徴とするソフトウェア生成方法。
PCT/JP2004/013855 2003-09-22 2004-09-22 ソフトウェア生成方法 WO2005029323A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2005514111A JPWO2005029323A1 (ja) 2003-09-22 2004-09-22 ソフトウェア生成方法
US10/572,921 US20070250806A1 (en) 2003-09-22 2004-09-22 Software Generation Method
EP04788038A EP1693745A4 (en) 2003-09-22 2004-09-22 METHOD FOR GENERATING SOFTWARE
CA002539794A CA2539794A1 (en) 2003-09-22 2004-09-22 Software generation method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003330772 2003-09-22
JP2003-330772 2003-09-22

Publications (1)

Publication Number Publication Date
WO2005029323A1 true WO2005029323A1 (ja) 2005-03-31

Family

ID=34373029

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2004/013855 WO2005029323A1 (ja) 2003-09-22 2004-09-22 ソフトウェア生成方法

Country Status (7)

Country Link
US (1) US20070250806A1 (ja)
EP (1) EP1693745A4 (ja)
JP (1) JPWO2005029323A1 (ja)
KR (1) KR20060121880A (ja)
CN (1) CN1856769A (ja)
CA (1) CA2539794A1 (ja)
WO (1) WO2005029323A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006115229A1 (ja) * 2005-04-21 2006-11-02 Catena Corporation システム・プログラム、処理装置、記録媒体、プログラム生成支援装置、データ構造並びにプログラム作成方法
WO2007018295A1 (ja) * 2005-08-05 2007-02-15 Catena Corporation プログラム実行順序決定装置および方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7975257B2 (en) * 2006-06-13 2011-07-05 Microsoft Corporation Iterative static and dynamic software analysis
US8407728B2 (en) * 2008-06-02 2013-03-26 Microsoft Corporation Data flow network
CN102736921B (zh) * 2012-06-18 2014-10-29 阿坝师范高等专科学校 一种面向云的软件自动生成方法
CN111930350B (zh) * 2020-08-05 2024-04-09 深轻(上海)科技有限公司 一种基于计算模板的精算模型建立方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001005651A (ja) * 1999-06-21 2001-01-12 Institute Of Computer Based Software Methodology & Technology ソフトウェアの決定方法、ソフトウェアの使用方法、記録媒体、処理装置、ソフトウェアの保守方法、ソフトウェアの移植方法、ソフトウェアの管理方法、処理経路図の作成方法、パレット関数の作成方法、パレットの領域の決定方法、パレット連鎖関数の作成方法、位相要素の作成方法、論理要素の作成方法、作用要素の作成方法、ソフトウェアの実装方法、ソフトウェア開発方法、データ構造の置換方法、データ値の置換方法、従来型プログラムの分析方法、ソフトウェア開発管理方法、ソフトウェアの運用管理方法、並列コンピュータ及び判断補助装置
WO2001035213A1 (fr) * 1999-11-11 2001-05-17 Information System Development Institute Procede et dispositif de reproduction de programme, et support de programme pour enregistrement de reproduction de programme
JP2002312167A (ja) * 2001-04-13 2002-10-25 Fujitsu Ltd 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532586B1 (en) * 1995-10-30 2003-03-11 Information System Development Institute Software producing method, processor, processing method and recording medium
KR100303946B1 (ko) * 1995-10-30 2001-11-22 후미오 네고로 소프트웨어의생산방법및처리장치
WO1999049387A1 (fr) * 1998-03-20 1999-09-30 Information System Development Institute Dispositif et procede servant a produire un logiciel
US6292938B1 (en) * 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
US7100164B1 (en) * 2000-01-06 2006-08-29 Synopsys, Inc. Method and apparatus for converting a concurrent control flow graph into a sequential control flow graph
US7299458B2 (en) * 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
JPWO2004068342A1 (ja) * 2003-01-28 2006-05-25 カテナ株式会社 ソフトウェア開発前処理方法、ソフトウェア制御方法、ソフトウェア開発方法並びにソフトウェア開発装置
KR20050118177A (ko) * 2003-03-10 2005-12-15 카테나 가부시키가이샤 Lyee지향 소프트웨어에 관한 정적(靜的)분석방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001005651A (ja) * 1999-06-21 2001-01-12 Institute Of Computer Based Software Methodology & Technology ソフトウェアの決定方法、ソフトウェアの使用方法、記録媒体、処理装置、ソフトウェアの保守方法、ソフトウェアの移植方法、ソフトウェアの管理方法、処理経路図の作成方法、パレット関数の作成方法、パレットの領域の決定方法、パレット連鎖関数の作成方法、位相要素の作成方法、論理要素の作成方法、作用要素の作成方法、ソフトウェアの実装方法、ソフトウェア開発方法、データ構造の置換方法、データ値の置換方法、従来型プログラムの分析方法、ソフトウェア開発管理方法、ソフトウェアの運用管理方法、並列コンピュータ及び判断補助装置
WO2001035213A1 (fr) * 1999-11-11 2001-05-17 Information System Development Institute Procede et dispositif de reproduction de programme, et support de programme pour enregistrement de reproduction de programme
JP2002312167A (ja) * 2001-04-13 2002-10-25 Fujitsu Ltd 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Lyee update <2003.january>", SOFTWARE SEISAN GIJUTSU KENKYUJO, 30 January 2003 (2003-01-30), XP002996988, Retrieved from the Internet <URL:http://www.lyee.co.jp/jp/lyeeupdate/docs/vol10041yeeupdate.pdf> [retrieved on 20041213] *
See also references of EP1693745A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006115229A1 (ja) * 2005-04-21 2006-11-02 Catena Corporation システム・プログラム、処理装置、記録媒体、プログラム生成支援装置、データ構造並びにプログラム作成方法
WO2007018295A1 (ja) * 2005-08-05 2007-02-15 Catena Corporation プログラム実行順序決定装置および方法

Also Published As

Publication number Publication date
EP1693745A4 (en) 2007-03-07
CN1856769A (zh) 2006-11-01
EP1693745A1 (en) 2006-08-23
US20070250806A1 (en) 2007-10-25
CA2539794A1 (en) 2005-03-31
JPWO2005029323A1 (ja) 2007-11-15
KR20060121880A (ko) 2006-11-29

Similar Documents

Publication Publication Date Title
Brady Idris 2: Quantitative type theory in practice
Reichwein et al. Overview of architecture frameworks and modeling languages for model-based systems engineering
Volter From programming to modeling-and back again
Esche et al. MOSAIC–Enabling Large‐Scale Equation‐Based Flow Sheet Optimization
CN115562629A (zh) 一种rpa流程表示方法、系统、装置及存储介质
Vasic et al. CRNs exposed: Systematic exploration of chemical reaction networks
CN102541614A (zh) 基于代码分析的计算模块输入输出数据自动解析方法
WO2005029323A1 (ja) ソフトウェア生成方法
Prähofer et al. Monaco—a domain-specific language solution for reactive process control programming with hierarchical components
Di Martino et al. Parallel program analysis and restructuring by detection of point-to-point interaction patterns and their transformation into collective communication constructs
Changjing et al. Nonlinear program construction and verification method based on partition recursion and Morgan's refinement rules
Khriss et al. Automatic synthesis of behavioral object specifications from scenarios
Sonntag et al. On the connection of equation-and automata-based languages: Transforming the Compositional Interchange Format to Modelica
Posa Scala Reactive Programming: Build scalable, functional reactive microservices with Akka, Play, and Lagom
Joncheere et al. A framework for advanced modularization and data flow in workflow systems
Sosík et al. Tissue P systems with cell separation: upper bound by PSPACE
Heiner et al. A case study in developing control software of manufacturing systems with hierarchical Petri nets
Djaaboub et al. Generating verifiable LOTOS specifications from UML models: a graph transformation-based approach
Arcile et al. Indefinite waitings in MIRELA systems
Loidl Trends in Functional Programming: Volume 5
Pfeiffer et al. Tengi interfaces for tracing between heterogeneous components
Diekert et al. Trace Theory.
Thom et al. JADE
Lajmi et al. A multi-view model-driven approach for packaging software components
Furia et al. Integrated Formal Methods: 14th International Conference, IFM 2018, Maynooth, Ireland, September 5-7, 2018, Proceedings

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200480027287.1

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BW BY BZ CA CH CN CO CR CU CZ DK DM DZ EC EE EG ES FI GB GD GE GM HR HU ID IL IN IS JP KE KG KP KZ LC LK LR LS LT LU LV MA MD MK MN MW MX MZ NA NI NO NZ PG PH PL PT RO RU SC SD SE SG SK SY TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GM KE LS MW MZ NA SD SZ TZ UG ZM ZW AM AZ BY KG MD RU TJ TM AT BE BG CH CY DE DK EE ES FI FR GB GR HU IE IT MC NL PL PT RO SE SI SK TR BF CF CG CI CM GA GN GQ GW ML MR SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2005514111

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 1020067005479

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 2539794

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 2004788038

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2004788038

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020067005479

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 10572921

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 10572921

Country of ref document: US

WWW Wipo information: withdrawn in national office

Ref document number: 2004788038

Country of ref document: EP