(57)【要約】【課題】  ソフトウェアシステムに存在する依存性をなくし、開発効率を高める。【解決手段】  ソフトウェアを構成するプログラムは、「OSなどの動作環境に依存」、「プログラム言語に依存」、「OSやライブラリーのバージョンに依存」、「使用するライブラリーに依存」といった幾つもの依存性を持っている。その問題点を解決するために、ソフトウェアシステムのメタデータを解析し、そのメタデータに人間の意図を追加する事により依存性をなくす。これにより、開発効率が格段によくなる。【選択図】 図３
2008090707.tif 000002
【特許請求の範囲】
【請求項１】
対象となるソフトウェア、および、コンピューターシステムの解析を行い、メタデータを抽出する装置であって、解析対象となるソフトウェアを指定する為の入力部、ソフトウェアの解析結果を表示する為の表示部と、解析命令を受けてソフトウェアの解析を行う制御部を備えたソフトウェアメタデータ解析装置。
【請求項２】
対象となるソフトウェア、および、コンピューターシステムの解析を行い、メタデータを抽出する方法。
【請求項３】
ネットワークを介して端末装置と通信可能であり、端末装置から送られてくるソフトウェアシステムの情報、もしくは、解析依頼メッセージを受信／解析するソフトウェア解析し、そのメタデータをもってソフトウェアを管理するサーバー装置であって、送信されてきたソフトウェアのメタデータを解析し、解析結果を管理するソフトウェア解析部と管理部を備えたサーバー装置。
【請求項４】
請求項２によって導出されたメタデータを用いて、他の動作環境用のプログラムを自動生成する方法。
【請求項５】
請求項２によって導出されたメタデータを用いて、ソフトウェアに用いたプログラム言語とは別のプログラム言語へ、言語変換を行い翻訳する方法。
【請求項６】
請求項２によって導出されたメタデータを用いて、バージョンアップしたプログラムを自動生成する方法。
【請求項７】
請求項２によって導出されたメタデータを用いて、機能などの開発者の意図を付け加えて、プログラムの抽象化・再利用性・思想と実装の分離性を高める方法。
【請求項８】
請求項２によって導出されたメタデータを用いて、プログラムを自然言語へ変換する方法。
【請求項９】
請求項２によって導出されたメタデータをXMLファイルで扱うもの。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソフトウェア開発における数多くの問題点を解決し、開発の効率化を図る技術に関するものである。
【背景技術】
【０００２】
従来の技術は、プログラム言語翻訳、オブジェクト指向、アスペクト指向、プログラムのライブラリー化、などの手法を用いて、ソフトウェア開発の効率を上げていた。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、ソフトウェアを構成するプログラムは、「OSなどの動作環境に依存」、「プログラム言語に依存」、「OSやライブラリーのバージョンに依存」、「使用するライブラリーに依存」といった幾つもの依存性を持っている。
【０００４】
従って現状ではソフトウェア開発は多くの問題点に悩まされている。
【０００５】
一つ目に、一度作成したソフトウェアを他の動作環境に移植する際には、移植先動作環境に合わせて、プログラムを書き直す手間がかかる事が挙げられる。これには多くの時間と費用が発生する。本来一度開発ソフトウェアは、基本的な考え方が同じなので、改めて時間と費用を投入するべきではない。だが、現状ではプログラムはAPIなどが動作環境に依存するので、自動化する方法がない。それにより、人気のある動作環境のみに多くのソフトウェアが開発されるのが現状である。これは、生産者と消費者にとって好ましいことではない。
【０００６】
二つ目に、ソフトウェアは使用プログラム言語に依存するので、開発要員が制限される点が挙げられる。これにより、開発後のソフトウェアを管理する際に大きな問題となる。何故ならば、プログラム言語が古くなってくると、開発資料も減り開発できる人材が少なくなっていくからである。ドックイヤーと呼ばれる技術革新が早いソフトウェア業界では、この問題がより顕著となる。また、新しく機能が良いプログラム言語が発表されても、既存ソフトウェアのこの制約のおかげで、新しい言語に乗り換えられないというリスクが発生する。
【０００７】
三つ目に、ソフトウェアの運用保守が困難だという事が挙げられる。まず、生産者側の視点から考えると、先にも述べたように、開発要員の保持という問題もあるが、他にもセキュリティの問題が発生する。セキュリティは、ソフトウェアにおいて常に存在する危険だが、セキュリティを改善するには、OSなどの動作環境を変更する必要がある。しかしながら、先にも述べたように、プログラムは動作環境に依存するため、動作しなくなる恐れがあるため、それは不可能である。次に消費者側の視点から考えると、多額の資金を投入したシステムが、生産者側の都合により、たかだか１０年やそこらでサポートを打ち切られる危険性がある事である。これはセキュリティ上の問題もあり非常に深刻な問題である。
【０００８】
四つ目に互換性の問題が挙げられる。ライブラリーなどのソフトウェア部品を提供する者は、たとえ、それが性能アップのためであっても既存の仕組みを変更すると、コンピューターシステムが誤作動を起こす。従って、間違えも修正出来ずに、互換性の問題からパフォーマンスとセキュリティを犠牲にしている場合が往々にして起こる。これはシステム誤作動の原因にもなるので非常に深刻な問題である。
【０００９】
五つ目に可読性の問題が挙げられる。プログラムは可読性を犠牲にすることにより、パフォーマンスをアップさせられることが多い。しかし、可読性を犠牲にすると、プログラムを作成した本人や、高い技術を持つ者でないと理解できないことが多い。従って、高い能力を持つ者が、そうでない者の事に合わして高品質なプログラムを書けない。これにより、ソフトウェアの品質がプログラマーの最大公約数的な効果しか確保できないことになる。
【課題を解決するための手段】
【００１０】
これらの問題の原因は、プログラム言語は自然言語とは違い柔軟性がなく、ソフトウェアやシステムのアイデアそのものではなく、機械的な手続きを表しているのに過ぎない事である。
【００１１】
そこで本発明は、プログラムやデータから実現しようとしたメタデータを抽出し、そのメタデータに足りないメタデータを人間が付け加えることにより、この問題を原因から解決する。
【発明の効果】
【００１２】
この発明にはいくつもの効果がある。なお効果は基本的に、既存の問題点と対応する形で提示する。
【００１３】
一つ目は、一度開発してしまえば、ソフトウェアのメタデータに基づきプログラムを自動生成できるので、異なる動作環境への移植が自動的に行える事である。これにより、よりスピーディで広範囲にソフトウェア販売を行える。また、どの動作環境をもつ消費者にもソフトウェアを提供できるので、ソフトウェが一つの動作環境に集中している現状を改善できる。
【００１４】
二つ目は、ソフトウェアのメタデータを扱うことにより、ソフトウェア開発に使用するプログラム言語を統一する必要がなくなる事である。これにより、常に最良のプログラム言語を用いてソフトウェアを作成することが出来る。その結果、品質とセキュリティは向上し、開発要員の最大の力を引き出せる。
【００１５】
三つ目は、容易にバージョンアップ出来ることである。問題三で述べたように、OSの構造上の違いから、現状では簡単にソフトウェアの対象OSを変えることは出来ないが、この発明を用いると、メタデータを加工し、新しいOS用のプログラムを自動生成できるので、より早く新しい環境にソフトウェアをバージョンアップできる。また逆に、古いOSを持っている消費者にたいしても、メタデータを用いてそのバージョン用のプログラムを自動生成できるので提供できる。
【００１６】
四つ目に、互換性の問題を解決できる事である。この発明を用いれば、ソフトウェアのメタデータを使用して、既存の消費者に対しバージョンアップツールを提供することにより、既存ソフトが動かなくなる事を防げるので、安心してライブラリー等を改良することが出来る。
【００１７】
五つ目に、可読性の問題を解決できることである。何故ならば本発明を使用すると、もとのプログラムを別のプログラム言語のプログラム変換することも出来る上に、母国語で表示することさえも可能だからである。従って、可読性を気にせずに、最大のパフォーマンスを得られるプログラムを記述することが出来るのである。
【実施例】
【００１８】
まずは本発明で使用する用語の説明を行う。
【００１９】
この発明において、「ソフトウェア」とは、スタンドアローンの単体のソフトウェアだけではなく、複数のソフトウェアで構成されるシステムも指している。
【００２０】
本発明の「プログラム」とは、コンピューターによって直接可能なものだけなく、ハードディスクなどにインストールすることによって実行可能となるものを含む概念である。また、圧縮されたり、暗号化されたりしたものも含む概念である。
【００２１】
本発明の「ソフトウェアのメタデータ」とは、変数、関数、クラス、条件式、データ型などの言語の文法や、表そうとしている情報、使用しているデータストアのメタデータ（列名、テーブル名、タグ名など）、ソフトウェアの機能などの開発メタデータ、OS等の稼働環境・・・などのソフトウェアと開発に関する全ての情報を含む概念である。
【００２２】
１  本発明の基本実施形態
（１）装置の全体構成と動作概要
図１にこの発明の一実施形態によるソフトウェア自動生成装置の全体構成を示す。入力部１０は、解析対象となるソフトウェアの指定を指定するためのものである。
【００２３】
ソフトウェアメタデータ解析装置が起動されると、対象となるソフトウェアを対話的に決定する為にGUI画面が表示部１６に表示される。
【００２４】
入力部１０を使用して、「対象となるソフトウェア」をGUI画面で選択する。すると、制御部１２はメタデータ解析を行い、表示部１６で表示する。
【００２５】
プログラムとデータストアを解析して得られない、メタデータを入力部１０で追加入力する。入力が完了されたら、制御部１２はメタデータをデータストアに格納する。
【００２６】
（２）ハードウェア構成
図１の制御部１２を、CPU２０を用いて実現した場合のハードウェア構成を図２に示す。図２において、CPU２０には、メモリ２２、表示部であるディスプレイ１６、入力部であるキーボード１０、もうひとつの入力部であるマウス２４、記憶部であるハードディスク１４、CD-ROMドライブ２６が接続されている。ハードディスク１４には、ソフトウェアメタデータ解析プログラム３０、オペレーティングシステム（OS）３２が記憶されている。ソフトウェア自動生成プログラム３０は、CD-ROMドライブ２６を介して、CD-２８からインストールされたものである。なお、マウスは他のポインティング装置で代用できる。
【００２７】
（３）注意事項
実施例を図示するに当たっての注意事項を記述する。まず、一連の処理図は、エラー処理、および、例外処理は省略する。その理由は、記述すると発明本質以外の部分が多くなるからである。またこれらの処理は、使用するプログラム言語に依存するので発明の説明として適切ではない。他にもセキュリティなどの、プログラム言語や特定のOSに依存する部分は、同じ理由により記述しない。
【００２８】
（４）請求項１の処理形態
図３に請求項１の処理形態である、ソフトウェアメタデータ解析処理の全体をフローチャートにて示す。ソフトウェアメタデータ解析処理プログラム３０は、オペレーティングシステム３２と協働して、図の処理を行う。ただし、その一部または全部の処理を、解析処理プログラム３０単独で行うようにしても良い。
【００２９】
CD-ROMドライブ２６を入れる、マウス２４を使って指示するなどのイベントにより、ソフトウェアメタデータ解析プログラム３０が開始する（ステップS１）
【００３０】
表示部であるディスプレイ１６を見ながら、入力部キーボード１０と、入力部マウス２４を使用し、使用言語と動作環境を設定する（ステップS２）
※ プログラムにより検出できる動作環境で開発しているのなら併用してもよい。
【００３１】
ソフトウェが必要とするプログラムファイルを全て検出する（ステップS３）
※ このステップも、プログラムファイル読み出しプログラムと併用しても良い。
【００３２】
変数MaxFilesをステップS3で検出したファイルの数に初期化する（ステップS４）
【００３３】
解析済みファイル数を示す変数Countを０に初期化する（ステップS５）
【００３４】
変数MaxFilesが変数Countよりも大きいかを判定する。そして、その結果がTrueならばステップS１１へ、FalseならばステップS７へ処理を進める（ステップS６）
【００３５】
未処理のファイルの中から、解析対象となるファイルを選択する（ステップS７）
【００３６】
プログラムのメタデータを解析するメタデータ解析処理を行う（ステップS８）
【００３７】
ステップS８の処理結果であるメタデータをデータストアに登録する（ステップS９）
【００３８】
変数Countをインクリメントする（ステップS１０）
【００３９】
ソフトウェアが使用する、データベースなどの他の要素のメタデータをデータストアに登録する（ステップS１１）
【００４０】
新規に格納したメタデータの意味を識別のために編集する。または、既存のメタデータの意味を変更する（ステップS１２）
【００４１】
機能、ソフトウェアの名前、目的、・・・などの人間が意図するソフトウェアのメタデータをデータストアに格納する（ステップS１３）
【００４２】
ソフトウェアメタデータ解析プログラム３０を終了する（ステップS１４）
【００４３】
（５）メタデータ解析処理
図４にメタデータ解析処理の全体をフローチャートにて示す。なお、ここで言うところのメタデータは、プログラムのメタデータ（関数、変数、型、オブジェクトなど）を示している。
【００４４】
呼び出し元から解析対象ファイルの情報を渡され、メタデータ解析プログラムを開始する（ステップS１）
【００４５】
対象となるプログラムファイルに、使用されているプログラム言語を特定する（ステップS２）
【００４６】
対象となるプログラムファイルを開く（ステップS３）
【００４７】
ファイルの終端か判定をする。そして、その結果がTrueならばステップS８へ、FalseならばS５へ処理を進める（ステップS４）
【００４８】
ファイルの次行を読み込み変数に保存する（ステップS５）
【００４９】
トークン分析処理を行う（ステップS６）
【００５０】
式分析処理を行う（ステップS７）
【００５１】
コード分析処理を行う（ステップS８）
【００５２】
ファイルを閉じる（ステップS９）
【００５３】
メタデータ解析処理プログラムを終了し、呼び出し元に処理を戻す。なお、解析結果は変数や戻り値などの手段で呼び出し元へ返す（ステップS１０）
【００５４】
（６）トークン分析処理
【００５５】
図５にトークン分析処理の全体をフローチャートにて示す。
【００５６】
呼び出し元から分析対象となるプログラムを渡され、トークン分析プログラムを開始する（ステップS１）
【００５７】
引数などで渡されたプログラムをトークンに分解する（ステップS２）
【００５８】
変数MaxCountをステップS２で得られたトークンの数に初期化する（ステップS３）
【００５９】
処理数をカウントする為の変数である変数Countを０に初期化する（ステップS４）
【００６０】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップ６へ、FalseならばステップS９へ処理を進める（ステップS５）
【００６１】
ステップS２で得られたトークンの中で、まだ処理をしていないトークンを選び出し、解析対象となるトークンを決定する（ステップS６）
【００６２】
トークン登録処理を行う（ステップS７）
【００６３】
変数Count変数をインクリメントする（ステップS８）
【００６４】
トークン分析処理プログラムを終了し、呼び出し元に処理を戻す。なお、分析結果は変数や戻り値などの手段で呼び出し元へ返す（ステップS９）
【００６５】
（７）トークン登録処理
【００６６】
図６にトークン登録処理の全体をフローチャートにて示す。
【００６７】
呼び出し元からトークン情報を渡され、トークン登録処理プログラムを開始する（ステップS１）
【００６８】
トークンの分類（変数、データ型、オブジェクトなど）を判別する（ステップS２）
【００６９】
トークンが既にデータストアへ登録されているか判定する。そして、その結果がTrueならばS１０へ、FalseならばS４へ処理を進める（ステップS３）
【００７０】
トークンのメタデータを編集する（ステップS４）
【００７１】
トークンのメタデータをデータストアに登録する（ステップS５）
【００７２】
トークンのメタデータを変数などに記憶保存しておく（ステップS６）
【００７３】
トークンを扱うのに前提となる式や、後で実行する式があるか判定する。そしてその結果がTrueならばステップS８へ、FalseならばステップS１２へ処理を進める（ステップS７）
【００７４】
必要となる式の登録処理を行う（ステップS８）
【００７５】
式との関連情報をデータストアに登録する。そして、ステップS７へ処理を進める（ステップS９）
【００７６】
あらかじめ登録されているトークンのメタデータを、データストアから呼び出す（ステップS１０）
【００７７】
あらかじめ登録されている式との関連情報を、メタデータから呼び出す（ステップS１１）
【００７８】
トークン登録処理を終了し、呼び出し元へ戻る。なお、トークンのメタデータは戻り値などの方法で呼び出し元へ渡す（ステップS１２）
【００７９】
（８）式分析処理
【００８０】
図７に式分析処理の全体をフローチャートにて示す。
【００８１】
呼び出し元から分析対象となるプログラムを渡され、式分析処理プログラムを開始する（ステップS１）
【００８２】
渡されたプログラムから式を抽出する（ステップS２）
【００８３】
変数MaxCountを抽出された式の数に初期化する（ステップS３）
【００８４】
処理回数を記録するための変数Countを０に初期化する（ステップS４）
【００８５】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップS６へ、FalseならばステップS１０へ処理を進める（ステップS５）
【００８６】
ステップS２で得られた式の中で、まだ処理をしていない式を選び出し、処理対象となる式を設定する（ステップS６）
【００８７】
式登録処理を行う（ステップS７）
【００８８】
変数Countをインクリメントする（ステップS８）
【００８９】
引数関連付け処理を行う（ステップS９）
【００９０】
式分析プログラムを終了し、呼び出し元へ戻る。なお、分析結果は変数や戻り値などの手段で呼び出し元へ返す（ステップS１０）
【００９１】
（９）式登録処理
【００９２】
図８に式登録処理の全体をフローチャートにて示す。
【００９３】
呼び出し元から登録対象となる式の情報を渡され、式登録処理プログラムを開始する（ステップS１）
【００９４】
式の分類（関数呼び出し、条件判定文、繰り返し文など）を判別する（ステップS２）
【００９５】
式が既にデータストアへ登録されているか判定する。そして、その結果がTrueならばS１０へ、FalseならばS４へ処理を進める（ステップS３）
【００９６】
式のメタデータを編集する（ステップS４）
【００９７】
式のメタデータをデータストアに登録する（ステップS５）
【００９８】
式のメタデータを変数などに保存しておく（ステップS６）
【００９９】
式を扱うのに前提となる式や後で実行する式があるか判定する。そしてその結果がTrueならばステップS８へ、FalseならばステップS１２へ処理を進める（ステップS７）
【０１００】
必要となる式の登録処理を行う（ステップS８）
【０１０１】
式との関連情報をデータストアに登録する（ステップS９）
【０１０２】
あらかじめ登録されている式のメタデータを呼び出す（ステップS１０）
【０１０３】
あらかじめ登録されている他式との関連情報を呼び出す（ステップS１１）
【０１０４】
式登録処理を終了し、呼び出し元へ戻る。なお、式のメタデータや他式に関するメタデータは、戻り値などの手段で呼び出し元へ渡す（ステップS１２）
【０１０５】
（１０）引数関連付け処理
図９に引数関連付け処理の全体をフローチャートにて示す。なお、この図でいう引数とは、判定条件なども含む概念である。
【０１０６】
呼び出し元から式のメタデータを渡され、引数関連付け処理を開始する（ステップS１）
【０１０７】
呼び出し元から与えられた式のメタデータから引数を抽出する（ステップS２）
【０１０８】
変数MaxCountを、ステップS２で抽出された引数の数で初期化する（ステップS３）
【０１０９】
変数Countを０に初期化する（ステップS４）
【０１１０】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップS６へ、FalseならばステップS１０へ処理を進める（ステップS５）
【０１１１】
ステップS２で得られた式の中で、まだ処理をしていない引数を選び出し、処理対象となる引数を決定する（ステップS６）
【０１１２】
式と引数の関連情報をデータストアに登録する。もし追加メタデータを付加したい場合は事前に編集しておく（ステップS７）
【０１１３】
式と引数の関連情報をデータストアに登録する。もし追加メタデータを付加したい場合は事前に編集しておく（ステップS８）
【０１１４】
変数Countをインクリメントする（ステップS９）
【０１１５】
引数関連付け処理を終了し、呼び出し元へ処理を戻す（ステップS１０）
【０１１６】
（１１）コード分析処理
図１０にコード分析処理の全体をフローチャートにて示す。
【０１１７】
呼び出し元から分析対象となるプログラム・式・トークンの情報を渡され、コード分析処理プログラムを開始する（ステップS１）
【０１１８】
渡された情報に含まれるコードを抽出するために、コード抽出処理を行う（ステップS２）
【０１１９】
変数Targetをコード抽出処理の処理結果に初期化する（ステップS３）
【０１２０】
新しく得られた処理結果にコードが含まれているか判定する。そして結果がTrueならばステップS５へ、FalseならばステップS９へ処理を進める（ステップS４）
【０１２１】
前回の処理結果を保持するための変数BeTargetに、変数Targetの内容を格納する（ステップS５）
【０１２２】
コードを含むコードを分析するために、コード抱合処理を行う（ステップS６）
【０１２３】
変数Targetに、コード抱合処理の処理結果を格納する（ステップS７）
【０１２４】
ステップS８は、プログラム言語により処理は異なり、プログラム言語の性質により、次の二つの処理が考えられる。
【０１２５】
一つ目は、コード抱合処理から返される変数Flagの結果を判定する方法である。
【０１２６】
二つ目は、変数BeTargetと変数Targetの内容が等しいか判定するか、もしくは両方判定する方法である。
【０１２７】
どちらの方法にしても、その結果がTrueならばステップS９へ、FalseならばステップS５へと処理を進める（ステップS８）
【０１２８】
関連したコードを登録したい場合を考慮して、ユーザーに処理を継続するか尋ねる。そして、その結果がTrueならばステップS１０へ、FalseならばステップS１１へと処理を進める（ステップ９）
【０１２９】
コード登録処理を行う（ステップ１０）
【０１３０】
コード分析処理を終了し、呼び出し元に戻る。なお分析結果は、戻り値などの手段を用いて呼び出し元に渡す（ステップS１１）
【０１３１】
（１２）コード抽出処理
図１１にコード抽出処理の全体をフローチャートにて示す。
【０１３２】
呼び出し元から分析対象となるプログラム・式・トークンの情報を渡され、コード抽出プログラムを開始する（ステップS１）
【０１３３】
終了地点を示す変数Endを渡された式の数＋トークンの数に初期化する。（ステップS２）
【０１３４】
開始地点を示す変数Startを０に初期化する（ステップS３）
【０１３５】
変数Endが変数Startよりも大きいか判定する。そして、その結果がTrueならばステップS１４へ、FalseならばステップS５へ処理を進める（ステップS４）
【０１３６】
変数Startから変数Endが指し示す範囲のコードが、デートストアに登録済みか判定をする。そして、その結果がTrueならばステップS６へ、FalseならばステップS１５へ処理を進める（ステップS５）
【０１３７】
変数Startから変数Endが指し示す範囲で絞った、コードのメタデータをデータストアから呼出す（ステップS６）
【０１３８】
変数Start２を、ステップS６で呼び出したコードの開始位置で初期化する（ステップS７）
【０１３９】
変数End２を、ステップ６で呼び出したコードの終了位置で初期化する（ステップS８）
【０１４０】
変数StartとStart２同じか判定する。そして、その結果がTrueならばステップS１３へ、FalseならばステップS１０へ処理を進める（ステップS９）
【０１４１】
変数Start３に変数Startの内容を代入する（ステップS１０）
【０１４２】
変数End３に変数Start２行の内容を代入する（ステップS１１）
【０１４３】
変数Start３から変数End３の範囲のコードを抜き出し、コード分析処理に渡して実行する（ステップS１２）
【０１４４】
変数Startに変数End２を格納する（ステップS１３）
【０１４５】
コード抽出処理を終了し、呼び出し元に戻る。なお、処理結果は変数や戻り値などの方法で呼び出し元に渡す（ステップS１４）
【０１４６】
変数Startに、Start−１行分のプログラムの値を代入する。そしてステップS４へ処理を進める（ステップS１５）
【０１４７】
（１３）コード抱合処理
図１２にコード抱合処理の全体をフローチャートにて示す。
【０１４８】
なお、コード抱合とはコードを含むコードの事を指している。
【０１４９】
呼び出し元から分析対象となるプログラム・コード・式・トークンの情報を渡され、コード抱合処理プログラムを開始する（ステップS１）
【０１５０】
抱合処理の実行有無を示す変数FlagをFalseに初期化する（ステップS２）
【０１５１】
渡されたコードを含むコードがあるか、データストアに問い合わせる。そしてその結果がTrueの場合はステップS４へ、FalseならばステップS１０へ処理を進める（ステップS３）
【０１５２】
渡された式を含むコードがあるか、データストアに問い合わせる。そしてその結果がTrueの場合はステップS４へ、FalseならばステップS１０へ処理を進める（ステップS４）
【０１５３】
渡されたトークンを含むコードがあるか、データストアに問い合わせる。そしてその結果がTrueの場合はステップS６へ、FalseならばステップS１０へ処理を進める（ステップS５）
【０１５４】
上記三つの判定ではRDBMSを想定し、SQL一括で判定できる事を想定しているが、そうでない場合は、渡された全てのコード・式・トークンについて各々問い合わせる。
【０１５５】
変数FlagをTrueに設定する（ステップS６）
【０１５６】
コードとの関連情報を呼び出す（ステップS７）
【０１５７】
式との関連情報を呼び出す（ステップS８）
【０１５８】
トークンとの関連情報を呼び出す（ステップS９）
【０１５９】
なお、上記三つのステップは、付加情報がない場合は省略できる。
【０１６０】
コード抱合処理を終了し、呼び出し元へ戻るのと同時に、全ての関連情報（トークンとの関連、式との関連、コードとの関連などの情報）と変数Flagを呼び出し元に渡して戻る（ステップS１０）
【０１６１】
（１４）コード登録処理
図１３にコード登録処理の全体をフローチャートにて示す。
【０１６２】
呼び出し元から分析対象となるプログラム・コード・式・トークンの情報を渡され、コード登録処理プログラムを開始する（ステップS１）
【０１６３】
コードの分類を人間とプログラムの両方で判別する（ステップS２）
【０１６４】
ただしこの処理は、プログラムだけで事が足りるのなら、必ずしも人間が判定する事はない。
【０１６５】
登録対象となるコードが既に、データストアに登録されているのか判定する。そしてその結果がTrueならばステップS１３へ、FalseならばステップS４へ処理を進める（ステップS３）
【０１６６】
プログラムを構成する構成要素（トークン・式・コード）の実行順序が正しくなるように整列する（ステップS４）
【０１６７】
コードのメタデータを編集する（ステップS５）
【０１６８】
全てのトークンとコードの関係情報をデータストアに登録する（ステップS６）
【０１６９】
コードに式が必要とされているか判定する。そして結果がTrueならばステップS８へ、FalseならばステップS９へ処理を進める（ステップS７）
【０１７０】
全ての式とコードの関係情報をデータストアに登録する（ステップS８）
【０１７１】
コードにコードが必要とされているか判定する。そして結果がTrueならばステップS１０へ、FalseならばステップS１１へ処理を進める（ステップS９）
【０１７２】
全てのコードとコードの関係情報をデータストアに登録する（ステップS１０）
【０１７３】
なお、上記のトークン・式・コードの関係情報を登録する処理は、フローチャート図ではRDBMSを想定し、SQL一括で判定できる事を想定しているが、そうでない場合は、個別に判定と登録を繰り返す必要がある。
【０１７４】
今までの処理で判別した全てのコード情報を変数などに保存する（ステップS１１）
【０１７５】
コード登録処理を終了し、呼び出し元へ戻るのと同時に、全ての関連情報（トークンとの関連、式との関連、コードとの関連などの情報）とコードそのもののメタデータを呼び出し元に渡して戻る（ステップS１２）
【０１７６】
コードとトークンの関係情報をデータストアから全て呼び出す（ステップS１３）
【０１７７】
コードと式の関係情報をデータストアから全て呼び出す（ステップS１４）
【０１７８】
コードとコードの関係情報をデータストアから全て呼び出す（ステップS１５）
【０１７９】
コードそのもののメタデータをデータストアから呼び出す（ステップS１６）
【０１８０】
２  請求項３を適用した場合の形態
請求項３の基本形態を図１４のフローチャートで説明する。
【０１８１】
サーバー起動時に、クライアントからの解析要求などを受信するために、サービスプログラム（デーモンプログラム）を起動する。
【０１８２】
プログラム起動後はクライアントからの要求を待つ。
【０１８３】
クライアントからの要求を受信したら処理開始する（ステップS１）
【０１８４】
要求内容を解析する（ステップS２）
【０１８５】
処理対象がサーバーにあるか判定する。その結果がTrueならばステップS５へ、FalseならばステップS４に処理を進める（ステップS３）
【０１８６】
処理対象の位置を探索する（ステップS４）
【０１８７】
要求された処理を行う（ステップS５）
【０１８８】
処理結果をクライアントに返信する（ステップS６）
【０１８９】
他のクラアントからの要求を待つ（ステップS７）
【０１９０】
３  請求項４を適用した場合の形態
請求項４の基本的形態を実現するために必要な動作環境変換処理を、図１５のフローチャートで説明する。
【０１９１】
CD-ROMドライブ２６を入れる、マウス２４を指定するなどのイベントにより、動作環境変換処理プログラムを開始する（ステップS１）
【０１９２】
変換元使用言語と動作環境と、変換先使用言語と動作環境を設定する（ステップS２）
プログラムにより検出できる動作環境で開発しているのなら併用してもよい。
【０１９３】
変換先動作環境がデータストアに登録されているか判定する。その結果がTrueならばステップS１５へ、FalseならばステップS４に進む（ステップS３）
【０１９４】
ステップS２で入力された、変換先動作環境をデータストアに格納する（ステップS４）
【０１９５】
ソフトウェアを実装するのに必要なプログラムファイルを全て検出する（ステップS５）
【０１９６】
変数MaxCountをステップS５で導出したファイルの数で初期化する（ステップS６）
【０１９７】
変数Countを０で初期化する（ステップS７）
【０１９８】
変数MaxCountがCountよりも大きいか判定する。そして、その結果がTrueならばステップS９へ、FalseならばステップS１６へ処理を進める（ステップS８）
【０１９９】
変換していないファイルの中から、変換対象となるファイルを決定する（ステップS９）
【０２００】
ファイルを開く（ステップS１０）
【０２０１】
プログラム変換処理を行う（ステップS１１）
【０２０２】
変換対象となったファイルを閉じる（ステップS１２）
【０２０３】
変数Countをインクリメントする（ステップS１３）
【０２０４】
内容がプログラム変換処理の結果である新ファイルを作成する（ステップS１４）
【０２０５】
データストアから、指定された変換先動作環境と一致するプログラムのメタデータを取り出す（ステップS１５）
【０２０６】
動作環境変換処理を終了する（ステップS１６）
【０２０７】
（１）プログラム変換処理
プログラム変換処理を図１６のフローチャートで説明する。
【０２０８】
呼び出し元から変換対象となるプログラム、プログラム言語、プログラムのメタデータを指定して、プログラム変換処理プログラムを開始する（ステップS１）
【０２０９】
変換するべきプログラムがあるか判定する。そして、その結果がTrueならばステップS３へ、FalseならばステップS８へ処理を進める（ステップS２）
【０２１０】
プログラムのメタデータを用いて、変換対象プログラムにコードの必要性があるか判定する。そして、その結果がTrueならばステップS9へ、FalseならばステップS４へ処理を進める（ステップS３）
【０２１１】
プログラムのメタデータを用いて、変換対象プログラムに式が必要か判定する。そして、その結果がTrueならばステップS１０へ、FalseならばステップS５へ処理を進める（ステップS４）
【０２１２】
トークン変換処理を行う（ステップS５）
【０２１３】
変換プログラムを変数やオブジェクトに保存する（ステップS６）
【０２１４】
次に変換するプログラムメタデータを読み込む（ステップS７）
【０２１５】
処理を終了し、呼び出し元に変換結果を渡して戻る（ステップS８）
【０２１６】
コード変換処理を行う（ステップS９）
【０２１７】
式変換処理を行う（ステップS１０）
【０２１８】
（２）トークン変換処理
トークン変換処理を図１７のフローチャートで説明する。
【０２１９】
呼び出し元から変換対象となるトークンのメタデータを指定して、トークン変換処理プログラムを開始する（ステップS１）
【０２２０】
変換先トークンを、データストアに登録されているデータを使用して導出する。この変換先を決定する方法としては、変換表を用いる方法と、付与した意味情報により判別する方法がある（ステップS２）
【０２２１】
変換先トークンを指定しトークン登録処理を行う（ステップS３）
【０２２２】
変数MaxCountを、トークン登録処理の導出結果である、関連式の数で初期化する（ステップS４）
【０２２３】
変数Countを０に初期化する（ステップS５）
【０２２４】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップS１０へ、FalseならばステップS８へ処理を進める（ステップS６）
【０２２５】
関連式の中から未処理の式から対象となる式を決定し、変数などに設定する（ステップS７）
【０２２６】
式分析処理を行う（ステップS８）
【０２２７】
変数Countをインクリメントする（ステップS９）
【０２２８】
トークン処理を終了し、呼び出し元へ戻るのと同時に、関連する式のメタデータとトークンのメタデータを呼び出し元に渡して戻る（ステップS１０）
【０２２９】
（３）式変換処理
式変換処理を図１８のフローチャートで説明する。
【０２３０】
呼び出し元から変換対象となる式のメタデータを指定して、式変換処理プログラムを開始する（ステップS１）
【０２３１】
変換先となる式を、データストアに登録されている情報に基づき導出する（ステップS２）
【０２３２】
前のステップで導出された式を指定し、式分析処理を行う（ステップS３）
【０２３３】
配列に順ずる変数Arrayを、式分析処理で導出された関連式の情報で初期化する（ステップS４）
【０２３４】
変数MaxCountを、式分析処理で導出された引数の数で初期化する（ステップS５）
【０２３５】
変数Countを０で初期化する（ステップS６）
【０２３６】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップS１３へ、FalseならばステップS８へ処理を進める（ステップS７）
【０２３７】
変数Arrayから重複内容を取り除く（ステップS８）
【０２３８】
変数Arrayが空か判定を行う。そして、その結果がTrueならばステップS１２へ、FalseならばステップS１０へ処理を進める（ステップS９）
【０２３９】
変数Arrayから式のメタデータを取り出す（ステップS１０）
【０２４０】
前の処理で取り出した式のメタデータを指定し、式変換処理を行う（ステップS１１）
【０２４１】
式変換処理を終了し、呼び出し元へ処理を戻す。なお、変換結果は引数などを用いて渡す（ステップS１２）
【０２４２】
導出された引数の中から未処理な引数を対象に決定する（ステップS１３）
【０２４３】
対象となる引数を指定し、引数変換処理を行う（ステップS１４）
【０２４４】
変数Arrayに引数変換処理で導き出された関連式を追加する（ステップS１５）
【０２４５】
変数Countをインクリメントし、ステップS７へ処理を進める（ステップS１６）
【０２４６】
（４）引数変換処理
式変換処理を図１９のフローチャートで説明する。
【０２４７】
呼び出し元から変換対象となる引数のメタデータを指定して、引数変換処理プログラムを開始する（ステップS１）
【０２４８】
引数からトークンを抽出する（ステップS２）
【０２４９】
変数MaxCountを抽出されたトークンの数で初期化する（ステップS３）
【０２５０】
変数Countを０に初期化する（ステップS４）
【０２５１】
配列に準じる機能を持つ変数Arrayを初期化する（ステップS５）
【０２５２】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップS７へ、FalseならばステップS１１へ処理を進める（ステップS６）
【０２５３】
処理対象となるトークンを、抽出結果の未処理トークンの中から決定する（ステップS７）
【０２５４】
処理対象として設定したトークンのメタデータを指定し、トークン変換処理を行う（ステップS８）
【０２５５】
変数Arrayにトークン変換処理で導出された、関連する式のメタデータを追加する（ステップS９）
【０２５６】
変数Countをインクリメントする（ステップS１０）
【０２５７】
変数Arrayの重複内容を消す（ステップS１１）
【０２５８】
引数変換処理を終了し、呼び出し元へ処理を戻す。なお、変数Array、および、変換結果は引数や戻り値などの手段で呼び出し元へ渡す（ステップS１２）
【０２５９】
（５）コード変換処理
コード変換処理を図２０のフローチャートで説明する。
【０２６０】
呼び出し元から変換対象となるプログラム、プログラム言語、プログラムのメタデータを指定して、コード変換プログラムを開始する（ステップS１）
【０２６１】
変換先コードをデータストアに登録されている情報を元に導出する（ステップS２）
【０２６２】
変換先コードが登録されているか判定する。そして、その結果がTrueならばステップS１１へ、FalseならばステップS４へ処理を進める（ステップS３）
【０２６３】
この処理での変換先コードの決定方法は、言語に依存するので明示していないが、指針を記述しておく。
【０２６４】
オーソドックスな変換方法は、データストアに変換テーブルを設けることである。このテーブルは、変換プログラム方法を登録しておき、必要な情報引数としてプログラムに渡して、その結果を得ると良い。
【０２６５】
変数MaxCountに最大式数を格納する。なお、最大引数は、前提となる式を考慮したものとする（ステップS４）
【０２６６】
処理回数をカウントするための変数Countを０に初期化する（ステップS５）
【０２６７】
変数MaxCountが変数Countをよりも大きいか判定する。そして、その結果がTrueならばステップS１３へ、FalseならばステップS７へ処理を進める（ステップS６）
【０２６８】
式の実行順序を正しく編集する（ステップS７）
【０２６９】
コードのメタデータを編集する（ステップS８）
【０２７０】
コードのメタデータをデータストアに登録する（ステップS９）
【０２７１】
コード変換処理を終了し、変換結果を呼び出し元に渡し、呼び出し元に戻る。なお、変換結果は、引数などの手段を用いて呼び出し元へ渡す（ステップS１０）
【０２７２】
コードのメタデータを呼び出し、変数に格納しておく（ステップS１１）
【０２７３】
コード変換処理を終了し、変換結果を呼び出し元に渡し、呼び出し元に戻る。なお、変換結果は、引数などの手段を用いて呼び出し元へ渡す（ステップS１２）
【０２７４】
式変換処理を行う（ステップS１３）
【０２７５】
次に変換対象となる式を設定する（ステップS１４）
【０２７６】
変数Countをインクリメントする。そしてステップS６へ処理を進める（ステップ１５）
【０２７７】
４  請求項５を適用した場合の形態
請求項５を実現するための処理である、プログラム言語翻訳処理をフローチャート図２１で説明する。
【０２７８】
CD-ROMドライブ２６を入れる、マウス２４を指定するなどのイベントにより、プログラム言語翻訳処理プログラムが開始する（ステップS１）
【０２７９】
変換対象となるプログラムのプログラム言語を判別する。以後、この処理で判別したプログラム言語を変換元言語と呼ぶ（ステップS２）
【０２８０】
変換を希望するプログラム言語判別する。以後この処理で指定した言語を変換先言語と呼ぶ（ステップS３）
【０２８１】
変換先言語が登録されているか判定する。そして、その結果がTrueならばステップS１３へ、FalseならばステップS５へ処理を進める（ステップS４）
【０２８２】
言語情報をデータストアに登録する。ただし、名前意外に指定したいメタデータがある場合は編集してから登録する（ステップS５）
【０２８３】
変数Fileに変換対象となるファイルの情報を格納する（ステップS６）
【０２８４】
変数Fileを指定して、メタデータ解析処理を行う（ステップS７）
【０２８５】
変数Fileに変換先となるファイルを設定する（ステップS８）
【０２８６】
変数Fileで指定しているファイルを開く（ステップS９）
【０２８７】
変数Fileを指定して、プログラム変換処理を行う（ステップS１０）
【０２８８】
プログラム変換処理の結果得られたプログラムを、変数Fileが指し示すファイルへ出力する（ステップS１１）
【０２８９】
ファイルを閉じる（ステップS１２）
【０２９０】
プログラム言語変換処理を終了する（ステップS１３）
【０２９１】
プログラム言語のメタデータをデータストアから呼び出す（ステップS１４）
【０２９２】
５  請求項６を適用した場合の形態
請求項６を実現するためには、バージョンアップ処理と、バージョンのメタデータを編集／付加する方法が必要である。
【０２９３】
（１）バージョンアップ処理
バージョンアップ処理をフローチャート図２２で説明する。なおこの図は単一言語で作成したソフトウェアの例である。複数言語で作成している場合は、S６〜S８をS２の後にし、繰り返り処理を行うようにようにすればよい。
【０２９４】
CD-ROMドライブ２６を入れる、マウス２４を指定するなどのイベントにより、バージョンアップ処理プログラムが開始する（ステップS１）
【０２９５】
対象ソフトウェアが必要とする全てのファイルを検出する（ステップS２）
【０２９６】
使用されている言語を特定する（ステップS３）
【０２９７】
使用されている言語のバージョンを特定する（ステップS４）
【０２９８】
変換したいバージョンを指定する（ステップS５）
【０２９９】
バージョン編集処理を行う（ステップS６）
【０３００】
変数MaxCountを、ソフトウェアを作成するのに必要なファイル数で初期化する（ステップS７）
【０３０１】
変数Countを０に初期化する（ステップS８）
【０３０２】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップS１０へ、FalseならばステップS１６へ処理を進める（ステップS９）
【０３０３】
対象となるファイルを未処理ファイルの中から決定する（ステップS１０）
【０３０４】
対象ファイルを開く（ステップS１１）
【０３０５】
対象ファイルを指定して、プログラム変換処理を行う（ステップS１２）
【０３０６】
対象ファイルを閉じる（ステップS１３）
【０３０７】
変数Countをインクリメントする（ステップS１４）
【０３０８】
新規ファイルを作成し、変換プログラムを出力する（ステップS１５）
【０３０９】
バージョンアップ処理プログラムを終了する（ステップS１６）
【０３１０】
（２）バージョン編集処理
バージョン編集処理を図２３のフローチャートで説明する。
【０３１１】
呼び出し元から変換対象となるプログラムファイルを指定して、バージョン編集処理プログラムを開始する（ステップS１）
【０３１２】
呼び出し元から渡された処理対象ファイルを指定し、メタデータ解析処理を行う（ステップS２）
【０３１３】
トークンのメタデータの重複を排除する（ステップS３）
【０３１４】
式のメタデータの重複を排除する（ステップS４）
【０３１５】
変数MaxCountを、トークンの数＋式の数に初期化する（ステップS５）
【０３１６】
変数Countを０に初期化する（ステップS６）
【０３１７】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップS８へ、FalseならばステップS１４へ処理を進める（ステップS７）
【０３１８】
未処理のトークン、もしくは、未処理の式の中から、処理対象を決定する（ステップ８）
【０３１９】
処理対象が編集済みでなおかつ登録済みか判定する。そして、その結果TrueならばステップS７へ、FalseならばステップS１０へ処理を進める（ステップS９）
【０３２０】
処理対象となるトークン、もしくは式が、言語に初めて導入されたバージョンを特定する（ステップS１０）
【０３２１】
もしバージョンのほかにも付加したいメタデータがあるのなら編集する（ステップS１１）
【０３２２】
メタデータをデータストアに登録、または、更新する（ステップS１２）
【０３２３】
変数Countをインクリメントする（ステップS１３）
【０３２４】
コード変換処理を終了し呼び出し元に戻る（ステップS１４）
【０３２５】
６  請求項７を適用した場合の形態
請求項７を実現するには、プログラムなどと言った機械的な要素を、現実に解決しようとした問題とマッピングする必要がある。すなわち、ソフトウェアを用いて解決しようとした問題とその方法を保持しなくてはならない。
【０３２６】
その方法として、まず考えられるのはソフトウェアの機能である。機能は複数の散在するコード片で実現されるものであり、現在のソフトウェア開発では、有効に利用されているとは言いがたく、何度もコーディングされなおされている。
【０３２７】
その原因として、機能を実装するプログラム言語が違う事や、同じ機能でも細部が違う事が挙げられる。
【０３２８】
そこで本発明では、機能という抽象的概念と、プログラムという具象的概念をマッピングする事により、より効率的に開発出来るようにした。
【０３２９】
（１）機能定義処理
機能定義処理を図２４のフローチャートで説明する。
【０３３０】
CD-ROMドライブ２６を入れる、マウス２４を指定するなどのイベントにより、機能定義処理プログラムが開始する（ステップS１）
【０３３１】
登録されているコードの一覧と、そのコードの詳細情報を表示部１６へ表示する（ステップS２）
【０３３２】
機能を構成するコードの選択を継続するか判定する。そして、その結果がTrueならばステップS８へ、FalseならばステップS４へ処理を進める（ステップS３）
【０３３３】
機能のメタデータを編集する（ステップS４）
【０３３４】
機能のメタデータをデータストアに登録する（ステップS５）
【０３３５】
機能と機能詳細情報との関連情報をデータストアに登録する（ステップS６）
【０３３６】
機能定義処理を終了し、呼び出し元に戻る（ステップS７）
【０３３７】
任意のコードと式の組み合わせを選ぶ（ステップS８）
【０３３８】
開始イベント、あるコードの後などの記述するべき場所を指定する（ステップS９）
【０３３９】
記述場所以外の機能詳細情報を編集する（ステップS１０）
【０３４０】
機能詳細情報以外のメタデータをデータストアに登録し、ステップS３へ処理を進める（ステップS１１）
【０３４１】
７  請求項８を適用した場合の形態
請求項８を実現するには、プログラムなどと言った機械的な要素を、自然言語と結び付けなくてはならない。
【０３４２】
そこで本発明では、意味定義処理でプログラムの意味を自然言語を設定し、そのメタデータを用いて、プログラムと自然言語のマッピングを行う。
【０３４３】
具体的に必要な処理は、意味を定義するための意味定義処理と、自然言語を実際のプログラムへ変換する処理、もしくは、逆の処理である。
【０３４４】
（１）意味定義処理
意味定義処理を図２５のフローチャートで説明する。
【０３４５】
意味定義処理は他のプログラムと連動してこそ意味があるので、他のプログラムから呼ばれ、意味定義処理プログラムを開始する（ステップS１）
【０３４６】
意味が未定義の要素（コード、式、トークンなど）と、あらかじめ登録しておいた意味情報を全て表示部１６に表示する（ステップS２）
【０３４７】
処理を継続するか判定する。そして、その結果がTrueならばステップS４へ、FalseならばステップS１０へ処理を進める（ステップS３）
【０３４８】
意味の登録、もしくは、意味の選択を行う。意味の登録については、特筆するべきものがないので図示はしない（ステップS４）
【０３４９】
表示部１６で確認しながら、意味を定義したい要素を選択する（ステップS５）
【０３５０】
自然言語（日本語、英語など）を登録、もしくは選択する。自然言語の登録についても、特筆するべきものがないので図示はしない（ステップS６）
【０３５１】
文法の登録、もしくは選択を行う。自然言語の登録についても、特筆するべきものがないので図示はしない（ステップS７）
【０３５２】
意味と要素の関係をデータストアに登録する（ステップS８）
【０３５３】
要素詳細意味情報（意味、要素、自然言語、文法などの情報の事）をデータストアに登録する（ステップS９）
【０３５４】
意味定義処理を終了する（ステップS１０）
【０３５５】
（２）自然言語変換処理
自然言語変換処理を図２７のフローチャートで説明する。なお、この逆の処理については、図２６を逆に処理していくだけなので図示しない。
【０３５６】
意味、文法、自然言語、要素詳細意味情報、実際に出力するプログラムの言語、稼働環境、などのデータと、変換対象となる文章を指定し、自然言語変換処理プログラムを開始する（ステップS１）
【０３５７】
指定された自然言語に基づき、渡された文章を単語に分解する（ステップS２）
【０３５８】
変数MaxCountを単語の数に初期化する（ステップS３）
【０３５９】
処理回数を記録するための変数Countを０に初期化する（ステップS４）
【０３６０】
変数MaxCountが変数Countよりも大きいか判定する。そして、その結果がTrueならばステップS６へ、FalseならばステップS１１へ処理を進める（ステップS５）
【０３６１】
未処理単語の中から処理対象となる単語を決定する（ステップS６）
【０３６２】
渡された要素詳細意味情報を用いて、単語の意味を判別する（ステップS７）
【０３６３】
単語の分類（動詞、名詞など）を判別する（ステップS８）
【０３６４】
今まで判別した情報と、他の情報である、動作環境とプログラム言語情報を用いて実装（実際のプログラム）を特定する（ステップS9）
【０３６５】
変数Countをインクリメントする（ステップS１０）
【０３６６】
自然言語処理プログラムを終了し、呼び出し元へ戻る。なお、実装は戻り値や引数などの手段を用いて渡す（ステップS１１）
【図面の簡単な説明】
【０３６７】
【図１】この発明の第一実施形態における装置の全体構成である。
【図２】図１の装置を、CPUを用いた場合のハードウェア構成
【図３】この発明の第一実施形態における、ソフトウェアメタ情報解析処理の全体を示したフローチャート図である。
【図４】この発明の第一実施形態における、メタデータ解析処理の全体を示したフローチャート図である。
【図５】この発明の第一実施形態における、トークン分析処理の全体を示したフローチャート図である。
【図６】この発明の第一実施形態における、トークン登録処理の全体を示したフローチャート図である。
【図７】この発明の第一実施形態における、式分析処理の全体を示したフローチャート図である。
【図８】この発明の第一実施形態における、式登録処理の全体を示したフローチャート図である。
【図９】この発明の第一実施形態における、引数関連付け処理の全体を示したフローチャート図である。
【図１０】この発明の第一実施形態における、コード分析処理の全体を示したフローチャート図である。
【図１１】この発明の第一実施形態における、コード抽出処理の全体を示したフローチャート図である。
【図１２】この発明の第一実施形態における、コード抱合処理の全体を示したフローチャート図である。
【図１３】この発明の第一実施形態における、コード登録処理の全体を示したフローチャート図である。
【図１４】この発明の第二実施形態における、サーバープログラムの全体を示したフローチャート図である。
【図１５】この発明の請求項４の実現に必要な動作環境変換処理の全体を示したフローチャート図である。
【図１６】この発明の請求項４の実現に必要なプログラム変換処の全体を示したフローチャート図である。
【図１７】この発明の請求項４の実現に必要なトークン変換処理の全体を示したフローチャート図である。
【図１８】この発明の請求項４の実現に必要な式変換処理の全体を示したフローチャート図である。
【図１９】この発明の請求項４の実現に必要な引数変換処理の全体を示したフローチャート図である。
【図２０】この発明の請求項４の実現に必要なコード変換処理の全体を示したフローチャート図である。
【図２１】この発明の請求項５の実現に必要なプログラム言語翻訳処理の全体を示したフローチャート図である。
【図２２】この発明の請求項６の実現に必要なバージョンアップ処理の全体を示したフローチャート図である。
【図２３】この発明の請求項６の実現に必要なバージョン編集処理の全体を示したフローチャート図である。
【図２４】この発明の請求項７の実現に必要な機能定義処理の全体を示したフローチャート図である。
【図２５】この発明の請求項８の実現に必要な意味定義処理の全体を示したフローチャート図である。
【図２６】この発明の請求項８の実現に必要な自然言語変換処理の全体を示したフローチャート図である。
【図１】
2008090707.tif 000003
【図２】
2008090707.tif 000004
【図３】
2008090707.tif 000005
【図４】
2008090707.tif 000006
【図５】
2008090707.tif 000007
【図６】
2008090707.tif 000008
【図７】
2008090707.tif 000009
【図８】
2008090707.tif 000010
【図９】
2008090707.tif 000011
【図１０】
2008090707.tif 000012
【図１１】
2008090707.tif 000013
【図１２】
2008090707.tif 000014
【図１３】
2008090707.tif 000015
【図１４】
2008090707.tif 000016
【図１５】
2008090707.tif 000017
【図１６】
2008090707.tif 000018
【図１７】
2008090707.tif 000019
【図１８】
2008090707.tif 000020
【図１９】
2008090707.tif 000021
【図２０】
2008090707.tif 000022
【図２１】
2008090707.tif 000023
【図２２】
2008090707.tif 000024
【図２３】
2008090707.tif 000025
【図２４】
2008090707.tif 000026
【図２５】
2008090707.tif 000027
【図２６】
2008090707.tif 000028