(57)【要約】  Ｌｙｅｅ方法論による処理経路図の設計方法の規則を、プログラムが行う処理を類型化することによって具体的に示し、その規則を用いて処理経路図を類型化・ひな型化できるための方法論を提供する。  本発明は、外部設計（要求定義）に対応して定義体のＩＤを定め、前記外部設計から目的ソフトウェアをイベント単位にモジュール化し、処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記モジュール化されたイベントごとに処理の類型に対応するテンプレートを選択して該目的ソフトウェアの前記モジュール単位の構造を決定することを最も主要な特徴とする。  この構成により、開発者のエラーの混入する余地を極めて微小な範囲に限定し、さらにプログラム生成の生産性、効率性、保守性を増大させる。【特許請求の範囲】
【請求項１】
外部設計（要求定義）に対応して定義体のＩＤを定め、
前記外部設計から目的ソフトウェアをイベント単位にモジュール化し、
処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記モジュール化されたイベントごとに処理の類型に対応するテンプレートを選択して該目的ソフトウェアの前記モジュール単位の構造を決定する
ことを特徴とするＬｙｅｅ方法論に基づく処理経路図作成方法。
【請求項２】
処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された記憶媒体と、
開発者から入力を行うインタフェースであるユーザ・インタフェースと、
前記ユーザ・インタフェースを通じて選択される前記記憶媒体中のテンプレートに対応した基本構造及び入出力論理体の組合せを生成するモジュール単位構造生成部と、
前記生成された基本構造及び入出力論理体の組合せに対して前記ユーザ・インタフェースを通じて入力される定義体ＩＤを関連付けて実体情報を得る実体情報関連付部と
を具備することを特徴とするＬｙｅｅ方法論に基づく処理経路図作成装置。
【請求項３】
外部設計（要求定義）に対応して定義体のＩＤを定め、
前記外部設計から目的ソフトウェアをイベント単位にモジュール化し、
処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記モジュール化されたイベントごとに処理の類型に対応するテンプレートを選択して該目的ソフトウェアの前記モジュール単位の構造を決定し、
前記決定されたモジュール単位の構造（基本構造及び入出力論理体の組合せ）ごとに前記定められた定義体ＩＤを関連づけ、
基本構造を構成する要素モジュールごとに対応するコードが格納された第２の記憶媒体から、前記得られた基本構造及び入出力論理体の組合せと実体情報とに対応するコードを所得して目的のソースコードを生成する
ことを特徴とするソフトウェア生成方法。
【請求項４】
処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体と、
前記基本構造を構成する要素モジュールごとに対応するコードが格納された第２の記憶媒体と、
開発者から入力を行うインタフェースであるユーザ・インタフェースと、
前記ユーザ・インタフェースを通じて選択される前記第１の記憶媒体中のテンプレートに対応した基本構造及び入出力論理体の組合せを生成するモジュール単位構造生成部と、
前記生成された基本構造及び入出力論理体の組合せに対して前記ユーザ・インタフェースを通じて入力される定義体ＩＤを関連付けて実体情報を得る実体情報関連付部と、
前記第２の記憶媒体を用いて、前記得られた基本構造及び入出力論理体の組合せと実体情報とに対応するコードを生成するコード生成部と
を具備することを特徴とするソフトウェア生成装置。
【請求項５】
外部設計（要求定義）に対応して定義体のＩＤが定められるプロセスと、
前記外部設計から目的ソフトウェアがイベント単位にモジュール化されるプロセスと、
処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記モジュール化されたイベントごとに処理の類型に対応するテンプレートが選択されて該目的ソフトウェアの前記モジュール単位の構造が決定されるプロセスと、
前記決定されたモジュール単位の構造（基本構造及び入出力論理体の組合せ）ごとに前記定められた定義体ＩＤが関連づけられるプロセスと
によって生成されることを特徴とするソフトウェア。
【請求項６】
ユーザ・インタフェースにＬｙｅｅ方法論に基づくイベント単位のテンプレートを選択させるための入力画面を表示させる機能と、
処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記ユーザ・インタフェースを通じて選択されるテンプレートに対応する基本構造及び入出力論理体の組合せを生成する機能と、
ユーザ・インタフェースに前記生成された基本構造及び入出力論理体の組合せに対して関連付けられるべき定義体ＩＤを入力させるための入力画面を表示させる機能と、
前記入力された定義体ＩＤ及び前記生成された基本構造及び入出力論理体の組合せに、基本構造を構成する要素モジュールごとに対応するコードが格納された第２の記憶媒体からコードを取得して関連付ける機能と
をコンピュータに果たさせることを特徴とするソフトウェア開発支援用ソフトウェア。
【請求項７】
前記生成されたコードをデバッグするための機能をさらにコンピュータに果たさせることを特徴とする請求項６記載のソフトウェア開発支援用ソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｌｙｅｅ（商標）方法論に基づく処理経路図作成方法、作成装置、ソフトウェア生成方法、生成装置、並びにソフトウェアに係る。
【背景技術】
【０００２】
高い品質を持つソフトウェアを容易に迅速に製造することは、ソフトウェア開発研究分野での基本的な関心事である。ここ数年間にわたって、ソフトウェア開発のライフサイクルに関連する１つまたは多くの局面を改善するために、種々の方法論および技術が考案され、提案されてきた。【０００３】
しかし、この研究分野における熱心な努力にもかかわらず、明確に理解でき、修正可能なシステムの製造は、困難な目標であり達成にはほど遠い。最近、Ｌｙｅｅ（ＧｏｖｅｒｎｍｅｎｔａＬ  ｍｅｔｈｏｄｏｌｏｇＹ  ｆｏｒ  ｓｏｆｔｗａｒＥ  ｐｒｏｖｉｄｅｎｃＥの語尾文字をとったもので、「リー」と読む。）という新規で非常に有望な方法論が提案された。
Ｌｙｅｅとは、ソフトウェア開発方法論である。Ｌｙｅｅは、ソフトウェアの要件を、変数であるデータ項目ごとに宣言（定義）し、データ項目ごとの宣言を実行するための定型構造のモジュールに、その宣言を代入することによってプログラムを作成する。このように「要件の宣言をともなうデータ項目」を、Ｌｙｅｅでは「単語」と呼ぶ。
Ｌｙｅｅによるプログラム全体は、単語単位の宣言を実行する定型構造のモジュールの集合で構成されている。従って、ツールを作成すれば、この定型構造のモジュールに単語単位の要件の宣言を代入し、自動的にプログラムを生成（ソースコードを生成）することも可能である。
実際、Ｌｙｅｅによるプログラムの自動生成は、たとえば「ＬｙｅｅＡＬＬ」と呼ばれるツールによって実現されている。ＬｙｅｅＡＬＬは、単語の宣言を実行する定型構造モジュールのコード（「テンプレート」と呼ぶ。テンプレートはひな形の意。）の所定の場所に、要件の宣言を自動的に代入し、Ｌｙｅｅにおけるプログラム設計方法に従って定型構造モジュールを配置し、プログラム全体のソースコードを自動的に生成する。Ｌｙｅｅにおけるプログラミングでは、要件を実行する手順（手続き）を記述する（ソースコードを記述する）必要がなく、要件を単語単位に宣言すればよい。
【特許文献１】国際公開第９７／１６７８４号パンフレット
【特許文献２】国際公開第９８／１９２３２号パンフレット
【特許文献３】国際公開第９９／４９３８７号パンフレット
【特許文献４】国際公開第００／７９３８５号パンフレット
【特許文献５】国際公開第０１／３５２１３号パンフレット
【特許文献６】国際公開第０１／９３０２６号パンフレット
【特許文献７】国際公開第０２／４２９０４号パンフレット
【特許文献８】特開２００２−２０２８８３号公報
【特許文献９】国際公開第２００４／２５４６３号パンフレット
【特許文献１０】国際公開第２００４／６８３４２号パンフレット
【特許文献１１】国際公開第２００４／８１７８８号パンフレット
【特許文献１２】国際公開第２００５／２９３２１号パンフレット
【特許文献１３】国際公開第２００５／２９３２２号パンフレット
【特許文献１４】国際公開第２００５／２９３２３号パンフレット
【特許文献１５】国際公開第２００５／４３２７１号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００４】
モジュールを構成する最小の単位を、単語ごとの宣言を実行する要素モジュールとおき、要素モジュールの実行が成立可能な具体的な制御構造を提供する、というのがＬｙｅｅ方法論の基本的な考え方である。【０００５】
Ｌｙｅｅ方法論は基本的な制御構造を提供しているものの、出力論理体の生成・出力順序に関しては、開発者が設計する必要があった。これが、処理経路図の設計の本質である。【０００６】
従来は、要件を単語単位にまで落し、出力論理体の生成・出力順序を処理経路図を設計することによって決定すれば、要素モジュールの生成と適切な配置は属人性を排除して行うことができた。しかし、単語単位の要件の記述方法は明確であったが、処理経路図というプログラム構造設計の方法においては、要件を解釈して構造に定義する方法に一定のルールがなく、人によって異なる制御構造が入り込む余地があった。【０００７】
本発明は上記の従来技術の問題を解決するためになされたもので、処理経路図の設計方法の規則を、プログラムが行う処理を類型化することによって具体的に示し、その規則を用いて処理経路図を類型化・ひな型化できるための方法論を提供することを目的とする。より具体的には、開発者は処理経路図の設計を行う必要がなく、適切なひな型を選択して、要件によって異なる定義体への関連付けのみを行えばよいようにすることで、プログラムの品質に影響するプログラム構造の設計の良し悪しが、開発者個人のスキルや恣意に依存しないＬｙｅｅ（商標）方法論に基づく処理経路図作成方法、作成装置、ソフトウェア生成方法、生成装置、ソフトウェア並びにソフトウェア開発支援用ソフトウェアを提供することをその目的とする。
また、開発者のエラーの混入する余地を極めて微小な範囲に限定し、これによりプログラム生成の生産性、効率性、保守性を増大させることを目的とする。
さらに、要件定義の内、開発対象のソフトウェアが動く環境や開発言語に依存しないソフトウェア構造の必須要素となる要件を単語単位に捉える捉え方が規則化され、Ｌｙｅｅ方法論によるソフトウェア設計の実行性・効率性をより向上させることをその目的とする。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため、Ｌｙｅｅ方法論に基づく処理経路図作成方法として実現される本発明は、外部設計（要求定義）に対応して定義体のＩＤを定め、前記外部設計から目的ソフトウェアをイベント単位にモジュール化し、処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記モジュール化されたイベントごとに処理の類型に対応するテンプレートを選択して該目的ソフトウェアの前記モジュール単位の構造を決定することを特徴する。【０００９】
かかる構成を備える本発明に依れば、プログラムの構造設計にあたり、イベントごとの処理の類型ごとに予め定義されたテンプレートを開発者が選択する行為のみで所望のプログラム設計が得られるので、開発者ごとの個別性、属人性、恣意性を排除し、プログラムの構造設計作業の共通化、ひいては自動化が可能となる。【００１０】
またＬｙｅｅ方法論に基づく処理経路図作成装置として実現される本発明は、処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された記憶媒体と、開発者から入力を行うインタフェースであるユーザ・インタフェースと、前記ユーザ・インタフェースを通じて選択される前記記憶媒体中のテンプレートに対応した基本構造及び入出力論理体の組合せを生成するモジュール単位構造生成部と、前記生成された基本構造及び入出力論理体の組合せに対して前記ユーザ・インタフェースを通じて入力される定義体ＩＤを関連付けて実体情報を得る実体情報関連付部とを具備する。【００１１】
かかる構成を備える本発明に依れば、プログラムの構造設計にあたり、イベントごとの処理の類型ごとに予め定義されたテンプレートを開発者が選択する行為のみで所望のプログラム設計を行うことが装置として実現できるので、開発者ごとの個別性、属人性、恣意性を排除したプログラムの構造設計作業の共通化、ひいては自動化を広く普及させることが可能となる。【００１２】
またソフトウェア生成方法として実現される本発明は、外部設計（要求定義）に対応して定義体のＩＤを定め、前記外部設計から目的ソフトウェアをイベント単位にモジュール化し、処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記モジュール化されたイベントごとに処理の類型に対応するテンプレートを選択して該目的ソフトウェアの前記モジュール単位の構造を決定し、前記決定されたモジュール単位の構造（基本構造及び入出力論理体の組合せ）ごとに前記定められた定義体ＩＤを関連づけ、基本構造を構成する要素モジュールごとに対応するコードが格納された第２の記憶媒体から、前記得られた基本構造及び入出力論理体の組合せと実体情報とに対応するコードを所得して目的のソースコードを生成することを特徴とする。【００１３】
かかる構成を備える本発明に依れば、イベントごとの処理の類型ごとに予め定義されたテンプレートを開発者が選択してプログラム構造を画一的に作定し、このプログラム構造に共通的なルールに基づいて定義体ＩＤを関連付けた実体情報を画一的に得、この実体情報に予め類型化して格納されていたコードを対応させることで目的ソフトウェアが得られるので、開発者ごとの個別性、属人性、恣意性を排除したソフトウェア生成作業の共通化、ひいては自動化が可能となる。【００１４】
またソフトウェア生成装置として実現される本発明は、処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体と、前記基本構造を構成する要素モジュールごとに対応するコードが格納された第２の記憶媒体と、開発者から入力を行うインタフェースであるユーザ・インタフェースと、前記ユーザ・インタフェースを通じて選択される前記第１の記憶媒体中のテンプレートに対応した基本構造及び入出力論理体の組合せを生成するモジュール単位構造生成部と、前記生成された基本構造及び入出力論理体の組合せに対して前記ユーザ・インタフェースを通じて入力される定義体ＩＤを関連付けて実体情報を得る実体情報関連付部と、前記第２の記憶媒体を用いて、前記得られた基本構造及び入出力論理体の組合せと実体情報とに対応するコードを生成するコード生成部とを具備する。【００１５】
かかる構成を備える本発明に依れば、イベントごとの処理の類型ごとに予め定義されたテンプレートを開発者が選択してプログラム構造を画一的に作定し、このプログラム構造に共通的なルールに基づいて定義体ＩＤを関連付けた実体情報を画一的に得、この実体情報に予め類型化して格納されていたコードを対応させることで目的ソフトウェアが得られることを装置として実現できるので、開発者ごとの個別性、属人性、恣意性を排除したソフトウェア生成作業の共通化、ひいては自動化を広く普及させることが可能となる。【００１６】
また、ソフトウェアとして実現される本発明は、外部設計（要求定義）に対応して定義体のＩＤが定められるプロセスと、前記外部設計から目的ソフトウェアがイベント単位にモジュール化されるプロセスと、処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記モジュール化されたイベントごとに処理の類型に対応するテンプレートが選択されて該目的ソフトウェアの前記モジュール単位の構造が決定されるプロセスと、前記決定されたモジュール単位の構造（基本構造及び入出力論理体の組合せ）ごとに前記定められた定義体ＩＤが関連づけられるプロセスとによって生成されることを特徴とする。【００１７】
かかる構成を備える本発明に依れば、イベントごとの処理の類型ごとに予め定義されたテンプレートを開発者が選択してプログラム構造を画一的に作定し、このプログラム構造に共通的なルールに基づいて定義体ＩＤを関連付けた実体情報を画一的に得、この実体情報に予め類型化して格納されていたコードを対応させることで得られるので、目的ソフトウェアは開発者ごとの個別性、属人性、恣意性を排除した制御構造を有する。【００１８】
また、ソフトウェア開発支援用ソフトウェアとして実現される本発明は、ユーザ・インタフェースにＬｙｅｅ方法論に基づくイベント単位のテンプレートを選択させるための入力画面を表示させる機能と、処理のパターンごとに基本構造及び入出力論理体の組合せを類型化したテンプレートが格納された第１の記憶媒体から、前記ユーザ・インタフェースを通じて選択されるテンプレートに対応する基本構造及び入出力論理体の組合せを生成する機能と、ユーザ・インタフェースに前記生成された基本構造及び入出力論理体の組合せに対して関連付けられるべき定義体ＩＤを入力させるための入力画面を表示させる機能と、前記入力された定義体ＩＤ及び前記生成された基本構造及び入出力論理体の組合せに、基本構造を構成する要素モジュールごとに対応するコードが格納された第２の記憶媒体からコードを取得して関連付ける機能とをコンピュータに果たさせることを特徴とする。【００１９】
かかる構成を備える本発明に依れば、イベント単位のテンプレートの選択、ユーザ・インタフェースに前記生成された基本構造及び入出力論理体の組合せに対して関連付けられるべき定義体ＩＤの入力に際して使用勝手の良い入力画面を表示するので、ソフトウェア生成（生産）の効率化が図られる。また、こうしたユーザ・インタフェースを通じて入力された情報の処理・加工についても類型化されたテンプレートから基本構造及び入出力論理体情報を得、さらにこれに実体情報を付与した情報も予め類型化されたコードを貼りつけるようにしたので、開発者のエラーの混入する余地は、たとえばひな型の選択や定義体との関連付けに限定できる。【００２０】
またこのとき、本発明は、前記生成されたコードをデバッグするための機能をさらに備えるように構成しても良い。このような構成をさらに備えることで、当該ソフトウェア開発支援用ソフトウェアがインストールされたマシン上でデバッグまで行えるので、さらに利便性が高まる。【００２１】
総じて、本発明によれば、ソフトウェアの必要要素として、レベル１：処理単位（処理の類型：登録型、参照型）、レベル２：入出力論理体（論理体名、媒体属性、アクセスキー、アクセス条件等）、レベル３：単語（単語名、生成式&生成条件、タイプなど）をソフトウェア環境や言語に依存することなく抽出することができる。【００２２】
また、処理経路図を作成する方法が規則化されるので、要件定義の内、開発対象のソフトウェアが動く環境や開発言語に依存しないソフトウェア構造の必須要素となる要件を単語単位に捉える捉え方が規則化され、Ｌｙｅｅ方法論によるソフトウェア設計の実行性・効率性をより向上させることが可能となる。【００２３】
さらに、要件に示されている、処理単位ごとの出力論理体と入力論理体の関係をとらえ、わかりやく図示できるという処理経路図の本来の意義も果たされる。【００２４】
本発明によれば、処理経路図を作成することで、要件定義の総てを捉え、かつ処理経路図を検証することで、登録前に要件の過不足をチェックした上で、たとえばＬｙｅｅＡＬＬ等のＬｙｅｅ方法論に係る自動生成ツールに入力するので、所望とするソフトウェアを適切に（自動）生成することが可能となる。
【発明の効果】
【００２５】
本発明によれば、プログラム構造設計である処理経路図の設計方法の規則を、プログラムが行う処理を類型化したため、その規則を用いて処理経路図を類型化・ひな型化することが可能となる。そのひな型は、入出力を論理体レベルでとらえているので、開発者は処理経路図の設計を行う必要がなく、適切なひな型を選択して、要件によって異なる定義体への関連付けを行うのみでプログラムの構造設計を行うことが可能となる。
また、本発明によれば、プログラムの品質に影響するプログラム構造の設計の良し悪しが、開発者個人のスキルや恣意に依存することなく、開発者のエラーの混入する余地は、たとえばひな型の選択や定義体との関連付けに限定できる。これによりプログラム生成の生産性、効率性、保守性が増大する。
さらに、本発明によれば、PRDの類型化を行うことによって、従来のＬｙｅｅ方法論に基づくソフトウェア開発ツール（たとえばＬｙｅｅＡＬＬ）にPRDのテンプレートを持たせるにより、ソフトウェア生成工程を改良し、プログラム設計にあたる処理経路図作成過程を自動化することが可能となる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照して本発明の最良の実施形態を説明する。Ｉ章をＬｙｅｅの概要について、ＩＩ章を処理経路図（ＰＲＤ）について、と章分けして説明する。また、以下では特に本願の特徴となるところに主な焦点を当てて説明することにし、Ｌｙｅｅ方法論の全般、特徴、開発ツールその他の詳細については、上記特許文献１乃至１５を引用しこれを開示の一部とすることをもって説明に替える。
Ｉ章  Ｌｙｅｅの概要
Ｌｙｅｅ（ＧｏｖｅｒｎｍｅｎｔａＬ  ｍｅｔｈｏｄｏｌｏｇＹ  ｆｏｒ  ｓｏｆｔｗａｒＥ  ｐｒｏｖｉｄｅｎｃＥの語尾文字をとったもので、「リー」と読む。）とは、ソフトウェア開発方法論である。Ｌｙｅｅは、ソフトウェアの要件を、変数であるデータ項目ごとに宣言（定義）し、データ項目ごとの宣言を実行するための定型構造のモジュールに、その宣言を代入することによってプログラムを作成する。このように「要件の宣言をともなうデータ項目」を、Ｌｙｅｅでは「単語」と呼ぶ。
Ｌｙｅｅによるプログラム全体は、単語単位の宣言を実行する定型構造のモジュールの集合で構成されている。従って、ツールを作成すれば、この定型構造のモジュールに単語単位の要件の宣言を代入し、自動的にプログラムを生成（ソースコードを生成）することも可能である。
実際、Ｌｙｅｅによるプログラムの自動生成は、たとえば「ＬｙｅｅＡＬＬ」と呼ばれるツールによって実現されている。ＬｙｅｅＡＬＬは、単語の宣言を実行する定型構造モジュールのコード（「テンプレート」と呼ぶ。テンプレートはひな形の意。）の所定の場所に、要件の宣言を自動的に代入し、Ｌｙｅｅにおけるプログラム設計方法に従って定型構造モジュールを配置し、プログラム全体のソースコードを自動的に生成する。Ｌｙｅｅにおけるプログラミングでは、要件を実行する手順（手続き）を記述する（ソースコードを記述する）必要がなく、要件を単語単位に宣言すればよい。以下に、Ｌｙｅｅ開発方法論の概要を述べる。
１．単語の要件の宣言と実行の制御ロジック
Ｌｙｅｅ方法論では、データ項目ごとに要件を宣言し、宣言をともなうデータ項目を単語と呼ぶ。単語単位の要件の宣言を構成する要素の主なものを挙げると、(1)単語名、(2)その定義式、(3)その計算条件、(4)入出力属性、(5)値のタイプ、がある。表１は、単語の要件の宣言の一例である。【００２７】
単語名は単語を識別するための名前、定義式は単語の値を生成するための計算式、計算条件は定義式を実行する実行条件である。１つの単語が２つ以上の定義式を持つ場合があり、そのどちらが実行されるかは、計算条件によって決定されることになる。入出力属性は単語の値が入力されるのか、プログラムによって生成されて出力されるのか、の区別を示す。表１では、Iは入力、Oは出力を表わしている。タイプは、単語の値のタイプで、たとえば、値が整数か、浮動小数点か、ブール値（真偽値）かなどの区別である。表１では、intは整数（integer）、floatは不動小数点数を表す。【００２８】
【表１】
2006025472.tif 000002
表１に示した単語の要件の宣言は、従来のプログラミング言語のコードで表すと表２のようになる。Saは、単語aの宣言を意味する。【００２９】
【表２】
2006025472.tif 000003
たとえば、単語aの宣言Saのコードは、「もし、b*e>2が真ならば、単語aにb+cの計算結果を代入し、単語aの値を出力」、を意味している。宣言Scのコードは、「単語cに値を入力」、を意味している。【００３０】
Ｌｙｅｅ方法論においては、開発者は、これらの定義が実行される順序（制御ロジック）を指定する必要はない。表１に示すように、単語aの定義は、単語bを使用しているにもかかわらず、宣言Sbは、宣言Saの後に位置している。Ｌｙｅｅでは、表３に示したように要件を単語ごとに宣言すれば、単語の宣言を実行する順序を指定することなく、すべての単語を計算するコードを生成することができる。【００３１】
開発者は、従来の開発方法論による開発のように、データ項目の値の生成の実行順序（制御ロジック）の問題を扱う必要がない。また、従来の開発方法では、実行順序を決定するためには、要件が全て決定済みである必要があり、要件が決定しなければプログラミングをスタートできなかったが、Ｌｙｅｅにおいては、要件が不完全であっても、プログラミング（Ｌｙｅｅにおいては要件を単語単位に宣言していく作業）をスタートすることができる。
ソフトウェアの制御ロジックは、Ｌｙｅｅ方法論においては、すべての要件に対応できる普遍的ロジックとして、これも定型構造のテンプレートとして提供される。その結果、プログラミングにおける制御ロジック上のミスがなくなる。テンプレートを用いて、ソースを自動生成するので、プログラミング時間が大幅に短縮される。柔軟性も、Ｌｙｅｅ方法論の主要な利点である。何故なら、保守業務（すなわち、要件の修正・変更）は、単語の宣言の追加、削除および／または修正という作業にまで軽減できるからである。
２．単語の宣言の実行制御ロジック
では、Ｌｙｅｅにおいては、なぜ単語の宣言の実行順序を指定する必要がないのか。Ｌｙｅｅにおいて、どのような制御ロジックによって、出力単語の値の生成が要件どおりに成立することを保証しているのか、表１の要件を例にとって説明する。
図１は、単語単位の宣言を実行する実行制御ロジックを簡易に示したものである。この制御ロジックは、実行範囲内のコードの実行結果が、不動点（fixed point）に達するまで、コードの実行を繰り返す。不動点とは、実行範囲のコードの実行をこれ以上繰り返しても、いかなる単語の値も新たに生成されなくなった状態である。不動点に達した状態を「状態変化なし」の状態とも言う。Ｌｙｅｅの制御ロジックは、不動点に達するまで、実行範囲のコードの実行を単純に反復する。従って、どんな順序に単語が並べられても、全ての出力単語を生成することができるのである。
不動点に達する原因は、次の２つのケースがある。１つは、繰り返し範囲内の単語の値が全て生成済み（決定済み）となることである。図１の場合であれば、２度繰り返せば、全ての出力単語（単語aおよび単語b）の値の生成が完了して不動点に達するので、３度目の実行で新たに生成される値はない。もう１つのケースは、いくら繰り返し処理をしても値が生成できない単語が残る場合である。この原因は、値が未決定の単語の定義式を構成する単語の値が、繰り返し実行範囲内では決定されない場合である。たとえば、図１において、単語aの定義式がb+c+dだとする。単語dは、図１の実行範囲で入力される単語でもなく、生成される出力単語でもない。従って、１回目の実行で単語bの値が決定され、２度目の実行で単語aの定義式の実行条件が判定されるが、３度目の実行を繰り返しても、単語aの値は生成されないままである。単語aの値が未決定のまま、不動点に達する。Ｌｙｅｅでは、ある単語の値を生成するために必要な単語、すなわち定義式に用いられる単語を始点単語と呼ぶ。表１の要件の例で言えば、単語aの始点単語はbとcである。このとき、値を求める単語自身、すなわち単語aを端点単語と呼ぶ。
３．プログラムの構造
（１）モジュールへの分割
プログラムは、通常いくつかの単位に分割された構造になっている。それは、複雑な仕様の大きなプログラムを分割せずに作るのは非常に困難だからである。分割された単位はモジュールと呼ばれる。一般的なソフトウェア開発では、ユーザから見たシステム（画面・帳票や外部インタフェースなど）の設計（外部設計）が終わると、次に、システムの内部構造の設計（内部設計）、プログラムをどのような構造に分割して作成するか（どのような単位でモジュールを作るか）の設計を行う。モジュールの分割の単位を決めたら、モジュールの内部の構造を設計していくことになる。その後、これらの設計書にもとづいて、プログラミング言語を用いて、プログラムソースを記述していく。
１）従来の開発手法の場合
プログラムの内部構造の設計手法にはいくつかの方法がある。構造化手法では、プログラムの機能単位にモジュールに分割する。モジュールの独立性が高い（他のモジュールとの係わり度合いが少ない）ほど、プログラムの品質が高いといえる。しかし、構造化手法が示す分割の方法では、モジュールの独立性は設計者のスキルに依存し、一般には独立性は高くない。独立性の低いモジュールでは、１つのモジュールを設計するとき、その他のモジュールとの関連を理解しなければならい。モジュールを修正するときも、他のモジュールに与える影響を考慮しなければならない。また、機能単位に分割されたモジュールは仕様に依存するので、再利用性も低い。
オブジェクト指向は、モジュールの独立性、再利用性の問題を解決するために生まれた手法であるので、モジュールは完全な独立性があり、再利用性が高い。しかし、モジュール（すなわちオブジェクト）の単位の定義は観念的なところがあり、オブジェクトの設計の良し悪しは技術者のスキルに大きく依存する。また、オブジェクトの内部構造の設計方法は規定していないので、その設計の良し悪しはやはり技術者のスキルに依存する。
２）Ｌｙｅｅの場合
Ｌｙｅｅに基づいた本願では、プログラムの分割の単位を、イベントと出力に着目して決定する。プログラムの役割は、ユーザの求め（直接であれ間接であれ）に応じて、求められた処理結果を出力することである。従って、プログラムは、何らかのイベント（ユーザによる画面上のボタン押下など。イベントの定義は後述箇所参照。）によって、イベントに対応した一連の処理（入力、演算、出力）を開始し、最終の出力（画面への結果の表示など）を完了したとき、処理を終了する。【００３２】
Ｌｙｅｅに基づいた本願では、プログラムの分割の単位（モジュールの単位）を、「イベントに対応した一連の処理」とする。このことによって、モジュールは相互依存のない完全な独立性を持ったモジュールとなり、ソフトウェアの開発・保守における品質維持が容易になる。以降、本願では、「イベントに対応した一連の処理」の単位のモジュールを「同期範囲モジュール」と呼ぶ。「イベントに対応した一連の処理」、というモジュール分割規則は規則として明快で理解しやすく、技術者のスキルに依存して異なる分割結果を生むことがない。
（２）同期範囲モジュールの構造
同期範囲モジュールは、さらに小さい単位の定型の制御構造を持ったモジュール群、単語単位の宣言を実行するためのモジュール群で構成される。同期範囲モジュールを構成するこれらのモジュールを、本願では以降「要素モジュール」と呼ぶ。
Ｌｙｅｅの一実施例では、要素モジュールの種類は９種類ある。その種類は、L４モジュールは単語の定義式を実行する、L３モジュールは定義式の実行条件を判定する、というように、実行する単語の宣言の要素ごとのものである。モジュールの種類と役割の詳細については後述する。【００３３】
１つの同期範囲モジュールを構成する要素モジュールは、図２に示すように、基本構造と呼ぶ単位ごとに一定の規則に従って構成する。基本構造は、出力処理に着目して要素モジュールをグループ化した単位である。
コンピュータの入出力処理は、データ項目単位ではなく、データ項目の集合単位に行われるが、同時に同一の媒体（画面、ファイル、帳票など、データ項目を記録または表示する手段）に対して入力または出力処理されるデータ項目（単語）の集合を、本願では論理体と呼ぶ。データ項目の値を保持する媒体（画面、ファイル、帳票など）の一単位を、本願では定義体と呼ぶ。
基本構造は、同一の出力論理体の生成および出力に関与する要素モジュールを規則に従って構成したものである。原則１つの出力論理体に対して、１つの基本構造を作成する。【００３４】
４．基本構造のしくみ
基本構造内の要素モジュールは、図３に示すように、その処理の種類別にさらに３つにグループ化される。基本構造内のモジュールのグループを、Ｌｙｅｅではパレットと呼んでいる。３つのパレットを、それぞれW02パレット、W03パレット、W04パレットと呼ぶ。W02パレットは、入力単語の入力にかかわる要素モジュールの集合である。W03パレットは出力単語の定義式の計算条件の判定にかかわる要素モジュールの集合である。W04パレットは出力単語の定義式の実行による値の生成と、値の出力にかかわる要素モジュールの集合である。
まず、基本構造内のパレット単位の処理の概要を表１の要件の場合を例に上げて説明する。各パレットで実行される要件の宣言を、表２に示したコードを用いて表したものが、図４である。【００３５】
次に、各パレットの機能・作用を説明する。
W02パレット：
入力単語の値が定義体からメモリ上に保存される（入力）。ここでは、単語eと単語cの値が入力される。
W03パレット：
出力単語の計算条件を判定（計算）し、結果をブール値（真か偽かの値）でメモリ上に保存する。ここでは、単語ａの計算条件「ｂ＊ｅ＞２」、単語bの計算条件「ｃ＞０」が判定され、それぞれの判定結果（真または偽）は、それぞれ変数名「ａ＿ｃｏｎｄ」および「ｂ＿ｃｏｎｄ」に保存される。
W04パレット：
W03パレットで計算条件が真と判定された単語の定義式を計算し、メモリ上に保存する。そして、出力論理体に属する単語の値が全て計算されたら、出力論理体を定義体へ出力する。ここでは、単語aの定義式「ｂ＋ｃ」、単語ｂの定義式「２*ｃ＋５」を計算し、両方の値の生成が完了したら、出力する。
パレット内の宣言の実行は、パレット内が前述した不動点に達するまで繰り返され、パレットが不動点に達すると、別のパレットが実行される。パレットの実行順序は、W04パレットから始まり、W02パレット、W03、そしてW04パレットに戻る、というパレットの順で行われ、基本構造内が不動点に達するまで繰り返される。不動点によって制御される、基本構造内の繰り返し処理を示したのが図５である。
具体的に図４の繰り返し処理について説明する。W04パレットから実行されるが、このときいずれの単語の計算条件も判定されていないので、いずれの単語の定義式も実行されず、値が生成されずに不動点に達し、実行がW02パレットに移る。W02パレットでは、単語e、単語cの値が入力され、全ての入力単語の値が決定して不動点に達し、W03パレットに実行が移る。W03パレットでは、単語aと単語bの計算条件が判定され、単語bの計算条件は真と判定が決定するが、単語aの計算条件は始点単語bが未決定であるので決定せず、不動点に達し、W04パレットに再び実行が移る。W04パレットで、単語aは今回も計算条件が判定されていないので計算が実行されない。単語bの定義式は真と決定済みなので計算され、始点単語も全て決定済みであるので、値が決まる。パレットは不動点に達していないので（値の生成があったから）、もう１巡単語の宣言が実行される。単語aは今回も計算条件が判定されていないので、計算が実行されない。単語bは値が既に決定済みである。単語aの値が未決定のまま不動点に達し、W02パレットに実行が移る。W02パレットは、全ての単語の値が既に決定済みなので、不動点に達し、W03パレットに実行が移る。W03パレットで、今回は単語aの計算条件は始点単語が全て決定済みなので、結果は真と判定される。単語bの計算条件は真と決定済みである。全ての単語の計算条件の判定が決定済みとなって不動点に達し、W04パレットに実行が移る。W04パレットで、今度は単語aの定義式の計算条件が真と決定済みなので、定義式が実行され、定義式も全ての始点単語の値が決定済みなので、単語aの値が決定する。単語bは決定済みであるから、全ての出力単語の値が決定済みとなり、出力が完了する。これによって、基本構造が不動点に達し、基本構造内の繰り返し実行は終了する。【００３６】
本願では、基本構造の説明として上述の実施例を示したが、基本構造をなすプログラム制御構造はこれに限定されず他の形態でも可能である。たとえば、上述の実施例では基本構造内は３つのパレットに分かれ、パレット単位に不動点に達したか否かを条件として実行制御がなされているが、Ｗ０３パレットとＷ０４パレットを統合してもよい。その場合、統合したパレット全体に対して不動点による実行制御を行うことになる。あるいは、基本構造をパレットに分割せず（１つの）パレットとみなして）、基本構造単位に不動点による実行制御がなされる構造とすることも可能である。パレット内の要素モジュールの配列順序は、予めたとえばトポロジカルソートによって最適化することも可能である（同一出願人による特許文献１０（出願番号PCT/JP03/09591）、特許文献１５（出願番号PCT/IB2004/003266）および出願番号PCT/JP2004/014868の各文書参照）。最適化することにより、パレット内、および、基本構造内の要素モジュールの繰り返し実行回数は最小限にすることができる。【００３７】
本願で述べる基本構造とは、以下のような要素を備えているものである。即ち、基本構造とは、１つまたは複数の出力論理体を生成・出力するために必要な処理を行う要素モジュールの集合であって、最終目的である出力論理体を生成・出力ならしめるように要素モジュールを実行させるための、不動点による制御構造を持った構造体である。
５．要素モジュール
要素モジュールについて説明する。要素モジュールは、処理の種類別にいくつかの種類があり、要件に依存しない定型構造を持っている。Ｌｙｅｅの一実施例では９種類ある。要素モジュールは、要素モジュールをコールするプログラムであるパレット関数（図３参照）によって呼び出されて実行を開始する。パレット関数自体は、パレット連鎖関数によって呼び出されて実行を開始する（図２参照）。パレット関数はパレットごとに１つ、パレット連鎖関数はプログラムに１つおかれる。
図６に、要素モジュールの構造の基本形を示す。【００３８】
次に、９種類の要素モジュールについて説明する。
＜W04パレットの要素モジュール＞
図３に示すように、W04パレットには、S4、L4、O4、R4の４種類の要素モジュールがある。L4（論理要素L4）は、定義式の実行により出力単語の値を決定する要素モジュールである。図４の例における単語ａおよび単語ｂのL4は、図７および８に示すようになる。【００３９】
O4（出力作用要素）は、出力単語の値の集合である出力論理体を出力する要素モジュールである。R4（経路作用要素R4）は、Ｗ０４パレットが不動点に達した後、次に実行するパレットをW02に指定する要素モジュールである。S4（構造作用要素）は、基本構造内の単語の値の記録領域の初期化を行う要素モジュールである。
＜W02パレットの要素モジュール＞
図３に示すように、W02パレットには、I2、L2、R2の３種類の要素モジュールがある。I2（入力作用要素）は、入力単語の値の集合である入力論理体を、定義体からメモリ領域内へ入力する要素モジュールである。L2（論理要素L2）は、入力された入力単語の値の属性が要件に合致するかどうかのチェックを行う要素モジュールである。R2（経路作用要素R2）は、Ｗ０２パレットが不動点に達した後、次に実行するパレットをW03に指定する要素モジュールである。
＜W03パレットの要素モジュール＞
図３に示すように、W03パレットには、L3、R3の２種類の要素モジュールがおかれる。L3（論理要素L3）は、出力単語の定義式（すなわちL4）を実行するための計算条件を判定する要素モジュールである。図４の例における単語aと単語bのL3は図９および１０に示すとおりである。R3（経路作用要素R3）は、Ｗ０３パレット内が不動点に達した後、次に実行するパレットを自基本構造内のW04パレットか、または他の基本構造のパレットに指定する要素モジュールである。
要素モジュールL4、L2、L3（総称して論理要素と呼ぶ）の処理対象は単語単位であり、入出力作用要素（I2およびO4）、構造作用要素（S4）の処理対象は単語の集合である。
最後に、表３に基本構造内の要素モジュールの実行を制御するパレット関数のコードを示す。表３は、表１の要件の宣言を実行する基本構造のパレット関数の例で、図３に対応する。コメントはコードの意味を示している。【００４０】
【表３】
2006025472.tif 000004
要素モジュールの構造および種類は、上述した実施例に限定されない。たとえば、単語の定義式を実行するＬ４モジュールと、単語の定義式の実行条件を判定するＬ３モジュールは統合し、１つの単語に係わる定義式実行条件と定義式は全て１つの要素モジュールで実行させるようにしてもよい。また、パレットごとの不動点の判定結果によって次に実行するパレットを指定する経路作用要素と呼ぶ要素モジュールは、基本構造のパレット分割をなくした場合は、パレットごとに存在する必要がなくなる。この場合、基本構造全体の不動点判定結果に従って、次に実行する基本構造として自身の基本構造を指定するか、他の基本構造を指定するか、の役割を持つ経路作用要素を１つ用意すればよいことになる。【００４１】
要素モジュールの種類の本質的な点について言えば、要素モジュールは、次の処理の単位では独立している必要があり（統合できない）、不可欠である：（１）論理体の入力、（２）出力単語の値の生成（計算条件判定含む）、（３）論理体の出力、（４）領域のクリア。【００４２】
要素モジュールの構造についても、上述した７つのステップからなるフローチャートの構造に限定されない。要素モジュールの構造は、要素モジュールの目的処理が完了しているか否かを判定するステップと、未完了であれば目的処理を実行するステップとを備え、他のモジュールから独立した、自律性を備えた構造であればよい。（目的処理とは、L4であれば出力単語の値を生成する定義式の実行が目的処理であり、O4であれば出力論理体の出力が目的処理である。）
＜用語の定義＞
■   
単語
Ｌｙｅｅは、ソフトウェアの要件を、データ項目ごとに宣言（定義）し、データ項目ごとの宣言を実行するための定型構造の要素モジュールに、その宣言を代入することによってプログラムを作成する。このように「要件の宣言をともなうデータ項目」を、Ｌｙｅｅでは「単語」と呼ぶ。
■   
同期範囲
これらの要素モジュールは、Ｌｙｅｅにおける一定の規則に従って、グループ化されている。プログラムを構成するモジュールは、まず、図２で「同期範囲」と示した単位にグループ化されている。同期範囲とは、ユーザによるプログラムへの処理実行指示であるイベント（たとえばボタンを押す、メニューを選択する、などのコマンド）によって、コンピュータが実行するように要件で定められているひとまとまりの処理のことである。言い換えれば、同期範囲とは、同じイベントを実行条件の１つとして実行される要素モジュールのグループである。
■   
同期
Ｌｙｅｅでは、この同期範囲の処理が完了することを「同期」と呼ぶ。同期範囲の処理が完了するとは、イベントに対して要件で定められている出力単語の生成と出力を全て完了することである。
■   
イベント
プログラミングの分野では, ユーザがコンピュータに対して行った操作という事象（マウスのクリックやキー押下など）やコンピュータが発するなんからの事象（エラーメッセージなど）などのことを指す。プログラムは、何らかのイベントを開始の合図として、発生したイベントに対応した一連の処理を行い、処理の結果を表示したり、記録したりした後、プログラムはアイドリング状態となる。【００４３】
たとえば、Windows（商標）やMac OS（商標）などの操作画面で、コンボボックスの右端のボタンをクリックすると、項目選択リスト（リストボックス）が表示される。この場合、ユーザが行った「コンボボックスの右端のボタンをクリック」がイベントで、「項目選択リスト（リストボックス）を表示」するまでの一連の処理がイベントに対応した一連の処理である。イベントは、ユーザが直接行う操作に限定されない。プログラム内部に予め設定されたタイマーもイベントである。
■   
同期範囲モジュール
Ｌｙｅｅに基づく本願の開発手法における、プログラムの分割単位である。
「イベントに対応した一連の処理」の単位のモジュールを「同期範囲モジュール」と呼ぶ。【００４４】
Ｌｙｅｅにおける「同期」の定義は、（１）１つの単語の値が成立すること、あるいは、（２）１つの論理体が成立して出力されること、あるいは、（３）１つのイベントに対応した論理体が全て成立して出力されること、である。１つの同期が成立するための要素モジュールの範囲が「同期範囲」である。
■   
要素モジュール
Ｌｙｅｅのプログラムを構成する最小単位のモジュールは、単語単位の宣言を実行するためのモジュールである。この最小単位のモジュールを、本願では以降「要素モジュール」と呼ぶ。Ｌｙｅｅに関する他の文献ではベクトルと呼ばれることもある。
■   
基本構造
１つまたは複数の出力論理体を生成・出力するために必要な処理を行う要素モジュールの集合であって、最終目的である出力論理体を生成・出力ならしめるように要素モジュールを実行させるための、不動点による制御構造を持った構造体である。
■論理体
コンピュータの入出力処理は、データ項目単位ではなく、データ項目の集合単位に行われるが、同時に同一の媒体（画面、ファイル、帳票、電文など、データ項目を記録または表示する手段）に対して入力または出力処理されるデータ項目（単語）の集合を本願では論理体と呼ぶ。
■   
定義体
データ項目の値を保持する媒体（画面、ファイル、帳票など）の一単位である。特定の定義体と関連づけられた論理体を定義体という場合もあるが、本願では、この意味では用いない。
■要素モジュールＯ４が行う出力処理
画面、帳票、ファイル、電文などの媒体に対する入出力処理は、モニタ、プリンタ、ハードディスク、などメモリ外の媒体に対して行う処理である。図１１に示すように、これらの外部媒体に対する入出力はアプリケーションによらず共通の処理であるので、直接的にはOSが、そして、アプリケーションとOSの間をつなぐ処理をミドルソフトウェアが行っている。アプリケーションが行う出力処理とは、出力対象となるメモリ上のデータ項目集合と、それら対象の出力先である外部媒体と出力方法を指定してミドルウェアやOSに出力を依頼することである。入力処理はこの逆である。なお、同図では、矢印は、アプリケーションが発する入出力に関する処理の依頼を表す。【００４５】
Ｌｙｅｅプログラム（アプリケーション）の中で出力を担当するのはＯ４の役割である。Ｏ４は、Ｏ４が行うことも、上述のとおりの処理依頼である。Ｏ４の出力対象となる論理体は、Ｌ４が生成した出力データ項目（出力単語）群である。Ｏ４は出論理体毎におかれる。
Ｌｙｅｅにおけるデータ項目の名称はある一定の命名規約に従って命名されている。単語の論理的名称と、属する論理体の名称と、入力もと、あるいは、出力先の媒体名称の組み合わせによって命名されている。Ｏ４が指定する論理体とは、データ項目の論理体名が共通なデータ項目群である。
基本構造は、同一の出力論理体の生成および出力に関与する要素モジュールを規則に従って構成したものである。原則１つの出力論理体に対して、１つの基本構造を作成する。基本構造中の全てのＬ４の生成が完了すると、出力論理体の値は成立完了となる。これをもって、Ｏ４は出力処理を実行する。しかし、基本構造によっては、出力論理体が生成されるだけで、メモリ外への出力を行わず（Ｏ４は存在しても出力処理はしない）、メモリ外への出力は他の基本構造が行う場合がある。それは、複数レコードのデータを生成し、それらを一度に画面に出力する場合である。複数レコードの出力論理体を生成するためには、基本構造は出力データ項目生成までの一巡処理を複数回行うが、出力自体は１つの1回の処理である。このため、出力論理体を生成する基本構造と、出力する基本構造を分ける必要がある。
本願では、基本構造のＯ４が出力論理体をメモリ外への出力まで行う場合は「出力」と記述し、Ｏ４が出力論理体をメモリ外へ出力しない場合は「生成」または「編集」または「生成（編集）」と記述する。
ＩＩ章  処理経路図（ＰＲＤ）
本願のＬｙｅｅプログラムの構造は、同期範囲モジュール単位に作成され、同期範囲モジュールは基本構造から構成されていることを述べた。同期範囲モジュールの構造の設計書となるものを、本願では処理経路図（PRD：Process Route Diagram）と呼ぶ。本願の発明は、ソフトウェア開発方法一般に関して、特にＰＲＤの設計規則および設計方法に係わるものである。以下に、ＰＲＤの設計規則、設計方法を順序だてて具体的に説明する。
１．処理経路図（ＰＲＤ）の作成
（１）ＰＲＤ作成の前段階
プログラムの内部構造の設計図であるＰＲＤを作成するには、外部設計書からまず以下の情報をとらえることから始める。
(1)外部設計書（基本設計書）を作成する。
ユーザサイドからみたアプリケーションの目に見える部分（外部）の設計を行う。具体的には、画面および帳票のレイアウト、イベントごとの処理の説明、画面の遷移などである。外部設計書の作成方法は、従来にあるいずれの手法でも良い。画面、帳票、ファイルなどの各媒体に、識別可能な識別子（ID）を付与する。
(2)外部設計書から、イベントと対応する一連の「処理」をとらえる。
(3)次に、１イベントに対応する処理に含まれる出力論理体をとらえる。
(4)次に、出力論理体に必要な入力論理体をとらえる。
(5)出力論理体の出力先、および、入力論理体の入力もととなる媒体（画面、帳票、ファイルなど）をとらえる。
（２）ＰＲＤの規則
次に、前述（１）でとらえた情報をもとにPRDを作成する。以下にＰＲＤの規則概要を具体的な例をあげて、説明する。以下では、画面を介してユーザが使用する通常のアプリケーション（オンライン系）の場合を例として説明する。しかし、画面を介しないバッチ処理や、イベントの発生が直接的にユーザによるものでない場合や、イベントによる処理結果の最終出力が画面でない場合であっても、本願で説明する処理経路図の作成方法は同様に適用可能である。【００４６】
図１２は、処理経路図の概念を示すための簡単な例で、ファイルから検索したデータを画面に表示させる場合の処理経路図の例である。ＳＦ１、ＳＦ２は基本構造である。出力論理体１はＳＦ１が出力する論理体、入力論理体１はＳＦ１が入力する論理体である。出力論理体Ｋｅｙ２と出力論理体２はＳＦ２が生成する論理体、入力論理体２はＳＦ２が入力する論理体である。入出力論理体の下に記載された、画面やファイルのアイコンは、論理体の出力先あるいは入力もとの定義体の種別を示す。単に定義体の種別を示しているだけなので、定義体の識別子はつけていない。出力論理体２のように、アイコンが記載されていない場合は、メモリ外への出力がされないことを示している。「ＥＮＤ」の文字は、当該処理経路図が示す同期範囲モジュールが終了すること意味している。以降、本願の処理経路図は同様の記述方法で記載した。
図１３は、図１２の処理経路図に表された処理を含む画面の例である。図１３の画面５００は、「検索」ボタン５５１の押下をイベントとし、コンボボックス５０３に選択入力されたデータを検索条件として、データベース（ファイル）から該当データを検索し、画面に表示する処理に関する画面である。【００４７】
基本構造は、出力論理体単位に設けると述べたが、処理経路図における基本構造の配置は、出力論理体の生成または出力の順序に従って行う。生成または出力の順序が最後の出力論理体を最上位（左端）に置き、以下出力が1つ前の論理体を順次その下位へ（右方向へ）と基本構造を配置していく。画面を介して処理するプログラムの場合、通常、最後に行うのは画面への出力であるので、画面への出力処理の基本構造を最上位に配置する。図１２のＳＦ１が画面５００へ検索結果を表示するための基本構造である。【００４８】
最上位の基本構造の下位（２階層目）に、最上位の基本構造が出力を行う対象となる出力論理体を生成する基本構造を置く。出力論理体が複数ある場合は、２階層目に、各出力論理体を生成する基本構造を出力の順番に上から順に直列的に配置する。図１２のＳＦ２は、コンボボックス５０３の情報を検索条件として、ファイルから該当データを検索し、画面へ表示するためのデータを生成する基本構造で、ＳＦ１の下位に配置する。【００４９】
実際の処理経路図には、基本構造が処理する論理体の識別子だけでなく、その出力先あるいは入力もととなる定義体を特定するための識別子も記載される。本願の処理経路図では、識別された入出力論理体を記載し、出力先あるいは入力もとの定義体の種別を示している（アイコンが何もない場合は定義体はメモリである）だけである。
（３）Ｌｙｅｅプログラムの動き
Ｌｙｅｅプログラムは、同期範囲モジュールの単位で実行され、どの同期範囲モジュールが実行されるかは、イベントによって決まる。図２で示したパレット連鎖関数と呼ばれる実行制御モジュールが、ユーザによって発せられたイベントを受信して、イベントに対応する同期範囲モジュールの最上位の基本構造を起動する。基本構造の実行は、処理経路図に示された配置の順に、左から右へと実行される。最下位の基本構造から順に出力論理体が成立し、出力が成立すると、１つ上位の基本構造へ実行が移る。基本構造から基本構造への実行の遷移は、基本構造内が前述の不動点に達することによって起こる。不動点は、(1)出力論理体のデータ項目の値は全て成立してはいないが、計算式に必要なデータ項目の値がそろっていないために、これ以上基本構造の一巡処理を実行しても新たな値の生成が起こらない場合と、(2)出力論理体の生成・出力を完了したため、新たな値の生成が起こらない場合とがある。(1)の場合は上位から下位へ実行が遷移し、(2)の場合は下位から上位へと実行が遷移する（ただし、下位の基本構造が未実行の場合は下位へ遷移する）。
複数の基本構造が同じ階層に並列的に並ぶ場合は、一旦上位の基本構造に実行がもどりながら、垂直方向に上から下の順番で基本構造が実行される。
２．ＰＲＤの類型化
コンピュータが行う処理を、イベント単位に行われる処理に着目し、さらに、論理体レベル（定義体に関連づけないレベル）の入出力だけに着目してみると、ＰＲＤの型と情報に、要件に係わらない共通した類型が見出せる。入出力を、識別された定義体に関連付けず、論理体レベルでとらえることが重要である。定義体の種類や定義体が具体的にどれかであるにかかわらず、入出力の本質的処理は共通しているからである。【００５０】
ＰＲＤを類型化することで、論理体の具体的な入力もと、出力先、それら入出力する内容（単語）等によらずに、プログラムの構造設計をひな型から共通的に作成できる。さらに、この類型化（パターン化）の考え方を導入することで、ＰＲＤの作成を自動化することも可能となる。【００５１】
基本構造の入出力対象を論理体レベルでとらえ（論理体名のみ具体化する）、実際に出力される定義体の具体的識別子とは関連付けずに設計する。ソースコードの生成段階では、論理体は最終的に定義体を特定して関連付ける必要があるが、それはＰＲＤのひな型選択した後に行えばよい。同じ処理類型のＰＲＤを用いた処理のプログラムの入出力論理体の識別子は、共通の論理体名と個別の定義体名を組み合わせて命名されたものとなる。【００５２】
次に、ＰＲＤの類型化について、類型ごとに具体的に説明する。
（１）初期表示処理
まず、初期表示処理の処理経路図の類型について説明する。【００５３】
初期表示処理とは、任意の画面の初期状態の表示のための処理である。たとえば、図１４に示すように、ある画面Ａから他画面Ｂへの遷移は、たとえば画面Ａ上の「次画面ボタン」押下がイベントとなって実行される。この場合、「次画面ボタン」押下のイベント発生から、画面Ｂが表示されるまでの処理が、初期表示処理である。画面Ｂの初期状態は、初期表示時に表示時の日付を表示する仕様となっている。プログラムを起動した時に表示される初期画面の表示処理も、初期表示処理である。初期表示処理の場合、イベントが発生する画面と、イベントによる処理結果を出力する画面が異なる点に留意されたい。【００５４】
図１５は初期表示処理の場合の、本願発明による処理経路図の類型（の例）を示す図である。図１５（Ａ）は、イベントが発生する画面の処理経路図である。表示画面への遷移条件判定などがなければ、論理体のない基本構造ＳＦ１が１つ置かれるだけである。【００５５】
図１５（Ｂ）は、表示する画面の表示のための処理経路図である。最上位に画面への出力のための基本構造ＳＦ１を置く。初期表示処理では、画面への表示以外の出力はなく、画面に表示するデータの生成がある場合も複数件レコードの生成ではないのが一般的なので、基本構造は１つだけとなる。（もし、複数件レコード生成があったとすれば、ＳＦ１の下位に生成のための基本構造を置く。複数レコード生成については後述の検索処理の説明を参照されたい。）初期表示用データの生成に入力論理体が必要な場合は入力論理体を置き（入力論理体の数は複数の定義体から取得するのであれば複数置く。特に図示しないが、以降同様である。）、画面に表示するデータとなる出力論理体を１つ置く。ＳＦ１は、初期表示用の出力論理体を生成するための入力論理体１を入力し、入力論理体１から出力論理体１を生成し出力する。【００５６】
図１４の例でいえば、画面Ａの次画面ボタン押下（イベント）によって、図１５（Ａ）の処理経路図の基本構造ＳＦ１が起動され（パレット連鎖関数が発生したイベントに対応した同期範囲モジュールの基本構造を起動する）、次に図１５（Ｂ）の画面Ｂの初期表示処理ＰＲＤ（が表わす同期範囲モジュール）の基本構造ＳＦ１が起動され、ＳＦ１は入力論理体１（日付データ）を入力し、出力論理体１（日付データ）を出力する。イベントとなるボタンも単語の１つとなり、入力論理体に属するが、単語として扱う時は、一連処理の中の定義式の実行条件判定にボタン押下あり／なしの情報を用いるのであって、同期範囲モジュールの起動の役割を果たす意味でのイベントとして入力するわけではない。
（２）検索処理（中間ファイルなし）
次に、検索処理（中間ファイルなし）の場合の処理経路図について説明する。検索は、一度に行う検索結果が多量の場合、検索結果の表示を複数のページに分けて表示する場合がある。そのような場合は、検索結果を中間ファイルとして一時的に保存しておく。検索処理（中間ファイルなし）は、検索結果全てを１画面に表示できる場合である。（検索結果が1画面でしきれない場合でも、ファイル更新がされないことが保証されている場合は、中間ファイルを作成せずに、1画面に表示できるレコード件数ずつ、ページの表示毎に検索を行ってファイルから入力を行う処理によって実現することもある。この場合の処理も、検索（中間ファイルなし）の類型に属する。）
図１３の画面を具体例にして説明する。５０３は都道府県名を選択入力するためのコンボボックスである。５０１は、５０３で選択した都道府県名を検索条件として、店舗データベースから、該当する都道府県に設置された店舗名と住所を検索して表示するためのボタンである。５０５が、検索結果を表示するためのフィールドである。コンボボックス５０３で、「東京都」が選択入力された状態で、検索ボタン５０１を押下すると、５０５に「東京都」に設置された店舗名と住所がｎ件表示される。検索ボタン５０１の押下がイベントであり、このイベント発生から、５０５に店舗情報が表示されるまでの処理が検索処理（中間ファイルなし）である。【００５７】
図１６は、検索処理（中間ファイルなし）の場合の処理経路図の類型（の例）である。画面へ表示するための基本構造ＳＦ１を最上位に置く。ＳＦ１には、画面に表示（出力）する対象の出力論理体１と、画面から入力する入力論理体１（すなわち検索条件）を置く。次に、第２階層に、検索結果を生成するための基本構造ＳＦ２を置く。ＳＦ２には、検索するためのキー項目情報である出力論理体Ｋｅｙ２と検索結果から生成した画面に表示用の出力論理体２と、検索対象のファイルから検索抽出する入力論理体２を置く。検索対象のファイルが複数個ある場合は、ＳＦ１の第２階層の位置に、ＳＦ２と並列に（垂直方向に）、ファイルの数だけ基本構造を置き、ＳＦ２と同様に入出力の論理体を置く。【００５８】
次に、図１６の検索処理（中間ファイルなし）ＰＲＤを用いて、図１３の画面の検索の場合のＬｙｅｅプログラムの動きを説明する。コンボボックス５０３で、「東京都」が選択入力された状態で検索ボタン５０１を押下すると（イベント発生）、ＳＦ１が処理を開始する。まず、検索条件を入力論理体１として入力する。図１６の例では、入力論理体１はコンボボックス５０３に入力されているデータで、ここでは「東京都」である。この段階ではＳＦ１は画面に出力するデータが生成できていないので、ＳＦ１は不動点に達して、実行はＳＦ２に移る。ＳＦ２では、検索するためのキー項目情報である出力論理体Ｋｅｙ２を生成し、ＳＦ１で入力された検索条件によって検索対象ファイルから検索条件に合致したレコードを抽出して入力し、画面出力用データとして出力論理体２を生成する。ここまでがＳＦ２の一巡処理である。通常、基本構造は出力まで、あるいは出力がない場合は生成まで完了すると、不動点に達することによって、実行が上位の基本構造に移る。しかし、処理の対象がｎ件のレコードである場合は、基本構造の実行遷移条件は、不動点以外に、ＥＯＦ（end of fileファイルの終わり）か、がある。基本構造ＳＦ２の一巡処理は、検索条件に合致するレコードの数だけ実行される。（本願では、以降のＬｙｅｅプログラムの動きの説明では、実行遷移の条件となる不動点に関する説明は省略する場合もある。）基本構造ＳＦ２がの処理が完了すると、ＳＦ１へ実行が移り、ＳＦ１は画面に出力するための出力論理体１を画面に出力し、モジュールの実行が終了する。
検索処理では、通常、ファイルから検索条件に合致したデータを抽出する処理はミドルソフトウェアであるＤＢＭＳ（Data Base Management System）が行うので、ＳＦ２が行うのは、抽出されたレコードの入力である。図１６の例では、入力論理体２は店舗データベースから抽出したレコード１件である。出力されたレコードは、メモリ上にスタックされ保持される。対象ファイルの全レコードとの検索条件照合が完了したら、実行がＳＦ１に移る。ＳＦ１は、ＳＦ２が生成した検索結果（出力論理体２）を画面に出力する。【００５９】
ここで、上記に関連して、異なる２つのファイルに属すレコードが１：ｎの関係を持つようなレコードの読み込みの場合の処理経路図の設計規則について説明する。１：ｎの関係に関する規則は、本項の「検索（中間ファイルなし）」の類型に限るものでなく、「検索（中間ファイルあり）」のほか、後述する「登録」「更新」「削除」等を含む総ての類型において、１：ｎ関係が存在する場合に適用できる規則である。したがって、共通の考え方で処理できる部分は本項での説明をもって他項での説明に替えるものとする。【００６０】
図１７は、複数ファイルに属すレコードが１：ｎの関係を持つようなレコードの読み込み処理結果を表示した画面の具体例である。画面５００は、希望の所在地の店舗名（ショッピングモール名）と、該当店舗の中のショップから希望のショップタイプのショップ名を検索表示させるための画面である。５０３は都道府県名を選択入力するためのコンボボックスである。５０２はショップタイプを選択入力するためのコンボボックスである。検索ボタン５５１は、５０３と５０２で選択した都道府県名およびショップタイプを検索条件として店舗（ショッピングモール）データベースとショップデータベースから、該当する都道府県に設置された店舗名と住所、および、該当ショップタイプのショップ名を検索して、店舗ごとに表示するためのボタンである。５０６が、検索結果を表示するためのフィールドである。コンボボックス５０３で「東京都」が選択入力され状態、かつ、コンボボックス５０２でコーヒーショップが選択入力された状態で、検索ボタン５５１を押下すると、５０６に東京都に設置された店舗名と住所、および、店舗ごとに存在するコーヒーショップの名前が表示される。【００６１】
図１７の画面例で１：Ｎの関係を具体的に説明する。店舗名と住所は、都道府県名を検索条件として店舗ファイルから検索抽出される。「東京都」に該当する店舗がＡ、Ｂ、Ｃの３件あったとする。店舗Ａに存在するコーヒーショップは、ショップタイプ「コーヒーショップ」と店舗名「Ａ」を条件として、ショップデータベースから検索される。店舗Ａにはコーヒーショップが３つあったとすると、該当する店舗ＡのコーヒーショップＸ、Ｙ、Ｚが検索抽出される。このように、店舗ファイルの該当レコード１件に対して、ショップタイプファイルのレコードｎ件が対応する。最初のファイルの検索結果レコードが、次のファイルの検索条件の１つになっているのである。【００６２】
図１８は、１：ｎの関係を持つ場合の本願発明による処理経路図の類型（の例）を示す図である。これは、図１７の例のように、２つのファイルが検索対象となり、第１のファイルの検索抽出レコードと第２のファイルの検索抽出レコードが１：ｎの関係を持つような場合の処理経路図である。【００６３】
画面へ表示するための基本構造ＳＦ１を最上位に置く。ＳＦ１には、画面に表示するデータである出力論理体１と、画面から入力する検索条件（入力論理体１）を置く。次に、第２階層に、検索結果を生成するための基本構造ＳＦ２を置く。ＳＦ２には、検索するためのキー項目情報（論理体Ｋｅｙ２）（図１７の事例では都道府県名）と検索結果である出力論理体２、および、検索対象のファイルから入力する検索結果データである入力論理体２を置く。ここまでは、１：ｎの関係を持たない検索処理（中間ファイルなし）の場合（図１３の画面の場合）と同じである。次に、ＳＦ２の下位（第３階層）に、ＳＦ３を置く。ＳＦ３に、検索するためのキー項目情報（論理体Ｋｅｙ３）（図１７の事例ではショップタイプ）と検索結果である出力論理体３、および、検索対象のファイルから入力する検索結果である入力論理体３を置く。レコードの関係が１：ｎの関係となる検索対象ファイルの数が植えるごとに、基本構造を下位層に追加していく。【００６４】
次に、図１８を用いて、図１７の画面の検索の場合のＬｙｅｅプログラムの動きを説明する。コンボボックス５０３で東京都が選択入力された状態、かつ、コンボボックス５０２でコーヒーショップが選択入力された状態で、検索ボタン５５１を押下すると（イベント発生）、ＳＦ１が処理を開始する。【００６５】
ＳＦ１では検索条件（入力論理体１）の入力を行い、ＳＦ２に実行が移る。図１７の例では、入力論理体１はコンボボックス５０３と５０２に入力されているデータで、ここでは「東京都」および「コーヒーショップ」である。ＳＦ２では、検索するためのキー項目データ情報（出力論理体Ｋｅｙ２）の生成と、ＳＦ１で入力された検索条件によってＳＦ２の検索対象ファイル（図１７の例では店舗ファイル）から検索抽出したレコード（入力論理体２）の入力と、その検索結果から画面表示用データ（出力論理体２）の生成を行い、ＳＦ３に実行を移す。ＳＦ３では、検索するためのキー項目情報（出力論理体Ｋｅｙ３）の生成と、ＳＦ１で入力した検索条件（コーヒーショップ）と、ＳＦ２で検索抽出されたデータ（たとえば店舗Ａ）を検索条件として、ＳＦ３の検索対象ファイル（図１７の例ではショップリスト）から検索抽出したデータ（入力論理体３）（たとえば「Ｘ」を）の入力と、入力した検索結果から画面表示用データ（出力論理体３）の生成を行う。ＳＦ３の一巡処理は、検索条件に合致するレコードの数だけ実行される（図１７の事例では店舗Ａに関しては３回）。ＳＦ２への遷移条件（ＳＦ３の検索対象ファイルの検索終了）を満たした時にＳＦ３からＳＦ２に実行が遷移する。ここまでが、ＳＦ２の一巡処理である。ＳＦ２も、検索条件に合致するレコードの数だけ一巡処理を実行する。ＳＦ１への遷移条件（ＳＦ２の検索対象ファイルの検索終了）を満たしたときにＳＦ２からＳＦ１に実行が遷移する。ＳＦ１は、ＳＦ２およびＳＦ３で生成した検索結果（出力論理体２および出力論理体３）を含む、画面への出力データ（出力論理体１）を画面へ出力する。
（３）検索処理（中間ファイルあり）
次に、検索処理（中間ファイルあり）の場合の処理経路図の類型化について説明する。検索処理（中間ファイルあり）とは、検索結果の表示が複数ページになり、検索条件が複雑、あるいはファイルに更新処理がかかる可能性がある、あるいは複数のファイルから検索抽出する場合に、検索結果を一時的に保持するために中間ファイルに出力し、検索結果であるこの中間ファイルから、画面に出力するためのデータを画面に表示するレコード件数分抽出、生成、画面への出力を行う場合の処理である。【００６６】
つまり、検索結果が複数ページにわたる場合で、上記のような条件にあてはまる場合は、次頁または前ページを表示させる毎にもとファイルから検索抽出を実行すると、検索結果が異なるという可能性や、処理スピードの問題が起こる。このため、検索結果を中間ファイルとして蓄積しておき、この蓄積したデータから、次頁や前頁に表示するデータの生成を行う必要がある。このように、中間ファイルの介在を必要とする検索処理が、本項に係る処理経路図の類型である。【００６７】
図１９は検索処理（中間ファイルあり）の場合の本願発明による処理経路図の類型（の例）を示す図である。図２０は検索処理（中間ファイルあり）を含む画面の例である。【００６８】
図１９に示すように、検索処理（中間ファイルあり）として本願により類型化される処理経路図の構造は、検索条件の入力および検索結果の画面への出力のための基本構造ＳＦ１と、中間ファイルを初期化のためにクリアする基本構造ＳＦ２と、検索対象であるファイル（たとえば住所録マスタ・データベース）から検索抽出して中間ファイルへ出力する基本構造ＳＦ３と、検索結果である中間ファイルから画面へ表示するためのデータを検索抽出、生成するための基本構造ＳＦ４とからなる。画面に表示するＳＦ１を最上位に配置し、ＳＦ２、ＳＦ３、ＳＦ４の順にＳＦ１の下位（第２階層）に並列的に配置する。【００６９】
次に、検索処理（中間ファイルあり）の処理経路図の類型化の機能・構成面では、まず、ＳＦ１は検索結果（出力論理体１）の画面への出力機能と、検索条件（入力論理体１）の画面からの入力機能を果たし、ＳＦ２はクリア対象を中間ファイルから呼び出すためのキー項目情報（出力論理体Ｋｅｙ２）を生成する機能と、ＤＢＭＳへの中間ファイルの初期化のための命令を発行する機能を果たし、ＳＦ３は検索のためのキー項目情報（出力論理体Ｋｅｙ３）生成機能と中間ファイルへの検索結果（出力論理体３）出力機能と、検索対象ファイルから検索抽出データ（入力論理体３）を入力する機能を果たし、ＳＦ４は画面に表示するためのデータを中間ファイルから検索抽出するためのキー項目情報（出力論理体Ｋｅｙ４）の生成機能と画面表示するデータ（出力論理体４）の生成機能と、中間ファイルから検索抽出した画面に表示するデータ（入力論理体４）のを入力する機能をは果たしている。【００７０】
次に、上記の機能・構成を持つ検索処理（中間ファイルあり）の処理経路図の類型が示すＬｙｅｅプログラムの動きについて説明する。図２０に示すように、画面５００は、画面上で入力されたデータを住所地とする社員を検索して当該社員の氏名・社員コード・住所・電話番号を明細欄に表示するためのインタフェースであるとする。画面５００上にはたとえば、検索ボタン５５１、検索条件を選択入力するコンボボックス５０３、検索結果明細の表示欄５０５に加えて、１ページで表示しきれなかった場合に次頁を表示するための次表示ボタン５５２が表示されて構成される。【００７１】
検索ボタン５５１押下（イベント発生）により、当該検索処理（中間ファイルあり）ＰＲＤが示すところの同期範囲モジュールのＳＦ１が起動される。ＳＦ１では検索条件（入力論理体１）の入力を行い、ＳＦ２に実行が遷移する。ＳＦ２では、検索のためのキー項目情報（出力論理体Ｋｅｙ２）を生成して、中間ファイルの値のクリア（初期化）を行う（クリア処理の命令をＤＢＭＳに発行する）。ＳＦ２の処理が完了すると、実行がＳＦ１に一度戻り、ＳＦ１では画面に表示するデータ（出力論理体１）がまだ生成されていないので、次にＳＦ３に実行が移る。ＳＦ３では、検索のためのキー項目情報（出力論理体Ｋｅｙ３）を生成し、ＳＦ１で入力した検索条件を用いてファイルから検索抽出したレコード（入力論理体３）を入力し、検索抽出結果（出力論理体３）を中間ファイルへ出力する。この時、ＳＦ３は条件合致のレコード件数分の一巡処理を実行する。ＳＦ３の処理が完了（検索処理の終了）すると、ＳＦ１に再度実行が戻り、次に、ＳＦ４に実行が移る。ＳＦ４では、中間ファイルから検索するためのキー項目情報（出力論理体Ｋｅｙ４）を生成し、中間ファイルから検索抽出した画面への表示レコード（入力論理体４）を入力し、画面表示用のデータ（出力論理体４）を生成する。ＳＦ４は、１ページ表示分のデータを生成できるまで繰返し実行される。図２０の例でいえば、１０レコード分のデータの生成が完了するまで、繰り返し実行される。ＳＦ４の処理が完了（１ページ分のデータ生成完了）すると、ＳＦ１に実行が移る。ＳＦ１では、今度は、画面に出力するための出力論理体１（出力論理体２および出力論理体３のデータ項目を含む画面表示情報）が生成できているので、画面への出力を行う。ここで、本処理経路図が示す同期範囲モジュールの処理は終了する。
（４）前頁・次頁処理
次に、前頁・次頁処理の場合の処理経路図の類型化について説明する。【００７２】
前頁・次頁処理の類型とは、検索結果の全データを一画面で全部表示できないときに、検索結果の全データを中間ファイルとして保持し（前項の検索処理（中間ファイルあり）の場合）、現在表示中の画面の次頁または前頁を表示させる場合に、作成した中間ファイルから、次頁または前頁に表示する分のデータを入力して、画面に表示するためのデータを生成して表示（出力）するような処理の類型である。これには、２つのケースがあう。１つは、表示中のレコードのデータ項目に対して何らの入力も行えない仕様の場合。もう１つは、表示中のレコードのデータ項目に対して、ユーザが画面から選択や上書き変更という入力が可能で、ページを切り替えても、入力の反映はボタンによって確定されるまで入力の反映はされない、という仕様の場合である。前者（入力不可）の場合の処理経路図の類型は、検索処理（中間ファイルなし）の場合と同じである。図２３が前者（入力不可）の場合の前頁・次頁処理を含む画面の例である。【００７３】
後者（入力可）の場合の処理を含む画面の例が図２１である。検索結果のうち１〜１０件を表示するフィールド５０５は、上書き入力可能なフィールドを含む。検索結果の次の１０件を表示するための次頁ボタン５５３、フィールド５０５に行った入力をファイルに反映させるための変更ボタン５５５がある。【００７４】
図２２が、後者（入力可）の場合の前頁・次頁処理の本願発明による処理経路図の類型（の例）を示す図である。図２２に示すように、前頁・次頁処理として本願により類型化される処理経路図の構造は、画面に表示（出力）し、画面から入力するための基本構造ＳＦ１と、中間ファイルを更新するための基本構造ＳＦ２と、画面へ出力するためのデータを生成するための基本構造ＳＦ３から成り、ＳＦ１を最上位に配置し、ＳＦ２とＳＦ３を、ＳＦ１の下位（第２階層）に並列に配置すること構造となる。【００７５】
次に、前頁・次頁処理の処理経路図の類型の機能・構成面では、まず、ＳＦ１は、画面に表示されている情報（入力論理体１）の入力機能と、画面に表示するデータ（出力論理体３）の画面への表示（出力）機能を果たし、ＳＦ２は、画面に表示されているｎ件レコードの情報（入力論理体２０）と中間ファイルから検索抽出した更新対象レコード（入力論理体２１）の入力機能と、中間ファイルから更新対象レコードを検索抽出するためのキー項目情報（出力論理体Ｋｅｙ２）と中間ファイルへ更新データ（出力論理体２）を出力する機能を果たす。ＳＦ３は、ＳＦ２で更新した中間ファイルから検索抽出する画面に表示するデータ（入力論理体３）を入力する機能と、中間ファイルから検索抽出するためのキー項目情報（出力論理体Ｋｅｙ３）の生成機能と、画面に表示するデータ（出力論理体３）を生成する機能を果たす。【００７６】
次に、上記の機能・構成を持つ前頁・次頁処理の処理経路図の類型による同期範囲モジュールの動作について説明する。図２１で、たとえば次頁ボタン５５３の押下（イベント）により、図２２に示した次頁・前頁処理ＰＲＤが示す同期範囲モジュールのＳＦ１が起動し処理を開始する。ＳＦ１は表示中画面の情報（入力論理体１）を入力し、ＳＦ２に実行が移る。ＳＦ２では、中間ファイルから更新対象データを検索抽出するためのキー項目情報（出力論理体Ｋｅｙ２）の生成を行い、表示中画面情報のうちｎ件レコード情報（入力論理体２０）と中間ファイルからの更新対象データ（入力論理体２１）の入力を行い、前記２つの入力論理体から中間ファイルを更新するデータ（出力論理体２）の生成を行う。このＳＦ２は更新対象レコード（画面に表示されているレコード）件数分の一巡処理を実行する。ＳＦ２の処理が完了（画面情報分の中間ファイル更新完了）すると、一旦ＳＦ１に実行が戻り、次にＳＦ３に移る。ＳＦ３では、中間ファイルから次頁に表示するレコードを検索抽出するためのキー項目情報（出力論理体Ｋｅｙ３）の出力を行い、中間ファイルから検索抽出した画面に表示するためのデータ（入力論理体３）を入力し、検索抽出したデータから画面に表示するためのデータ（出力論理体３）を生成する。このＳＦ３は、画面に表示するレコードの件数（例えば、表示する明細件数）の数だけ一巡処理を行う。ＳＦ３の処理が完了（画面に表示するデータの生成完了）すると、実行はＳＦ１にもどり、ＳＦ１で、ＳＦ３で生成した画面表示用データ（出力論理体３）を含む、画面に表示するデータを出力する。前頁処理については、レコードの抽出範囲が異なるのみであり機能的には共通なので、説明を省略する。
（５）登録・変更・削除処理
次に、登録・変更・削除処理の場合の処理経路図の類型化について説明する。【００７７】
まず、登録・変更・削除処理の類型とは、画面から入力した情報をファイルに記録する（出力する）処理の類型である。登録、変更、削除は、ファイルへの記録という出力処理を、空状態のデータ項目に対して行う（登録）のか、既に値が存在するデータ項目に対して行う（変更、削除）のか、の違いがあるのみで、基本形態は同様である。（削除については後述説明箇所も参照）。【００７８】
まず、登録処理の処理経路図の類型について説明する。図２５（Ａ）は、登録処理を含む画面の例である。この場合は、登録対象のデータは１レコードである。入力フィールド５０１に登録データを入力し、登録ボタン５０２を押下すると、５０１のデータがファイルに登録される仕様である。図２４は登録処理の場合の本願発明による処理経路図の類型（の例）を示す図である。登録データは１レコードの場合である。図２４に示すように、登録処理として本願により類型化される処理経路図の構造は、画面から入力されるデータ（入力論理体１）の入力と、登録処理完了を示すデータ（出力論理体１）を画面に表示（出力）するための基本構造ＳＦ１と、ファイルに入力データ（入力論理体１）を出力する基本構造ＳＦ２で構成され、ＳＦ１を最上位に置き、ＳＦ２をＳＦ１の下位（第２階層）に配置する構造となる。【００７９】
次に、登録処理の処理経路図の類型化の機能・構成面では、まず、ＳＦ１は、画面からの入力情報（入出力論理体２）の入力機能と、登録処理の終了メッセージ等の終了情報（出力論理体１）の画面への出力機能を果たす。ＳＦ２は、ＳＦ１で入力した入力情報（入出力論理体１）をファイルに出力する、出力機能を果たす。【００８０】
次に、更新処理の処理経路図の類型について説明する。図２５（Ｂ）は、更新処理を含む画面の例である。この場合は、更新対象のデータは１レコードである。入力フィールド５１１に更新対象を表示させるための検索条件を入力し、表示ボタン５１３を押下すると、出力フィールド５１２に、更新対象データが表示される。出力フィールド５１２に、更新したい内容を上書きし、更新ボタン５１４を押下すると、ファイルの内容が更新されるような仕様である。図２６は更新処理の場合の本願発明による処理経路図の類型（の例）を示す図である。更新対象のデータは１レコードである。図２６に示すように、更新処理として本願により類型化される処理経路図は構造的には、更新情報（入力論理体１）の画面からの入力と、更新完了を示すメッセージの画面への出力を行う基本構造ＳＦ１と、更新対象ファイルから対象レコードを検索するためのキー項目情報（出力論理体Ｋｅｙ２）の生成と、更新対象ファイルから検索抽出した更新対象レコード（入力論理体２）を入力し、更新データ（出力論理体２）を生成、更新対象ファイルに出力する基本構造ＳＦ２からなる。ＳＦ１を上位の基本構造としておき、ＳＦ２を下位（第２階層）に配置する構造となる。【００８１】
次に、更新処理の処理経路図の類型化の機能・構成面では、ＳＦ１は更新処理完了情報（出力論理体１）の画面への出力機能と、画面からの更新情報（入出力論理体２）の入力機能を果たし、ＳＦ２は更新対象レコードを検索するためのキー項目情報（出力論理体Ｋｅｙ２）を生成する機能と、ファイルから検索抽出した更新対象レコード（入力論理体２）を入力する機能と、更新データ（出力論理体２）をファイルへ出力する機能を果たしている。【００８２】
最後に、削除処理の場合を説明する。図２５（Ｃ）は削除処理を含む画面の例である。削除対象は１レコードである。入力フィールド５２１に削除対象を表示させるための検索条件を入力し、表示ボタン５２３を押下すると、出力フィールド５２２に、削除対象データが表示される。この状態で削除ボタン５１４を押下すると、ファイルに対して５２２に表示されていたデータの削除処理が行われるような仕様である。
削除処理には、論理的削除と物理的削除がある。論理的削除は、物理的な実体（ファイルに記録されたデータ）は削除しないで、当該データを論理的削除状態にするために、データに対して、削除状態であることを示す削除フラグを付加することによって、論理的削除状態にし、データを削除したものとして扱えるようにすることである。これは、既存レコードに対して、データを付加する処理なので、実質的には更新処理と同じ処理になる。一方、物理的削除は、ファイルから物理的にデータを完全に削除してしまうことである。図２２の処理経路図の中の、結果の画面表示を行うＳＦ１とクリア処理を行うＳＦ２からなる処理経路図と、基本は同様なるので、ここでは説明を省略する。【００８３】
（６）状態保持処理
次に、状態保持処理の場合の処理経路図の類型化について説明する。【００８４】
まず、状態保持処理の類型とは、ある画面において、次画面に遷移するにあたり（当該次画面に表示する情報の生成は自体は次画面の処理に移行してからの処理となるが）、次画面の表示内容を保持しておく処理の類型である。保持しておく目的は、次画面に遷移した後に、次画面で保持した情報を利用するためや、自身の画面に戻ってきたときに、次画面に遷移する前に表示していた情報を表示するためである。たとえば、図２７は状態保持処理を含む画面と、遷移先の画面の例を示す図である。同図は、（Ａ）に示すような一覧表示画面で、詳細を表示したい項目（たとえば項目Ｎｏ．２（６１１））を選択し、詳細表示ボタン６１３を押下することで、選択した項目の詳細表示画面（Ｂ）に遷移する仕様である。そして、画面（Ｂ）の戻るボタン６５１を押下すると、画面（Ａ）に戻り、その時表示される内容は、画面（Ｂ）に遷移する前の状態（項目Ｎｏ．２（６１１）が選択された同一の一覧情報が表示された状態）である。【００８５】
図２８は状態保持処理の場合の本願発明による処理経路図の類型（の例）を示す図である。本類型は遷移元画面の情報を保持する（図２７の例でいえば画面（Ａ）の情報を保持する）処理のための類型であって、遷移先画面（図２７の例でいえば画面（Ｂ））を表示する処理は、初期表示処理の類型など他の類型によって設計可能である。
図２８に示すように、状態保持処理として本願により類型化される処理経路図の構造は、保持すべき現在表示中の画面情報のうちｎ件レコードの明細情報でないもの（入力論理体１）を入力し、保持する情報（出力論理体１）を生成するための基本構造ＳＦ１と、保持する画面上の明細情報を検索抽出するためのキー項目情報（出力論理体Ｋｅｙ２）の生成と、保持する画面情報のうちｎ件レコードの明細情報から検索抽出した情報（入力論理体２）を入力し、保持するための情報（出力論理体２）を生成するための基本構造ＳＦ２で構成される。【００８６】
次に、状態保持処理の処理経路図の類型の機能・構成面では、まず、ＳＦ１は、保持すべき現在表示中の画面情報のうち明細情報でないもの（入力論理体１）を入力する機能と、保持する情報（出力論理体１）を生成する機能を果たし、ＳＦ２は、保持する画面上の明細情報を検索抽出するためのキー項目情報（出力論理体Ｋｅｙ２）の生成機能と、保持する画面情報のうちｎ件レコードの明細情報から検索抽出した情報（入力論理体２）を入力する機能と、保持するための情報（出力論理体２）を生成する機能を果たす。【００８７】
次に、上記の機能・構成を持つ状態保持処理の処理経路図の類型に係る動作について、図２７を用いて説明する。まず画面（Ａ）で、たとえば選択ボタン６１１の押下で所望項目の選択の入力がなされた状態で、詳細表示ボタン６１３を押下する（イベント）と、図２８に示す基本構造ＳＦ１が処理を開始する。ＳＦ１は、まず、画面上のヘッダ情報など（入力論理体１）を入力すると、実行はＳＦ２に移る。ＳＦ２は、画面の表示情報から検索するためのキー項目情報（出力論理体Ｋｅｙ２）を生成し、画面に表示されているｎ件の明細情報から検索抽出したレコード（入力論理体２）を入力し、当該情報から保持するための情報（出力論理体２）を生成して、一巡処理を終える。ＳＦ２は、画面に表示されているレコードの件数だけ、この一巡処理を実行し、実行が終了するとＳＦ１に実行が戻る。ＳＦ１は、出力論理体２を含む保持する情報（出力論理体１）を生成し、遷移先画面（Ｂ）を表示するための処理経路図が表す同期範囲モジュールを起動させて終了する。
（７）アップロード処理
次に、アップロード処理の場合の処理経路図の類型化について説明する。【００８８】
まず、アップロード処理の類型とは、自分のＰＣ（パーソナル・コンピュータ）やローカルサーバ上にあるファイルを、送信して格納する処理の処理経路図の類型である。【００８９】
図２９はアップロード処理の場合の本願発明による処理経路図の類型（の例）を示す図である。図３０はアップロード処理を含む画面の例を示す図である。図２９に示すように、アップロード処理として本願により類型化される処理経路図の構造は、アップロード対象ファイルの情報（入力論理体１）を画面から入力し、アップロード処理結果のメッセージなどの情報（出力論理体１）を画面へ出力する基本構造ＳＦ１と、ＳＦ１で入力した情報を含むアップロード情報を出力する基本構造ＳＦ２からなる。（ファイルのアップロードを行うのはＤＢＭＳで、アプリケーションが行う処理は、ＤＢＭＳにアップロード情報を送って処理を依頼することである。）ＳＦ１を上位の基本構造とし、ＳＦ２を下位（第２階層）に配置する構造となる。【００９０】
次に、アップロード処理の処理経路図の類型化の機能・構成面では、ＳＦ１はアップロード結果（出力論理体１）の画面への出力機能と、画面からのアップロード情報（入力論理体１）の入力機能を果たし、ＳＦ２はアップロード情報（出力論理体２）の出力機能を果たす。
（８）ダウンロード処理
次に、ダウンロード処理の場合の処理経路図の類型化について説明する。【００９１】
ダウンロード処理の類型とは、サーバ上にあるファイルをローカル環境のＰＣ（パーソナル・コンピュータ）やローカルサーバ上に送る処理の類型である。【００９２】
ダウンロード処理は、具体的には、アプリケーションにおいて、たとえばサーバ上にある入金情報を自ＰＣ上の表計算ソフトウェアで加工するために、ＣＳＶ形式でとり込みたいという場合等に必要となる処理である。【００９３】
図３１（Ａ）はダウンロード処理の場合の本願発明による処理経路図の類型（の例）を示す図、同図（Ｂ）はダウンロード処理含む画面の例を示す図である。図３１（Ｂ）には、ダウンロード対象ファイルを選択入力するコンボボックス８０１、ダウンロードファイルをローカル環境に保存するときの名前を入力するフィールド８０２、ダウンロードを実行指示するボタン８１０がある。
図３１（Ａ）に示すように、ダウンロード処理として本願により類型化される処理経路図の構造は、ダウンロード対象ファイルの情報（入力論理体１）を画面から入力し、ダウンロード処理結果（出力論理体１）を画面へ出力する基本構造ＳＦ１と、ダウンロードファイルの内容となるレコードを検索抽出するためのキー項目情報（出力論理体Ｋｅｙ２）と、ダウンロードファイルの内容となるデータ（出力論理体２）を生成し、ダウンロードファイルの内容となるレコード（入力論理体２）をもとファイルから検索抽出して入力する基本構造ＳＦ２からなる。ＳＦ１を上位の基本構造とし、ＳＦ２を下位（第２階層）の基本構造として配置する構造となる。【００９４】
次に、ダウンロード処理の処理経路図の類型化の機能・構成面では、ＳＦ１は、ダウンロード処理結果（出力論理体１）の画面への出力機能と、画面からのダウンロード情報（入力論理体２）の入力機能を果たし、ＳＦ２は、ダウンロード対象ファイルからの検索のためのキー項目情報（出力論理体Ｋｅｙ２）とダウンロードファイルのデータ（出力論理体２）の生成機能と、ダウンロード対象ファイルからのダウンロードファイルの内容となるデータ（入力論理体２）の入力機能を果たす。【００９５】
以上、詳細に説明したように、論理体の識別子を伴った処理経路図の各類型を定めることで、具体的な要件とは分離した形で、処理経路図の構造をおくことが可能になる。これらの処理経路図の類型と、実装時の論理体の入力もと、出力先となる定義体の識別子の情報は、要件個別情報の関連づけ工程として、処理経路図作成工程と切り離す。こうした類型化により、要件によらずにプログラムの設計作業を共通フレーム化することができ、したがってソフトウェア生成装置や生成支援装置上でテンプレート化（ひな型化）でき、自動化を実現することが可能となる。【００９６】
換言すれば、処理経路図を、これを構成する基本構造と論理体の配置によって類型化したことで、各処理の具体的な仕様（たとえばダウンロード処理であれば、ダウンロード情報を入力する画面の識別子（定義体識別子）や、ダウンロードファイルのデータの入力もととなるファイルの識別子等、論理体を実体との関連づける情報）によらずに処理経路図すなわちプログラム構造の設計が可能になる。この処理経路図のひな型に実体情報（定義体識別子）を関連づけることで、個々の開発対象ソフトウェアの開発要件を実装するためのプログラムの設計が可能になる。しかも、このとき、処理経路図すなわちプログラム構造の設計に共通のフレームを用いている（具体的にはテンプレートからコピーして配置する）から、ＳＥ（システム・エンジニア）等の開発担当者による恣意性を排除でき、さらに、上記定義体識別子の関連付けは規約（ルール）に則るから、実体との関連付けにおいても恣意性の排除が可能となる。もって、ソフトウェアの品質向上とソフトウェア開発作業の生産性向上をもたらすことが実現される。
３．ＰＲＤの類型化、ひな型化が可能になった理由
（１）モジュールの単位をイベント単位の一連の処理とした
モジュールの単位をイベント単位の一連の処理と定めたことによって、モジュールが行う処理を類型化することができた。従って、モジュールの構造であるPRDの構造の類型化が可能になった。
（２）入出力の単位を論理体でとらえる。【００９７】
入出力の単位を、入力もと、または、出力先の媒体と関連づける以前に、同時に同じ媒体から入力、あるいは同時に同じ媒体へ出力されるデータ項目の集合としてとらえた。入出力の集合でとらえることにより、類型化とひな形化が可能になる。
（３）イベントが発生する画面と、最終出力先画面が異なる場合に、２つのＰＲＤに分けて設計するようにした。状態保持処理や、初期表示処理がこれにあたる。イベント単位の一連の処理は１つの同期範囲モジュールになることが原則であるが、一連の処理が２つの画面にまたがる場合は、２つのＰＲＤから（すなわち、２つの同期範囲モジュールからなり、一方はイベントによって起動し、他方は前者から起動される）なる場合がある。これによって、より少ないＰＲＤの類型の組合せによって、与えられた要件を実装するための設計をすることができる。
４．ＰＲＤのひな型を利用したＰＲＤ作成
ＰＲＤの設計は、論理体の識別子が付されたＰＲＤのひな型を利用すればよく、これまでのようにＳＥが最初から設計する必要がなくなる。要件（仕様）の処理に適したＰＲＤのひな型を選択し、要件に照らして、論理体に定義体識別子を関連づければ、実装のための処理経路図、すなわちプログラム設計が完了する。【００９８】
さらに、ＰＲＤ作成というプログラム設計の段階からの自動化も可能になる。【００９９】
上述した、処理とそのＰＲＤの類型は、画面を介してユーザが使用する通常のアプリケーションで起こり得る処理の基本型を網羅したもので、これらの基本型を組み合わせることによって、ほぼ全ての処理を包含したものであって、しかも仕様（業務要件）の違いによらない普遍性を持っている。そこで、これらの類型化したＰＲＤをＬｙｅｅＡＬＬ等のＬｙｅｅに基づく開発のためのコード生成ツールでテンプレート化しておく。これにより、検索処理（中間ファイルなし）があるときには検索処理（中間ファイルなし）のＰＲＤのひな型を（該ツール上で）選択するだけで、ＰＲＤが自動作成される。すなわち、プログラム設計が自動的に完了する。【０１００】
また、この処理類型に従った画面構成に設計することによって、ユーザにとって使いやすく、かつ、構造的に簡潔な製造しやすく品質のよいソフトウェアを構築できる。【０１０１】
各類型において、細部におていは、いくつかのバリエーションもありえる。
５．
Ｌｙｅｅ方法論上の従来技術と本願との相違
モジュールを構成する最小の単位を、単語ごとの宣言を実行する要素モジュールとおき、要素モジュールの実行が成立可能な具体的な制御構造を提供する、というのがＬｙｅｅ方法論の基本的な考え方である。【０１０２】
Ｌｙｅｅ方法論は基本的な制御構造を提供しているものの、出力論理体の生成・出力順序に関しては、開発者が設計する必要があった。これが、処理経路図の設計の本質である。【０１０３】
従来は、要件を単語単位にまで落し、出力論理体の生成・出力順序を処理経路図を設計することによって決定すれば、要素モジュールの生成と適切な配置は属人性を排除して行うことができた。しかし、単語単位の要件の記述方法は明確であったが、処理経路図というプログラム構造設計の方法においては、要件を解釈して構造に定義する方法に明確な一定のルールがなく、人によって異なる設計構造が入り込む余地があった。そのため、類型化も可能でなかった。【０１０４】
本願は、この点において、プログラム構造設計である処理経路図の設計方法の規則を、プログラムが行う処理を類型化することによって具体的に示し、その規則を用いて処理経路図を類型化、ひな型化できることを示した。そのひな型は、入出力を論理体レベルでとらえているので、開発者は処理経路図の設計を行う必要がなく、適切なひな型を選択して、要件によって異なる定義体への関連付けのみを行えばよい。プログラムの品質に影響するプログラム構造の設計の良し悪しが、開発者個人のスキルや恣意に依存することなく、開発者のエラーの混入する余地は、たとえばひな型の選択や定義体との関連付けに限定できる。これによりプログラム生成の生産性、効率性、保守性が増大する。
本願に基づくＬｙｅｅによるソフトウェア生成の工程がどのように改良されるかの一例を以下に示す。
（１）従来のＬｙｅｅによるソフトウェア生成の工程は以下のとおりであった。
(a)要件定義を行う。
(b)外部設計を行い、外部設計書を作成する。
(c)外部設計書から、定義体を拾い出しＬｙｅｅＡＬＬに登録する。
(d)外部設計書から、定義体単位に単語を拾い出し、単語の属性定義を行う。定義済みの単語を登録済みの定義体単位に関連付けてＬｙｅｅＡＬＬに登録する。
(e)外部設計書から、ＰＲＤを作成する単位（同期範囲モジュールの単位）を決定する。
(f)ＰＲＤの作成ルールに基づいてＰＲＤを作成する。ＰＲＤごとに識別子を付与する。この時点で、論理体と登録済み定義体は関連づけが終わっている。（ＬｙｅｅＡＬＬ上で行う作業）
(g) 単語の生成式および生成条件をＬｙｅｅＡＬＬ上で登録する。
(h) ＬｙｅｅＡＬＬに登録した情報から、ＬｙｅｅＡＬＬによりソースコードを生成する。
（２）本願によって改良されるＬｙｅｅによるソフトウェア生成の工程は以下のとおりである。本願に基づいてＰＲＤの類型化を行うことによって、従来のＬｙｅｅＡＬＬにＰＲＤのテンプレートを持たせることにより、ソフトウェア生成工程を以下のように改良し、プログラム設計にあたる処理経路図作成過程を自動化することが可能である。
(a)要件定義を行う。
(b)外部設計を行い、外部設計書を作成する。
(c)外部設計書から、定義体を拾い出しＬｙｅｅＡＬＬに登録する。
(d)外部設計書から、定義体単位に単語を拾い出し、単語の属性定義を行う。定義済みの単語を登録済みの定義体単位に関連付けてＬｙｅｅＡＬＬに登録する。
(e)＜本願により改良された手順＞外部設計書から、イベント単位の処理とその処理の類型をとらえる。
(f)＜本願により改良された手順＞ＬｙｅｅＡＬＬに用意されたＰＲＤテンプレート（定義体の情報を持っていない）から、処理類型に応じたＰＲＤテンプレートを選択し識別子を付与する。（ＬｙｅｅＡＬＬ上で行う作業）
(g)識別子が付与されたＰＲＤの各論理体に対して、登録済みの定義体を関連づける。（ＬｙｅｅＡＬＬ上で行う作業）
(h)単語の生成式および生成条件をＬｙｅｅＡＬＬ上で登録する。
(i) 登録した情報から、ＬｙｅｅＡＬＬによりソースコードを生成する。【０１０５】
なお、上記でＬｙｅｅＡＬＬ（商標）としたのは、Ｌｙｅｅ方法論に則ったソフトウェア開発ツールの例として挙げたものであり、これに限定される趣旨ではない。【０１０６】
次に、プログラム生成作業への本願の展開について説明する。【０１０７】
図３２は、本願をプログラム生成作業に展開するにあたり、必要となる作業ステップ及び処理機能をフローチャート的に示した機能ブロック兼フローチャート概念図である。【０１０８】
同図に示すように、ソフトウェア開発に当たっては、概略、要求仕様（要求定義）を把握した（ステップ１０）あと、Ｌｙｅｅ方法論における開発ツール（たとえばＬｙｅｅＡＬＬ（商標））上での作業（ステップ２０）として、処理経路図作成（ステップ２１）、要件の入力（ステップ２３）、コードの自動生成（ステップ２４）というステップを踏む。

６．論理体概念を反映したデータ項目の命名
ソフトウェア開発では、データ項目の名称を決定する際に、開発作業を効率化するために、開発プロジェクトごとなどで命名規約を定める場合が多い。本願の発明では、データ項目は論理体、さらには定義体に関連付けられた論理体の集合要素としてとらえている。本願の発明を利用したデータ項目の命名規約は、データ項目名にデータ項目が所属する論理体、定義体と関連づいた論理体がわかるようになっている。すなわち、データ項目名は、「定義体識別子＿論理体識別子＿単語名（論理）」のように、所属する論理体名、定義体名、単語名という要素で構成されて命名される。このようなデータ項目名の付与は、ＬｙｅｅＡＬＬのようなツール上で単語を定義体、論理体に関連づけて登録する作業において、自動的に行うことができる。データ項目名を名称でソートすると、同一の集合に属するデータ項目を簡単に認識することができる。
７．本願の発明による効果
プログラム設計にあたるPRD作成において、PRDのひな型化（フレーム化、テンプレート化）を行うことにより、プログラム設計の省力化、さらには自動化が可能になり、生産性が向上する。また、プログラム設計の良し悪しは品質、保守性に影響するが、ひな型を利用することにより、属人性を排除し、高い品質（保守性の良さを含む）を保つことができる。【０１０９】
従来までは、Ｌｙｅｅを用いてのソフトウェア開発において、仕様に応じてPRDを作成し、似た仕様があった時に、PRDを複製して利用する程度であった。アプリケーションの処理全体を、イベント単位の一連の処理に分割し、イベント単位の処理を根本的に類型化することは行われていなかった。【０１１０】
なお、本発明は、上述した実施形態および実施例には限定されず、本発明の技術思想の範囲内で様々な変形が可能である。たとえば、ビジネス・メソッド、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置、あるいはこれらの機能をコンピュータに実現するためのソフトウェア並びに該ソフトウェアを搭載した記録媒体・専用機、などとしてもそれぞれ実現することが可能である。さらに、上記で説明したように本発明は、方法としても、或いはかかる機能を備えるソフトウェアとしても、該ソフトウェアが搭載される装置・ツール（ソフトウェア自体の場合も含む）としても、さらにはシステムとしても、実現され得るのはもとよりである。【０１１１】
例えば図３３は、本発明の異なる一実施形態として、「開発対象のソフトウェア」を生産するためのプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして本発明を実施する場合に機能として備える構成を示した機能ブロック図である。同図に示すように、本発明に係るプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置は、全体制御部６０１、宣言情報生成部６０２、制御関数Φ配置部６０３、制御関数Ψ配置部６０４及び情報記憶部６０５を備えて構成される。【０１１２】
全体制御部６０１は、本プログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置の全体の動作制御、タイミング制御、入出力制御等を行う機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア（ツールとしてのソフトウェアも含む）、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。
また、全体制御部６０１には、開発対象ソフトウェアの要件を入力するための機能（グラフィカル・ユーザ・インターフェース機能を含む）を持たせても良い。このようにして入力される要件には、例えばシステムに係る要件（例えば、単語ａ、ｂごとの単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で規定される宣言情報がこれにあたる）と、環境（エンド・ユーザ）に係る要件（例えば、プログラムにプログラムを起動し（図示しない画面ｓ１を起動し）、単語ａに値７を与え、単語ｂの値を待ち、そしてボタンＢ０を押してプログラムを終了させる、という一連の作用を実行させたいとするエンド・ユーザのふるまいに係る情報がこれにあたる）とが含まれても良い。
また、全体制御部６０１には、開発対象ソフトウェアのシステムに係る要件を画面単位、該画面に属する単語単位で単語名・必要に応じて定義式・必要に応じて定義式実行条件・必要に応じて入出力属性・一般属性が規定される宣言として捉える機能を持たせても良い。【０１１３】
宣言情報生成部６０２は、Ｌｙｅｅ計算法による論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４）のひな型の未定義部分に、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入するための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア（ツールとしてのソフトウェアも含む）、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。宣言情報生成部６０２には、入力された要件のうちシステムに係る要件が、単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として情報化された情報を、後述の制御関数Φ配置部６０３及び制御関数Ψ配置部６０４で生成されるプログラムの未定義部分に挿入する役目、いいかえれば情報記憶部６０５に格納されるテンプレートに当て嵌めて宣言情報を得る役目を持たせてもよい。【０１１４】
制御関数Φ配置部６０３は、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦが、制御するように関連づけるサブプログラムとして実現するための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア（ツールとしてのソフトウェアも含む）、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。制御関数Φ配置部６０３には、入力された要件のうちシステムに係る要件を宣言化して得られる情報を、パレット関数、論理ベクトル及び作用ベクトル（要素モジュール）としてのひな型の未定義部分に挿入してプログラムを生成する役目、いいかえれば情報記憶部６０５に格納されるテンプレートに宣言情報を当て嵌めて関数及びベクトル（要素モジュール）を得る役目を持たせても良い。【０１１５】
制御関数Ψ配置部６０４は、１つの制御関数モジュールΨを、前記制御関数Φを制御するように前記制御関数Φに関連づけるサブプログラムとして実現するための機能を有しており、当該機能を持つ専用チップ、専用回路、または当該機能をコンピュータに果たさせるためのソフトウェア（ツールとしてのソフトウェアも含む）、或いは該ソフトウェアを記録した記録媒体、当該記録媒体を搭載した処理装置・管理装置・ツールとして実現される。制御関数Ψ配置部６０４には、入力された要件のうち環境（エンドユーザ）に係る要件を宣言化して得られる情報を、制御関数及びシナリオ関数に係るひな型の未定義部分に挿入してプログラムを生成する役目、いいかえれば情報記憶部６０５に格納されるテンプレートに当て嵌めて（反映させて）制御関数クラスを得る役目を持たせてもよい。【０１１６】
情報記憶部６０５は、プログラム情報のほか、各種制御情報、要素モジュール化されたＬｙｅｅ計算法によるプログラム、制御関数、シナリオ関数、パレット関数、論理ベクトル（Ｌ２、Ｌ３、Ｌ４）および、作用ベクトル（Ｉ２、Ｏ４、Ｓ４、Ｒ３）の前記ひな型、前記制御関数モジュールΦのひな型、前記制御関数モジュールΨのひな型、各類型に係る処理経路図のテンプレート（情報）、基本構造のテンプレート（情報）を格納するライブラリのほか、一時記憶のためのメモリとしても用いられる。また、情報記憶部６０５は、Ｌｙｅｅ計算法に基づく要件としての類型である、単語名、定義式、定義式実行条件、入出力属性、一般属性を規定する宣言としてテンプレート化して記憶する機能を有していても良い。ここで、上記のテンプレートには、開発対象ソフトウェアのシステムに係る要件が単語名、必要に応じて定義式、必要に応じて定義式実行条件、必要に応じて入出力属性、一般属性で構成される宣言として反映されるべき部分が未定義部分として残っている場合もある。【０１１７】
図３４は、上記の構成を備えるプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして実施される本発明の動作を示したフローチャートである。【０１１８】
同図に示すように、まず、宣言情報挿入部６０２は、Ｌｙｅｅ計算法によるモジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入する。（ステップ７０１）。【０１１９】
すると、制御関数Φ配置部６０３は、前記論理要素と作用要素（要素モジュール）を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦが、制御するように関連づける。（ステップ７０２）。【０１２０】
次に、制御関数Ψ配置部６０４は、１つの制御関数モジュールΨを、前記制御関数Φを制御するように前記制御関数Φに関連づける。（ステップ７０３）。【０１２１】
よって、上記のような構成を備える本発明によれば、本発明の独自の体系に基づいて要求定義をとらえ、それを本発明独自の構造を備える要素モジュール化され論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に代入するので、所望のソフトウェアが、属人性なく得られる。【０１２２】
本発明の異なる実施体としての「開発対象のソフトウェア」を生産するためのプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、ソフトウェア開発管理装置は、Ｌｙｅｅ計算法による要素モジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を挿入する、宣言情報生成部と、前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦを、該単位を制御するように関連づける、制御関数Φ配置部と、１つの制御関数モジュールΨを、当該制御関数Φを制御するように制御関数Φに関連づける、制御関数Ψ配置部とを具備するように構成することもできる。【０１２３】
本発明はさらに、上述の「開発対象のソフトウェアを生産する方法」によって生産されたソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置（ハードウェア）としても実現されるが、この場合の本発明は、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を、要素モジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に挿入したモジュール群と、前記モジュール群を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦで制御するように関連づけている１つまたは複数の制御関数モジュールΦと、前記制御関数Φを、１つの制御関数モジュールΨで制御するように関連づけている制御関数モジュールΨで構成されることもできる。【０１２４】
またさらに本発明は、上述の「開発対象のソフトウェアを生産する方法」によってソフトウェアを生産するために用いられるソフトウェアコードの雛型としてのソフトウェア、及び当該ソフトウェアが搭載された記録媒体或いは当該ソフトウェアが搭載された装置（ハードウェア）としても実現されるが、この場合の本発明は、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報を、埋め込むべき未定義部分を有した、Ｌｙｅｅ計算法による要素モジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型と、前記宣言の情報を未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦで制御するための機能を有した制御関数モジュールΦのひな型と、前記制御関数Φを１つの制御関数モジュールΨで制御するための機能を有した制御関数モジュールΨのひな型とを備えるソフトウェアとしてコード化可能なひな型として実現してもよい。【０１２５】
さらに、本発明は、上述の「開発対象のソフトウェアを生産する方法」による、要件から抽出した情報（ドキュメント（紙、データ））の抽出方法として、またかかる抽出方法によって抽出された情報（ドキュメント（紙、データ））として、さらには当該抽出された情報の使用方法として、或いは、これらの情報が搭載された情報記録媒体として、または情報の抽出方法／使用方法がコード化されたソフトウェア、当該ソフトウェアが搭載された記録媒体／装置（ハードウェア）として、いずれも実現することができるが、この場合の本発明は、Ｌｙｅｅ計算法による要素モジュール化された論理要素（Ｌ２、Ｌ３、Ｌ４）および、作用要素（Ｉ２、Ｏ４、Ｓ４、Ｒ３）のひな型の未定義部分に挿入すべき、１つのプログラムとして実装するユーザ要件を、論理体ごとに、該論理体上の単語ごとの、単語名、定義式、該定義式の実行条件、入出力属性、単語の値の属性からなる宣言として情報化した情報と、前記宣言の情報を未定義部分に挿入した前記論理要素と作用要素を、同一画面からのコマンドで相互作用を起こすことを集合条件とする集合単位に、１つの制御関数モジュールΦで制御するように関連づけるための情報と、前記制御関数Φを１つの制御関数モジュールΨで制御するように関連づける情報とを備えるソフトウェア開発要件から抽出した情報として実現してもよい。【０１２６】
さらに本願発明は、その技術思想の同一及び等価に及ぶ範囲において様々な変形、追加、置換、拡大、縮小等を許容するものである。また、本願発明を用いて生産される装置、方法、ソフトウェア、システムが、その２次的生産品に登載されて商品化された場合であっても、本願発明の価値は何ら減ずるものではない。また、本願発明は、ソフトウェアの適用分野としては、ビジネス、教育、ゲーム等分野を問わずあらゆるものに適用可能である。
【産業上の利用可能性】
【０１２７】
本発明は、プログラム設計にあたるPRD作成において、PRDのひな型化（フレーム化、テンプレート化）を行うことにより、プログラム設計の省力化、さらには自動化が可能になり、生産性が向上する。また、プログラム設計の良し悪しは品質、保守性に影響するが、ひな型を利用することにより、属人性を排除し、高い品質（保守性の良さを含む）を保つことができるので、いかなる用途、或いはネットワークを介して配信され若しくはスタンドアローンを問わずあらゆる存在形態におけるソフトウェア、及びソフトウェアの生産方法にも適用できる。
【図面の簡単な説明】
【０１２８】
【図１】本発明の一実施形態に係る単語単位の宣言を実行する実行制御ロジックを簡易に示した概念図である。
【図２】本発明の一実施形態に係るＬｙｅｅプログラムの分割単位を概念的に説明するための図である。
【図３】本発明の一実施形態に係る基本構造を構成する要素モジュールを説明するための図である。
【図４】本発明の一実施形態に係る基本構造を構成する３つのパレットを説明するための図である。
【図５】本発明の一実施形態に係る基本構造内の繰り返し処理を説明するための図である。
【図６】本発明の一実施形態に係る要素モジュールの構造の基本形を示すための図である。
【図７】本発明の一実施形態に係る単語ａのL4（論理要素）を示すための図である。
【図８】本発明の一実施形態に係る単語bのL4（論理要素）を示すための図である。
【図９】本発明の一実施形態に係る単語ａのL3（論理要素）を示すための図である。
【図１０】本発明の一実施形態に係る単語bのL3（論理要素）を示すための図である。
【図１１】本発明の一実施形態に係るアプリケーション、ミドルウェア、ＯＳ、ＢＩＯＳ、ドライバ及びハードウェアの関係を説明するための図である。
【図１２】本発明の一実施形態に係る処理経路図の概念を示すための図である。
【図１３】図１２の処理経路図に表された処理を含む画面の例を示す図である。
【図１４】本発明の一実施形態に係る処理経路図の類型を説明するための画面の遷移を示す図である。
【図１５】本発明の一実施形態に係る初期表示処理の場合の処理経路図の類型（の例）を示す図であり、（Ａ）は、イベントが発生する画面の処理経路図、（Ｂ）は、表示する画面の表示のための処理経路図である。
【図１６】本発明の一実施形態に係る検索処理（中間ファイルなし）の場合の処理経路図の類型（の例）である。
【図１７】本発明の一実施形態に係る複数ファイルに属すレコードが１：ｎの関係を持つようなレコードの読み込み処理に係る画面の具体例を示した図である。
【図１８】本発明の一実施形態に係る１：ｎの関係を持つ場合の本願発明による処理経路図の類型（の例）を示す図である。
【図１９】本発明の一実施形態に係る検索処理（中間ファイルあり）の場合の本願発明による処理経路図の類型（の例）を示す図である。
【図２０】本発明の一実施形態に係る検索処理（中間ファイルあり）を含む画面の例である。
【図２１】本発明の一実施形態に係る前頁・次頁処理の類型であって、表示中のレコードのデータ項目に対して、ユーザが画面から選択や上書き変更という入力が可能な場合の処理を含む画面の例である。
【図２２】本発明の一実施形態に係る前頁・次頁処理の類型であって、表示中のレコードのデータ項目に対して、ユーザが画面から選択や上書き変更という入力が可能な場合の処理経路図の類型（の例）を示す図である。
【図２３】本発明の一実施形態に係る前頁・次頁処理の類型であって、表示中のレコードのデータ項目に対して何らの入力も行えない仕様の場合の処理を含む画面の例である。
【図２４】本発明の一実施形態に係る登録処理の場合の本願発明による処理経路図の類型（の例）を示す図である。
【図２５】本発明の一実施形態に係る登録処理の処理経路図の類型に係る画面の例を示す図であって、（Ａ）は、登録処理を含む画面の例、（Ｂ）は、更新処理を含む画面の例、（Ｃ）は削除処理を含む画面の例である。
【図２６】本発明の一実施形態に係る更新処理の場合の本願発明による処理経路図の類型（の例）を示す図である。
【図２７】本発明の一実施形態に係る状態保持処理を含む画面と、情報を引き継ぐ遷移先の画面の例を示す図である。
【図２８】本発明の一実施形態に係る状態保持処理の場合の本願発明による処理経路図の類型（の例）を示す図である。
【図２９】アップロード処理の場合の本願発明による処理経路図の類型（の例）を示す図である。
【図３０】本発明の一実施形態に係るアップロード処理を含む画面の例を示す図である。
【図３１】本発明の一実施形態に係るダウンロード処理の場合に係り、（Ａ）はダウンロード処理の場合の本願発明による処理経路図の類型（の例）を示す図、（Ｂ）はダウンロード処理含む画面の例を示す図である。
【図３２】本願をプログラム生成作業に展開するにあたり、必要となる作業ステップをフローチャート的に示した概念図である。
【図３３】本発明の異なる一実施形態として、「開発対象のソフトウェア」を生産するためのプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして本発明を実施する場合に機能として備える構成を示した機能ブロック図である。
【図３４】上記の構成を備えるプログラム（ソフトウェア）、プログラム生成装置、プログラム処理装置、ツール（装置として或いはソフトウェアとしての双方を含む）、ソフトウェア開発装置、ソフトウェア開発支援装置、或いはソフトウェア開発管理装置のいずれかとして実施される本発明の動作を示したフローチャートである。ずれかとして実施される本発明の動作を示したフローチャートである。
【符号の説明】
【０１２９】
ＳＦ１、２、３  基本構造
１０  要要求仕様（要求定義）把握処理
２０  Ｌｙｅｅ方法論準拠開発ツール（たとえばＬｙｅｅＡＬＬ（商標））上作業
２１  処理経路図作成処理
２３  要件入力処理
２４  コード自動生成処理
５００  画面
５０１  入力欄（入力コンボボックス）
５０２、５０３  入力欄（入力コンボボックス）
５０５、５０６  表示欄
５１０  画面（更新画面）
５１１  入力欄（入力コンボボックス）
５１２  入力欄（入力コンボボックス）
５１３  表示ボタン
５１４  更新ボタン
５２０  画面（削除画面）
５２１  入力欄（入力コンボボックス）
５２２  入力欄（入力コンボボックス）
５２３  表示ボタン
５２４  削除ボタン
５５１  検索ボタン
５５２  次表示ボタン
５５３  次頁ボタン
５５５  変更ボタン
５５７  前ボタン
５５９  次ボタン
６００  画面
６０１  全体制御部
６０２  宣言情報生成部
６０３  制御関数Φ配置部
６０４  制御関数Ψ配置部
６０５  情報記憶部
６１１  選択欄
６１３  詳細表示ボタン
６５０  詳細表示画面
６５１  「戻る」ボタン
７００  画面
７１０  入力欄
７２０  アップロード・ボタン
８００  （ブラウザ）画面
８０１、８０２  入力欄
８１０  ダウンロード・ボタン
【図１】
2006025472.tif 000005
【図２】
2006025472.tif 000006
【図３】
2006025472.tif 000007
【図４】
2006025472.tif 000008
【図５】
2006025472.tif 000009
【図６】
2006025472.tif 000010
【図７】
2006025472.tif 000011
【図８】
2006025472.tif 000012
【図９】
2006025472.tif 000013
【図１０】
2006025472.tif 000014
【図１１】
2006025472.tif 000015
【図１２】
2006025472.tif 000016
【図１３】
2006025472.tif 000017
【図１４】
2006025472.tif 000018
【図１５】
2006025472.tif 000019
【図１６】
2006025472.tif 000020
【図１７】
2006025472.tif 000021
【図１８】
2006025472.tif 000022
【図１９】
2006025472.tif 000023
【図２０】
2006025472.tif 000024
【図２１】
2006025472.tif 000025
【図２２】
2006025472.tif 000026
【図２３】
2006025472.tif 000027
【図２４】
2006025472.tif 000028
【図２５】
2006025472.tif 000029
【図２６】
2006025472.tif 000030
【図２７】
2006025472.tif 000031
【図２８】
2006025472.tif 000032
【図２９】
2006025472.tif 000033
【図３０】
2006025472.tif 000034
【図３１】
2006025472.tif 000035
【図３２】
2006025472.tif 000036
【図３３】
2006025472.tif 000037
【図３４】
2006025472.tif 000038
【国際調査報告】
2006025472.tif 000039
2006025472.tif 000040
2006025472.tif 000041
2006025472.tif 000042