(57)【要約】      （修正有）【課題】Lyee方法論及びプロセス代数理論に基づき、要件定義、開発対象のソフトウェアが動く環境や開発言語に依存しないソフトウェア構造の必須要素となる要件を単語単位に捉える宣言、宣言に基づく各ベクトル及び関数のコード生成をグラフィカル・ユーザ・インターフェース（GUI）環境のもとで支援する統合開発環境、具体的にはソフトウェア開発用コード生成ツールを提供すること。【解決手段】本発明は、所望のアプリケーション・ソフトウェアが有するユーザ・インターフェースに属する単語ごとにプロパティを宣言してLyeeBELT情報を規定し、かかるLyeeBELT情報をLyee理論に係る各ベクトル及び関数に展開することでコードを得るアプリケーション・ソフトウェア開発方法に用いるためのものである。【選択図】図１７
2006318318.tif 000002
【特許請求の範囲】
【請求項１】
所望のアプリケーション・ソフトウェアが有するユーザ・インターフェースに属する単語ごとにプロパティを宣言してLyeeBELT情報を規定し、かかるLyeeBELT情報をLyee理論に係る各ベクトル及び関数に展開することでコードを得るアプリケーション・ソフトウェア開発方法に用いるためのものであって、Eclipse（商標）であってもよい統合開発環境ツールにプラグインされるソフトウェア開発用コード生成ツールにおいて、
所望のアプリケーション・ソフトウェアに係るユーザ・インターフェース（画面を含む）を規定し該インターフェース上の単語及び該単語のプロパティを規定するためのグラフィカル・ユーザ・インターフェース機能と、
前記グラフィカル・ユーザ・インターフェース機能において入力定義された情報をもとに、前記Lyee理論に係る各ベクトル及び関数をプロセスと捉えてクラスとしてコーディングするソース生成機能と、
前記グラフィカル・ユーザ・インターフェース機能において入力定義された情報をもとにデータベース生成を行うデータベース生成機能と
を具備することを特徴とするソフトウェア開発用コード生成ツール。
【請求項２】
請求項１記載のソフトウェア開発用コード生成ツールにおいて、前記グラフィカル・ユーザ・インターフェース機能は、
前記アプリケーション・ソフトウェアに係るインターフェース（フレーム）を作成するためのフレームデザイナ及びコードの表示・編集を行うためのコードエディタを有するメインウィンドウと、
前記メインウィンドウで規定される単語（テキストボックス、ボタンボックスを含む）に応じてプロパティを規定するためのプロパティ・ウィンドウと、
前記メインウィンドウへの入力の便宜を与えるためのパレット・ウィンドウと
を少なくとも有することを特徴とするソフトウェア開発用コード生成ツール。
【請求項３】
請求項２記載のソフトウェア開発用コード生成ツールにおいて、前記プロパティ・ウィンドウは、大きさ、位置、色を少なくとも規定する書誌的プロパティに加えてLyeeプロパティを有し、該Lyeeプロパティは、単語の定義式、定義式実行条件、入出力属性、セキュリティに係る属性を少なくとも備えることを特徴とするソフトウェア開発用コード生成ツール。
【請求項４】
請求項１乃至３のいずれか１項記載のソフトウェア開発用コード生成ツールを用いて、要求仕様の具体化、画面設計、コーディングを行う第1のステップと、
前記第1のステップで得られるコードに対しコンパイルを行う第２のステップと
を具備することを特徴とするソフトウェア生成方法。
【請求項５】
請求項１乃至３のいずれか１項記載のソフトウェア開発用コード生成ツールを用いて、要求仕様の具体化、画面設計、コーディングを行うことによって得られるソフトウェア・コード。
【請求項６】
請求項４項記載のソフトウェア生成方法を実施することによって得られ、Ｊａｖａクラスの一であるスケジューラによって実行されることを特徴とするソフトウェア・コード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発用コード生成ツール、ソフトウェア生成方法、ソフトウェア・コードに係り、特に、Ｌｙｅｅ方法論及びプロセス代数理論を用いたソフトウェア開発用コード生成ツール、ソフトウェア生成方法、ソフトウェア・コードに関する。
【背景技術】
【０００２】
高い品質を持つソフトウェアを容易に迅速に製造することは、ソフトウェア開発研究分野での基本的な関心事である。ここ数年間にわたって、ソフトウェア開発のライフサイクルに関連する１つまたは多くの局面を改善するために、種々の方法論および技術が考案され、提案されてきた。
【０００３】
しかし、この研究分野における熱心な努力にもかかわらず、明確に理解でき、修正可能なシステムの製造は、困難な目標であり達成にはほど遠い。最近、Ｌｙｅｅ（ｇｏｖｅｒｎｍｅｎｔａＬ  ｍｅｔｈｏｄｏｌｏｇＹ  ｆｏｒ  ｓｏｆｔｗａｒＥ  ｐｒｏｖｉｄｅｎｃＥ）という新規で非常に有望な方法論が提案された。異なる分野に関する広い範囲のソフトウェアの問題を効率的に処理することを目的としたＬｙｅｅにより、単にその要件を定義するだけで、ソフトウェアを開発することができるようになった。もっと正確にいえば、開発者は、単語、計算式、計算条件（前提条件）、画面および帳票のレイアウトを与えさえすれば、後は、コンピュータが以降のすべての面倒なプログラミング・プロセス（例えば、種々の制御ロジックの局面）を行ってくれる。
【特許文献１】国際公開第９７／１６７８４号パンフレット
【特許文献２】国際公開第９８／１９２３２号パンフレット
【特許文献３】国際公開第９９／４９３８７号パンフレット
【特許文献４】国際公開第００／７９３８５号パンフレット
【特許文献５】国際公開第０２／４２９０４号パンフレット
【特許文献６】特開２００２−２０２８８３号公報
【特許文献７】国際公開第２００４／８１７８８号パンフレット
【非特許文献１】ジェイ・エイ・ベルグストゥラ、ジェイ・ダブリュ・クロップ（J.A. Bergstra andJ. W. Klop）著、「抽象化を用いたコミュニケーション・プロセスの代数」、１９８５年，理論コンピュータ科学、３７（１）、ｐ．７７―１２１
【非特許文献２】シー・エー・アール・ホーア（C.A.R.Hoare）著、「コミュニケーティング順次プロセス」、プレンティス・ホールコンピュータ科学国際シリーズ、プレンティス・ホール出版、１９８５年
【非特許文献３】エム・メジリ、ビー・クタリ、エム・アーヒオウイ（M.Mejri, B.Ktari, andM.Erhioui）著、「Lyee指向ソフトウェアについての静的分析」、パリにおけるLyee方法論に関する第１回国際ワークショップ予稿集、ハミド・藤田、ポウル・ジョナネッセン編「ソフトウェア方法論、ツール及び技術における新潮流」ｐ．３７５―３９４、アイオーエス出版、２００２年
【非特許文献４】エム・メジリ、ビー・クタリ、エイチ・フジタ（M.Mejri, B.Ktari, andH.Fujita）著、「Lyee計算法：Ｌｙｅｅ方法論の形式化」、スウェーデン、ストックホルムにおけるLyee方法論に関する第２回国際ワークショップ予稿集、ハミド・藤田、ポウル・ジョナネッセン編「ソフトウェア方法論、ツール及び技術における新潮流」ｐ．２３５―２６１、アイオーエス出版、２００３年９月
【非特許文献５】アール・ミルナー（R.Milner）著、「コミュニケーション・システムの計算法」、コンピュータ科学９２講義録、ベルリン、１９８０年、スプリンガー・フェアラーク出版
【非特許文献６】根来文生著、「Ｌｙｅｅソフトウェアの原理」、２１世紀の情報科学についての国際会議２０００（IS2000）、ｐ．１２１―１８９、２０００年１１月
【非特許文献７】根来文生著、「Ｌｙｅｅ入門」、ソフトウェア生産技術研究所、東京、日本、２００１年
【非特許文献８】根来文生、アイ・ハミド（I.Hamid）著、「意思工学の提案」、データベースと情報システムに関する第５回東ヨーロッパ会議研究（ＡＤＢＩＳ’２００１）、２０００年９月
【非特許文献９】根来文生、アイ・ハミド（I.Hamid）著、「意思工学の提案」、インターネット上の電子商取引、科学及び教育の基盤における進歩に関する国際会議（ＳＳＧＲＲ２００１）、２００１年
【非特許文献１０】ピーター・ウェルチ（Peter Welch）著、「Ｊａｖａ（商標）の通信順序プロセス（ＪＣＳＰ）」、ｈｔｔｐ：／／ｗｗｗ．ｃｓ．ｋｅｎｔ．ａｃ．ｕｋ／ｐｒｏｊｅｃｔｓ／ｏｆａ／ｊｃｓｐ／、２００４年
【非特許文献１１】マシュウ・ウォイタスゼック（Matthew Woitaszek）著、「Ｏｃｃａｍ入門」、ｈｔｔｐ：／／ｗｗｗ．ｃｓ．ｒｉｔ．ｅｄｕ／〜ｍｓｗ４５８５／ｏｃｃａｍ／、２００４年
【非特許文献１２】根来  文生著、「Lyeeの仮説的世界」、システミクス、サイバネティクス及びインフォマティクスについての第５回世界多極会議会報、（SCI2001 ）、米国、オーランド、２００１年７月２２日-２５日
【非特許文献１３】SergeiGorlatch, “The Lyee Programming Model:Analysis and Correctness in a Fixed-Point Setting”, In H. Fujita and P. Johanesson,editor, New Trends in Software Methodologies-2, Tools and Techniques, pages214-224, IOS Press, 2003
【非特許文献１４】M.Mejri, B. Ktari and M. Erhioui. Static analysis on Lyee oriented software. InH. Fujita and P. Johanesson, editor, New Trends in Software Methodologies,Tools and Techniques, pages 375-394, IOS Press,2002
【非特許文献１５】M.Dincbas, P. Van Hentenryck, H. Simonis, A. Aggoun, T. Graf, F. Berthier, TheContraint Logic Programming language CHIP, Proc. Of the InternationalConference on Fifth Generation Computer Systems 1988, pp 693-702, 1988
【非特許文献１６】J.Jaffer,JLassez and M.J.Maher, Some Issues and Trend in theSemantics of LogicProgramming, Third Internal Conference on Logic Programming, Lecture Notes inComputer Science-225, Springer-Verlag, 1986
【非特許文献１７】G.J.Sussmanand G. L. Steele, CONSTRAINTS, A Language for Expressing Almost-HierarchicalDescriptions, Artifical Intelligence 14(1), pp. 1-39,1980
【非特許文献１８】QueinsS, Zimmermann G, Becker M, Kronenburg M, Peper C, Merz R, Schafer J: “The LightControl Case Study”: Program Description, J.UCS, Special Issue on RequirementsEngineering, Volume 6 Issue 7 July 28, 2000
【発明の開示】
【発明が解決しようとする課題】
【０００４】
その新しさにもかかわらず、Ｌｙｅｅの使用結果は、Ｌｙｅｅに優れた可能性があることを示している。しかしながら、要件からのソフトウェアの自動生成プロセスも、生成されたＬｙｅｅソフトウェアの意味論も、形式的でない言語によって記述されているために、この方法論を理解し、研究しようとすると、困難に遭遇し、混乱が生じる恐れがあった。
【０００５】
本発明は上記の従来技術の問題を解決するためになされたもので、Ｌｙｅｅ方法論による設計をより的確に実行するための方法論を提供することを目的とする。
【０００６】
より具体的には、Lyee方法論及びプロセス代数理論に基づき、要件定義、開発対象のソフトウェアが動く環境や開発言語に依存しないソフトウェア構造の必須要素となる要件を単語単位に捉える宣言、宣言に基づく各ベクトル及び関数のコード生成をグラフィカル・ユーザ・インターフェース（GUI）環境のもとで支援する統合開発環境、具体的にはソフトウェア開発用コード生成ツールを提供することをその目的とする。
【０００７】
さらには、かかる統合開発環境の提供を通じて、より効率的なソフトウェア開発を行うことのできるソフトウェア生成方法を提供することをその目的とする。
【０００８】
またさらに、かかる統合開発環境の提供及び／またはソフトウェア生成方法の提供を通じて、メンテナンスに手間が不要となるソフトウェア・コードを提供することをその目的とする。
【課題を解決するための手段】
【０００９】
かかる課題を解決するため、本発明は、所望のアプリケーション・ソフトウェアが有するユーザ・インターフェースに属する単語ごとにプロパティを宣言してLyeeBELT情報を規定し、かかるLyeeBELT情報をLyee理論に係る各ベクトル及び関数に展開することでコードを得るアプリケーション・ソフトウェア開発方法に用いるためのものであって、Eclipse（商標）であってもよい統合開発環境ツールにプラグインされるソフトウェア開発用コード生成ツールにおいて、所望のアプリケーション・ソフトウェアに係るユーザ・インターフェース（画面を含む）を規定し該インターフェース上の単語及び該単語のプロパティを規定するためのグラフィカル・ユーザ・インターフェース機能と、前記グラフィカル・ユーザ・インターフェース機能において入力定義された情報をもとに、前記Lyee理論に係る各ベクトル及び関数をプロセスと捉えてクラスとしてコーディングするソース生成機能と、前記グラフィカル・ユーザ・インターフェース機能において入力定義された情報をもとにデータベース生成を行うデータベース生成機能とを具備する。
【００１０】
かかる構成を備える本発明によれば、本願発明に係るソフトウェア開発用コード生成ツールは、制御ロジックなしで、定義（ソフトウェアを生産するために必要とする情報の最小の量であるLyeeBELT情報）のみを必要とするLyee方法論に則っているので、ソフトウェア生産の高速化が実現される。
【００１１】
また、上記の構成を備える本願によれば、従来のＣｏｍｍｕｎｉｃａｔｉｎｇ  Ｓｅｑｕｅｎｔｉａｌ  Ｐｒｏｃｅｓｓ（ＣＳＰ）を元にしてＣＳＰにないプロセスを定義してＬｙｅｅ計算法（Ｌｙｅｅ
Ｃｌａｃｕｌｕｓ：ＬＣ）を定義し、ＪＣＳＰ（Ｊａｖａ版ＣＳＰ）を利用しつつＬｙｅｅ固有の点を採り入れたＪａｖａ版ＬＣ（ＪＬＣ）を作成し、プログラムを並列に動くプロセスの並行としてとらえるプロセス代数理論を踏襲しつつＬｙｅｅ方法論に則ったプログラムの単位をプロセスとして捉えてコード化がなされ、オブジェクトコードの実行の際には、ＬＣＳＰのスケジューラをそのまま利用することで、プロセス間の通信はチャネルの指定のみによって行い（全プロセスが並行で指定チャネル上の値の受信を待つのみ）、スケジューラが実行をコントロールするため、プログラミングに際し実行順序即ち制御ロジックの特定が不要となる。
【００１２】
さらに、上記の構成を備える本願によれば、ユーザが、ユーザ・インターフェース（画面を含む）を規定し該インターフェース上の単語及び該単語のプロパティに係るLyeeBELT情報を入力定義するにあたって、Eclipse（商標）等の統合開発環境ツールにプラグインされるグラフィカル・ユーザ・インターフェース環境においてでき、プログラムもＧＵＩと同じプロパティで記述（メタ言語）できることから、操作性、習得容易性が実現され、ユーザーフレンドリーな（学び易く、使用しやすい）環境が実現される。
【００１３】
本発明は、上記のソフトウェア開発用コード生成ツールにおいて、前記グラフィカル・ユーザ・インターフェース機能は、前記アプリケーション・ソフトウェアに係るインターフェース（フレーム）を作成するためのフレームデザイナ及びコードの表示・編集を行うためのコードエディタを有するメインウィンドウと、前記メインウィンドウで規定される単語（テキストボックス、ボタンボックスを含む）に応じてプロパティを規定するためのプロパティ・ウィンドウと、前記メインウィンドウへの入力の便宜を与えるためのパレット・ウィンドウとを少なくとも有するように構成しても良い。
【００１４】
かかる構成を持たせることで、グラフィカル・ユーザ・インターフェース性能がさらに向上し、操作性、習得容易性、ユーザーフレンドリー性（学び易く、使用しやすい）がさらに向上する。
【００１５】
また本発明では、上記ソフトウェア開発用コード生成ツールにおいて、前記プロパティ・ウィンドウは、大きさ、位置、色を少なくとも規定する書誌的プロパティに加えてLyeeプロパティを有し、該Lyeeプロパティは、単語の定義式、定義式実行条件、入出力属性、セキュリティに係る属性を少なくとも備えるように構成しても良い。
【００１６】
かかる構成を持たせることで、Ｌｙｅｅ方法論を理論的に実装でき、制御ロジックなしで、ソフトウェアを生産するために必要とする情報の最小の量であるLyeeBELT情報をメタ言語で宣言するのみでコードの自動生成がなされることから、ソフトウェア開発に関し、生産性、保守性、プログラム効率、移植性、その他の各点において飛躍的な向上が実現される。
【００１７】
さらに本発明では、上記のいずれかの構成を備えるソフトウェア開発用コード生成ツールを用いて、要求仕様の具体化、画面設計、コーディングを行う第1のステップと、前記第1のステップで得られるコードに対しコンパイルを行う第２のステップとを具備するように構成しても良い。
【００１８】
かかる構成を備えることで、このステップによって生成されるコードは、制御ロジックなしで、定義（ソフトウェアを生産するために必要とする情報の最小の量であるLyeeBELT情報）のみを必要とするLyee方法論に則っているので、生産性、保守性、プログラム効率、移植性の極めて高度のものとなる。
【００１９】
また、かかる構成を備えることで、従来のＣｏｍｍｕｎｉｃａｔｉｎｇ  Ｓｅｑｕｅｎｔｉａｌ  Ｐｒｏｃｅｓｓ（ＣＳＰ）を元にしてＣＳＰにないプロセスを定義してＬｙｅｅ計算法（Ｌｙｅｅ
Ｃｌａｃｕｌｕｓ：ＬＣ）を定義し、ＪＣＳＰ（Ｊａｖａ版ＣＳＰ）を利用しつつＬｙｅｅ固有の点を採り入れたＪａｖａ版ＬＣ（ＪＬＣ）を作成し、プログラムを並列に動くプロセスの並行としてとらえるプロセス代数理論を踏襲しつつＬｙｅｅ方法論に則ったプログラムの単位をプロセスとして捉えてコード化がなされ、オブジェクトコードの実行の際には、ＬＣＳＰのスケジューラをそのまま利用することで、プロセス間の通信はチャネルの指定のみによって行い（全プロセスが並行で指定チャネル上の値の受信を待つのみ）、スケジューラが実行をコントロールするため、プログラミングに際し実行順序即ち制御ロジックの特定が不要となることから、かかる生成方法は生産性、信頼性、効率性の極めて高いものとなる。
【００２０】
また本発明では、上記のいずれかの構成を備えるソフトウェア開発用コード生成ツールを用いて、要求仕様の具体化、画面設計、コーディングを行うことによって得られるソフトウェア・コードとして実現することもできる。
【００２１】
かかる構成を備えるコードは、制御ロジックなしで、定義（ソフトウェアを生産するために必要とする情報の最小の量であるLyeeBELT情報）のみを必要とするLyee方法論に則っているので、生産性、保守性、プログラム効率、移植性の極めて高度のものとなる。
【００２２】
さらに本発明では、上記のいずれかの構成を備えるソフトウェア生成方法を実施することによって得られ、Ｊａｖａクラスの一であるスケジューラによって実行されることを特徴とするソフトウェア・コードとして実現することもできる。
【００２３】
かかる構成によれば、従来のＣｏｍｍｕｎｉｃａｔｉｎｇ  Ｓｅｑｕｅｎｔｉａｌ  Ｐｒｏｃｅｓｓ（ＣＳＰ）を元にしてＣＳＰにないプロセスを定義してＬｙｅｅ計算法（Ｌｙｅｅ
Ｃｌａｃｕｌｕｓ：ＬＣ）を定義し、ＪＣＳＰ（Ｊａｖａ版ＣＳＰ）を利用しつつＬｙｅｅ固有の点を採り入れたＪａｖａ版ＬＣ（ＪＬＣ）を作成し、プログラムを並列に動くプロセスの並行としてとらえるプロセス代数理論を踏襲しつつＬｙｅｅ方法論に則ったプログラムの単位をプロセスとして捉えてコード化がなされ、オブジェクトコードの実行の際には、ＬＣＳＰのスケジューラをそのまま利用することで、プロセス間の通信はチャネルの指定のみによって行い（全プロセスが並行で指定チャネル上の値の受信を待つのみ）、スケジューラが実行をコントロールするため、プログラミングに際し実行順序即ち制御ロジックの特定が不要となることから、コードに制御ロジックが混入せず、したがって、保守性、設計変更容易性、柔軟性の極めて高い（オブジェクト）コードが実現される。
【発明の効果】
【００２４】
本発明によれば、外部設計情報からプログラムコードを自動生成するすることで、手法としてより使いやすく、生産性向上、プログラムの品質向上が可能となる。より具体的には、次のことが可能となる。
１  処理経路図（PRD）の作成が不要になる。
２  要件のエラーチェックと最適化（要件の静的分析）が可能となる。
３  プログラム構造がより小さくなり、より速い処理速度が実現される。
４  プログラムの並列化が可能となる（複数マシン上での分散処理が可能）。
【発明の基盤】
【００２５】
次に、本発明の基盤（前提）となる「Lyee方法論」、「プロセス代数」、「ＪＣＳＰ（Ｊａｖａ  Ｃｏｍｍｕｎｉｃａｔｉｎｇ  Ｓｅｑｕｅｎｔｉａｌ  Ｐｒｏｃｅｓｓ）」の概要について説明する。これらの詳細は、上記の特許文献１乃至７及び非特許文献１乃至１８、さらにＰＣＴ／ＪＰ２００４／１３８５５（国際出願日：２００４年９月２２日）、特願２００３−３２８７６２（出願日：平成１５年９月１９日）、特願２００３−３３０７７２（出願日：平成１５年９月２２日）、特願２００４−２０７８７８（出願日：平成１６年７月１４日）、特願２００４−２８０５５８（出願日：平成１６年９月２７日）によるものとし、これら記載及び開示の事項はここに引用し、本願発明の一部を形成するものとする。
（１）＜形式的プロセス代数：Lyee計算法＞
プロセス代数は、プロセスの実行を記述する方法に係る。
【００２６】
プロセス代数は、複雑なコンピュータ・システム、特に、通信し、平行に実行するコンポーネントを含むコンピュータ・システムのための形式的記述技術である（非特許文献１、２、５参照）。プロセス代数は、通常、文献で計算法（calculus）と呼ばれる。何故なら、プロセス代数は、プロセス代数の分野を超えて、種々の数学的および論理的概念（平行性理論(concurrency
theory)、動作意味論(operational semantics）、複雑性理論（complexity theory）、ロジック等）を含んでいるからである。
【００２７】
このセクションにおいては、Ｌｙｅｅ方法論を形式化するために特に定義したＬｙｅｅ計算法と呼ぶ新しい計算法の構文法および意味論について説明する。
（１．１）  構文法（Syntax）
Ｌｙｅｅ計算法プログラムは、指定されたチャネル上でハンドシェイク技術（hand-shake
technique：２つのプロセスの一方を受信可能状態に、他方を送信可能状態におくことによって通信させる技術）により通信（communicate）する独立した並行プロセスからなるシステムである。チャネルは、その上では特定のプロセスだけが通信することができるように制限できる。あるプロセスは、作用［i！ｅ］を行うことにより、チャネルiを通して値uを送ることができる（uは、式ｅの計算結果 (valuation)）。同様に、あるプロセスは、作用［i？ｅ］を行うことにより、チャネルiから式ｅの値を受信することができる。
【００２８】
あるプロセスは、また、不作用作用（silent action）τを行うこともできる。この特別な作用は、プロセス間の同期（synchronization：プロセス間通信において、あるプロセスが値などを送信したと同時に、他のプロセスがそれを受信すること）のような、システム内部のふるまい（internal
behavior）を表わすことを意図している。また、プロセスの進展における予見不能性（indeterminism）、すなわち、複数のプロセスの選択肢があってどのプロセスが実行されるか予測できないような場合（後述のプロセス構文法定義１の「選択」の説明を参照）、を捉えるために有益である。
【００２９】
プロセスの構文法（syntax）を以下に定義する。
＜構文法１＞
【００３０】
【数１】
2006318318.tif 000003
＜構文法２＞
K, K1, K2  ::=  {κ}｜K1
∪ K2
＜構文法３＞
【００３１】
【数２】
2006318318.tif 000004
＜構文法４＞
κ::= i!e｜i?e｜τ｜
上記の構文法に使われる記号の意味と、構文法の意味は下記のとおりである。
＜構文法１＞
【００３２】
【表１】
2006318318.tif 000005
構文法１の意味は次のとおりである。すなわち、プロセスPとQがあったとき、その関係や内容は、以下のいずれかとして定義される。すなわち、シーケンス（[K].P）、並行構成（P | Q）、選択（P
+ Q）、条件付き選択（P>Q）、制限（P/
L）、定義、無プロセス（nil）、のいずれかである。ここで、定義とは、
【００３３】
【数３】
2006318318.tif 000006
のことで、記号の左辺は、右辺によって定義される。
【００３４】
各構文の解釈については後述する。
＜構文法２＞
【００３５】
【表２】
2006318318.tif 000007
構文法２の直感的意味は次のとおりである。すなわち、作用の集合K、K1、K2があるとき、その作用の集合は、１つの作用を要素とする集合（{κ}）、作用集合が結合した集合（K1 ∪ K2）、のいずれかである。
＜構文法３＞
【００３６】
【表３】
2006318318.tif 000008
構文法３の直感的意味は、次のとおりである。すなわち、チャネルの集合L, L1,
L2があるとき、そのチャネルの集合は、要素を持たない空集合（0）、１つのチャネルだけを要素とする集合（{i}）、チャネルの集合が結合した集合（L1∪L2）、のいずれかである。
＜構文法４＞
【００３７】
【表４】
2006318318.tif 000009
構文法４の直感的意味は、次のとおりである。すなわち、作用κがあるとき、その作用は、チャネルi上で式eの計算結果の値を送信する送信作用（i!e）、チャネルi上で式eの値を受信する受信作用（i?e）、不作用作用（τ）、のいずれかである。
【００３８】
構文法１に定義した、構文法の意味を詳しく説明する。
１）[K].P：シーケンス（Sequence）
プロセス[K].Pは、作用の集合であるＫに属す全ての作用（action）、すなわち｛κ１，．．．，κｎ｝、を実行した後にPとしてふるまうプロセスである。Ｋに属する作用を実行する順序は重要ではない。ここでは、説明を簡単にするために、［｛κ１，．．．，κｎ｝］と書く代わりに［κ１，．．．，κｎ］と書く。
２）Ｐ｜Ｑ：並行構成（Parallel composition）
プロセスＰ｜Ｑは、並行に実行されるプロセスＰおよびＱとしてふるまう。各プロセスは、両方が知っているチャネル上で互いに相互作用することができるし、または各プロセスが他方から独立して外部世界（システムの環境またはエンドユーザ）と相互作用（interact）することもできる。同じチャネル上で２つのプロセスが同期する（synchronize：プロセス間通信において、あるプロセスが値などを送信したと同時に、他のプロセスがそれを受信する）と、プロセス全体は、作用τ（不作用作用）を実行し、その後、残りのプロセスとしてふるまう。具体的に、下記のプロセスの例で考えてみる。
【００３９】
Ｐ＝Ｐ１｜Ｐ２
Ｐ１およびＰ２を下記のように定義する。
【００４０】
【数４】
2006318318.tif 000010
上記式の直感的意味は、次のようになる。すなわち、Ｐ１は、値４をチャネルi上に送信し、その後は、プロセスP1’としてふるまうプロセスである。 Ｐ２は、チャネルi上に式ｘの値が与えられるのを待って、値が与えられたら受信し、その後は、プロセスP2’としてふるまうプロセスである。
従って、プロセスＰは、プロセスＰ１とＰ２が同期したとき（それは実際にはＰ１からの値４の送信と同時にＰ２による受信が行われることによる）、不作用作用τを実行し、その後は、残りのプロセスＰ１’｜Ｐ２’としてふるまう。意味論上、この遷移を下記のように表わす。
【００４１】
【数５】
2006318318.tif 000011
この式の直感的意味は、プロセスPにおける相互作用の結果、不作用作用τが実行され、プロセス全体が、並行プロセスP1’｜P2’に移行する、ということである。
【００４２】
関係
【００４３】
【数６】
2006318318.tif 000012
の形式的定義はこのセクションの後の方で示す。
３）Ｐ＋Ｑ：選択（Choice）
プロセスＰ＋Ｑは、プロセスＰまたはＱとしてふるまうプロセスである。ＰおよびＱのどちらもが、始まりが不作用作用であるような場合を除いて、どちらのプロセスが実行されるかの選択は、環境によって決定論的に決まる。一方、両方のプロセスが不作用作用で開始する場合には、選択は決定されない。
４）Ｐ>Ｑ：条件付き選択（Guarded choice）：
プロセスＰ>Ｑは、プロセスＱが活性化（activated）されるまで、Ｐとしてふるまうプロセスである。後者Ｑが活性化されたときはいつでも、Ｐは停止し、メモリからクリアされる。
５）Ｐ/Ｌ：制限（Restriction）
プロセスＰ/Ｌは、チャネルの集合Ｌに与えられたチャネルだけを使って環境と通信することができるプロセスＰ、としてふるまうプロセスである。
６）数３の記号：定義（Definition）
たとえば、数３の記号によって、下式のような定義ができる。
【００４４】
【数７】
2006318318.tif 000013
数７の式において、Ａはプロセスの識別名、
【００４５】
【数８】
2006318318.tif 000014
はプロセスＡの変数（パラメータ）で、左辺のプロセスは、右辺のプロセスＰに等しいと定義されている。プロセスＰは再起的にＡを含むことができる。
７）nil：無プロセス（nil process）：
どんな作用も実行できないプロセス、いいかえると終了しているプロセス（dead process）である。あるプロセスが終了すると、通常ｎｉｌプロセスになる。終了してｎｉｌプロセスになったとき、そのプロセスはもはや起動して（activated）いないので、作用を実行する条件が整ったとしても、何の作用も実行できない。
（１．２）値を保持するプロセスのモデル化
このセクションにおいては、メモリという、値を保持するセル（cell）を、その通信チャネルを通して、その環境と相互作用を行うプロセスとしてモデル化する方法について説明する。図１に示すように、メモリ・セルは通信のための２つのポート（チャネル）ｉｎおよびｏｕｔを持つものと見なす。このメモリ・セルの基本的なタスクは、チャネルｉｎ上で値を無制限に待つことであり、チャネルｏｕｔ上でその値を利用可能にすることである。メモリ・セルは、新しい値がチャネルｉｎに入力されるまで、同じ値を必要な回数だけチャネルｏｕｔに出力することができる。チャネル自体は値を保持しない。
【００４６】
メモリ・セルｘが値uを保持しているプロセス・セルＣｘ（u）は、下記のように表わす。
【００４７】
【数９】
2006318318.tif 000015
この形式的記述の直感的意味は、値uを保持しているプロセスCx(u)は、チャネルinx上で式yの値を受信したときは、プロセスCx(y)としてふるまい（すなわち保持する値がuから式yの値に変更される）、保持している値uをチャネルoutx上に送信したときには、送信作用の後も値uを保持したままプロセスCx(u)としてふるまうプロセスである。
【００４８】
値を保持するメモリ・セルをプロセスとして捉えることにより、メモリ・セルにさらに知能を付加することができる。例えば、初期化される（初期値を受信する）までその内容にアクセスさせないセルを書くことができる。情報処理能力のあるこのスマート・セル（smart cell）は、下記のように定義することができる。
【００４９】
【数１０】
2006318318.tif 000016
プロセスCell(x)は、チャネルinx上で式yの値を受信した後、式ｙの値を保持するプロセスCx(y)としてふるまうプロセスである（式ｙに値を受信し、式ｙの値を保持するプロセスで、送信は行わない）。
【００５０】
ここで、下記のように定義した２つのプロセスについて考えてみる。
【００５１】
【数１１】
2006318318.tif 000017
プロセスP1は、チャネルinx上に値5を送信し、nilになる（終了する）プロセスである（値５を送信するプロセス）。プロセスP2は、チャネルoutx上で式yの値を受信した後にnilになる（終了する）プロセスである（数式ｙに値を受信するプロセス）
これらの２つのプロセスが、セルｘ（Cx）を通して通信するようなプログラムを書くことが容易にできる。
【００５２】
Ｐ１｜Ｃｅｌｌ（ｘ）｜Ｐ２
このプログラムは、プロセスP1、プロセスCell(x)、プロセスP2が並行に実行されるプログラムである。
【００５３】
図２は、上記に含まれる全てのプロセス間の相互作用を示したものである。
【００５４】
このプログラムの実行における、個々のステップの詳細は以下のようになる。
【００５５】
【数１２】
2006318318.tif 000018
上記の式の意味を直感的に表わせば、プロセスP1｜Cell(x)｜P2は、以下の第1ステップと第二ステップを経て実行される。（等号記号で記載される右辺が１つのステップである）下線は相互作用（同期）を起こす送受信作用を示している。
＜第１ステップ＞
(1)[inx!5].nil（チャネルinxに値5送信）、(2)[inx!5].Cx(y)（チャネルinxで式yに与える値を受信し、受信後はセルxに式yの値を保持）、(3)[outx?y].nil（チャネルoutxで式yの値を受信）、の３つのプロセスが並行に行われた結果、
(1)がチャネルinxに値5を送信完了し、同時に(2)がチャネルinxで値5を受信する、というプロセス間の相互作用（同期）が起こって、
不作用作用τが実行され、
(4) Cx(5)（セルxに値5を保持）、と(3)[outx?y].nil（チャネルoutxで式yの値を受信）、の２つのプロセスの並行プロセスに移行する。
＜第２ステップ＞
前述の数９の定義から、(4) Cx(5)は選択プロセス(4)−１（[inx?y].Cx(y)＋[outx!5].Cx(5)）に置き換えることができる。
すなわち、
プロセス(4)−１と、(3)が並行に行われた結果、
(4)−１の[outx!5].Cx(5)（チャネルoutxに値5を送信）と同時に(3)の（チャネルoutxで式yの値5を受信）が起こる、という相互作用（同期）が起こって、
不作用作用τが実行され、
その結果、残りのプロセスはCx(5)（セルｘに値5を保持）としてふるまわれる。
２．３  意味論
以下に、Ｌｙｅｅ計算法の形式的意味論について説明する。この意味論は、相互作用関係
【００５６】
【数１３】
2006318318.tif 000019
により定義される。この時、演算子→は「関係」（relation）を表わし、κは作用を表わす。「関係」は複数の「関係」の集合であり、その集合要素である１つ１つの「関係」は次の３つの要素で構成されている。第１の要素は「変化前のプロセス」、第２の要素は「変化の後のプロセス」、第３の要素は「変化の間に実行された作用」である。
【００５７】
【数１４】
2006318318.tif 000020
と書くとき、関係→の３要素は（Ｐ，Ｑ，Ｋ）である。
【００５８】
上記のように定義するとき、数１４の意味は、サブプロセスＰの中の相互作用（reaction）によって、全体プロセスがアトミック・アクション（atomic
action；割込みを許さない一連の不可分な作用で、次の別の作用を開始させるために、必ず完了されなければならない）κを実行してサブプロセスＱとなる、ことを意味する。相互作用関係（interaction
relation）という着想は、ベリー（Ｂｅｒｒｙ）およびバウドル（Ｂｏｕｄｏｌ）（非特許文献２参照）の化学抽象機械（Chemical Abstract
Machine）によって触発されたものである。このモデルでは、プロセスは、相互作用を起こすことを待っている分子の化学溶液であると見なしている。
【００５９】
数式１３の関係を形式的に表わすために、下記の概念を定義する必要がある。
・
【００６０】
【数１５】
2006318318.tif 000021
は、プロセスを簡単にするために用いる記号で、左辺が、簡素化されたプロセスである右辺と等しいことを表わす。下記に示すように、無プロセスを除去することによりプロセスを簡単にすることができる。
【００６１】
【数１６】
2006318318.tif 000022
式ｅの計算結果である値の集合を
【００６２】
【数１７】
2006318318.tif 000023
で示す。ｅが変数である場合には、その計算結果の値の変域も、その変数の変域（domain）（整数、実数等）と同じである。説明を簡単にするために、すべての変数は実数の集合に属するものと見なす。
【００６３】
【数１８】
2006318318.tif 000024
は、作用κが使用するチャネルの名前である。たとえば、
【００６４】
【数１９】
2006318318.tif 000025
の意味は次の通り：
不作用作用τが使用するチャネルは存在しないので、空集合（0）である。
送信作用（i!e）と受信作用（i?e）が使用するチャネルは、iである。
【００６５】
「関係」の集合（→）は、要素として、表５に示す１５個の規則を満足させるような「関係」を最小数持つ「関係」である。
【００６６】
かっこ内に示した各種のR記号は、規則名を示す記号である。規則は、前提条件と結果からなっており、各規則は、横線の上段に示される条件のとき、下段に示した結果になるような規則である。
【００６７】
【表５】
2006318318.tif 000026
たとえば、第２番目の規則（Ｒ！）の意味は以下のとおりである：
値uが式eの値の集合に属すとき（上段の前提条件が成立するとき）、チャネルi上に式eの値を送信後、プロセスＰとなる[i!e].Pは、チャネルi上への値u送信作用が起こった後、プロセスＰに移行する（下段の結果）。
（２）＜Lyee方法論＞
Lyee方法論は要件の宣言方法に係る。
【００６８】
ここでは、Ｌｙｅｅ要件の非形式的形式化に関し、特に、Ｌｙｅｅ方法論が、どのようにして基本的なユーザ要件からソフトウェアを生成するのか、その全体像について説明する。加えて、この全体像から、Ｌｙｅｅ計算法によってこの方法論をどのようにして簡単かつ効率的に形式化することができるのかを順次紹介する。Ｌｙｅｅ方法論のソフトウェア生成プロセスの完全な形式化については、次のセクションで説明する。
（２．１）Ｌｙｅｅ要件
Ｌｙｅｅ方法論において、要件は、宣言的な方法で、単語名、その定義式、その計算条件、およびその属性（入出力、タイプ、セキュリティタイプ等）という要素を含む宣言の集合として与えられる。表６は、Ｌｙｅｅ要件の一例である。
【００６９】
「Word」は単語名、「Definition」は単語の値を生成するための定義式、Conditionは定義式を実行する計算条件、「IO」は単語の値の入出力の属性を示す。OFはファイルへの出力、OSは画面への出力、ISは画面からの入力、IFはファイルからの入力（表にはない）、を表わす。「Type」は、値の属性で、intは整数（integer）、floatは不動小数点数を表わす。「Security」は、値のセキュリティに関する属性を表わす。secretは非公開、publicは公開、を表わす。
【００７０】
【表６】
2006318318.tif 000027
表６の要件は、感覚的にとらえれば、従来のプログラミング言語の表７のコードに対応する。Saは、単語aの宣言を意味する。
【００７１】
【表７】
2006318318.tif 000028
たとえば、単語aの宣言Saのコードは、
「もし、b*e>2が真ならば、単語aにb+cの計算結果を代入し、単語aの値を出力」、を意味している。
【００７２】
宣言Scのコードは、「単語cに値を入力」、を意味している。
【００７３】
Ｌｙｅｅ方法論においては、ユーザは、これらの定義が実行される順序（制御ロジック）を指定する必要はない。表７に示すように、単語aの定義は、単語bを使用しているにもかかわらず、宣言Sbは、宣言Saの後に位置している。以下に説明するように、これらの要件から、また、宣言の順序とは無関係に、Ｌｙｅｅはすべての定義した単語を計算するコードを生成することができる。このシンプルなアイデアは、非特許文献６、７、８、９に示されるように、ソフトウェア開発上の異なるステップにおいて、数々の有利な結果を生む。実際、このアイデアを使用することにより、要件が不完全であってもソフトウェアの開発をスタートすることができる。さらに、ユーザは、もっと古典的な方法論の場合のように、単語の実行順序の制御ロジックの問題を扱う必要がない。ソフトウェアの制御ロジック部分は、Ｌｙｅｅ方法論においては、自動的に生成され、その結果、プログラミング・エラーが低減し、プログラミング時間が短縮される。柔軟性も、Ｌｙｅｅ方法論の主要な利点である。何故なら、保守業務を、要件の簡単な修正（単語の定義の追加、削除および／または修正）作業にまで軽減できるからである。
【００７４】
従って、Ｌｙｅｅシステムは、求められる結果を生成するために共に相互作用を行う独立したコンポーネント（宣言）の集合体と見なすことができる。本論のプロセス代数の概念は、この見方と非常によく一致する。何故なら、Ｌｙｅｅ計算法は、プログラムを、最終目的に到達するために、共に相互作用しあう分子（プロセス）の化学溶液と見なすからである。それ故、一見して、宣言の集合｛ｓ１，．．．，ｓｎ｝からなるＬｙｅｅ要件ＬＲを、Ｌｙｅｅ計算法の並行プロセス（concurrent process）として見ることができる。すなわち、次に表わすとおりである。
【００７５】
ＬＲ＝ｓ１｜．．．｜ｓｎ
直感的説明によれば、要件LRは、プロセスｓ１、．．．、ｓｎが並行に実行されるプロセスである。
（２．２）パレット（Pallet）および基本構造（Scenario Function）
表６の要件から、ａおよびｂの値を計算し、それらを出力するプログラムを、自動的に生成することができる。このプログラムは、不動点（fixed point）に達するまで、すなわち、図３に示されるように、繰り返し処理がいかなる単語の値も変えなくなるまで、これらの命令の実行を単純に反復する。
【００７６】
プロセス代数の観点からいうと、「不動点に達する」という概念は、当然意味規則に組み込まれる。実際に、プロセス（分子）は、いかなる進展も可能でなくなる状態（不動点）に達するまで、共に相互作用する。
【００７７】
要件からＬｙｅｅにより自動的に生成されるプログラムの構造および内容についてさらに正確に説明する。Ｌｙｅｅ方法論においては、表６に示すような宣言の集合の実行は特定の方法により行われる。実際は、Ｌｙｅｅは、図４に示すように、Ｌｙｅｅ用語で、パレット（Ｗ０２，Ｗ０３およびＷ０４）と呼ばれる３つの領域上に宣言に関連するコードを分配する。
【００７８】
各パレットの役割は次のとおりである。
パレットＷ０２：
入力単語を処理する。
パレットＷ０３：
単語の計算条件を計算し、結果をブール型（真偽値を値としてもつ）の変数で保存する。例えば、単語ａの定義の中で使用されている計算条件「ｂ＊ｅ＞２」はＷ０３で計算され、真／偽の結果は、別の変数「ａ＿ｃｏｎｄ」に保存される。
パレットＷ０４：
要件に含まれるその定義式によって単語の計算を行う。パレットＷ０４は、また、計算した単語の値を出力する。
【００７９】
Ｌｙｅｅプログラムは、パレットＷ０４からスタートして、不動点に達するまで、すべての定義した単語の値を計算しようとする。単語の値の計算に係わるＷ０４内に進展が見られなくなると、経路作用要素Ｒ４によりパレットＷ０２に制御が与えられる。今度は、この第２のパレットが、単語の値の入力を繰り返し、不動点に達した（他に新たな入力対象がなくなった）とき、次に、経路作用要素Ｒ２が制御をパレットＷ０３に渡す。最後に、そしてパレットＷ０４と同じように、パレットＷ０３が、不動点に達するまで、要件に従って単語の計算条件を計算しようとする。図５に示すように、この全プロセス（Ｗ０４→Ｗ０２→Ｗ０３）は、全体が安定状態に達するまで繰り返され、連結されている３つのパレットは基本構造（Scenario Function）と呼ばれる。
【００８０】
Ｌｙｅｅ要件を組み込むために逐次処理言語を使用することによって、Ｌｙｅｅ方法論の作者は、パレットが実行される順序、同じパレット内のベクトル（モジュール）が実行されるべき順序、およびあるベクトルから他のベクトルに制御を渡す方法を明確に指定せざるをえなかった。言い換えれば、この逐次処理言語がゆえに、Ｌｙｅｅ方法論の基本概念に属さない、また、この方法論をかなり複雑にしてきたいくつかの局面がもたらされることになった。すなわち、各パレット内のベクトルが実行される繰り返しの制御、パレットから他のパレットに実行を移す（異なる基本構造間を含め）方法および時期等を指定するという必要があった。これらのために、パレット関数（パレット内の実行制御）、経路作用要素（次に実行するパレットの決定）、パレット連鎖関数（パレット間の実行制御）が設置されていた。
【００８１】
しかし、Ｌｙｅｅ計算法を使用することにより、パレットが実行される順序、各パレットのベクトルが実行される順序、パレットから他のパレットに制御を渡す方法および時期等を指定する必要がもはやなくなる。このような詳細は、当然ながら本論の抽象機械Ｌｙｅｅ計算法により本質的に管理される。それ故、基本構造は、下式のように形式化することができる。
【００８２】
ＳＦ＝Ｗ０４｜Ｗ０３｜Ｗ０２
すなわち、基本構造SFのプロセスは、Ｗ０４、Ｗ０３、Ｗ０２の３つのパレットのプロセスの並行プロセスである。
【００８３】
Ｗ０４、Ｗ０３およびＷ０２を実行する順序はもはや重要ではなくなり、これらパレットを接続している経路作用要素も除去されていることに留意されたい。
【００８４】
Ｌｙｅｅは、固定構造を持つ簡潔なプログラム（Ｌｙｅｅ用語で述語ベクトル（predicate
vector）と呼ばれる）を確立した。この構造により、生成されたコードの構造は不変かつ要件の内容に依存しないものになっている。ベクトルの実行を制御する統括プログラム（global
program）であるパレット関数の役割は、単に述語ベクトルを呼び出すだけである。図６は、述語ベクトルの構造を示す。
【００８５】
述語ベクトルの目的は、各パレットにより異なる。
＜パレットＷ０４＞
パレットＷ０４の第１の目的は、定義式により単語に値を与えることである。この役割を行う述語ベクトルをL4と呼ぶ。図４の例における単語ａおよび単語ｂのL4は、図７に示すようになる。
【００８６】
単語の計算に進展がなくなり、かつ、単語の値が全て成立すると、Ｌｙｅｅの生成コードは、次の目的となる単語の出力を実行しようとする。値を出力するという目的を持つ述語ベクトルは、出力作用要素（Output Vector：O4と呼ぶ）と呼ばれる。他に、領域のクリアを行う構造作用要素（S4と呼ぶ）がある。
＜パレットＷ０２＞
値を入力単語に関連付けるという目的を持つ２つの述語ベクトルがある。メインメモリ上（Lyeeプログラム領域の外）への入力を行う入力作用要素（Input
Vector：I2と呼ぶ）と、属性チェックとLyeeプログラム領域内への入力を行うL2である。
＜パレットＷ０３＞
パレットＷ０３の述語ベクトルL3の目的は、図８に示すように、要件内に指定されている、単語の定義式（すなわちL4）を実行するための条件を判定することである。
【００８７】
最後に、表８は、表６の要件を実装したＬｙｅｅプログラムを示す。
【００８８】
各パレットに１つおかれたパレット関数が、パレット内の述語ベクトルをコール（起動）する。パレット関数は、プログラムに１つおかれたパレット連鎖関数によってコールされる。パレット連鎖関数は、各パレットのＲ４、Ｒ２、Ｒ３の指定に従って、該当するパレット関数をコールする。その他のプログラムの意味は、表８のコメントのとおりである。述語ベクトルL4、L2、L3（総称して論理要素と呼ぶ）の処理対象は単語単位であり、入出力作用要素（I2およびO4）、構造作用要素（S4）の処理対象は単語の集合である。
【００８９】
【表８】
2006318318.tif 000029
ここでＬｙｅｅ計算法を使用すると、W04、W03およびW02のプロセスは、それぞれ下記のように定義することができる。
【００９０】
【数２０】
2006318318.tif 000030
W04プロセスは、S4、L4_a、L4_b、O4の各プロセスの並行プロセスである。
W03プロセスは、L3_a、L3_bの各プロセスの並行プロセスである。
W02プロセスは、L2_e、L2_c、I2の各プロセスの並行プロセスである。
異なる述語ベクトル（L2、L3、L4、I2、O4、S4）の形式的定義については、次のセクションで説明する。
（２．３）処理経路図（Process Route Diagram）
前のセクションで示した基本構造は、任意の、要件が簡単なケースのプログラム全体だと見なしてもよい。特に、すべての入力単語および出力単語が、同じ画面に属していて、データベースが全く使用されていない場合のプログラムである。入力単語および出力単語が、いくつかのデータベースまたは、相互に接続された異なる画面に属する場合には、状況はもっと複雑になる。説明を簡単にするために、以下の説明においては、画面の数が複数あるだけの場合について説明する。図９に示すように、相互に接続している画面が３つあり、ユーザは画面から別の画面に移動することができる場合について考える。各画面において、ユーザは単語の入力、計算、また出力ができる。従って、仕様書では、ユーザは、これらの画面がどのように相互接続しているのかを指定しなければならない。
【００９１】
さらに言えば、１つの基本構造だけを定義して、そこで全画面中の定義された単語全てを計算するのは都合がよくない。なぜなら、実際、プログラムの任意の実行において、ある画面は訪問されないかもしれず、その場合、訪問されなかった画面の単語の値の計算が無駄になるからである。そのため、Ｌｙｅｅは、各画面に、その画面が訪問された場合だけ実行されるような担当基本構造を関連づける。画面に係わる基本構造は、１つの画面から他の画面への移動を示すように、接続されている。Ｌｙｅｅ用語において、複数の基本構造が接続されたものが、図１０に示すような、処理経路図（Process Route Diagram）である。
【００９２】
Ｌｙｅｅ計算法を使用して、ある画面ｓｋを、プロセスSF(sk)の実行を制御するプロセスΦ(sk)、として下式のように形式化できる。
【００９３】
【数２１】
2006318318.tif 000031
すなわち、プロセスΦ(sk)は、プロセスSF(sk)（画面ｓｋに係わる処理の基本構造のプロセス）としてふるまい、チャネルiｓｋ上で真の値を受信したとき、SF(sk)を停止してプロセスΦ(sk)としてふるまう。実際の動きとしては、制御プロセスΦ(sk)は、プロセスSF(sk)を活性化し、画面ｓｋに関連するチャネルiｓｋ上で信号を受信したとき（すなわち画面ｓｋが再活性化されたとき）、Φ(sk)自身が再活性化される。従って、制御プロセスΦ(sk)が再活性化されることによって、SF(sk)は一度終了して再活性化され、初期状態（fresh
instance）に戻る。
【００９４】
関数Φ(sk)がどのように機能するかを示す具体例は、本明細書の後の方に記す。
（２．４）Ｌｙｅｅプログラム
まとめると、Ｌｙｅｅ方法論によるＬｙｅｅプログラムの構造は次のとおりである。Ｌｙｅｅプログラムはいくつかの処理経路図（ＰＲＤ）で構成される。各ＰＲＤは、相互に接続された基本構造（ＳＦ）の集合である。各基本構造は、３つの相互に接続されたパレットＷ０２、Ｗ０３、Ｗ０４で構成される。最後に、パレットは、述語ベクトルによって構成される。述語ベクトルには、Ｌｙｅｅプログラムの最小単位のモジュールであるので、アトミック・ベクトル（atomic vector）とも呼ぶ。述語ベクトルには、論理要素（signification vector：L2、L3、L4の総称）および作用要素（action
vector：I2、O4、S4、R2、R3、R4の総称）がある。これらの述語ベクトルの実行を制御する制御モジュールとして、パレットごとにパレット関数がおかれ、そのパレット関数の実行を制御するモジュールとして、プログラムに１つのパレット連鎖関数がおかれる。
【００９５】
Ｌｙｅｅ計算法を使用することにより、画面ｓ１，．．．，ｓｋを含むＬｙｅｅプログラムＰは、下式のように形式化される。
【００９６】
【数２２】
2006318318.tif 000032
ここで、Ｌ（ｓ１，．．．，ｓｋ）は、入力チャネルおよび出力チャネルの集合である。この式は、Ψ（ｓ１，．．．，ｓｋ）が、Ｌ（ｓ１，．．．，ｓｋ）に属すチャネルだけを通して環境とコミュニケートするように制限する。
【００９７】
関数Ψは、下式のように定義される。
【００９８】
【数２３】
2006318318.tif 000033
この関数Ψは、画面ｓ（sは画面ｓ１，．．．，ｓｋのいずれか）に対応するチャネルiｓ上で真の値を受信するたびに、画面ｓに対応するＳＦ(s)を起動するために、プロセスΦ(s)を起動。上記チャネルiｓは、対応する画面を起動するためにユーザが使用するボタンやメニューを形式化したものである。また、この関数Ψは、チャネルiｓ０上で真の値を受信したときに、すべての他のプロセスを終了させて、関数Ψ自身も終了（nilになる）する。チャネルiｓ０は終了ボタン（または、対応するメニュー項目）を形式化したものである。
【００９９】
従って、Ｌｙｅｅシステムは、求める出力単語を計算するために相互にコミュニケートする、独立した並行プロセス（concurrent process）の集合体と見なすことができる。Ｌｙｅｅ方法論の従来の逐次処理的（sequential）見方とは対照的に、すべての経路作用要素は必要なく、制御機能の役割は大幅に簡易化され、作業メモリ領域（working
memory）等も必要ない。Ψ（ｓ１，．．．，ｓｋ）については、具体例と一緒に以下にさらに詳細に説明する。
【０１００】
次のセクションにおいては、Ｌｙｅｅ方法論のより詳細かつ完全な形式化について説明する。
（３）＜Lyee方法論の形式化＞
Ｌｙｅｅ計算法を使用して、簡単なユーザ要件からどのようにしてソフトウェアを自動的に生成するかを見る。
【０１０１】
ユーザ要件は、ｋ個の画面｛ｓ１，．．．，ｓｋ｝を含んでいるとする。また、各画面は宣言の集合を含んでいるとする。この場合、各宣言は、次の形式、すなわち、（ｗ，ｅ，ｃ，InOut，type）を持つ。ここで、ｗは単語名、ｅはその定義式、ｃは定義式の実行条件、InOutは単語が入力か出力か、あるいは両方か、または入力でも出力でもないのかの指定（値ｉは入力単語に、値ｏは出力単語に、ｉｏは入力および出力両方である場合に、空のフィールドは入力でも出力でもない場合に使用される）、typeは値の属性（タイプ）を示す（たとえばタイプＢは、ボタンを示す記号として割り当てられる）。
この要件に関するプログラムＰ（ｓ１，．．．，ｓｋ）を定義するために、下記の表に示したように論理要素および作用要素のベクトル（プロセス）を形式化する。
【０１０２】
まず、形式化に用いられている未定義の記号を説明する。
Use（ｅ）は、式ｅで使用する単語の集合を示すものとする。例えば、Use（ａ＊ｂ＋１）＝｛ａ，ｂ｝である。
また、Ｆ（Ｓ）は、変数Ｓとして入力値の集合をとり、その入力を行う受信作用の集合をかえす関数である。
【０１０３】
【数２４】
2006318318.tif 000034
上記の意味は次のようになる。
入力値がないとき（Ｆ(０)）、受信作用はない（０は空集合）。
入力値ｘと入力値Ａの受信作用（Ｆ({x}∪A)）は、チャネル
【０１０４】
【数２５】
2006318318.tif 000035
上でｘの値を受信する受信作用と、入力Ａの受信作用Ｆ(Ａ)の和集合である。
【０１０５】
論理要素（Signification Vectors）は表９に示す。
【０１０６】
【表９】
2006318318.tif 000036
作用要素（Action Vector）は表１０に示す。
【０１０７】
【表１０】
2006318318.tif 000037
ベクトルのうち、S4は、2．2で述べた値を保持するメモリ・セルで、かつ、「初期化される（初期値を受信する）までその内容にアクセスさせない」能力をもったスマート・セルである。
【０１０８】
経路作用要素は、Ｌｙｅｅ計算法においては本質的には不要なプロセスであるが、Ｌｙｅｅ計算法でどのように形式化できるかを示すために記載している。
パレット：
任意の画面ｓの３つのパレットＷ０２、Ｗ０３およびＷ０４は、下式のように形式化される。
【０１０９】
【数２６】
2006318318.tif 000038
ここで、
【０１１０】
【数２７】
2006318318.tif 000039
は、Ｂ（ボタンを示す）を除く任意のタイプ（Ｂの補集合）を示し、*は何であってもよいことを示す。
基本構造：
画面ｓの基本構造ＳＦ（ｓ）は、下式のように形式化される。
【０１１１】
【数２８】
2006318318.tif 000040
制御機能：
画面ｓに付随する制御機能は、下式のように形式化される。
【０１１２】
【数２９】
2006318318.tif 000041
画面の集合に付随する制御機能は、下式のように形式化される。
【０１１３】
【数３０】
2006318318.tif 000042
ｓ０は、プログラムを終了したときの画面（プログラム自身の画面群には属さない終了画面）であるとする。
【０１１４】
ここで制御機能の役割についてまとめると、下記のようになる。
【０１１５】
【表１１】
2006318318.tif 000043
本論では、Ｌｙｅｅ計算法の実現方法の１つとして、ＳＦは、画面に対して１つもうけ、１つのＳＦが、対応する画面に係わる入出力および計算の全てのプロセスを含むように形式化した。従ってＳＦの制御関数Φも、画面に１つである。しかし、画面に対して複数のＳＦおよび制御関数Φを設けるように形式化することも選択しとして可能である。実装方法は、プログラムとしての効率性によって決定すればよい。
Ｌｙｅｅプログラム：
最後に、画面ｓ１，．．．，ｓｋを含む要件に関するＬｙｅｅプログラムＰ（ｓ１，．．．，ｓｋ）は下式で表される。
【０１１６】
【数３１】
2006318318.tif 000044
ここで、Ｌ（ｓ１，．．．，ｓｋ）の集合は、環境との間のすべての入力チャネルおよび出力チャネルを含み、下式により定義される。
【０１１７】
【数３２】
2006318318.tif 000045
ｉ/ｏの意味は、この項目は値ｉ、ｏまたはｉｏを含んでいなければならないことをさす。また、ｓ１は、ユーザがこのプログラムを実行した場合に最初に現れる画面である。
（４）＜ＪＣＳＰ＞
実装のためのライブラリ(Java言語)に係る。JCSPはLyee計算法（Calculus）を実行するために用いる（後述する）クラスおよび資源を提供する。
【０１１８】
オブジェクト言語はオブジェクトを参照して更に新しいオブジェクトを生成するには向いているが、プロセスモデルには非常に弱い。Javaプログラムにプロセスモデルを導入するには、既存のコマンドを使ってマルチスレッド化するしかなかったが、これらのコマンドは低レベル、つまりＯＳレベルのコマンドであり、プログラマが使うのは危険が多い。このようなJavaプログラムへのプロセスモデル、並列モデル導入にともなう問題解決としてKent大学で開発されたのがＪＣＳＰである。ＪＣＳＰの背景にはホーアのＣＳＰモデルがある。ＪＣＳＰはクラス・ライブラリ（class
library）であり、特殊なＪａｖａではない。
【０１１９】
なおここで、コンポーネントとして部品化した「クラス」を、関連したものを集めて、一つのファイルにまとめたものをいう。よく使われる汎用的なクラスをクラス・ライブラリに集めておくことで、プログラミングの労力を軽減することができる。
【０１２０】
以上を纏めれば、プロセス代数とは、プログラムを「相互に通信（値の授受）しながら相互作用しあうプロセスの集合」ととらえ、プロセスの実行を記述する方法であると考えられる。これをLyeeに適用すると、プロセスとはLyee宣言を実行する単位であり、論理要素(変数の値の生成)や作用要素（変数の値の入出力）がこれに相当する。そして、Lyeeにおけるプロセス代数は、上述したLyee計算法となる。
【０１２１】
次に、Lyee計算法のプログラムモデルについて説明する。
【０１２２】
図１１に示すように、各プロセスは、自分の指定受信チャネルに値がくるのを待つ一方で、指定受信チャネル全てに値を受信すると、自分の担当処理を行う。
条件がそろったプロセスは全部同時に動く。順序はない。処理結果の値を、指定送信チャネルに送信する。
【０１２３】
図１２は、あるプログラムのLyee方法論による宣言の例である。この場合に、a=2、b=5と入力された場合のLyee計算法モデルは図１３に示すようになる。
【０１２４】
図１４は、Lyee計算法のプログラムモデルのスキームを表す概念図である。同図の説明は図中の記載をもって替える。
【０１２５】
図１５は、Lyee計算法のプログラムモデルにおける動作の概念を説明するための概念図である。JCSP
では、各プロセスは自分の指定受信チャネルを常時スキャンしている。同図に示すように、実行可能なプロセスの中から、スケジューラが実行するプロセスを決定する。
【０１２６】
以上、「Lyee方法論」、「プロセス代数」、「ＪＣＳＰ」の概要について説明した。本願発明は、これらの諸理論及び／技術に則った上で、Lyee方法論における各ベクトル、各関数をプロセス代数理論におけるプロセスと見なし、これをたとえばJava（商標）言語でいうクラスとしてコード化する。このとき、各クラスは単語単位で規定できるので、プログラマが制御ロジックを考慮する必要がない。換言すれば、単語単位に自身のことだけを宣言型言語で宣言するだけでよいので、制御ロジックの設計が不要となり、SE等の恣意がコーディングに入り込まない。
【０１２７】
次に、こうして生成された原コードを、たとえばEclipse（商標）にプラグインされたVisualDebugger（商標）によって視認的にデバッグする。上述したように制御ロジックが人間の手で行われていないため、ここでのデバッグは、タイピング・ミス等の単語ごとの宣言に係る項目に限定される。これにより、さらに効率的なデバッギングが行えるだけでなく、デバッグ後のコードからも恣意性を排除できる。
【０１２８】
最後に、デバッグされたコードをコンパイルすることで、目的のアプリケーション・ソフトウェアに係るソフトウェア（プログラム）コードを得る。こうして得られたソフトウェア（プログラム）コードは、単語ごとの規定にしか人間の手が介在していないため、設計変更等への対応特性が極めて高い、高メンテナンス性のコードとなる。
【発明を実施するための最良の形態】
【０１２９】
次に、本発明を実施するための最良の形態について説明する。
（概論１）
上記で説明したように、本願発明を用いたソフトウェア開発は、Lyee方法論に基づく構成要素をプロセス代数を理論根拠におくプロセスとして捉え、本願発明に係る開発ツールによりGUI的に定義した画面、単語等の宣言からコードを生成し、これをデバッグ、コンパイル（及び／またはビルド）してオブジェクト・コードを得ようとするものである。
【０１３０】
より具体的には、まず、Lyeeプログラムは、Lyeeベクトル、シナリオ機能および制御機能から成る。各々のベクトルおよび諸関数は、異なるいくつかの種類のプロセスによって定義される（構成される）。本願発明においては、各々のベクトル或いは関数は、JCSPプロセスを実装しているJavaクラスとして実装される。そのため、各々のベクトルまたは関数は、ユニークなプロセスと合致する。
【０１３１】
次に、プロセスはチャネルを通じて各々と通信する、そして、それらの動作はスケジューラによって制御される。ここで、プロセスは1つのクラスとして実装され、そして、プロセスのアクションはこのクラスの特別なメソッドにおいて実行される。このメソッドはRUNと呼ばれ、そして、それは他のクラスをコールすることができる。
【０１３２】
クラスの1グループは、プロセスの通信方法（チャネルを使用する方法）を実行する。RUNメソッドにおいて、プロセスは他のプロセスと通信するためにチャネル（それは、一群のクラスとして実行される）を定義することができる。
【０１３３】
Lyee方法論でいうベクトルおよび諸関数がJCSPクラスおよび資源を使用して、どのように実装されるかについては後述する。
（概論２）メタ言語文法について
本バージョンのLyeeビルダに実装されるメタ言語は、BNFフォーマット・バイ・テーブルで与えられる次の文法構造を持つ。
【０１３４】
【表１２】
2006318318.tif 000046
（概論３）
ここで、本発明を説明するにあたって必要となる用語を説明する。
１  Ｊａｖａ
Sun Microsystems社が開発したプログラミング言語。その特徴は、今までの言語にない完全なオブジェクト指向性、強力なセキュリティ機構、豊富なネットワーク関連の機能などで、ネットワーク環境で利用されることを強く意識した仕様である。Javaで開発されたソフトウェアは、特定のOSやマイクロプロセッサに依存することなく、基本的にはどのようなプラットフォームでも動作する。
２  オブジェクト指向プログラミング（object oriented programming）
データとそれを操作する手続き（メソッドと呼ぶ）をオブジェクトと呼ばれるひとまとまりの単位として一体化し、オブジェクトの組み合わせとしてプログラムを記述するプログラミング技法。プログラムの部分的な再利用がしやすくなるなどのメリットがある。
３  クラス（class）
データとその操作手順であるメソッドをまとめたオブジェクトの雛型を定義したもの。これを定義することで、同種のオブジェクトをまとめて扱うことができるようになる。
４  メソッド（method）
オブジェクトは「データ」と「手続き」から成っているが、メソッドはその「手続き」の部分に当たり、各オブジェクトが持つデータを操作する方法のことである。このメソッドを外部から呼び出すことによってオブジェクトにデータの操作を行なわせる。このしくみよって、操作の詳細をオブジェクト内部に隠蔽することができ、プログラムの再利用性や生産性を高めやすくなる。
５  インスタンス（instance）
クラスがオブジェクトの雛型であるのに対し、インスタンスはオブジェクトの実体で、オブジェクトが扱う実際の値としてのデータのこと。
６  プロセス（process）
プログラムを実行し、計算を行う主体。プロセスは、必要に応じて、実行が開始され（プロセスの生成）、必要が無くなったら終了する（プロセスの終了）。プロセスは、その実行状況である「状態」を持つ。プロセス同士は、外部からの入力データの受け取る、データを送受信する、計算実行のタイミングを整える、などの目的のために通信を行う。
７  スレッド（thread）
マルチスレッドに対応したOS上での、ソフトウェアの実行単位。1つのプログラムは最低1つのスレッドを持つ。同じプログラムに属するスレッドはメモリなどのリソースを共有する。複数のスレッドはCPUを交互に占有することによって見かけ上同時実行が可能。
８  コンストラクタ（constructor）
クラスを基にしたオブジェクト生成時に呼び出され、オブジェクトが扱うデータの初期化などを行う特殊なメソッド。
９  Eclipse  （エクリプス）
読み方 ：  エクリプス 
オープンソースの統合ソフトウェア開発環境(IDE)の一つ。Java開発者を中心に急速に普及しており、ソフトウェア開発の共通プラットフォームの標準になると予想されている。
【０１３５】
IBM社が1999年から進めていた開発ツール研究プロジェクトの研究成果をソフトウェアの形にしたもので、2001年11月にオープンソース化され、誰でも無償で入手・改変・再配布できるようになった。
【０１３６】
Eclipseは単なる開発ツールではなく、開発ツールの「共通プラットフォーム」と呼ばれる。これは、機能をプラグインの形であとから自由に追加できるためで、UML関連ツールやテストツール、各種のプログラミング言語などが用意されている。その数は現在、数百種類に及ぶ。
【０１３７】
大手ソフトウェアベンダーの中には、自社の開発ツール製品にEclipseを組み込み、Eclipseに追加する形で自社独自部分を提供するという形の製品をリリースするところも現れている。
１０  Swing  
読み方 ：  スイング 
Sun Microsystems社のプログラミング言語Javaに標準で付属するグラフィック関連のクラスライブラリ(再利用可能なプログラム部品群)。Java
2(旧JDK 1.2)から標準搭載されたJFCの一部である。Javaで開発されたアプリケーションソフトに、実行環境によらない統一されたグラフィカルユーザインターフェースを提供する。従来から提供されているAWTに比べ、環境による振る舞いの差をなくし、実行速度を高め、多くのバグを取り除き、HTMLに対応するなどの改良が施されている。
１１  JFC  
読み方 ：  ジェーエフシー 
フルスペル ：  Java Foundation Class 
Java言語を使って本格的な業務用ネットワークアプリケーションを開発する際に有用なクラスライブラリ(再利用可能なプログラム部品群)。Netscape
Communications社の開発したIFC(Internet Foundation Class)を基盤に、Sun Microsystems社によって開発された。1999年に発表されたJava
2で、正式にJavaの一部となった。
１２  AWT  
読み方 ：  エーダブリューティー 
フルスペル ：  Abstract Windowing Toolkit 
Sun Microsystems社のプログラミング言語Javaに標準で付属するグラフィック関連のクラスライブラリ(再利用可能なプログラム部品群)。Javaで開発されたアプリケーションソフトに、実行環境によらない統一されたグラフィカルユーザインターフェースを提供する。実際にはOSによる振る舞いの違いがあり、プログラマを悩ませている。Java
2からは、AWTの問題点の多くを解決したSwingが搭載されている。
１３  SWT
SWT   [Standard Widget
Toolkit]   
オープンソースの統合開発環境であるEclipseで採用されている、グラフィックユーザーインターフェース用のクラスライブラリ。各OSネイティブのコンポーネントを活用している点で、Swingとは対照的。
１４  IDE（統合開発環境）
読み方 ：  アイディーイー 
フルスペル ：  Integrated Development Environment 
「統合開発環境」の略。エディタ、コンパイラ、デバッガなど、プログラミングに必要なツールが一つのインターフェースで統合して扱えるような環境のこと。
（詳論）
以下、図面を参照して本発明の最良の実施形態詳論について説明する。
【０１３８】
図１６は、本願発明に係るソフトウェア開発用コード生成ツールの一実施形態であるLyeeBuilder（商標）の実装構造を説明するための概念図である。
【０１３９】
同図に示すように、ソフトウェア開発用コード生成ツール（LyeeBuilder）１０は、統合開発環境ツールであるEclipse（商標）１上に、少なくともVisualEditor（商標）２及びVisualDebugger（商標）３がプラグインされ、さらにVisualEditor（商標）２上にソフトウェア開発用コード生成ツール（LyeeBuilder）１０がプラグインされて構成される。
【０１４０】
Eclipse（商標）１は、本来Java（商標）をサポートする統合開発環境（ＩＤＥ）である（すなわち、JavaアプリケーションをプログラムするのにEclipseを使用することができる）。GUI（グラフィック・ユーザ・インタフェース）アプリケーションを設計して、プログラムすることが可能にしたい場合、VE（VisualEditor）プラグイン２を加えなければならない（ダウンロードして、装備する）。Eclipse（商標）１は、図示しないが、実行可能ファイルのコードを機械語（マシン語）に変換してプログラムを実行するためのコンパイラ、ライブラリ部１６０に含まれるクラスライブラリから目的のクラスを読み込むためのクラスローダを少なくとも備えて構成される。
【０１４１】
VisualEditor（商標）２等のプラグインは様々なGUI APIをサポートする、即ち、プログラマがSWT、Swingおよび／またはAWTパッケージを使用しているGUIアプリケーションを設計するために選択を有することを意味している。
【０１４２】
VisualDebugger（商標）３は、エンド・ユーザに、任意の単語に附加されるプロセスの内部状態をヴィジュアル化し、１ステップごとにフォローする能力を与える。特定の単語に関連した様々なプロセス（パレット）のステップごとの行動を示すには、「コントロール」ボタンを（左）クリックし、対応する画面コンポーネント上で右クリックしなければならない。しかしながらその前に、Lyeeコード生成ステップにおいて、ヴィジュアル・デバッガ・オプションを起動させなければならない。この起動は、プログラム・パラメータに「-debug
n」の式を加えることによって行う。ここで「n」はある状態から別の状態に遷移する前に考慮に入れなければならないアイドル・タイム（千分の一秒単位で特定される）に対応する。
【０１４３】
ソフトウェア開発用コード生成ツール（LyeeBuilder）１０は、Swingパッケージの上に設計されて、プログラマにコーディング不要のアプリケーションを設計する能力を提供する。LyeeBuilder１０は、オリジナルのEclipseに対して、構成要素（ボタン、textfield、その他）の再検討をすることでそれらがプロセスとしてふるまう機能、新規なLyee関連属性（定義、条件、その他）、及び、エンドユーザ仕様からプログラム（Javaにおけるプロセス）を生成し得るエンジンを少なくとも付加させた機能を有する。
【０１４４】
図１７は、ソフトウェア開発用コード生成ツール（LyeeBuilder）１０の構成をさらに詳しく示す機能ブロック図である。
【０１４５】
同図に示すように、ソフトウェア開発用コード生成ツール（LyeeBuilder）１０は、ツール使用者との間の入出力を介在するグラフィカル・ユーザ・インターフェース（GUI）部１１０、GUI部１１０に対してツールウィンドウ等の補助ウィンドウなどの補助操作をサポートする補助部１２０、GUI部１１０から入力された情報の処理を行う入力データ処理部１３０、GUI部１１０から入力された情報に基づき自動コーディングを行う機能を有するコーディング部１４０、GUI部１１０から入力された情報に基づき必要に応じて自動的にデータベース作成を行うデータベース部１５０、及びコーディング部１４０に連結し自動コーディングのためのテンプレート等を提供する等のサポートを行うライブラリ部１６０を少なくとも備えて構成される。
【０１４６】
グラフィカル・ユーザ・インターフェース（GUI）部１１０は、プロジェクト（目的とするソフトウェア開発タスクの単位）を生成するプロジェクト生成機能、入力インターフェースを表示する表示機能、データの授受を行う入力機能、ユーザの入力によって表示を切り換える管理機能を少なくとも有する。
【０１４７】
補助部１２０は、GUI部１１０のスムーズな動作を補助し、具体的には各種ペインなどのエディタ・アシスト機能を有する。
【０１４８】
入力データ処理部１３０は、GUI部１１０から入力された情報の種類、たとえばテキストボックスとそのプロパティ、ボタンボックスとそのプロパティ等、に応じてコーディング部１４０を動かしてコーディングさせ、必要に応じてデータベース部１５０にデータを格納する等の機能を持つ。
【０１４９】
コーディング部１４０は、GUI部１１０から入力された画面設計、プロパティ定義に対応して、たとえばJavaコードを生成する。
【０１５０】
データベース部１５０は、GUI部１１０から入力されたLyeeBELT情報（具体的には、単語ごとの定義式、定義式実行条件、入出属性等のプロパティ等）を初めとする各種データを系統立てて記憶する。
【０１５１】
ライブラリ部１６０は、アプリケーションで共通して使用される各種のクラスがカテゴリごとに収録されている（クラスライブラリ）。
【０１５２】
図１８は、グラフィカル・ユーザ・インターフェース（GUI）部１１０、特にそのプロジェクト生成機能によって生成される、パッケージ・エクスプローラによるプロジェクト生成用画面の一例を表す図である。
【０１５３】
同図に示されるように、まず第一に、新しいプロジェクト（「LyeeBuilderプロジェクト」ともいう。）をつくるとき、LyeeBuilder（入力データ処理部１３０）は、2つのファイル、Main.javaおよびAFrame.javaを作成する。Main.javaは、プログラムが開始されるときに、呼ばれるメイン・メソッドを含む。このメソッドの主要目的は、主フレームを作成することである。AFrame.javaは、まず最初に空のフレームのJava定義を含む。ユーザが若干のLyee構成要素（LyeeButton、その他）をフレームに加えるときに、ファイルAFrame.javaはそれに伴って更新される（これは、Eclipse環境およびVisualEditorプラグインによって自動的にされる）。
【０１５４】
与えられた構成要素のためのLyeeプロパティを定めるときには、&laquo;Generate Lyee code&raquo;を選任し、結局、AFrame.Javaファイルを更新しなければならない（従って、新規のLyee計算法指向コード、即ちプロセス等が生成されて、AFrame.Javaに加えられる）。最終的に、新規フレームを加えると、LyeeBuilder（入力データ処理部１３０）は新規Javaファイルを生成し（一般的には、AFrame.Java）、Main.Javaを含む全Javaファイルを更新するためには、&laquo;Generate Lyee code&raquo;メニューを選択しなければならない。一般的に、ユーザは、プロジェクトの全プロパティ（スクリーン、単語など）を定義し、然る後に、&laquo;Generate Lyee code&raquo;を選択して必要なコードを生成して、全ファイルをいっぺんに更新する。
【０１５５】
ライブラリ部１６０には、上記のプロジェクトに対応して、Javaファイルで用いられるさまざまなファイルである必要なライブラリ全部を含んでいる。各ライブラリの意味／目的は次のとおりである。
１  JREシステム・ライブラリ：Java特定のライブラリ（いかなるJavaプロジェクトのためにも必要）。
２  LyeeLib：このライブラリは、新規なLyeeコンポーネント（LyeeButton、LyeeTextField、その他）の定義を含む。
３  JCSP：このライブラリは、プロセス、チャネルおよびスケジューラの定義を含む。自分自身のスケジューラを定めれば、より多くのオプション（可能性）を提供することができ、それにより、より効率的なコードを生成することができる。ここで、スケジューラはLyee計算法（LC）プロセスを制御する機能を持ち、Java言語において、クラスとして実装される。プロセスが定義されて、実行されるときはいつでも、スケジューラは自動的に開始される。通常利用者は、スケジューラ（或いはJCSPの他のいかなるクラスも）によってコールされるメソッドの名前だけを知ることができる。
４  ANTLR：これは、単語内で見出される表現（定義、条件、その他）のためのパーサを生成するために用いる所定のライブラリである。
５  ExprParser：このライブラリは、パーサの定義を含む。表現（定義、条件、その他）を解析したいたびに使用される。ExprParserは、ANTLRに基づく。
６  LyeeCalculus/LyeeSpec：これらのライブラリは、異なるベクトル/機能の定義を含む。
実際、上記の「発明の基盤」で説明した形式的に定められる全てのプロセスは、それらの2つのライブラリにおいて実装される。
７  VisualDebugger：このライブラリは、異なるベクトルの挙動を動的に示すために用いる資源（フレーム、プロセス、その他）の定義を含む。
【０１５６】
Main.javaおよびAFrame n .javaは、Lyee、LyeeSpecおよびLyeeCalculusライブラリにおいて定められるメソッドを使用する。そして、これらのライブラリは、他のライブラリにおいて定められるメソッドを使用する。それゆえに、LyeeBuilderプロジェクトのために、全てのこれらのライブラリは、利用できなければならない。
【０１５７】
図１９は、グラフィカル・ユーザ・インターフェース（GUI）部１１０、特にその表示機能によって生成される、ソフトウェア開発用コード生成ツール（LyeeBuilder）１０の操作画面の概要を説明するための図である。
【０１５８】
同図に示すように、LyeeBuilder１０のIDE（統合開発環境）画面２０は、単語の生成・設定を行うためのAフレームJavaウィンドウ（Javaエディタ）２１と、単語の規定の支援（単語ごとのプロパティの定義を含む）を行うための各種ツールを表示するためのツールウィンドウで構成される。
【０１５９】
AフレームJavaウィンドウ（Javaエディタ）２１には、フレーム２１０をデザインするためのデザイン・タブと対応するソースコード表示のためのソース・タブ、及びLyeeヴィジュアル・エディタ・パレット２１１が含まれる。
【０１６０】
ツールウィンドウには、パッケージに係る階層構造で使用可能なファイルを表すパッケージ・エクスプローラ・ヴュー２２、フレーム２１０上に配置される単語２１１１等（テキストボックス、ボタンボックスを含む）に対応してLyeeプロパティを含む各種プロパティを設定・定義するためのプロパティ・ヴュー２３、現在作成中のプロジェクトの近辺の階層構造を表示するアウトライン・ヴュー２４、宣言等を表示する宣言ヴュー２５が含まれる。
【０１６１】
同図にあるように、プロパティ・ヴュー２３のうち、「Lyeeproperty」で表示される部分に、Lyee方法論に固有の各属性であるLyee要件（もしくはLyeeBELT情報ともいう）である単語の定義式、条件式（単語定義式の実行条件）、入出力区分、属性（狭義）等を記述する。また、Lyeeヴィジュアル・エディタ・パレット２１１には、上述したプロセス代数理論に則ってGUI設計のコンポーネントが「プロセス」として定義されている。
【０１６２】
Lyeeの属性エリアの主要領域は次のものである：
条件：単語の定義が計算されるときを特定するブール式である。
定義：単語を定義する算術式或いはブール式である。
入出力：単語が入力、出力、或いは入出力かを特定するフィールドである。
セキュリティ：単語に帰属するセキュリティ値（秘密、公開）を特定するフィールドである。
タイプ：単語のタイプ（整数、浮動小数点つき数値、文字列、ブール値、ボタン）を特定する。
whenOutputted：単語が出力できるときを示すブーリアンの値である。出力単語は、この条件が真になるときにのみ出力可能である。
whenInputted：入力単語が受けつけられるときを示すブーリアンの値である。この条件が偽のときには必ず、入力された値は拒絶される。
whenEnabled：特定の条件が真であるときに限って利用できる入力領域もしくはボタン。この領域はブーリアンで与えられる。
【０１６３】
この新しい領域であるwhenOutputted、whenInputted、whenEnabledは、ソフトウェア開発におけるより多くの可能性を与える点に留意されたい。おのおのの種類のアクション（入力する、出力する、計算する等）を、それを起動する（活性化させる）条件と連関させるようにしてもよい。
【０１６４】
本バージョンのLyeeビルダでは、画面は、様々な種類の要素を用いて解釈することが可能である。
【０１６５】
図２０乃至２３は、Javaウィンドウ（Javaエディタ）２１内のデザイン・タブ上で規定されるフレームをより詳細に説明するための画面図である。
【０１６６】
同図に示されるように、通常のLyeeビルダ画面２０においては、左側には画面を構成するのに用い得る様々なコンポーネント（２２、２３）、右側にはこれらのコンポーネントに付随する「属性」（２１１）、中央にはこれから構成しようとするフレーム２１０が並んでいる。
【０１６７】
次に、利用可能なコンポーネントに関連した様々な属性の典型値を示す。
【０１６８】
LyeeTextField：この種のコンポーネントは通常、ユーザからの値の入力、或いはユーザに対する結果の出力に用いられる。結果的に、入出力属性は、入力、出力、入出力のどれかとなる。もしそれが入力であった場合、whenInputtedプロパティ（属性）を定義してユーザ入力を有効にするために用い得る条件を特定しても良い。もしそれが出力であった場合には、条件、定義、whenOutputtedの各領域が定義され得る。どちらの場合にしても、タイプ領域を用いることで、入力もしくは出力された値のタイプを特定してもより。デフォルトでは、「整数」タイプが考慮される。
【０１６９】
LyeePasswordField：この種のコンポーネントは最後のものに非常に近いが、出力（Ｏ）として或いは入出力（Ｉ／Ｏ）として用いるにはあまり便宜ではない点が異なっている。大抵は、これは入力（Ｉ）として用いる。
【０１７０】
ラベル：この種のコンポーネントは通常、結果を出力するのに用いられる。結果として入出力領域を「出力」にセットしなければならない。条件、定義、whenOutputtedの各領域を定義してもよい。
【０１７１】
ボタン：この種のコンポーネントは通常、単語の計算を起動するのに用いられる。これによって、他の単語が出力でき、および／または、フレーム（画面）を開く／閉じることができるようになる。もし、フレーム（画面）を開き／閉じたい場合には、このボタンの定義領域が特定されなければならない。例えば、もしＢ１ボタンの定義が「s0.close」ならば、このボタンが押下されたときにフレームs0（プログラム名でもある）が閉じられる、即ち、「s0.close」は「exit」と等価である。ここでもしＢ１ボタンの定義が「s0.close&&s2.open」ならば、このボタンが押下されたときにフレームs1が閉じられフレームs2が開かれる。
ボタンに関連付けられるタイプ領域は「Button」という値にセットされなければならないことを理解するのが重要である。
【０１７２】
ListBox：これは、入出力単語として通常用いられる特別なコンポーネントである。このようなコンポーネントの入力値はユーザが（リストから）選択するアイテムに対応する。出力部分は当該コンポーネントに附加される（新しいアイテムがそのリストに加えられる）値を持つ方程式に対応する。結局、たとえ通常入出力として用いられているものであってもユーザは出力として用いることができる。条件及び定義領域を規定してもよい。
【０１７３】
CheckBox：この種のコンポーネントは通常入力として用いられる。
「CheckBox」に関連する入出力領域は「入力」値にセットしなければならないことを知っておくのは重要である。その他のフィールドは定義しない。
【０１７４】
総てのLyeeコンポーネントに対しwhenEnabledプロパティを定義することができることに留意されたい。同様に、Lyeeビルダの本バージョンでは、セキュリティ・プロパティが定義できるもののこれはLyeeビルダエンジンでは考慮されていないことに留意されたい。最後に、あるコンポーネントが与えられたとき、Lyeeプロパティ（属性）が定義されていないのならば、ビヘイビア（Lyee計算法のプロセス）はそのコンポーネントに附加されない。
【０１７５】
図２０乃至２３においては、Lyeeコンポーネントに対応する典型的な仕様を要約する。  「Sample」ディレクトリでは、「LeeSample4」という名のLyeeの新アプリケーションを加えたが、この際においては総てのLyeeコンポーネントをその典型的仕様（Lyeeプロパティ）に定義している。
【０１７６】
これらの図面で表示されるアプリケーションに対応するLyee要素を表１３及び１４に示す。
【０１７７】
【表１３】
2006318318.tif 000047
【０１７８】
【表１４】
2006318318.tif 000048
次に、本願発明に係るソフトウェア開発用コード生成ツールに係る動作について説明する。図２４は、このソフトウェア開発用コード生成ツールに係る動作を説明するフローチャートである。
【０１７９】
同図に示すように、ソフトウェアの実際の開発工程として、まず、（必要に応じて）Eclipse（商標）、LyeeBuilder（商標）プラグイン等をインストールする（ステップS101）。
【０１８０】
次に、Lyeeプロジェクトを生成する（ステップS102）。
【０１８１】
次に、Lyeeビルダの統合開発環境を用いて、目的とするソフトウェアに係る画面、単語、単語ごとのプロパティ等を定義する（ステップS103）。
【０１８２】
こうして原コードが得られたら、VisualDebugger３を用いてデバッグを行う（ステップS104）。
【０１８３】
バグのないソース・コードを必要に応じてコンパイルし、オブジェクト・コードを得る（ステップS105）。
【０１８４】
上記の説明では主に、利用者（プログラマ）サイドを起点に動作を説明するが、ツール（プログラム、マシン）１０サイドでは、GUI機能を実現すべく、利用者の各動作に伴い、ソフトウェア開発用コード生成ツール（LyeeBuilder）１０のグラフィカル・ユーザ・インターフェース（GUI）部１１０、入力データ処理部１３０等が対応する作動を実行する。
【０１８５】
次に、上記で説明した各ステップごとの詳細な動作を説明する。
＜Lyeeビルダのインストール（ステップS101）＞
最初にLyeeビルダ（商標）ツールを用いることができるようにするための環境設定動作を説明する。
１  Lyeeビルダ・パッケージをアンズィップする。
【０１８６】
まず最初に、Lyeeビルダ（商標）・パッケージ（LBPackage.zip）を任意のディレクトリに対しアンズィップする（次に、このディレクトリを「LyeeBuilderDirectory」と名づける）。アンズィップされると、このファイルは多数のサブ・ディレクトリを生成する。それぞれのサブ・ディレクトリの内容はReadMe.pdfファイルで説明される。
【０１８７】
必要とされる全コンポーネントをインストールするには、次のステップを踏む。
２  Javaをインストールする。
【０１８８】
Eclipse（商標）は、コンピュータ上にJavaRuntimeEnvironment（JRE）（商標）がインストールされていることを要する。Eclipse（商標）が要求するのは、Java
2 Standard Edition JRE（商標）の1.3もしくは1.4バージョンである。Java（商標）開発キットをダウンロードし、インストールすることが推奨される。この開発キットは、Eclipse（商標）を始めるために用いられるJavaRuntime（商標）を含んでいる。
【０１８９】
次のアドレスから取得できる。
【０１９０】
http://java.sun.com/j2se/
３  Eclipseをインストールする。
【０１９１】
マシンにEclipse（商標）が搭載されていなかったならば、次のアドレスから最新バージョンをインストール可能である。
【０１９２】
http://www.eclipse.org/downloads/index2/php
Eclipse（商標）をダウンロードするには、任意に選択するディレクトリのファイルにアンズィップすればよい。本稿においては以降、このディレクトリを「EclipseDirectoryName」と名づける。
４  LyeeBuilder（商標）プラグインをインストールし、Eclipse（商標）を構成する。
【０１９３】
Eclipse（商標）をインストールした後は、LyeeBuilder（商標）プラグイン・ファイルの３つを"LyeeBuilderDirectory"/PlugIn
ディレクトリから"EclipseDirectoryName"/pluginsディレクトリにコピーする。
【０１９４】
Eclipseをインストールし３つのLyeeBuilderプラグイン・ファイルを"EclipseDirectoryName"/pluginsディレクトリにコピーした後は、次に示すステップを踏むことで、Eclipseを構成することができる。この構成の後には、EclipseはLyeeBuilderの例を生成するのに用いることができる状態になる。
Eclipseをランさせる："EclipseDirectoryName"/eclipse.exe
ワークスペースに関する質問に「yes」で答えた後に「Welcome」ウィンドウを閉じる。
VE（VisualEditor）をインストールする：
Eclipse MenuからHelpを選択→Software updatesを選択→VEを見つけインストール→インストールすべき新規特徴を探索→次に進む
リストを選択する
Eclipse Modeling Framework (EMF) SDK
2.0.1
Graphical Editing Framework (GEF) SDK
3.0.1
VisualEditorの更新
次へを押下
リストを選択
Eclipse Modeling Framework (EMF) 2.0.1
Graphical Editing Framework (GEF) 3.0.1
VisualEditor 1.0.1
次へを選択
ライセンスに同意
終了を押下
現れるたびに「インストール」を押下
VE（VisualEditor）を構成する
Eclipse MenuからWindowsを選択→Preferencesを選択→Optionを選択→Javaを選択→VisualEditorを選択
「別のノートブック・タブに」を選択する
"LyeeBuilderDirectory/Demos/index.html"ファイルに、LyeeBuilderプラグインのインストール及び構成の方法についてのデモ（インストール版）がある。
＜Lyeeプロジェクトの生成（ステップS102）＞
次に、上述したLyeeビルダを用いてLyeeプロジェクトの生成を開始する方法を説明する（図示しない）。
【０１９５】
まず、Eclipse MenuからFileを選択→Newを選択→New Lyee Projectを選択する。
【０１９６】
ここで、WorkSpace Switch を確認する。
【０１９７】
こうしてユーザが新規なフレーム（スクリーン）を定めるときはいつでも、新規な.javaファイル（一般的にMain.javaおよびAFrame.java）が作成される。Main.javaは、異なるフレームの宣言だけを含む。AFrame
n .javaはGUIパートのためのコードであるが、単語のプロパティ（定義、条件、その他）がスクリーン（そのスクリーンの構成要素）の範囲内で定められているので、これらのプロパティに取り付けられるコードはまた、このファイルに含まれる。
＜Lyeeビルダでの画面、単語、プロパティ等の定義（ステップS103）＞
次に、ステップS102で生成されたプロジェクトについて、Lyeeビルダを用いて画面、単語、プロパティ等を定義する。
【０１９８】
図２５は、この定義動作を画面に合わせて説明するための説明図である。
【０１９９】
同図に示すように、定義動作は概略、次の順序で行う。
【０２００】
まず、画面（フレーム）を設計する。具体的には、グラフィカル・ユーザ・インターフェース（GUI）部１１０がLyeeBuilder１０のIDE（統合開発環境）画面２０を表示する。この画面２０には、前述したように、デザイン・タブを有するAフレームJavaウィンドウ（Javaエディタ）２１、パッケージ・エクスプローラ・ヴュー２２、プロパティ・ヴュー２３、アウトライン・ヴュー２４、宣言ヴュー２５が表示される。ユーザは、たとえば、AフレームJavaウィンドウ（Javaエディタ）２１のデザイン・タブ・ウィンドウ上にフレーム（目的ソフトウェアの画面）２１０を生成し、かかるフレーム２１０上にテキストボックス２１１を所望の数だけ配置する。配置にあたっては、Lyeeヴィジュアル・エディタ・パレット２１１の「LyeeTextField」ボタンをクリック及びドラッグし、クレーム２１１の所望位置でドロップ・ペーストする。ボタン（たとえばフレーム２１０上の「Compute」領域）の配置にあたっては、Lyeeヴィジュアル・エディタ・パレット２１１の「LyeeButton」ボタンをクリック及びドラッグし、クレーム２１１の所望位置でドロップ・ペーストすることにより行う。このあと、Lyeeヴィジュアル・エディタ・パレット２１１の「LyeeLabel」ボタンをクリック及びドラッグ、ドロップ・ペーストすることによりフィールド（テキスト、ボタン等）に対応したラベルの制作を行う。
【０２０１】
次に、単語単位の情報をメタ言語を用いて入力する。たとえば、まず、ラベル名をデフォルトのものから所望のものに変更するには、目的のラベル（ボックス）上でダイレクトに入力する。フィールド（ボックス）の位置・配置等を変更したいときには、目的フィールド（ボックス）を右クリック→「CustomizeLayout」を選択→「CustomizeLayout」ヴューで所望の位置・配置指示を選択することにより行う。フィールド名を変更するときには、目的フィールドを選択しておいてプロパティ・ヴュー２３の「name」アイテムを選択し所望の名前を入力する。次に、Lyeeプロパティの（メタ言語）入力にあたっては、目的フィールドを選択しておいてプロパティ・ヴュー２３の「lyeeproperty」アイテムを選択し、「lyeeproperty」アイテムの中から定義したいLyee属性を選んで所望のデータを入力する。たとえば入出力属性を規定したいのならば「Ｉ／Ｏ」アイテムを選んだ上でたとえば「Ｉ」を選択する。また、たとえばその単語の定義式を規定したいのならば「Definition」アイテムを選んだ上でたとえば「ａ＊ａ」を入力する。データの属性（狭義）を規定したいのならば「Ｔｙｐｅ」アイテムを選んだ上でたとえば「ｓｔｒｉｎｇ（文字列）」を選択する。
【０２０２】
次に、コード生成を実行する（プログラム及び画面の形成）。より詳細には、たとえばユーザの上記画面（フレーム）設計動作、単語単位情報入力動作の入力の区切り（Enterキーでの入力情報の確定）のたびに、コーディング部１４０が、GUI部１１０からの入力情報、即ち画面設計、プロパティ定義の各情報等から、ライブラリ部１６０に格納される各種クラスを用いて、たとえばJavaコードを生成する。
【０２０３】
総てのフレームに対して必要なフレーム設計及び単語単位情報入力、並びにコード生成が完了すれば、実行可能なプログラム（画面を含む）が生成される。
＜コンパイル（ステップS105）＞
ソースコード生成が完了すると、ステップ実行やブレークポイント設定によるデバッグを行い、プログラムの実行状態を視認的に確認し、デバッグを経てバグのないソースコードをJava仮想マシン、スケジューラ等上で実行できるバイトコードに変換する。
【０２０４】
こうして変換されたバイトコード（中間コード形式）はJava仮想マシン（図示しない）に読み込まれて実行されることになるが、上述したように、本願では、Lyee方法論とプロセス代数理論を組み合わせたものを基盤とした技術的思想であって、しかも本願に係る開発ツールは、フリーソフトウェアのEclipseのプラグインを応用し、できあがるソースコードはたとえばJava（商標）言語で書かれたものとなる一方、そのクラスはプロセスとして見なされている。
【０２０５】
ここでいうJavaクラスは、メソッドおよびデータの一まとまりである。メソッドは、プログラムであって（手続き的な方法で書かれる関数またはプロシジャ）、同じクラスからのメソッドまたは他クラスのメソッドを呼ぶことができる。Javaは、また、スレッドの概念を含む（コードの多くの部分が「並行に」走る）。しかし、Javaは宣言型言語でない。というのは、メソッドが、手続き的な方法で実装されそれゆえに、プログラマが制御ロジックを特定する必要があるからである。
【０２０６】
Java仮想マシン上で走る場合、プログラムは、並行に走るプロセスの集まりであって、それらは相互に作用する。オブジェクトとプロセスの関連について補足すると、Lyee計算法（Calculus）では、Javaで実行されたがゆえに、プロセスを実装するのにオブジェクトを用いる以外の選択肢はない。しかし、実際は、プロセスとオブジェクトの間には関係はない。事実、オブジェクトという概念を使用しないCMLのような他の言語を用いてLyeeCalculusを実装することもできる。
【０２０７】
プロセスは、指定されたチャネルを通して他のプロセスと通信し（プロセス間の通信は、常にチャネルを用いて行われる）、チャネルとは別の方法（もしプロセスが同一マシン内で有線で実行されるのなら、メモリ領域）を用いて実装され得る抽象的な概念である。
【０２０８】
プロセスは、自身の指定されたチャネルがデータを受信するのを見ていて、もし同一チャネルで値を待っている他のプロセスがない場合、プロセスはチャネル上でデータを送ることができない。同様に、ある与えられたチャネル（それが待っているいかなる方法も）上でデータを送る態勢のプロセスがない場合には、このチャネル上で値の受信を待っている任意のプロセスが待ち、チャネルを見る。
【０２０９】
自身の指定された全チャネルを通じてプロセスがデータを受信したときは、プロセスが動く準備が整ったということになり、プロセスが与えられたチャネルを通じて値を受信すると、プロセスは、次のアクションを計算する態勢に入る。もし次のアクションが計算であるとするとそのプロセスは計算を行い、或いはもしそれが送信、または、受信アクションであるとすると、当該プロセスは、当該プロセスと通信する準備ができている他のプロセスが見つかるまで、再び待機状態になる。
【０２１０】
スケジューラは、他のプロセスがどの順序において動作を開始する（CPUで処理される）かをスケジューリング規則に従って決める役割を持つ。全てのプロセスが同じプロセッサ（ＣＰＵ）上で実行されるとすると、スケジューラの主要作業は、何らかのことを行う準備のできた全プロセス間のCPSを（何らかの戦略または規則に従って）分担することである。もしもプロセスが、異なるＣＰＵ上で実行されるのなら、スケジューラの任務は、より複雑になる。
【０２１１】
したがって、プログラマは、オブジェクトが処理されるべきときと順序を決める必要はない。プログラムが多くのプロセスの並行した構成として特定されるのであれば、プログラマは、いかなる順序も特定する必要はない。LyeeBuilderでは、各々プログラムは多くのプロセスの並行した構成であり、ここでは、各プロセスが単語の特定の属性（定義、条件、その他）を取扱う。したがって、プログラマはいかなる制御ロジックも特定する必要はない。
【実施例１】
【０２１２】
次に、本発明に係るソフトウェア開発用コード生成ツール、ソフトウェア生成方法、ソフトウェア・コードについての実施例として、Lyeeビルダ（ツール）を用いてフレーム生成、単語生成、LyeeBELT情報定義、コード生成、デバッグに係る開発動作を行う実施例を図面に基づいて説明する。
【０２１３】
第1の実施例は２つの入力データに基づく四則演算を行うプログラム（オブジェクト）に係るソフトウェア開発を行うものである。
【０２１４】
図２６乃至１００は、実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【０２１５】
動作の説明はこれら図面の記載によるものとし、ここでは省略する。表１５は、実施例１の結果、得られるLyeBELT情報（規定されたもの）を示す図である。
【０２１６】
【表１５】
2006318318.tif 000049
【実施例２】
【０２１７】
第２の実施例はライセンス・キー・データ（ここでは３つ）の入力及び（認証）登録を行うプログラム（オブジェクト）に係るソフトウェア開発を行うものである。
【０２１８】
図１０１乃至１１１は、実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【０２１９】
動作の説明はこれら図面の記載によるものとし、ここでは省略する。表１６は、実施例１の結果、得られるLyeBELT情報（規定されたもの）を示す図である。
【０２２０】
【表１６】
2006318318.tif 000050
表１７は、図１０６のソフトウェア・ライセンス同意契約画面にかかる結果、得られるLyeBELT情報（規定されたもの）を示す図である。
【０２２１】
【表１７】
2006318318.tif 000051
【実施例３】
【０２２２】
第３の実施例は氏名、年齢等のデータの入力及び名簿登録を行うプログラム（オブジェクト）に係るソフトウェア開発を行うものである。
【０２２３】
図１１２乃至１１４は、実施例３に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【０２２４】
動作の説明はこれら図面の記載によるものとし、ここでは省略する。表１８は、実施例１の結果、得られるLyeBELT情報（規定されたもの）を示す図である。
【０２２５】
【表１８】
2006318318.tif 000052
【実施例４】
【０２２６】
第４の実施例は第１の画面で氏名（文字列）とＡ、Ｂ（共に数値）データの入力及びＡ、Ｂに基づく計算結果Ｃ（数値）の出力並びに名簿登録を行うメッセージ・ウィンドウの表示を行い、第２の画面（第１の画面のＢの入力補助画面として出る）でＤ、Ｅ（共に数値）データの入力をするその積が第１画面のＢフィールドに出力（と同時にＢのデータとなる）とするプログラム（オブジェクト）に係るソフトウェア開発を行うものである。
【０２２７】
図１１５乃至１２４は、実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【０２２８】
動作の説明はこれら図面の記載によるものとし、ここでは省略する。表１９は、図１２０の第２の画面にかかる入力結果、得られるLyeBELT情報（規定されたもの）を示す図である。
【０２２９】
【表１９】
2006318318.tif 000053
表２０は、図１２４の第１の画面にかかる入力結果、得られるLyeBELT情報（規定されたもの）を示す図である。
【０２３０】
【表２０】
2006318318.tif 000054
以上詳細に説明したように、本願発明に係るソフトウェア開発用コード生成ツールによれば、新規で非常にユーザ・フレンドリなツールが提供され、これを用いれば、メタ言語で与えられる高レベルのユーザ仕様書から様々な種類のコード（Java、COBOL等）を自動生成できるものである。
【０２３１】
本願に係るＬｙｅｅ計算法に基づくソフトウェア開発用ツール及び開発方法によれば、従来のＣｏｍｍｕｎｉｃａｔｉｎｇ  Ｓｅｑｕｅｎｔｉａｌ  Ｐｒｏｃｅｓｓ（ＣＳＰ）を元にしてＣＳＰにないプロセスを定義してＬｙｅｅ計算法（Ｌｙｅｅ
Ｃｌａｃｕｌｕｓ：ＬＣ）を定義し、ＪＣＳＰ（Ｊａｖａ版ＣＳＰ）を利用しつつＬｙｅｅ固有の点を採り入れたＪａｖａ版ＬＣ（ＪＬＣ）を作成し、さらにＬＣＳＰのスケジューラ（前述）をそのまま利用したので、プログラムを並列に動くプロセスの並行としてとらえるプロセス代数理論を踏襲しつつＬｙｅｅ方法論に則って実行制御される。
【０２３２】
つまり、本願では、プログラムをプロセスの集合として捉えるプログラミング法であるＣＳＰの考えかたに、記述するための形式化された言語をＬｙｅｅ方法論に基づく宣言としてメタ言語で定義したものである。ここで、「形式化された言語」（ｆｏｒｍａｌ  ｌａｎｇｕａｇｅ）とは、ソフトウェア工学的アプローチの一であって、構文法と意味論が定義済みでありプログラムを正確に数学的に表現することが可能なものである。
【０２３３】
図１２５は、従来技術によるＪａｖａとＪＬＣとの相違点を説明するための図である。同図に示すように、本願に係るＪＬＣによれば、プログラムの単位をプロセスとして捉え、プロセス間の通信はチャネルの指定のみによって行い（全プロセスが並行で指定チャネル上の値の受信を待つのみ）、スケジューラが実行をコントロールするため、プログラミングに際し実行順序即ち制御ロジックの特定が不要となる。
【０２３４】
因みに、表２１は、本願に係るＬｙｅｅ方法論によるプログラミング法と他の従来法との比較を表したものである。
【０２３５】
【表２１】
2006318318.tif 000055
また因みに、図１２６は、従来のＪＣＳＰと本願に係るＪＬＣとのマッピングの一例を表した図である。同図についての説明は省略する。
【０２３６】
さて、本願発明に係るソフトウェア開発用コード生成ツールは、インプット・メソッドが非常に親切で初心者に容易であり、エンドユーザ・コンピューティングに適している効果が奏される。つまり、利用者の視点からすれば、ツール上で画面レイアウトを行い、単語単位の生成式等の情報を入力し、生成ボタンを押下すると、本番（オブジェクト、開発対象の意味、以下同じ）画面を備えた本番プログラムが生成される。あたかも、画面をＧＵＩ機能上で設計すると動く、という感覚でプログラム開発を進めることが可能である（しかも、上述したように、制御ロジックのことは考えなくてよい）。
【０２３７】
また、本願発明に係るソフトウェア開発用コード生成ツールは、制御ロジックなしで、定義だけ（ソフトウェアを生産するために必要とする情報の最小の量）を必要とするLyee方法論に則っているので、エンドユーザがソフトウェアをすばやく生産することを可能とする。
【０２３８】
さらに具体的には、次のような効果が奏される。
（１）生産性
・外部設計情報からコード生成する。その際に、画面設計することで、プログラムが生成され、生成されたコードがそのままオブジェクト・プログラムとして動く。
・処理経路図（PRD ）作成を不要にし、より使いやすい開発法となる。経路要素が不要な構造のため、「要件の定義だけで、制御ロジックの設計が不要」なＬｙｅｅの特徴に残っていた設計をなくす。
・コード生成前に要件のエラーチェックと最適化が図られる。 
・プログラムの品質向上が達成される。つまり、より小さいメモリ消費量、より速い処理速度が実現できる。ここで、処理速度を速めるのは、最適化による向上及び  JCSPによるプロセス制御の影響もある。
・プロセス制御はJCSP に一任するので、人間の恣意が排除できる。 
・Eclipseとそのプラグインを利用することで実現し、プログラムもＧＵＩと同じプロパティで記述（メタ言語）できることから、操作性、習得容易性が実現する。換言すれば、スクリーンおよび機能性（定義および特性を有する単語）を発生するユーザーフレンドリーな（学び易く、使用しやすい）環境が実現される。
・Eclipseとそのプラグインを利用することで、記述→生成→コンパイル→実行がシームレスでできる統合実行環境が実現できる。
（２）保守性
・「単語単位の要件変更」のみで保守が容易、というＬｙｅｅの特徴がさらに増大する形で実現できる。換言すれば、ソフトウェアの仕様が一組の語（それは特定して、理解しやすい）の仕様になるので、保守が容易であることは明らかであり、本願に係るLyeeBuilderは単語の定義を迅速且つ容易に見つけて、修正する可能性を与えるものである。
（３）プログラムの効率
・プログラムの並行化が可能となる。つまり、Lyee方法論型プログラムの実装がプロセス代数で実現されるので、複数マシン（ネットワーク上）での分散処理が可能となる。これにより、プロラム実行の高速化が促進される。特に、今後のプログラムは、ネットワーク上で分散された複数のCPU上での並行処理対応が重要となっていくのに対し、現在は、ハードウェアが逐次処理しか行わないため、プロセスの並行処理はソフトウェア的にスケジューラによって行われているが、将来はハードウェア自体が並行処理に対応するようなると考えられることから、本願発明による将来的利便性は高まる。なお、この基礎技術は、ソフトウェア工学から生まれたCSP（Communicating
Sequential   Process）による。
・プログラムが形式化的に記述され、プログラムの要件充足性、同一性を静的に証明可能である。
・アプリケーションによっては、生成されたコードを急速にRUNして、特に埋め込まれたアプリケーションのための資源の最小限を消費することを要するものもある。異なる機械において実行されることができる並行コードを生産するので、Lyeebuilderはこの方向において助けることができる。
（４）移植性
・上記実施形態で示した例によれば、Java（商標）言語で実装されるため、LyeeBuilder自身及び生成されたコードの移植性が高まる。
（５）その他
・Eclipseは、オープン・ソース・ツールであるために、ソースコードが利用可能なのでその機能性を拡張することが可能である。この理由のために、LyeebuilderニーズによるVisualEditorパッケージを拡張することが可能となる。
・Eclipseは、携帯用であるために、本願発明に係るツールも携帯可能となる。
・EclipseがJavaで書かれるので、Eclipse及び本願発明に係るツールも異なる環境（Windows、Linux、Mac
OS、その他）のツールでも使用することができる。
・VisualEditorプラグインを使用することにより、パレット（ツールボックス）に並んでいるコンポーネントをフレームに貼りつけることでGUIを次々と構築でき、Lyee計算法に係るプロセスに対応するJavaクラスのコードを視認的に編集することが可能である。
なお、本発明は、上述した各実施形態及び実施例には限定されず、本発明の技術思想の範囲内で様々な変形が可能である。
【０２３９】
たとえば、上記では説明しなかったが、Eclipseの現在のバージョンのもつ多くの機能性（LyeeBuilderのために必要とされないものも含む）を利用することも可能である。さらに、将来的に種々の機能のプラグインが可能である。また逆に、インストールされるLyeeBuilderプラグインだけを有するEclipse（特徴の最小限）の軽いバージョンを有することが可能である。この後者の場合、この種のバージョンがより少ないメモリおよびより少ない資源しか必要としないがゆえに、作動速度が速くなる。
【０２４０】
また、自分自身のＩＤＥ-GUIツールを開発することも可能である。
【０２４１】
さらにまた、より効率的なＩＤＥツール（例えばMS-Visual.NetまたはボーランドＩＤＥツール）のためのプラグインをプログラムすることも可能である。
【０２４２】
また、Lyeeビルダには、次のような追加的機能を持たせてもよい。
１  全種類の異なったコンポーネントの仕様（Lyeeプロパティ）をより統一的にする。
２  さらに多くのLyeeコンポーネント（ラジオ・ボタン、コンボ・ボックスなど）を付加し、既に定義済みのコンポーネントの定義や追加ビヘイビアを向上させる。
３  ユーザのニーズの点で仕様をもっとフレキシブルにする。
４  もっとシンプルでもっと効率が良く、新規追加されたコンポーネントや仮想画面コンセプト等を考慮する新バージョンのLyee計算法を定義する。
５  LyeeビルダとLyeeアナライザとを統合し、ユーザ使用を有効にし、最終的にはLyeeのコード生成及びLyeeアプリケーションの実行の際の例外処理及びエラーをなくす。
６  Java生成コードをより効率のよいものにする。つまり、より少ないプロセス、より少ないメモリ使用等にする。
７  メタ言語を拡張し、どんな種類のソフトウェアでも書けるようにする。
【０２４３】
最終的には、Lyeeビルダ・ツールとは、新規で非常にユーザ・フレンドリなツールであり、これを用いれば、メタ言語で与えられる高レベルのユーザ仕様書から様々な種類のコード（Java、COBOL等）を自動生成できるものである。ソフトウェア開発、特に維持（メンテナンス）は可能な限り単純化されねばならない。また、このツールを、レガシー変換ツールと連結することで、たとえばCOBOLで書かれたソフトウェアからLyeeビルダ仕様に変換し、それを更新することができるようにしてもよい。最後に、Lyeeビルダに、様々な既存のツールとの相互作用性、通訳性を与えてもよい。
【０２４４】
また、上記では主にＪａｖａ（商標）言語を念頭において説明したが、Ｊａｖａ以外の言語（たとえばＣ、ＣＯＢＯＬ言語等）によるコード生成も可能である。
【０２４５】
さらに、上記では、説明の簡略のために主に画面への入出力に焦点をあてて説明したが、データベースへの入出力も原理的にサポート可能である。
【０２４６】
また、本願に、静的分析（要件エラーの検出）、並列化のための最適化機能を付加してもよい。この構成によれば更なる効率化が達成される。ＬｙｅｅＡｎａｌｙｚｅｒプロトタイプを備えても良い。
【０２４７】
さらにまた、上記の説明においては、入力情報（ＬｙｅｅＢＥＬＴ情報）の記述はメタ言語による場合を主に説明したが、ＸＭＬによってもよい。
【０２４８】
さらに本願発明は、その技術思想の同一及び等価に及ぶ範囲において様々な変形、追加、置換、拡大、縮小等を許容するものである。また、本願発明を用いて生産される装置、方法、ソフトウェア、システムが、その２次的生産品に登載されて商品化された場合であっても、本願発明の価値は何ら減ずるものではない。
【産業上の利用可能性】
【０２４９】
本願発明に係るソフトウェア開発用コード生成ツールは、制御ロジックなしで、定義だけ（ソフトウェアを生産するために必要とする情報の最小の量）を必要とするLyee方法論に則っていることから、エンドユーザによるソフトウェアの生産速度の大幅な向上が可能となるので、いかなる用途、或いはネットワークを介して配信され若しくはスタンドアローンを問わずあらゆる存在形態におけるソフトウェア、及びソフトウェアの生産方法にも適用できる。
【０２５０】
さらに、本発明によれば、ソフトウェア開発に関し、生産性、保守性、プログラム効率、移植性、その他の各点において飛躍的な向上が可能となるので、いかなる用途、或いはネットワークを介して配信され若しくはスタンドアローンを問わずあらゆる存在形態におけるソフトウェア、及びソフトウェアの生産方法にも適用できる。
【図面の簡単な説明】
【０２５１】
【図１】本発明の一実施形態に係るセルの概念を説明するための概念図である。
【図２】本発明の一実施形態に係る相互に作用するプロセスの例を示す図である。
【図３】本発明の一実施形態に係る要件の実行の概念を説明するための概念図である。
【図４】本発明の一実施形態に係るＬｙｅｅパレットの概念を説明するための概念図である。
【図５】本発明の一実施形態に係る基本構造の概念を説明するための概念図である。
【図６】本発明の一実施形態に係る述語ベクトルの概念を説明するための概念図である。
【図７】本発明の一実施形態に係るＬ４_aおよびＬ４_ｂの述語ベクトルの概念を説明するための概念図である。
【図８】本発明の一実施形態に係るＬ３_ａおよびＬ３_ｂの述語ベクトルの概念を説明するための概念図である。
【図９】本発明の一実施形態に係る画面相互作用の概念を説明するための概念図である。
【図１０】本発明の一実施形態に係る処理経路図を説明するための概念図である。
【図１１】本発明の一実施形態に係るLyee計算法のプログラムモデルに係り、プロセスは、受信チャネルを介しての受信動作、待機動作を説明するための図である。
【図１２】本発明の一実施形態に係るあるプログラムのLyee方法論による宣言の例である。
【図１３】a=2、b=5と入力された場合のLyee計算法モデルの一例を示す図である。
【図１４】本発明の一実施形態に係るLyee計算法のプログラムモデルのスキームを表す概念図である。
【図１５】本発明の一実施形態に係るLyee計算法のプログラムモデルにおける動作の概念を説明するための概念図である。
【図１６】本発明の一実施形態に係る本願発明に係るソフトウェア開発用コード生成ツールの一実施形態であるLyeeBuilder（商標）の実装構造を説明するための概念図である。
【図１７】本発明の一実施形態に係るソフトウェア開発用コード生成ツール（LyeeBuilder）１０の構成をさらに詳しく示す機能ブロック図である。
【図１８】本発明の一実施形態に係るグラフィカル・ユーザ・インターフェース（GUI）部１１０、特にそのプロジェクト生成機能によって生成される、パッケージ・エクスプローラによるプロジェクト生成用画面の一例を表す図である。
【図１９】本発明の一実施形態に係るグラフィカル・ユーザ・インターフェース（GUI）部１１０、特にその表示機能によって生成される、ソフトウェア開発用コード生成ツール（LyeeBuilder）１０の操作画面の概要を説明するための図である。
【図２０】本発明の一実施形態に係るJavaウィンドウ（Javaエディタ）２１内のデザイン・タブ上で規定されるフレームをより詳細に説明するための画面図である。
【図２１】本発明の一実施形態に係るJavaウィンドウ（Javaエディタ）２１内のデザイン・タブ上で規定されるフレームをより詳細に説明するための画面図である。
【図２２】本発明の一実施形態に係るJavaウィンドウ（Javaエディタ）２１内のデザイン・タブ上で規定されるフレームをより詳細に説明するための画面図である。
【図２３】本発明の一実施形態に係るJavaウィンドウ（Javaエディタ）２１内のデザイン・タブ上で規定されるフレームをより詳細に説明するための画面図である。
【図２４】本発明の一実施形態に係るソフトウェア開発用コード生成ツールに係る動作を説明するフローチャートである。
【図２５】本発明の一実施形態に係る定義動作を画面に合わせて説明するための説明図である。
【図２６】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図２７】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図２８】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図２９】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３０】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３１】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３２】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３３】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３４】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３５】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３６】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３７】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３８】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図３９】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４０】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４１】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４２】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４３】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４４】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４５】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４６】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４７】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４８】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図４９】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５０】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５１】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５２】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５３】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５４】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５５】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５６】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５７】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５８】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図５９】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６０】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６１】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６２】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６３】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６４】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６５】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６６】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６７】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６８】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図６９】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７０】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７１】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７２】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７３】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７４】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７５】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７６】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７７】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７８】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図７９】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８０】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８１】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８２】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８３】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８４】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８５】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８６】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８７】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８８】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図８９】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９０】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９１】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９２】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９３】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９４】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９５】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９６】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９７】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９８】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図９９】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１００】本発明の実施例１に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０１】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０２】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０３】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０４】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０５】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０６】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０７】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０８】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１０９】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１０】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１１】本発明の実施例２に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１２】本発明の実施例３に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１３】本発明の実施例３に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１４】本発明の実施例３に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１５】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１６】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１７】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１８】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１１９】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１２０】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１２１】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１２２】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１２３】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１２４】本発明の実施例４に係るGUI環境及び当該環境のもとで期待される入力動作、並びにそれに伴うソフトウェア開発用コード生成ツール（LyeeBuilder）１０のツール側の動作を説明するための図（主に画面図）である。
【図１２５】従来技術によるＪａｖａとＪＬＣとの相違点を説明するための図である。
【図１２６】従来のＪＣＳＰと本願に係るＪＬＣとのマッピングの一例を表した図である。
【符号の説明】
【０２５２】
１    Ｅｃｌｉｐｓｅ（統合開発環境ツール）
２    Ｖｉｓｕａｌ  Ｅｄｉｔｏｒ（ヴィジュアル・エディタ）
３    Ｖｉｓｕａｌ  Ｄｅｂｕｇｇｅｒ（ヴィジュアル・デバッガ）
１０  Ｌｙｅｅ  Ｂｕｉｌｄｅｒ（プログラム生成ツール）
２０  IDE（統合開発環境）画面
２１  Javaウィンドウ（Javaエディタ）
２２  パッケージ・エクスプローラ・ヴュー
２３  プロパティ・ヴュー
２４  アウトライン・ヴュー
２５  宣言ヴュー
１１０  グラフィカル・ユーザ・インターフェース部
１２０  補助部
１３０  入力データ処理部
１４０  コーディング部
１５０  データベース部
１６０  ライブラリ部
２１０  フレーム
２１１  Lyeeヴィジュアル・エディタ・パレット
２１１１  単語
【図１】
2006318318.tif 000056
【図２】
2006318318.tif 000057
【図３】
2006318318.tif 000058
【図４】
2006318318.tif 000059
【図５】
2006318318.tif 000060
【図６】
2006318318.tif 000061
【図７】
2006318318.tif 000062
【図８】
2006318318.tif 000063
【図９】
2006318318.tif 000064
【図１０】
2006318318.tif 000065
【図１１】
2006318318.tif 000066
【図１２】
2006318318.tif 000067
【図１３】
2006318318.tif 000068
【図１４】
2006318318.tif 000069
【図１５】
2006318318.tif 000070
【図１６】
2006318318.tif 000071
【図１７】
2006318318.tif 000072
【図１８】
2006318318.tif 000073
【図１９】
2006318318.tif 000074
【図２０】
2006318318.tif 000075
【図２１】
2006318318.tif 000076
【図２２】
2006318318.tif 000077
【図２３】
2006318318.tif 000078
【図２４】
2006318318.tif 000079
【図２５】
2006318318.tif 000080
【図２６】
2006318318.tif 000081
【図２７】
2006318318.tif 000082
【図２８】
2006318318.tif 000083
【図２９】
2006318318.tif 000084
【図３０】
2006318318.tif 000085
【図３１】
2006318318.tif 000086
【図３２】
2006318318.tif 000087
【図３３】
2006318318.tif 000088
【図３４】
2006318318.tif 000089
【図３５】
2006318318.tif 000090
【図３６】
2006318318.tif 000091
【図３７】
2006318318.tif 000092
【図３８】
2006318318.tif 000093
【図３９】
2006318318.tif 000094
【図４０】
2006318318.tif 000095
【図４１】
2006318318.tif 000096
【図４２】
2006318318.tif 000097
【図４３】
2006318318.tif 000098
【図４４】
2006318318.tif 000099
【図４５】
2006318318.tif 000100
【図４６】
2006318318.tif 000101
【図４７】
2006318318.tif 000102
【図４８】
2006318318.tif 000103
【図４９】
2006318318.tif 000104
【図５０】
2006318318.tif 000105
【図５１】
2006318318.tif 000106
【図５２】
2006318318.tif 000107
【図５３】
2006318318.tif 000108
【図５４】
2006318318.tif 000109
【図５５】
2006318318.tif 000110
【図５６】
2006318318.tif 000111
【図５７】
2006318318.tif 000112
【図５８】
2006318318.tif 000113
【図５９】
2006318318.tif 000114
【図６０】
2006318318.tif 000115
【図６１】
2006318318.tif 000116
【図６２】
2006318318.tif 000117
【図６３】
2006318318.tif 000118
【図６４】
2006318318.tif 000119
【図６５】
2006318318.tif 000120
【図６６】
2006318318.tif 000121
【図６７】
2006318318.tif 000122
【図６８】
2006318318.tif 000123
【図６９】
2006318318.tif 000124
【図７０】
2006318318.tif 000125
【図７１】
2006318318.tif 000126
【図７２】
2006318318.tif 000127
【図７３】
2006318318.tif 000128
【図７４】
2006318318.tif 000129
【図７５】
2006318318.tif 000130
【図７６】
2006318318.tif 000131
【図７７】
2006318318.tif 000132
【図７８】
2006318318.tif 000133
【図７９】
2006318318.tif 000134
【図８０】
2006318318.tif 000135
【図８１】
2006318318.tif 000136
【図８２】
2006318318.tif 000137
【図８３】
2006318318.tif 000138
【図８４】
2006318318.tif 000139
【図８５】
2006318318.tif 000140
【図８６】
2006318318.tif 000141
【図８７】
2006318318.tif 000142
【図８８】
2006318318.tif 000143
【図８９】
2006318318.tif 000144
【図９０】
2006318318.tif 000145
【図９１】
2006318318.tif 000146
【図９２】
2006318318.tif 000147
【図９３】
2006318318.tif 000148
【図９４】
2006318318.tif 000149
【図９５】
2006318318.tif 000150
【図９６】
2006318318.tif 000151
【図９７】
2006318318.tif 000152
【図９８】
2006318318.tif 000153
【図９９】
2006318318.tif 000154
【図１００】
2006318318.tif 000155
【図１０１】
2006318318.tif 000156
【図１０２】
2006318318.tif 000157
【図１０３】
2006318318.tif 000158
【図１０４】
2006318318.tif 000159
【図１０５】
2006318318.tif 000160
【図１０６】
2006318318.tif 000161
【図１０７】
2006318318.tif 000162
【図１０８】
2006318318.tif 000163
【図１０９】
2006318318.tif 000164
【図１１０】
2006318318.tif 000165
【図１１１】
2006318318.tif 000166
【図１１２】
2006318318.tif 000167
【図１１３】
2006318318.tif 000168
【図１１４】
2006318318.tif 000169
【図１１５】
2006318318.tif 000170
【図１１６】
2006318318.tif 000171
【図１１７】
2006318318.tif 000172
【図１１８】
2006318318.tif 000173
【図１１９】
2006318318.tif 000174
【図１２０】
2006318318.tif 000175
【図１２１】
2006318318.tif 000176
【図１２２】
2006318318.tif 000177
【図１２３】
2006318318.tif 000178
【図１２４】
2006318318.tif 000179
【図１２５】
2006318318.tif 000180
【図１２６】
2006318318.tif 000181