(57)【要約】Ｌｙｅｅ方法論による要件定義（Lyee requirement specificaitons）とその実装との間のギャップを埋める手段を提供する。 本発明は、Ｌｙｅｅ計算法によるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルを入出力チャネルを備えたプロセス・セルの並行処理としてＪＣＳＰによりモジュール化したクラスが格納されたＪＣＳＰライブラリと、開発対象ソフトウェアの要件を入力する手段と、前記入力された要件のうち環境（エンドユーザ）に係る要件をプロセス化して得られる情報を、前記ＪＣＳＰライブラリ中の制御関数及びシナリオ関数に係るクラスとしてのひな型の未定義部分に挿入してプログラムを生成する第１のクラス生成手段と、前記入力された要件のうちシステムに係る要件が、単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として情報化された情報を、前記第１のクラス生成手段で生成されるプログラムのクラス及びメソッドの未定義部分に挿入する第２のクラス生成手段とを具備することを最も主要な特徴とする。【特許請求の範囲】
【請求項１】
Ｌｙｅｅ計算法によるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルを入出力チャネルを備えたプロセス・セルの並行処理としてＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）によりモジュール化したクラスが格納されたＪＣＳＰライブラリと、
開発対象ソフトウェアの要件を入力する手段と、
前記入力された要件のうち環境（エンドユーザ）に係る要件をプロセス化して得られる情報を、前記ＪＣＳＰライブラリ中の制御関数及びシナリオ関数に係るクラスとしてのひな型の未定義部分に挿入してプログラムを生成する第１のクラス生成手段と、
前記入力された要件のうちシステムに係る要件が、単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として情報化された情報を、前記第１のクラス生成手段で生成されるプログラムのクラス及びメソッドの未定義部分に挿入する第２のクラス生成手段と
を具備することを特徴とするソフトウェア生成装置。
【請求項２】
Ｌｙｅｅ計算法に基づく要件が、単語名、定義式、定義式実行条件、入出力属性、一般属性を規定する宣言としてテンプレート化され記憶されている第１の格納部と、
Ｌｙｅｅ計算法に基づくプログラム及び制御関数がＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）によるクラスとしてテンプレート化され記憶されている第２の格納部と、
Ｌｙｅｅ計算法に基づくパレット関数、論理ベクトル及び作用ベクトルがＪＣＳＰによるクラスとしてテンプレート化され記憶されている第３の格納部と、
開発対象ソフトウェアの要件を入力するための画面を表示させるグラフィカル・ユーザ・インターフェース（ＧＵＩ）と、
前記ＧＵＩ上で入力されたシステムに係る要件情報を、前記第１の格納部から取り出したテンプレートに当て嵌めて宣言情報を得る宣言情報生成部と、
前記ＧＵＩ上で入力された環境（エンド・ユーザ）に係る要件情報を、前記第２の格納部から取り出したテンプレートに当て嵌めて制御関数クラスを得る制御関数クラス生成部と、
前記宣言情報生成部で得られた宣言情報を、前記第２の格納部から取り出したテンプレートに当て嵌めて関数及びベクトル・クラスを得る関数ベクトルクラス生成部と
を具備することを特徴とするソフトウェア生成支援装置。
【請求項３】
開発対象ソフトウェアの要件を入力させる第1のステップと、
前記入力された要件のうちシステムに係るシステム要件を、画面ごと該画面に属する単語ごとの宣言として形式化して記述する第2のステップと、
前記入力された要件のうち環境の作用に係る環境要件を、プロセスとして形式化して記述する第3のステップと、
Ｌｙｅｅ計算法によるプログラムであって、これを構成する制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルのそれぞれをプロセスとして形式化されたプログラムと前記環境要件が形式化されたプロセスとが並列実行されるプロセス代数として捉える第4のステップと、
前記第4のステップの結果であるプロセス代数に前記第2のステップで形式化された宣言を重畳させるステップと
を具備するソフトウェア生成方法において、
前記形式化表現される各プロセスをＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）ライブラリにおけるクラスを用いることを特徴とするソフトウェア生成方法。
【請求項４】
開発対象ソフトウェアのシステムに係る要件を画面単位、該画面に属する単語単位で単語名・必要に応じて定義式・必要に応じて定義式実行条件・必要に応じて入出力属性・一般属性が規定される宣言として捉える手段と、
開発対象ソフトウェアの環境に係る要件をＬｙｅｅ計算法のプログラム及び制御関数に係るプロセスに反映させて環境側プロセスとして形式化して記述する手段と、
前記宣言として捉えられた情報をＬｙｅｅ計算法のパレット関数、論理ベクトル、作用ベクトルに係るプロセスに反映させてシステム側プロセスとして形式化して記述する手段と、
前記システム側プロセス及び環境側プロセスが並列実行されるプロセスとして形式化して記述する手段と、
前記形式化されたプロセスをＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）ライブラリにおけるクラスにマッピングする手段と
を具備することを特徴とするＪａｖａコード実装装置。
【請求項５】
ＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）ライブラリとしてプロセスを定義するためのクラスで表現されたソフトウェアにおいて、
Ｌｙｅｅ計算法によるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルを並行処理可能プロセスとして形式化表現して得られるクラスと、
前記クラス中に含まれ、開発対象ソフトウェアのシステムに係る要件が単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として反映された部分を有するメソッドと
を具備することを特徴とするソフトウェア。
【請求項６】
所望のソフトウェア開発に係る要件をＬｙｅｅ方法論を用いて宣言化する宣言ステップと、
前記Ｌｙｅｅ方法論におけるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルプロセス表現する形式化ステップと、
前記形式化ステップでプロセスからＪａｖａ（商標）言語にマッピングするステップと、
前記マッピングされたＪａｖａ言語におけるクラス及びメソッドの所定の欄に前記宣言ステップで宣言化された情報を入力してソースコードを得るステップと
を具備することを特徴とするＬｙｅｅ計算法のＪａｖａ（商標）言語による実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア生成方法に係り、特に、Ｌｙｅｅ方法論におけるプロセス代数による定式化を用いたソフトウェア生成装置、ソフトウェア生成支援装置、ソフトウェア生成方法、Ｊａｖａコード実装装置、ソフトウェア、並びにＬｙｅｅ計算法のＪａｖａ（商標）言語による実装方法に関する。
【背景技術】
【０００２】
高い品質を持つソフトウェアを容易に迅速に製造することは、ソフトウェア開発研究分野での基本的な関心事である。ここ数年間にわたって、ソフトウェア開発のライフサイクルに関連する１つまたは多くの局面を改善するために、種々の方法論および技術が考案され、提案されてきた。【０００３】
しかし、この研究分野における熱心な努力にもかかわらず、明確に理解でき、修正可能なシステムの製造は、困難な目標であり達成にはほど遠い。最近、Ｌｙｅｅ（ｇｏｖｅｒｎｍｅｎｔａＬ  ｍｅｔｈｏｄｏｌｏｇＹ  ｆｏｒ  ｓｏｆｔｗａｒＥ  ｐｒｏｖｉｄｅｎｃＥ）（非特許文献８及び９参照）という新規で非常に有望な方法論が提案された。異なる分野に関する広い範囲のソフトウェアの問題を効率的に処理することを目的としたＬｙｅｅにより、単にその要件を定義するだけで、ソフトウェアを開発することができるようになった。もっと正確にいえば、開発者は、単語、計算式、計算条件（前提条件）、画面および帳票のレイアウトを与えさえすれば、後は、コンピュータが以降のすべての面倒なプログラミング・プロセス（例えば、種々の制御ロジックの局面）を行ってくれる。
【非特許文献１】ジェイ・エイ・ベルグストゥラ、ジェイ・ダブリュ・クロップ（J.A. Bergstra and J. W. Klop）著、「抽象化を用いたコミュニケーション・プロセスの代数」、１９８５年，理論コンピュータ科学、３７（１）、ｐ．７７―１２１
【非特許文献２】シー・エー・アール・ホーア（C.A.R.Hoare）著、「コミュニケーティング順次プロセス」、プレンティス・ホールコンピュータ科学国際シリーズ、プレンティス・ホール出版、１９８５年
【非特許文献３】エム・メジリ、ビー・クタリ、エム・アーヒオウイ（M.Mejri, B.Ktari, and M.Erhioui）著、「Lyee指向ソフトウェアについての静的分析」、パリにおけるLyee方法論に関する第１回国際ワークショップ予稿集、ハミド・藤田、ポウル・ジョナネッセン編「ソフトウェア方法論、ツール及び技術における新潮流」ｐ．３７５―３９４、アイオーエス出版、２００２年
【非特許文献４】エム・メジリ、ビー・クタリ、エイチ・フジタ（M.Mejri, B.Ktari, and H.Fujita）著、「Lyee計算法：Ｌｙｅｅ方法論の形式化」、スウェーデン、ストックホルムにおけるLyee方法論に関する第２回国際ワークショップ予稿集、ハミド・藤田、ポウル・ジョナネッセン編「ソフトウェア方法論、ツール及び技術における新潮流」ｐ．２３５―２６１、アイオーエス出版、２００３年９月
【非特許文献５】アール・ミルナー（R.Milner）著、「コミュニケーション・システムの計算法」、コンピュータ科学９２講義録、ベルリン、１９８０年、スプリンガー・フェアラーク出版
【非特許文献６】根来文生著、「Ｌｙｅｅソフトウェアの原理」、２１世紀の情報科学についての国際会議２０００（IS2000）、ｐ．１２１―１８９、２０００年１１月
【非特許文献７】根来文生著、「Ｌｙｅｅ入門」、ソフトウェア生産技術研究所、東京、日本、２００１年
【非特許文献８】根来文生、アイ・ハミド（I.Hamid）著、「意思工学の提案」、データベースと情報システムに関する第５回東ヨーロッパ会議研究 （ＡＤＢＩＳ’２００１）、２０００年９月
【非特許文献９】根来文生、アイ・ハミド（I.Hamid）著、「意思工学の提案」、インターネット上の電子商取引、科学及び教育の基盤における進歩に関する国際会議 （ＳＳＧＲＲ２００１）、２００１年
【非特許文献１０】ピーター・ウェルチ（PeterWelch）著、「Ｊａｖａ（商標）の通信順序プロセス（ＪＣＳＰ）」、ｈｔｔｐ：／／ｗｗｗ．ｃｓ．ｋｅｎｔ．ａｃ．ｕｋ／ｐｒｏｊｅｃｔｓ／ｏｆａ／ｊｃｓｐ／、２００４年
【非特許文献１１】マシュウ・ウォイタスゼック（MatthewWoitaszek）著、「Ｏｃｃａｍ入門」、ｈｔｔｐ：／／ｗｗｗ．ｃｓ．ｒｉｔ．ｅｄｕ／〜ｍｓｗ４５８５／ｏｃｃａｍ／、２００４年
【発明の開示】
【発明が解決しようとする課題】
【０００４】
その新しさにもかかわらず、Ｌｙｅｅの使用結果は、Ｌｙｅｅに優れた可能性があることを示している。しかしながら、要件からのソフトウェアの自動生成プロセスも、生成されたＬｙｅｅソフトウェアの意味論も、形式的でない言語によって記述されているために、この方法論を理解し、研究しようとすると、困難に遭遇し、混乱が生じる恐れがあった。このため、「Lyee計算法：Ｌｙｅｅ方法論の形式化」 （非特許文献４）で、プロセス代数を使用して、Ｌｙｅｅにより生成したソフトウェアの意味論と、ソフトウェアの自動生成プロセスの形式化を提案した。【０００５】
このような形式化により、Ｌｙｅｅ方法論の基本的なコンセプトを容易かつ本質的にサポートするＬｙｅｅ計算法、すなわち、形式的なプロセス代数の定義が確立できた。実際に、Ｌｙｅｅにより生成したソフトウェアは、基本的には、小さなコンポーネント（Ｌｙｅｅ用語でベクトル（vector）と呼ばれる）からできている。この場合、各コンポーネントは、所望される結果（グローバル・ゴール（global goal））を生成するために、相互作用により協働するアトミック・ゴール（atomic goal）を持つ。一方、プロセス代数は、本来、並行処理（concurrency）および通信（communication）をサポートするものであることは周知である。【０００６】
しかしながら、Ｊａｖａ（商標）言語によりＬｙｅｅ計算法を実装しようとすることには、Ｊａｖａ（商標）言語が下層で動いているオペレーティング・システムに、スレッド同期およびスケジュール作成を委任していることから、特にＬｙｅｅ計算法の非逐次言語型処理によりプロセス代数を用いることには極めて困難があった。【０００７】
本発明は上記の従来技術の問題を解決するためになされたもので、この計算法の効率性と、この計算法がＬｙｅｅ方法論に適していることを具体的に証明することを目的とする。そのために、Ｊａｖａ（商標）言語でのＬｙｅｅ計算法のモデルの実装について説明する。さらに、この実装の目的は、Ｌｙｅｅ計算法の形式的記述から、アプリケーションを自動生成することができる環境をプログラマーに提供することである。すなわち、Ｌｙｅｅ計算法のＪａｖａ言語によるこの実装は、Ｌｙｅｅ要件定義とその実装との間のギャップを埋める手段を提供することを目的とする。また、本願は、Ｊａｖａ（商標）言語でのＬｙｅｅ計算法のモデルの実装を困難性を配して行うことを可能とするソフトウェア生成装置、ソフトウェア生成支援装置、ソフトウェア生成方法、Ｊａｖａコード実装装置、ソフトウェア、並びにＬｙｅｅ計算法のＪａｖａ（商標）言語による実装方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため、本発明は、Ｌｙｅｅ計算法によるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルを入出力チャネルを備えたプロセス・セルの並行処理としてＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）によりモジュール化したクラスが格納されたＪＣＳＰライブラリと、開発対象ソフトウェアの要件を入力する手段と、前記入力された要件のうち環境（エンドユーザ）に係る要件をプロセス化して得られる情報を、前記ＪＣＳＰライブラリ中の制御関数及びシナリオ関数に係るクラスとしてのひな型の未定義部分に挿入してプログラムを生成する第１のクラス生成手段と、前記入力された要件のうちシステムに係る要件が、単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として情報化された情報を、前記第１のクラス生成手段で生成されるプログラムのクラス及びメソッドの未定義部分に挿入する第２のクラス生成手段とを具備することを最も主要な特徴とする。【０００９】
かかる構成を備える本発明によれば、Ｌｙｅｅ計算法のモデルをＪａｖａ言語によって実装することにより、Ｌｙｅｅによる要件定義（Lyee requirement specificaitons）とその実装との間のギャップを埋める手段が提供されることになり、したがって、Ｌｙｅｅ計算法による形式的記述からアプリケーションを自動生成することができる環境をプログラマーに提供することが可能となる。つまり、上記の構成によれば、入出力チャネルを備えたプロセス・セルの並行処理がサポートされるＪＣＳＰを用いているので、Ｌｙｅｅ計算法によるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルに係る所与のプログラムがＪａｖａのクラスとして実現することができる。しかもこのクラスには、Ｌｙｅｅ計算法に基づく要件定義の宣言化を反映させてインスタンス化することから、所望のソフトウェアの生成が実現される。このとき、開発所望のユーザ／開発担当者は、たとえばグラフィカル・ユーザ・インターフェース上で、開発対象のソフトウェアに係る画面ごとに単語を、その単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性を定義するだけでよい。Ｌｙｅｅ計算法に則っているから開発担当者は論理設計を行うことなく、目的ソフトウェアのＪａｖａコードを得ることが可能になる。【００１０】
また本発明はソフトウェア生成支援装置として実現されるように、Ｌｙｅｅ計算法に基づく要件が、単語名、定義式、定義式実行条件、入出力属性、一般属性を規定する宣言としてテンプレート化され記憶されている第１の格納部と、Ｌｙｅｅ計算法に基づくプログラム及び制御関数がＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）によるクラスとしてテンプレート化され記憶されている第２の格納部と、Ｌｙｅｅ計算法に基づくパレット関数、論理ベクトル及び作用ベクトルがＪＣＳＰによるクラスとしてテンプレート化され記憶されている第３の格納部と、開発対象ソフトウェアの要件を入力するための画面を表示させるグラフィカル・ユーザ・インターフェース（ＧＵＩ）と、前記ＧＵＩ上で入力されたシステムに係る要件情報を、前記第１の格納部から取り出したテンプレートに当て嵌めて宣言情報を得る宣言情報生成部と、前記ＧＵＩ上で入力された環境（エンド・ユーザ）に係る要件情報を、前記第２の格納部から取り出したテンプレートに当て嵌めて制御関数クラスを得る制御関数クラス生成部と、前記宣言情報生成部で得られた宣言情報を、前記第２の格納部から取り出したテンプレートに当て嵌めて関数及びベクトル・クラスを得る関数ベクトルクラス生成部とを具備するように構成しても良い。【００１１】
さらに本発明は、ソフトウェア生成方法として実現されるように、開発対象ソフトウェアの要件を入力させる第1のステップと、前記入力された要件のうちシステムに係るシステム要件を、画面ごと該画面に属する単語ごとの宣言として形式化して記述する第2のステップと、前記入力された要件のうち環境の作用に係る環境要件を、プロセスとして形式化して記述する第3のステップと、Ｌｙｅｅ計算法によるプログラムであって、これを構成する制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルのそれぞれをプロセスとして形式化されたプログラムと前記環境要件が形式化されたプロセスとが並列実行されるプロセス代数として捉える第4のステップと、前記第4のステップの結果であるプロセス代数に前記第2のステップで形式化された宣言を重畳させるステップとを具備するソフトウェア生成方法において、前記形式化表現される各プロセスをＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）ライブラリにおけるクラスを用いるように構成しても良い。【００１２】
また本発明は、Ｊａｖａコード実装装置として実現されるように、開発対象ソフトウェアのシステムに係る要件を画面単位、該画面に属する単語単位で単語名・必要に応じて定義式・必要に応じて定義式実行条件・必要に応じて入出力属性・一般属性が規定される宣言として捉える手段と、開発対象ソフトウェアの環境に係る要件をＬｙｅｅ計算法のプログラム及び制御関数に係るプロセスに反映させて環境側プロセスとして形式化して記述する手段と、前記宣言として捉えられた情報をＬｙｅｅ計算法のパレット関数、論理ベクトル、作用ベクトルに係るプロセスに反映させてシステム側プロセスとして形式化して記述する手段と、前記システム側プロセス及び環境側プロセスが並列実行されるプロセスとして形式化して記述する手段と、前記形式化されたプロセスをＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）ライブラリにおけるクラスにマッピングする手段とを具備するように構成しても良い。【００１３】
さらに本発明は、ソフトウェアとして実現されるように、ＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）ライブラリとしてプロセスを定義するためのクラスで表現されたソフトウェアにおいて、Ｌｙｅｅ計算法によるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルを並行処理可能プロセスとして形式化表現して得られるクラスと、前記クラス中に含まれ、開発対象ソフトウェアのシステムに係る要件が単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として反映された部分を有するメソッドとを具備するように構成しても良い。【００１４】
また本発明は、Ｌｙｅｅ計算法のＪａｖａ（商標）言語による実装方法として実現されるように、所望のソフトウェア開発に係る要件をＬｙｅｅ方法論を用いて宣言化する宣言ステップと、前記Ｌｙｅｅ方法論におけるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルプロセス表現する形式化ステップと、前記形式化ステップでプロセスからＪａｖａ（商標）言語にマッピングするステップと、前記マッピングされたＪａｖａ言語におけるクラス及びメソッドの所定の欄に前記宣言ステップで宣言化された情報を入力してソースコードを得るステップとを具備するように構成しても良い。
【発明の効果】
【００１５】
Ｌｙｅｅ計算法のモデルをＪａｖａ言語によって実装することにより、Ｌｙｅｅによる要件定義（Lyee requirement specificaitons）とその実装との間のギャップを埋める手段が提供されることになり、したがって、Ｌｙｅｅ計算法による形式的記述からアプリケーションを自動生成することができる環境をプログラマーに提供することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の最良の実施形態を説明する。なお、以下の説明において、たとえばプロセス代数自体の考え方、プロセス代数をＬｙｅｅ計算法のモデルに適用する考え方の詳細については、同一出願人及び発明者による国際出願：出願番号ＰＣＴ／ＪＰ２００４／０１３８５５、国際公開番号ＷＯ  ２００５／０２９３２３  Ａ１の開示事項をここに引用し、本稿の開示の一部となすものとする。
＜第１章＞  はじめに
このＬｙｅｅ計算法の効率性およびこの計算法がＬｙｅｅ方法論に適していることを具体的に証明するために、本論文では、この計算法のモデルのＪａｖａ（商標）言語への実装について説明する。この実装はＪＣＳＰ（Java Communicating Sequential Process）（非特許文献１０参照）を土台にしている。ＪＣＳＰとは、ホーアによって考案されたプロセス代数であるＣＳＰ（Communicating Sequential Process）と類似の計算法をＪａｖａ  ＡＰＩ（Application Program Interface）に導入したものである。すなわち、Ｊａｖａのプロセス、構成（composition）およびチャネルである。さらに、本論文ではＬｙｅｅ仕様が、どのようにしてＬｙｅｅ計算法を経てＪａｖａプログラムになるのかについても説明する。【００１７】
本願のこれ以降の部分は、次のような構成になっている。第２章においては、Ｌｙｅｅ計算法の文法および意味論について説明する。第３章においては、この計算法によるＬｙｅｅ方法論の形式化について説明する。第４章においては、主要なＪａｖａ  ＡＰＩが供給するＪＣＳＰライブラリについて説明する。第５章においては、Ｌｙｅｅ計算法が要求する構造のＪａｖａによる実装を提示する。第６章において、Ｌｙｅｅ計算法により、簡単なＬｙｅｅ要件からどのようにＪａｖａプログラムが生成されるのかを具体的に示す１つのケーススタディについて説明する。最後に、第７章において、この研究の結論を述べ、いくつかの将来の研究について説明する。【００１８】
なお、ＪＣＳＰについての詳細は、公知のものによるものとし、たとえば、ケント大学の研究の成果で公知のものを参照の上、本稿での開示事項に含めるものとする（http://www.cs.kent.ac.uk/projects/ofa/jcsp/）。
＜第２章＞  Ｌｙｅｅ計算法
この章においては、Ｌｙｅｅ方法論を形式化するために特に定義したＬｙｅｅ計算法の文法および意味論について説明する（非特許文献４参照）。
２．１     
文法
Ｌｙｅｅ計算法によるプログラムは、指定チャネル上で、ハンドシェイク（hand-shake; 通信の前に送受信側が互いに制御情報の交換を行うこと）技術により通信する、独立した並列プロセスからなるシステムである。プロセスの文法は、プロセスＰ、Ｑに関して表わすとすると、下式のように記述できる。【００１９】
【数１】
2006006621.tif 000002
各文法構造の直感的意味は下記の通りである。
・シーケンス（Sequence）：［Ｋ］．Ｐは、作用の集合であるＫに属す総ての作用（action）を実行した後に、プロセスＰとしてふるまう（behave）プロセスである。Ｋ内の作用を実行する順序は重要ではない。説明を簡単にするために、［｛κ１，．．．，κｎ｝］と書く代わりに、［κ１，．．．，κｎ］と書くことにする。プロセスは、作用【００２０】
【数２】
2006006621.tif 000003
を行うことにより、チャネル【００２１】
【数３】
2006006621.tif 000004
を通して値ｖを送ることができる（ｖはｅの値（valuation）に相当する）。同様に、プロセスは、作用【００２２】
【数４】
2006006621.tif 000005
を行うことにより、チャネルから値を受信することができる。プロセスは、また、不作用作用（silent action）τを実行することができる。【００２３】
・並列構成（parallel composition）：Ｐ｜Ｑは、並列に動作しているプロセスＰおよびＱとしてふるまう。ＰおよびＱのそれぞれは、両者が知っているチャネル上で相互に作用することができるし、または互いに一方から独立して外部単語（環境またはエンド・ユーザ）と相互に作用することもできる。２つのプロセスが同じチャネル上で同期する（synchronize）と、全プロセスは、作用τを実行し、残りのプロセスとしてふるまう。
・選択（Choice）：Ｐ＋Ｑは、ＰまたはＱとしてふるまう。ＰおよびＱの両方が、不作用でスタートしない場合には、選択は確定的に（環境によって）決まり、そうでない場合には、選択は確定されない。
・保護された選択（Guarded choice）：Ｐ>Ｑは、プロセスＱが作用するまでＰとしてふるまうプロセスである。Ｑが作用した場合はいつでも、Ｐは停止し、メモリからクリアされる。
・制限（Restriction）：Ｐ／Lは、Ｌだけに与えられたチャネルによって環境と通信できる場合を除いて、Ｐとしてふるまうプロセスである。
・定義：【００２４】
【数５】
2006006621.tif 000006
は定義式である。この場合、Ａはプロセス識別子であり、【００２５】
【数６】
2006006621.tif 000007
は変数（パラメータ）であり、Ｐは再起的にＡを含むことができる。【００２６】
・ｎｉｌプロセス（nil process）：ｎｉｌ（無）は、どんな作用も行うことができないプロセスである。
２．２  意味論
以下の説明においては、Ｌｙｅｅ計算法の形式的意味論について説明する。この意味論は、相互作用関係【００２７】
【数７】
2006006621.tif 000008
により定義される。この時、演算子→は「関係」（relation）を表わし、Ｋは作用を表わす。「関係」は複数の「関係」の集合であり、その集合要素である１つ１つの「関係」は次の３つの要素で構成されている。第１の要素は「変化前のプロセス」、第２の要素は「変化の後のプロセス」、第３の要素は「変化の間に実行された作用」である。【００２８】
【数８】
2006006621.tif 000009
と書くとき、関係→の３要素は（Ｐ，Ｑ，Ｋ）である。【００２９】
上記のように定義するとき、上記数８は、全体がアトミック・アクション（atomic action；割込みを許さない一連の不可分な作用）κを実行してプロセスＱとなることができるように、プロセスＰのサブプロセス間で相互作用（reaction）があることを意味する。【００３０】
「関係」の集合である上記数７は、要素として、表１に示す規則を満足させるような「関係」を最小数持つ「関係」である。【００３１】
この他に下記のように定める。
・【００３２】
【数９】
2006006621.tif 000010
は、下記のように、ｎｉｌプロセスを除去することにより、プロセスを簡単にする関係である。【００３３】
【数１０】
2006006621.tif 000011
・[[ｅ]]は、式ｅの評価（evaluation）の結果を含んでいる値の集合を表す。ｅが変数である場合には、その評価は変数の領域（domain）（整数、実数など）である。説明を簡単にするために、すべての変数は実数の集合に属するものと見なす。
・【００３４】
【数１１】
2006006621.tif 000012
は、作用κが使用するチャネルの名前である。すなわち、【００３５】
【数１２】
2006006621.tif 000013
次の表１は、Ｌｙｅｅ計算法の意味論を示す。【００３６】
【表１】
2006006621.tif 000014
２．３  例
この節では、メモリのセルを、その通信チャネルを通してその環境と相互作用を行うプロセスとしてモデル化する方法について説明する。図１はプロセスとして形式化されたセルである。図１に示すように、セルは通信のための２つのポート（チャネル）、ｉｎおよびｏｕｔを持つものとする。このセルの基本的なタスクは、チャネルｉｎ上である値を無期限に待つことであり、チャネルｏｕｔ上でその値を利用可能にすることである。新しい値が入力されるまで、同じ値が必要な回数だけ出力される。【００３７】
プロセス・セルＣｘ（ｖ）と書く場合には、メモリ・セルｘが、下記のように値ｖを保持していることを意味する。【００３８】
【数１３】
2006006621.tif 000015
メモリ・セルをプロセスとして捉えることにより、メモリ・セルに情報処理機能を付加することができる。例えば、あるセルに、初期化されるまでその内容にアクセスを許さないと書き込むことができる。情報処理機能を持ったこのスマート・セルは、下記のように定義することができる。【００３９】
【数１４】
2006006621.tif 000016
ここで、下記のように定義した２つのプロセスについて考察する。【００４０】
【数１５】
2006006621.tif 000017
これら２つのプロセスが、セルｘを通して通信するプログラムを容易に書くことができる。【００４１】
Ｐ１｜Cell（ｘ）｜Ｐ２
図２に相互作用を行うプロセスの例を示す。関係するすべてのプロセス間の相互作用が示されている。このプログラム実行の異なるステップは次のようになる。【００４２】
【数１６】
2006006621.tif 000018
＜第３章＞  Ｌｙｅｅ方法論の形式化
Ｕｓｅ（ｅ）は式ｅで使用する単語の集合を表すものとする。例えば、Ｕｓｅ（ａ＊ｂ＋１）＝｛ａ，ｂ｝となる。また、Ｆ（Ｓ）は下記の関数であるとする。【００４３】
【数１７】
2006006621.tif 000019
ここで、Ｌｙｅｅ計算法によって、簡単なユーザ要件からソフトウェアを自動生成する方法について考えてみる。ユーザ要件はｋ個の画面｛ｓ１，．．，ｓｋ｝を含んでいるとする。また各画面が要件の宣言（statement）の集合を含んでいて、各宣言は次の形式をとる：（ｗ，ｅ，ｃ，ＩｎＯｕｔ，ｔｙｐｅ）。ここで、ｗは単語、ｅはその定義式、ｃはその実行条件式、ＩｎＯｕｔは、それが入力か、出力か、またはその両方であるのか、または入力でも出力でもないことを示す要素で（値ｉは入力語に、値ｏは出力語に、ｉｏは入力かつ出力である語に使用され、空のフィールドは、入力でも出力でもない語に使用される）、ｔｙｐｅは、そのタイプ（属性）を示す（タイプＢは、ボタンであることを示す）。この要件に関するプログラムＰ（ｓ１，．．．，ｓｋ）を定義するために、下記のベクトル（プロセス）を形式化する必要がある。【００４４】
論理ベクトル［または論理要素］（Signification Vectors）：【００４５】
【数１８】
2006006621.tif 000020
作用ベクトル［または作用要素］（Action Vectors）：【００４６】
【数１９】
2006006621.tif 000021
パレット（Pallet）：任意の画面ｓの３つのパレットＷ０２、Ｗ０３およびＷ０４のパレット関数は、下式のように形式化される。【００４７】
【数２０】
2006006621.tif 000022
ここで、【００４８】
【数２１】
2006006621.tif 000023
は、Ｂを除く任意のタイプ（Bの補集合）を示し、＊は何であってもよい。【００４９】
シナリオ関数［または基本構造］（Scenario Function）：画面ｓのシナリオ関数、ＳＦ（ｓ）は下式のように形式化される。【００５０】
【数２２】
2006006621.tif 000024
制御関数［またはパレット連鎖関数］（Control Function）：画面ｓの制御関数は下記のように形式化される。【００５１】
【数２３】
2006006621.tif 000025
画面の集合に付随する制御関数は下記のように形式化される。【００５２】
【数２４】
2006006621.tif 000026
ｓ０は、プログラムを終了させた時に見る画面（プログラム自身の画面群に属さない終了画面）であるとする。【００５３】
Ｌｙｅｅプログラム：最後に、画面ｓ１，．．．，ｓｋを持つことを要件とするＬｙｅｅプログラムＰ（ｓ１，．．．，ｓｋ）は下式により表される。【００５４】
【数２５】
2006006621.tif 000027
ここで、集合Ｌ（ｓ１，．．．，ｓｋ）は、すべての入力および出力チャネルを含んでいて、下式により定義される。【００５５】
【数２６】
2006006621.tif 000028
ｉ／ｏは、このフィールドが、値ｉ、ｏまたはｉｏを含んでいなければならないことを意味する。また、ｓ１は、ユーザがこのプログラムを実行したときに最初に現れる画面であるとする。
＜第４章＞  ＪＣＳＰ：Ｊａｖａプロセス代数
ＪａｖａによりＬｙｅｅ計算法を実装する方法を説明する前に、この章において、ＪａｖａパッケージとしてのＣＳＰプロセス・インタフェースおよびＣＳＰチャネル・インタフェースの実現であるＪＣＳＰのいくつかの重要な機能について簡単に説明することは有意義であろう。実際、Ｌｙｅｅ計算法の実装は、スレッド（プロセス）およびチャネルを統御できる、簡単で高レベルの演算子（operator）を提供するこれらのパッケージを使用する。
４．１  生成プロセス
プロセスは、ｒｕｎ( )と呼ばれる公開メソッド（public
method）を必要とするｊｃｓｐ．ｌａｎｇ．ＣＳＰｒｏｃｅｓｓインタフェースを使って記述される。それ故、１つのプロセスを定義するためには、ＣＳＰｒｏｃｅｓｓインタフェースを実現する１つのクラスを定義し、ｒｕｎ( )メソッドの実装を提供しなければならない。下記のリスティング（Listing；ソースコードを書き出しもの）は、ＪＣＳＰプロセスの定義の一例を示す。【００５６】
【数２７】
2006006621.tif 000029
さらに、ＪＣＳＰは、ＣＳＰｒｏｃｅｓｓプロセスを生成する手段を提供すると同時に、その生成を行うプロセスを生成する手段も提供する。ＰｒｏｃｅｓｓＭａｎａｇｅｒというクラスが、生成されたプロセスを管理するメソッドを提供する。すなわち、ｓｔａｒｔ（スタート）、ｓｕｓｐｅｎｄ（中断）、ｒｅｓｕｍｅ（再開）、ｓｔｏｐ（停止）およびｊｏｉｎ（結合）である。下記のリスティングは、ＪＣＳＰによるプロセス生成の一例である。【００５７】
【数２８】
2006006621.tif 000030
４．２  チャネルの使用
通常のＪａｖａプログラミングで行われるようなメソッドの相互呼び出しを行うことなく、単にチャネルを通すだけで実行中プロセスを相互作用させるために、ＪＣＳＰは、オブジェクト・チャネルを読み出したり、書き込んだりするために、ｊｃｓｐ．ｌａｎｇ．Ｃｈａｎｎｅｌを定義する。このインタフェースを実装するすべてのクラスは、ｒｅａｄ( )およびｗｒｉｔｅ( )メソッドの実装を提供しなければならない。【００５８】
インタフェースＣｈａｎｎｅｌは、そのチャネルを入力または出力のために使用すべきかどうかを知らせるＣｈａｎｎｅｌＩｎｐｕｔインタフェースおよびＣｈａｎｎｅｌＯｕｔｐｕｔインタフェースを結合するだけである。これらのインタフェースを実装したいくつかのクラスがＪＣＳＰにはあり、これらのクラスはどのようにプロセスをリンクしたいかによって異なる。例えば、クラスＯｎｅ２ＯｎｅＣｈａｎｎｅｌを使用すれば、２つのプロセスを排他的にリンクするチャネルを定義することができる。クラスＡｎｙ２ＯｎｅＣｈａｎｎｅｌ、Ｏｎｅ２ＡｎｙＣｈａｎｎｅｌまたはＡｎｙ２ＡｎｙＣｈａｎｎｅｌを使用すれば、複数の読出しプロセスまたは複数の書込みプロセスが可能になる。【００５９】
下記のリスティングは、ＪＣＳＰでのチャネル生成の一例である。【００６０】
【数２９】
2006006621.tif 000031
上記の例は、初期値ｉｎｉｔＶａｌｕｅと２つの通信チャネルｃｈａｎ＿ｉｎおよびｃｈａｎ＿ｏｕｔを持ったプロセスＣｅｌｌをスタートさせる。このプロセスＣｅｌｌを図３に示す。同図は、複数の書込みプロセスと複数の読出しプロセスとを備えるセルを示すものである。図３に示すように、このプロセスＣｅｌｌは複数の書込みプロセスと複数の読出しプロセスとを備え、第１の通信チャネルｉｎによって複数の書込みプロセスはこのメモリ・セルを更新することができ、一方、第２の通信チャネルｏｕｔによって、このメモリ・セルはその値を複数の読出しプロセスに送ることができる。
４．３  並列実行
ＪＣＳＰが提供するもう１つの特別なプロセスは、複数のプロセスを同時に実行するクラスＰａｒａｌｌｅｌ（並列）による並列構成モデルである。Ｐａｒａｌｌｅｌオブジェクト自身が１つのプロセスであるので、そのｒｕｎメソッドを呼び出すことができ、このｒｕｎメソッドはそれを構成するすべてのプロセスのｒｕｎメソッドを呼び出し、別々のスレッドでそれぞれをスタートする。【００６１】
下記のリスティングは、複数プロセスの並列実行の一例である。【００６２】
【数３０】
2006006621.tif 000032
並列オブジェクトのｒｕｎメソッドは、そこに埋め込まれいるプロセスのすべてが終了した場合にだけ終了する。
４．４  その他のクラス
前述のセクションで説明したクラスの他に、ＪＣＳＰは、Ｊａｖａスレッド・モデルを使って提供されるものと比較して、スレッドを容易に統御できる新しいモデルによって、いくつかの機能を提供する。例えば、Ａｌｔｅｒｎａｔｉｖｅクラスは、いくつかのチャネル上で値を待ち受け（passively listen）、そこで入手可能な値の中の１つを選択する、というプロセスを実装できる。このクラスは、ＣＳＰが提供する選択演算子Ｐ＋Ｑを正確には実現しないということは、重要な留意点である。何故なら、ｏｃｃａｍマルチプロセシング言語によって記述されているので（ＡＬＴ演算子（非特許文献１１参照））、このクラスは送信および受信作用が混合した中からは選択を行うことができないからである。【００６３】
また、ＪＣＳＰは、任意のネットワーク内の異なる機械で実行されるプロセスをリンクするチャネルを通して行われるプロセス通信に関しても、興味ある機能を提供する。さらに、ネットワーク・チャネルは、通常チャネルと全く同じ方法でプロセスに接続するように設計されているので、プロセス・ネットワークは、物理ネットワークを通して実行されているか否かにかかわらず、即時に再接続（re-wired）することができる。さらに、ＪＳＣＰのネットワーク版は、チャネルおよび移送可能な(migratable)チャネル端部を通してのリモート・クラスローディング（classloading；Javaプラットフォーム上でソフトウェアコンポーネントであるクラスを実行時にロードする機能）のような、多くの高度な機能を提供する。
４．５  まとめ
上記にのべたことを合わせた具体例として、２つのプロセスＳｅｎｄＰｒｏｃｅｓｓとＲｅａｄＰｒｏｃｅｓｓがＯｎｅ２ＯｎｅＣｈａｎｎｅｌチャネルにより接続されており、このチャネルを通して相互作用している、というＪＣＳＰによる簡単なプロセス・ネットワークの例を示す。この例を図４に図示する。同図は、ＪＣＳＰによる簡単なプロセス・ネットワークを示す。【００６４】
図４のプロセス・ネットワークのリスティングは以下のようになる。ＳｅｎｄＰｒｏｃｅｓｓは、ｏｕｔという名称のチャネルを通して値ｖを単に送信するだけであり、一方、ＲｅａｄＰｒｏｃｅｓｓはこの値を受信し、画面上にそれを出力する。Ｍａｉｎクラスの目的は、ＳｅｎｄＰｒｏｃｅｓｓのインスタンス（instance; クラスから作ったオブジェクト固有のメモリ上のデータ）およびＲｅａｄＰｒｏｃｅｓｓのインスタンスを生成し、これらをＯｎｅ２ＯｎｅＣｈａｎｎｅｌを通して接続することである。【００６５】
ＳｅｎｄＰｒｏｃｅｓｓ【００６６】
【数３１】
2006006621.tif 000033
ＲｅａｄＰｒｏｃｅｓｓ【００６７】
【数３２】
2006006621.tif 000034
Ｍａｉｎ【００６８】
【数３３】
2006006621.tif 000035
＜第５章＞   
Ｌｙｅｅ計算法のＪａｖａへの導入
Ｌｙｅｅ計算法からＪａｖａへのマッピング（対応づけ）を実装する。この実装はＪＣＳＰから継承したものである。何故なら、ＪＣＳＰは並行処理をプログラムするのに必要なすべてのクラスを提供するからである。さらに言えば、本章で示すように、Ｌｙｅｅ計算法によって、形式化したＬｙｅｅからＪａｖａクラスへのマッピングを実施した。
５．１  Ｌｙｅｅ計算法のＪａｖａへの導入
表２は、Ｌｙｅｅ計算法モデルに対応するＪａｖａのクラスおよびメソッドを定義している。［Ｋ］．ＰおよびＰ>Ｑから、ＪＣＳＰが提供するモデルへの直接マッピングは存在しないので、２つの新しいクラス、ＡｒｒａｙＣｈａｎｎｅｌおよびＧｕａｒｄｅｄＰｒｏｃｅｓｓを定義した。【００６９】
【表２】
2006006621.tif 000036
ＡｒｒａｙＣｈａｎｎｅｌ：下記のリスティングに示すように、チャネルのリストがコンストラクタ（constructor；クラスを基にしたオブジェクト生成時に呼び出され、オブジェクトが扱うデータの初期化などを行う特殊なメソッド）に渡され、非公開ファイル化されたｃｓ内の一部に記憶される。このクラスはｃｓに記憶されたすべての通信作用を実行し、対応するチャネルで受信した値のリストを返すｒｅａｄ( )メソッドを提供する。（現行のＬｙｅｅ計算法では、ｃｓは入力チャネルだけに限定している。）【００７０】
【数３４】
2006006621.tif 000037
前述のとおり、ＪＣＳＰ  Ｐａｒａｌｌｅｌクラスのｒｕｎメソッドは、それを構成するすべてのプロセスが終了した場合にだけ終了する。このことは、下記のようなプロセスである［Ｋ］．Ｐモデルを実装する助けとなる。【００７１】
【数３５】
2006006621.tif 000038
保護されたプロセス（Guarded Process）：このクラスは、モデルＰ>Ｑを実装する。このクラスのコンストラクタは２つのプロセスを要求する。それらは主にＰおよびＱで、チャネルｉｎはプロセスＱを活性化しようとする。下記のリスティングに示すように、メソッドｒｕｎ( )は、プロセスＰをスタートさせることによって開始し、次にチャネルｉｎ上で同期するまで待機する。このチャネル上で値を受信する度に、プロセスＰは止められ（終了させられ）、プロセスＱがスタートされて、受信した値がプロセスＱに送られる。【００７２】
【数３６】
2006006621.tif 000039
５．２  特殊なケース：セルの実装
Ｌｙｅｅ計算法によるセルの定義は以下のようであった（2章２．３）。【００７３】
【数３７】
2006006621.tif 000040
ＪＣＳＰでは選択Ｐ＋Ｑの実装は入力チャネルに限定されているので、セルを下記のように実装した。【００７４】
【数３８】
2006006621.tif 000041
ここで、ｂｕｆは、プロセスＰｘ１およびＰｘ２が共有する非公開のＯｎｅ２ＯｎｅＣｈａｎｎｅｌである。セルは並列に実行される２つのプロセスとして実装されるので、第１のプロセスは、チャネルｉｎからくる新しい値ｙを待つためのものであり、第２のプロセスは、チャネルｏｕｔを通してセルの現在の値を送信するためのものである。第１のプロセスが新しい値を受信する度に、第２のプロセスは終了させられ、受信した値によって真新しいインスタンスがスタートする。
５．３  Ｌｙｅｅ要件からＪａｖａへ
Ｌｙｅｅ方法論を形式化するために使用する各関数に対して、それを実装するＪａｖａのクラスを定義する。表３は、これらのＪａｖａクラスとＬｙｅｅの形式化で使用する関数との対応を示す。【００７５】
【表３】
2006006621.tif 000042
以下に説明するように、ほとんどすべてのクラスのコードは、これらのクラスが実装した関数の定義に非常によく似ている（３章）。【００７６】
ＳＦ：下記のＪａｖａコードにより説明するように、ＳＦクラスのｒｕｎメソッドは、それぞれＷ０４、Ｗ０３およびＷ０２に対応するプロセスと並列にスタートする。【００７７】
【数３９】
2006006621.tif 000043
Ｌ２：以下に、Ｌ２プロセス、すなわち形式化したＬｙｅｅ−Ｌ２を実装するクラスを示す。この実装が、扱っているプロセスのオリジナルの定義にどの程度似ているのかを示すために、いくつかの注釈を挿入した。【００７８】
【数４０】
2006006621.tif 000044
Ｓ４：以下に、Ｓ４プロセス、すなわち形式化したＬｙｅｅ−Ｓ４ベクトルを実装したクラスを示す。この場合も、この実装は非常にオリジナルの定義に近い。【００７９】
【数４１】
2006006621.tif 000045
＜第６章＞  ケーススタディ
この章では、Ｌｙｅｅ計算法により、簡単な要件からＪａｖａプログラムをどのようにして生成するのかを示す具体的な例について説明する。【００８０】
画面を１つしか含まないプログラムの例を用いる。図５がその画面である。図５の画面のプログラムの要件は表４のようになる。各行が画面５のプログラムの要件の宣言である。表４で示すように、この画面で、ユーザは、単語ａを入力し、単語ｂの値を待ち、そしてボタンＢ０を押して画面を終了（Exit）することができる。【００８１】
【表４】
2006006621.tif 000046
この画面をｓ１とすると、表４の要件は、下記のように３つの宣言によって形式的に記述できる。【００８２】
【数４２】
2006006621.tif 000047
ここで、このプログラムのエンド・ユーザ（プログラムにとっての環境）は、プログラムに次の一連の作用を実行させたいとする：プログラムを起動し（画面ｓ１を起動し）、単語ａに値７を与え、単語ｂの値を待ち、そしてボタンＢ０を押してプログラムを終了させる。このエンド・ユーザのふるまいは、下記の表５のプロセスεによって捉えることができる。【００８３】
【表５】
2006006621.tif 000048
従って、エンド・ユーザが使うプログラムＰ（ｓ１）というシステムと、エンド・ユーザの作用を実装したプログラムεは並列に実行されるといえる。【００８４】
Ｐ（ｓ１）｜ε
これに対応するＪａｖａプログラムは下記の通りである。【００８５】
【数４３】
2006006621.tif 000049
＜第７章＞  結論
本願明細書において、Ｌｙｅｅ計算法のＪａｖａへの実装について説明した。この実装は、ＪＣＳＰ（Ｊａｖａに実装したＣＳＰ）をベースにしている。ＪＣＳＰは、ある範囲の高レベルでのクラスの集合を通して、いくつかの機能を提供しており、これらの機能によって、何種類かのプロセス構成およびそれらが使用するチャネルを容易に統御することができる。これらのことは、直接Ｊａｖａ言語を使用して行うとしたら骨の折れることである。【００８６】
ＪＣＳＰとは逆に、Ｊａｖａは下層で動いているオペレーティング・システムに、スレッド同期およびスケジュール作成を委任しているので、同じプロセスの中の異なるふるまいが異なるオペレーティング・システム上で起こることもあり、これは重大な問題である。この問題はＪＣＳＰでは解決されている。それは、ＪＣＳＰが提供するＪａｖａのための新しいスレッド・モデルが、オペレーティング・システムから独立したスケジュール作成とチャネルを通して、高位の同期モデルを提供しているからである。【００８７】
また、この実装により、Ｌｙｅｅ方法論の形式化された関数からＪａｖａへマッピングを行い、それによってＬｙｅｅ要件からＪａｖａ言語によるソフトウェアを自動生成することができる方法を提供した。すなわち、この実装はＬｙｅｅ要件定義と実装との間のギャップを埋める手段を提供する。【００８８】
将来の研究として、この実装をさらに改善し、Ｌｙｅｅ要件で記述した実際の大きなシステムでその実装を試験したいと考える。また、Ｌｙｅｅ要件から、信頼できる、最適化したＪａｖａコードを自動生成するために、この実装を、開発済みの他のユーザフレンドリーなツールに結びつけたいと考えている。正確にいえば、下記のいくつかのツールを一緒に結合することを計画している。
・ＬｙｅｅＢｕｉｌｄｅｒ：この部分的に実装されたツールを使用すれば、Ｘ−Ｂｕｉｌｄｅｒの市販ツールが提供するような視覚的インタフェースを通してその要件を記述することができる。
・ＬｙｅｅＡｎａｌｙｚｅｒ：このツールは、Ｌｙｅｅ方法論の多くの局面を改善するために、非特許文献３のところで説明した古典的静的分析技術をベースとしている。
・ＬｙｅｅＣａｌｃｕｌｕｓ２Ｊａｖａ：本願明細書に記載した実装である。【００８９】
なお、本稿で用いた語句については下記のような意味として用いている。
「Ｊａｖａ」
Sun Microsystems社が開発したプログラミング言語。その特徴は、今までの言語にない完全なオブジェクト指向性、強力なセキュリティ機構、豊富なネットワーク関連の機能などで、ネットワーク環境で利用されることを強く意識した仕様である。Javaで開発されたソフトウェアは、特定のOSやマイクロプロセッサに依存することなく、基本的にはどのようなプラットフォームでも動作する。【００９０】
一方、オブジェクト言語はオブジェクトを参照して更に新しいオブジェクトを生成するには向いているが、プロセスモデルには非常に弱い。Javaプログラムにプロセスモデルを導入するには、既存のコマンドを使ってマルチスレッド化するしかなかったが、これらのコマンドは低レベル、つまりＯＳレベルのコマンドであり、プログラマが使うのは危険が多い。このようなJavaプログラムへのプロセスモデル、並列モデル導入にともなう問題解決としてKent大学で開発されたのがＪＣＳＰである。ＪＣＳＰの背景にはホーアのＣＳＰモデルがある。ＪＣＳＰはクラス・ライブラリ※（class library）であり、特殊なＪａｖａではない。【００９１】
※コンポーネントとして部品化した「クラス」を、関連したものを集めて、一つのファイルにまとめたもの。よく使われる汎用的なクラスをクラス・ライブラリに集めておくことで、プログラミングの労力を軽減することができる。
「オブジェクト指向プログラミング（object oriented programming）」
データとそれを操作する手続き（メソッドと呼ぶ）をオブジェクトと呼ばれるひとまとまりの単位として一体化し、オブジェクトの組み合わせとしてプログラムを記述するプログラミング技法。プログラムの部分的な再利用がしやすくなるなどのメリットがある。
「クラス（class）」
データとその操作手順であるメソッドをまとめたオブジェクトの雛型を定義したもの。これを定義することで、同種のオブジェクトをまとめて扱うことができるようになる。
「メソッド（method）」
オブジェクトは「データ」と「手続き」から成っているが、メソッドはその「手続き」の部分に当たり、各オブジェクトが持つデータを操作する方法のことである。このメソッドを外部から呼び出すことによってオブジェクトにデータの操作を行なわせる。このしくみよって、操作の詳細をオブジェクト内部に隠蔽することができ、プログラムの再利用性や生産性を高めやすくなる。
「インスタンス（instance）」
クラスはオブジェクトの雛型であるのに対し、インスタンスはオブジェクトの実体で、オブジェクトが扱う実際の値としてのデータのこと。
「プロセス（process）」
プログラムを実行し、計算を行う主体。プロセスは、必要に応じて、実行が開始され（プロセスの生成）、必要が無くなったら終了する（プロセスの終了）。プロセスは、その実行状況である「状態」を持つ。プロセス同士は、外部からの入力データを受け取る、データを送受信する、計算実行のタイミングを整える、などの目的のために通信を行う。
「スレッド（thread）」
マルチスレッドに対応したOS上での、ソフトウェアの実行単位。1つのプログラムは最低1つのスレッドを持つ。同じプログラムに属するスレッドはメモリなどのリソースを共有する。複数のスレッドはCPUを交互に占有することによって見かけ上同時実行が可能。
なお、本発明は、上述した実施形態および実施例には限定されず、本発明の技術思想の範囲内で様々な変形が可能である。たとえば、ビジネス・メソッド、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置、あるいはこれらの機能をコンピュータに実現するためのソフトウェア並びに該ソフトウェアを搭載した記録媒体・専用機、などとしてもそれぞれ実現することが可能である。さらに、上記で説明したように本発明は、方法としても、或いはかかる機能を備えるソフトウェアとしても、該ソフトウェアが搭載される装置・ツール（ソフトウェア自体の場合も含む）としても、さらにはシステムとしても、実現され得るのはもとよりである。【００９２】
例えば図６は、本発明の異なる一実施形態として、「開発対象のソフトウェア」を生産するためのプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、Ｊａｖａコード実装装置、或いはソフトウェア開発管理装置のいずれかとして本発明を実施する場合に機能として備える構成を示した機能ブロック図である。同図に示すように、本発明に係るプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、Ｊａｖａコード実装装置、或いはソフトウェア開発管理装置は、全体制御部６０１、宣言情報生成部６０２、制御関数Φ配置部６０３、制御関数Ψ配置部６０４及び情報記憶部６０５を備えて構成される。【００９３】
全体制御部６０１は、本プログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、Ｊａｖａコード実装装置、或いはソフトウェア開発管理装置の全体の動作制御、タイミング制御、入出力制御等を行う機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア（ツールとしてのソフトウェアも含む）、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。ＪａｖａパッケージとしてのＣＳＰプロセス・インタフェースおよびＣＳＰチャネル・インタフェースの実現であるＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）の機能を保持・統制・制御する。また、全体制御部６０１には、開発対象ソフトウェアの要件を入力するための機能（グラフィカル・ユーザ・インターフェース機能を含む）を持たせても良い。このようにして入力される要件には、例えばシステムに係る要件（例えば図５においては、単語ａ、ｂ、Ｂ０ごとの単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で規定される宣言情報がこれにあたる）と、環境（エンド・ユーザ）に係る要件（例えば図５においては、プログラムにプログラムを起動し（画面ｓ１を起動し）、単語ａに値７を与え、単語ｂの値を待ち、そしてボタンＢ０を押してプログラムを終了させる、という一連の作用を実行させたいとするエンド・ユーザのふるまいに係る情報がこれにあたる）とが含まれても良い。また、全体制御部６０１には、開発対象ソフトウェアのシステムに係る要件を画面単位、該画面に属する単語単位で単語名・必要に応じて定義式・必要に応じて定義式実行条件・必要に応じて入出力属性・一般属性が規定される宣言として捉える機能を持たせても良い。【００９４】
宣言情報生成部６０２は、Ｌｙｅｅ計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化されたＪａｖａクラスである論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４）のひな型の未定義部分に、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入するための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア（ツールとしてのソフトウェアも含む）、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。宣言情報生成部６０２には、入力された要件のうちシステムに係る要件が、単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として情報化された情報を、後述の制御関数Φ配置部６０３及び制御関数Ψ配置部６０４で生成されるプログラムのクラス及びメソッドの未定義部分に挿入する役目、いいかえれば情報記憶部６０５に格納されるテンプレートに当て嵌めて宣言情報を得る役目を持たせてもよい。【００９５】
制御関数Φ配置部６０３は、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦが、制御するように関連づけるＪａｖａクラスとして実現する（プロセスをＪａｖａクラスとしてマッピングする）ための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア（ツールとしてのソフトウェアも含む）、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。制御関数Φ配置部６０３には、入力された要件のうちシステムに係る要件をプロセス化して得られる情報を、ＪＣＳＰライブラリ中のパレット関数、論理ベクトル及び作用ベクトルに係るクラスとしてのひな型の未定義部分に挿入してプログラムを生成する役目、いいかえれば情報記憶部６０５に格納されるテンプレートに宣言情報を当て嵌めて関数及びベクトル・クラスを得る役目を持たせても良い。【００９６】
制御関数Ψ配置部６０４は、１つの制御関数モジュールΨを、前記制御関数Φを制御するように前記制御関数Φに関連づけるＪａｖａクラスとして実現する（プロセスをＪａｖａクラスとしてマッピングする）ための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア（ツールとしてのソフトウェアも含む）、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。制御関数Ψ配置部６０４には、入力された要件のうち環境（エンドユーザ）に係る要件をプロセス化して得られる情報を、ＪＣＳＰライブラリ中の制御関数及びシナリオ関数に係るクラスとしてのひな型の未定義部分に挿入してプログラムを生成する役目、いいかえれば情報記憶部６０５に格納されるテンプレートに当て嵌めて（反映させて）制御関数クラスを得る役目を持たせてもよい。また、上記のシステム側プロセス（宣言を反映したプロセス）と環境側プロセス（環境作用を反映したプロセス）が並列実行されるプロセスとして形式化して記述されていると考えられる。これはＪＣＳＰ自体の考え方にプロセスの並列処理の考え方が導入されているからである。【００９７】
情報記憶部６０５は、プログラム情報のほか、各種制御情報、（並行処理可能）プロセス・セルとしてモジュール化されたＬｙｅｅ計算法によるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル（Ｌ２、Ｌ３、Ｌ４）および、作用ベクトル（Ｉ２、Ｏ４、Ｓ４、Ｒ３）の前記ひな型、前記制御関数モジュールΦのひな型、前記制御関数モジュールΨのひな型、目的プログラム等をＪＣＳＰ（ＪａｖａＣｏｍｍｕｎｉｃａｔｉｎｇＳｅｑｕｅｎｔｉａｌＰｒｏｃｅｓｓ）によるＪａｖａクラスとして（テンプレート化してもよい）格納するクラス・ライブラリのほか、一時記憶のためのメモリとしても用いられる。また、情報記憶部６０５は、Ｌｙｅｅ計算法に基づく要件としての類型である、単語名、定義式、定義式実行条件、入出力属性、一般属性を規定する宣言としてテンプレート化して記憶する機能を有していても良い。ここで、上記のクラス、クラス中に含まれるメソッドには、開発対象ソフトウェアのシステムに係る要件が単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として反映されるべき部分が未定義部分として残っている場合もある。【００９８】
図７は、上記の構成を備えるプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして実施される本発明の動作を示したフローチャートである。【００９９】
同図に示すように、まず、宣言情報挿入部６０２は、Ｌｙｅｅ計算法による入出力チャネルをそなえたプロセス・セルとしてモジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型（ＪＣＳＰのクラス）の未定義部分に、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入する。（ステップ７０１）。【０１００】
すると、制御関数Φ配置部６０３は、前記論理要素と作用要素（クラス）を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦが、制御するように関連づける。（ステップ７０２）。【０１０１】
次に、制御関数Ψ配置部６０４は、１つの制御関数モジュールΨ（クラス）を、前記制御関数Φを制御するように前記制御関数Φに関連づける。（ステップ７０３）。【０１０２】
よって、上記のような構成を備える本発明によれば、本発明の独自の体系に基づいて要求定義をとらえ、それを本発明独自の構造を備えるプロセス・セルとしてモジュール化され論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に代入するので、所望のソフトウェアが、属人性なく得られるのみならず、これをＪＣＳＰを用いてプロセスの並行処理を反映したものとなるので、Ｌｙｅｅ計算法の形式化表現に基づくソフトウェア生成がＪａｖａ言語で容易に実現することができる。【０１０３】
また、このとき、図示はしないが、ＪＣＳＰライブラリにおけるクラスを用い、次の順序にしたがって本発明は動作してもよい。即ち、まず、開発対象ソフトウェアの要件を入力させる。次に、この入力された要件のうちシステムに係るシステム要件を、画面ごと該画面に属する単語ごとの宣言として形式化して記述する。次に、さらに、入力された要件のうち環境の作用に係る環境要件を、プロセスとして形式化して記述する。次に、Ｌｙｅｅ計算法によるプログラムであって、これを構成する制御関数、シナリオ関数、パレット関数、論理ベクトル、作用ベクトルのそれぞれをプロセスとして形式化されたプログラムと上記の環境要件が形式化されたプロセスとが並列実行されるプロセス代数として捉えられる。最後に、この結果であるプロセス代数に上記の形式化された宣言を重畳させる。【０１０４】
本発明の異なる実施体としての「開発対象のソフトウェア」を生産するためのプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置は、Ｌｙｅｅ計算法による入出力チャネルをそなえたプロセス・セルとしてＪＣＳＰのもとＪａｖａクラス・モジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入する、宣言情報生成部と、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦを、該単位を制御するように関連づける、制御関数Φ配置部と、１つの制御関数モジュールΨを、当該制御関数Φを制御するように制御関数Φに関連づける、制御関数Ψ配置部とを具備するように構成することもできる。【０１０５】
本発明はさらに、上述の「開発対象のソフトウェアを生産する方法」によって生産されたソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置（ハードウェア）としても実現されるが、この場合の本発明は、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を、Ｌｙｅｅ計算法による入出力チャネルをそなえたプロセス・セルとしてＪＣＳＰのもとＪａｖａクラス・モジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に挿入したモジュール群と、前記モジュール群を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦで制御するように関連づけている１つまたは複数の制御関数モジュールΦと、前記制御関数Φを、１つの制御関数モジュールΨで制御するように関連づけている制御関数モジュールΨで構成されることもできる。【０１０６】
またさらに本発明は、上述の「開発対象のソフトウェアを生産する方法」によってソフトウェアを生産するために用いられるソフトウェアコードの雛型としてのソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置（ハードウェア）としても実現されるが、この場合の本発明は、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を、埋め込むべき未定義部分を有した、Ｌｙｅｅ計算法による入出力チャネルをそなえたプロセス・セルとしてＪＣＳＰのもとＪａｖａクラス・モジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型と、前記宣言の情報を未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦで制御するための機能を有した制御関数モジュールΦのひな型と、前記制御関数Φを１つの制御関数モジュールΨで制御するための機能を有した制御関数モジュールΨのひな型とを備えるソフトウェアとしてコード化可能なひな型として実現してもよい。【０１０７】
さらに、本発明は、上述の「開発対象のソフトウェアを生産する方法」による、要件から抽出した情報（ドキュメント（紙、データ））の抽出方法として、またかかる抽出方法によって抽出された情報（ドキュメント（紙、データ））として、さらには当該抽出された情報の使用方法として、或いは、これらの情報が搭載された情報記録媒体として、または情報の抽出方法／使用方法がコード化されたソフトウェア、当該ソフトウェアが搭載された記録媒体／装置（ハードウェア）として、いずれも実現することができるが、この場合の本発明は、Ｌｙｅｅ計算法による入出力チャネルをそなえたプロセス・セルとしてＪＣＳＰのもとＪａｖａクラス・モジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に挿入すべき、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報と、前記宣言の情報を未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦで制御するように関連づけるための情報と、前記制御関数Φを１つの制御関数モジュールΨで制御するように関連づける情報とを備えるソフトウェア開発要件から抽出した情報として実現してもよい。【０１０８】
さらに本願発明は、その技術思想の同一及び等価に及ぶ範囲において様々な変形、追加、置換、拡大、縮小等を許容するものである。また、本願発明を用いて生産される装置、方法、ソフトウェア、システムが、その２次的生産品に登載されて商品化された場合であっても、本願発明の価値は何ら減ずるものではない。また、本願発明は、ソフトウェアの適用分野としては、ビジネス、教育、ゲーム等分野えを問わずあらゆるものに適用可能である。
【産業上の利用可能性】
【０１０９】
本発明は、Ｌｙｅｅ計算法のモデルをＪａｖａ言語によって実装することにより、Ｌｙｅｅによる要件定義（Lyee requirement specificaitons）とその実装との間のギャップを埋める手段が提供されることになり、したがって、Ｌｙｅｅ計算法による形式的記述からアプリケーションを自動生成することができる環境をプログラマーに提供することが可能となる、という利点があるため、いかなる用途、或いはネットワークを介して配信され若しくはスタンドアローンを問わずあらゆる存在形態におけるソフトウェア、及びソフトウェアの生産方法にも適用できる。
【図面の簡単な説明】
【０１１０】
【図１】本発明の一実施形態に係るプロセスとして形式化されたセルを示す概念図である。
【図２】本発明の一実施形態に係る相互作用を行うプロセスの例を示す概念図である。
【図３】本発明の一実施形態に係る複数の書込みプロセスと複数の読出しプロセスとを備えるセルを示す概念図である。
【図４】本発明の一実施形態に係るＪＣＳＰによる簡単なプロセス・ネットワークを示す概念図である。
【図５】本願の一実施形態に係る画面を１つしか含まないプログラムの場合の画面を示す概念図である。
【図６】本発明の異なる一実施形態として、「開発対象のソフトウェア」を生産するためのプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして本発明を実施する場合に機能として備える構成を示した機能ブロック図である。
【図７】本発明の一実施形態に係る上記の構成を備えるプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして実施される本発明の動作を示したフローチャートである。
【符号の説明】
【０１１１】
１０１  セル
１２１  プロセスライター１
１２２  プロセスライター２
１３１  プロセスリーダー１
１３２  プロセスリーダー２
６０１  全体制御部
６０２  宣言情報生成部
６０３  制御関数Φ配置部
６０４  制御関数Ψ配置部
６０５  情報記憶部
【図１】
2006006621.tif 000050
【図２】
2006006621.tif 000051
【図３】
2006006621.tif 000052
【図４】
2006006621.tif 000053
【図５】
2006006621.tif 000054
【図６】
2006006621.tif 000055
【図７】
2006006621.tif 000056
【国際調査報告】
2006006621.tif 000057
2006006621.tif 000058
2006006621.tif 000059
2006006621.tif 000060
2006006621.tif 000061
2006006621.tif 000062