(57)【要約】【課題】  多数のソースプログラムの共通部分を効率的に抽出し、類型化、部品化を行って、プログラム資産の効率的管理を実現できるプログラム類型化方法を提供する。【解決手段】  比較処理を行うべきソースプログラムに対し、ソースプログラムを走査して、機能単位であるＳＥＣＴＩＯＮを抽出し、ＳＥＣＴＩＯＮ名をリストアップする。そして、比較元のプログラムのＳＥＣＴＩＯＮ名の一部と比較対象のプログラムのＳＥＣＴＩＯＮ名とを照合し、初期的な類型化を行って、類似プログラムを絞り込む。更に、初期的な類型化結果を用いて、より詳細な類型化をＳＥＣＴＩＯＮ名を用いて行って、類似プログラムを絞り込み、最後に、従来でも知られている方法で各行毎にソースプログラムを照合し、ソースプログラムの比較結果を得る。【選択図】図１
2005316707.tif 000002
【特許請求の範囲】
【請求項１】
構造化プログラミングによって生成されたプログラムの類似性を互いに照合して類型化するプログラム類型化方法を情報処理装置に実現させるプログラムであって、
該プログラムを構成する機能単位を特定し、該機能単位の名前を抽出するステップと、
照合するプログラムの機能単位の名前と、照合相手のプログラムの機能単位の名前とを照合するステップと、
照合ステップによって得られた、照合するプログラムと照合相手のプログラムで同じ名前を持つ機能単位の数の、照合するプログラムに含まれる機能単位の数に対する割合から、照合するプログラムを類型化した結果を生成するステップと、
を備えることを特徴とするプログラム類型化方法を情報処理装置に実現させるプログラム。
【請求項２】
前記照合ステップは、
前記照合するプログラムの全機能単位の一部の名前と、前記照合相手のプログラムの全機能単位の名前とを照合して、予め粗く照合を行うステップ
を備えることを特徴とする請求項１に記載のプログラム。
【請求項３】
前記照合ステップは、
前記粗く照合を行うステップで得られた照合結果を用いて、照合するプログラムの全機能単位の名前と、照合相手のプログラムの全機能単位の名前とを照合して、より詳細に照合を行うステップ
を備えることを特徴とする請求項２に記載のプログラム。
【請求項４】
前記より詳細に照合を行うステップの後に、照合するプログラムのソースプログラムと照合相手のプログラムのソースプログラムを1行毎に比較して照合されるプログラムの個別の照合を行うステップ
を備えることを特徴とする請求項３に記載のプログラム。
【請求項５】
前記機能単位は、ＣＯＢＯＬのＳＥＣＴＩＯＮ、Ｃ言語のサブルーチン、関数、Ｂａｓｉｃの関数、サブルーチン、Java（登録商標）の関数、Ｃｌａｓｓのいずれかであることを特徴とする請求項１〜４のいずれか１つに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のソースプログラムから、重複度の高い可能性があるソースプログラム
を特定し、共通ソースプログラム部の抽出を短時間で行う方法を提供することである。
【背景技術】
【０００２】
ソフトウェアシステムを開発・保守を行う組織において、長期にわたるシステム保守の間に、作成された膨大な類似プログラム資産が保守効率を下げ問題となっている。
類似プログラムが生じる原因は、新規プログラムを開発する際に、現行システムの稼動安全性を確保しつつ短期的な開発の効率化を実現するために、既存システムで稼動中のプログラムを流用して新規プログラムを作成する傾向が顕著であることが挙げられる。
【０００３】
そこで、この膨大なプログラム資産の重複をなくし、プログラムのデータ量を圧縮するための技術が求められている。プログラムのデータ量を圧縮する方法として、ソースプログラムの共通部分を抽出して類型化・部品化を行い、簡素なプログラム構成に再構築する方法が有効である。
【０００４】
ソースプログラムの共通部分抽出方法として、特許文献１が提案されている。
【特許文献１】特開２００１−１２５７８３号公報（特願平１１−３０３７５４号）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ソースプログラムの類似性を調査するには、一般的にソースコードの比較を行う。しかし、膨大なソースプログラム群をマッチングすることは、時間的な制約で不可能である。（例えば、８０００本のプログラムを比較する場合、総マッチング回数は、約３２，０００，０００回が必要である。従来は、全てのプログラムについて、全てのラインを対象としてマッチングを行っていたので時間がかかった。また、マッチング結果リストが３２，０００，０００枚出力されても人的な判断は不可能である。）
この問題に対して有効で、効率的に共通部分を抽出する方法が求められている。
【０００６】
本発明の課題は、多数のソースプログラムの共通部分を効率的に抽出し、類型化、部品化を行って、プログラム資産の効率的管理を実現できるプログラム類型化方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明のプログラム類型化方法は、構造化プログラミングによって生成されたプログラムの類似性を互いに照合して類型化するプログラム類型化方法であって、該プログラムを構成する機能単位を特定し、該機能単位の名前を抽出するステップと、照合するプログラムの機能単位の名前と、照合相手のプログラムの機能単位の名前とを照合するステップと、照合ステップによって得られた、照合するプログラムと照合相手のプログラムで同じ名前を持つ機能単位の数の、照合するプログラムに含まれる機能単位の数に対する割合から、照合するプログラムを類型化した結果を生成するステップとを備えることを特徴とする。
【０００８】
本発明では、プログラムの機能単位を照合単位とすることにより、各行毎に照合するよりもより効率的に照合を行う。また、本発明の方法を前処理として行うことにより、行単位の照合を行うべきプログラムの数を大幅に減らすことができる。
【０００９】
なお、本発明において、構造化プログラミングによって生成されたプログラムは、名前を付けられた機能単位で構成されるプログラムである。
【発明の効果】
【００１０】
本発明により、複数のソースプログラムから、重複度の高いソースプログラムを特定し、共通ソースプログラム部の抽出する処理を従来技術に比べ短時間で行うことが可能になる。更に、マッチング結果リストの枚数も大幅に減少する。
【００１１】
従来、ソースプログラムの全体の比較を行っていたものを、ソースプログラムの構造化データを利用するとにより実現する。
【発明を実施するための最良の形態】
【００１２】
以下では、ＣＯＢＯＬを例にとって説明する。通常、ソースプログラムを流用する場合、元となるソースプログラムをコピーして、その一部に追加、削除、または修正を行う。従って、ほとんどの場合、元のソースプログラムのＳＥＣＴＩＯＮ名は、そのまま新しいソースプログラムに引き継がれる。このＳＥＣＴＩＯＮ名を利用することにより、ソースプログラムの全検索をすることなく効率的に共通部分抽出を行う。
【００１３】
共通部抽出を、構造化データ部の抽出、構造化データ部の比較、ソースプログラム比較と３段階に分けて実施する。
（１）構造化データ部の抽出では、各ソースプログラムのＳＥＣＴＩＯＮ名を抽出し、データとして保持する。
（２）構造化データ部の比較では、（１）で抽出された構造化データを比較し、共通のＳＥＣＴＩＯＮ名をもつソースプログラム名をデータとして保持する。
（３）ソースプログラムの比較を行う前に、（１）、（２）で示した方法により、比較するソースプログラムを限定することにより、共通部分の抽出時間を大幅に短縮できる。
【００１４】
この方法は、ＳＥＣＴＩＯＮ名をサブルーチン名、関数名、Ｃｌａｓｓ名等とすると、ＣＯＢＯＬプログラムだけでなくＣ言語、Basic、Java（登録商標）等の他の言語にも適用可能である。
【００１５】
すなわち、ＳＥＣＴＩＯＮ、サブルーチン、関数、Ｃｌａｓｓ等をプログラムの機能単位と呼び、本発明は、構造化プログラミング方法論に沿って作られるプログラムは、いくつかの機能単位から構成されるので、この機能単位に付けられた名称を利用することにより、簡易に重複度の高いプログラムを特定し、類型化するものである。例えば、機能単位は、ＣＯＢＯＬのＳＥＣＴＩＯＮ、Ｃ言語のサブルーチン、関数、Ｂａｓｉｃの関数、サブルーチン、Java（登録商標）の関数、Ｃｌａｓｓのいずれかである
最終的にソースプログラムの比較を行う際に利用する従来の文書比較アルゴリズムの代表的なものとして、ＵＮＩＸ（登録商標）のdiffコマンドがある。
【００１６】
そのアルゴリズムの論文として下記のようなものがある。
[1] J. W. Hunt and T. G. Szymanski, A fast algorithm for computing longest common subsequences, CACM (May 1977)
[2] M. D. Mcllroy and J. W. Hunt, An algorithm for differential file comparison, Bell Labs Computing Science Technical Report 41 (1976)
図１は、本発明の実施形態の概念を示す図である。
【００１７】
まず、ソースプログラムＮ本を入力する。これらのソースプログラムは、構造化データ抽出され、セクション名が抜き出され、セクション名一覧が作られる。このセクション名の対応を見ることによって、初期類型化を行い、類型化対象ファイル一覧を作成する。それから、詳細類型化を行い、最後に、類型化対象ファイル一覧であるソースプログラム比較結果を得る。
【００１８】
図２は、ＣＯＢＯＬのソースプログラムの例とそこから抽出されるＳＥＣＴＩＯＮ名の例を示した図である。
図２では、ＣＯＢＯＬのソースプログラムＡ．ＣＯＢから「３０−ＲＥＣＯＲＤ−ＳＹＯＲＩ」というセクション名と「３１−ＫＯＵＭＯＫＵ−ＲＴＮ」というセクション名が抽出され、セクション名一覧に登録されている様子が記載されている。
【００１９】
図３は、類型化ＤＢ作成概念図である。
図３において、（１）に示すように、類型化調査対象資産として、Ａ．ＣＯＢ〜Ｆ．ＣＯＢのプログラムを有するＣＯＢＯＬ資産が用意されている。次に、セクション名を抽出するが、抽出対象外セクション一覧にあるセクション名は抽出しない。図３では、抽出対象外セクション一覧には、ＭＡＩＮ−ＲＴＮ、ＩＮＩＴ−ＲＴＮ、ＦＩＮＬ−ＲＴＮが抽出対象外セクション名として設定されている。
【００２０】
次に、（２）に示されるように、セクション名を類型化調査対象資産のソースプログラムから抽出することにより、類型化ＤＢが生成される。ここでは、類型化ＤＢの例として、Ａ．ＣＯＢ〜Ｆ．ＣＯＢのＰＧＩＤ（プログラムＩＤ）を持つソースファイルに対し、セクション数とセクション名が列挙されている。
【００２１】
類型化ＤＢに登録された各プログラムは、類型化調査対象プログラムとされ、従来の資産調査・類型化方法を使用して、類型化を行う。
図４は、初期類型化概念図である。
【００２２】
初期類型化処理においては、比較元のプログラムの群と相手プログラムの群のプログラムのセクションを比較する。このとき、初期処理として、セクション名が列挙された比較元と比較相手の類型化ＤＢに登録されているセクション名の内、比較元のセクション名の先頭の７つ（図４においては、７つになっているが、必ずしも７つでなくてもよい）が一致する比較相手のプログラムを比較相手のプログラムから抽出し、これらのプログラムを類型化表に登録する。
【００２３】
図５は、細類型化概念図である。
図５の細類型化処理では、類型化表の元ＰＧＩＤ情報の全セクション名と比較相手ＰＧＩＤ情報の全セクション名を比較し、例えば、セクションヒット数が元ＰＧＩＤのセクション数に対して７０％以上である場合、あるいは、セクション数の誤差が双方±３セクション以内である場合には、類型化結果チェックシートを作成し、個別比較の対象とする。図５の場合、類型化結果チェックシートは、類型化表のデータの内、各ＰＧＩＤのレコードの最終部分に設けられた類型化判定フィールドで構成されている。ここに、類型化判定の結果が記録され、例えば、類型化判定の結果、個別比較を行うと判定された場合には、「１」というフラグが立てられる。
【００２４】
そして、細類型化処理の一部として、個別比較処理を行う。個別比較においては、個別比較対照資産をライン（あるいは、行）単位で比較する。比較対象とするラインは手続き部以降とする。手続き部までは無条件に比較済み（ヒット済み）とする。双方の比較結果が９０％以上のものを類型化対象資産とする。
【００２５】
図６は、図４，５に示した本発明による処理によって得られた結果のまとめ方を示す類型結果表作成概念図である。
まず、元ＰＧＩＤ資産（比較元プログラム群）と相手ＰＧＩＤ資産（比較先プログラム群）を初期類型化対象として、図４及び図５で示した、初期類型化を行い、更に、細類型化、個別比較処理を行って得た結果について重複部分を除き、類型化結果チェックシート（個別比較表）を生成する。この類型化結果チェックシートは、元ＰＧＩＤを縦列、相手ＰＧＩＤを横列にとって、マトリクス形式で元ＰＧＩＤのプログラムＡ〜Ｇを相手ＰＧＩＤのプログラムＢ〜Ｇに対応させる。類型化結果チェックシートの右端には、各元ＰＧＩＤに対応したプログラムの本数が、下端には、相手ＰＧＩＤに対応した各相手ＰＧＩＤのプログラムの本数が記載される。
【００２６】
図６中ほどの図形は、個別比較の結果得られた類型化結果チェックシートに記載されたプログラムの対応関係をグラフとして示した図である。また、図６下の類型化結果シート（個別規模算出結果）は、類型化結果チェックシートの中から、特定の元ＰＧＩＤを選択した後のプログラムの対応関係を印刷した表である。
【００２７】
図７〜図９は、本発明の実施形態で使用する各テーブルの例を示す図である。
図７は、セクション名抽出ファイルであり、ファイル名、セクション数、セクション名がプログラム毎に記載される。図８は、初期類型化で得られるテーブルであり、比較元となる基準プログラム名と、そのセクション名、相手プログラム名とそのセクション名が対応付けられて記載される。図９は、細類型化で得られるテーブルであり、基準プログラムとの一致率（基準プログラムの全セクションに対する一致したセクションの割合が所定値以上の場合、マトリックスの対応する部分にチェックを入れる。
【００２８】
図１０〜図１３は、本発明の実施形態の処理を表すフローチャートである。
図１０は、類型化処理のメインフローである。
まず、ステップＳ１０において、構造化データ抽出を行い図７のテーブル１を生成する。次に、ステップＳ１１において、初期類型化を行い、図８のテーブル２を生成する。更に、ステップＳ１２において、細類型化１２を行い、図９のテーブル３を生成し、処理を終了する。
【００２９】
図１１は、構造化データ抽出処理の詳細フローである。
まず、ステップＳ１５において、類型化対象ファイルの選択を行い、ステップＳ１６において、ファイルを一つ選択して、ファイルを開く。ステップＳ１７において、プログラム名を図７のテーブル１に書き出し、ステップＳ１８において、１つの行を抽出する。ステップＳ１９において、ＳＥＣＴＩＯＮが存在するか否かを判断する。ステップＳ１９の判断がＮｏの場合には、ステップＳ２１に進み、ステップＳ１９の判断がＹｅｓの場合には、ステップＳ２０において、ＳＥＣＴＩＯＮ名を図７のテーブル１に書き出して、ステップＳ２１に進む。ステップＳ２１においては、ファイルの最終行まできたか否かを判断する。ステップＳ２１の判断がＮｏの場合には、ステップＳ１８に戻って、次の行を抽出して、ステップＳ１９、Ｓ２０を行う。ステップＳ２１において、最後の行まで処理を行ったと判断された場合には（判断がＹｅｓ）、ステップＳ２２において、ファイルをクローズし、ステップＳ２３において、全てのファイルの処理が終了したか否かを判断する。ステップＳ２３の判断がＮｏの場合には、ステップＳ１６に戻り、次のファイルを開いて、ステップＳ１７からステップＳ２２までを行う。ステップＳ２３の判断がＹｅｓの場合には、処理を終了する。
【００３０】
図１２は、初期類型化処理の詳細フローである。
ステップＳ２５において、図７のテーブル１を読み込む。ステップＳ２6において、図７のテーブル１より１つの基準ファイル名を取得する。ステップＳ２７において、テーブル１より基準プログラムの先頭からＮ（Ｎは正の整数）個のセクション名を取得する。ステップＳ２８において、テーブル１より１つの相手プログラム名を取得する。ステップＳ２9において、テーブル１より相手プログラムのセクション名を全て取得する。ステップＳ３０において、基準プログラムの先頭よりＮ個のセクション名が、相手セクション名に存在するか否かを判断する。ステップＳ３０の判断がＮｏの時は、ステップＳ３２に進む。ステップＳ３０の判断がＹｅｓの場合には、ステップＳ３１において、図８のテーブル２に、基準プログラム、相手プログラムの名称、セクション名を書き出し、ステップＳ３２において、全ての相手プログラムとの比較が終了したか否かを判断する。ステップＳ３２の判断がＮｏの場合には、ステップＳ２８に戻って、テーブル１から次の相手プログラム名を取得し、ステップＳ２9からステップＳ３１を更に行う。ステップＳ３２の判断がＹｅｓの場合には、ステップＳ３３において、全ての基準プログラムの比較が終了したか否かを判断する。ステップＳ３３の判断がＮｏの場合には、ステップＳ２6に進み、テーブル１から次の基準ファイル名を取得し、ステップＳ２７からステップＳ３２を再び行う。ステップＳ３３の判断がＹｅｓの場合には、処理を終了する。
【００３１】
図１３は、細類型化処理の詳細フローである。
まず、ステップＳ３５において、図８のテーブル２を読み込む。ステップＳ３６において、基準プログラムと相手プログラムそれぞれのソースプログラムを取得する。ステップＳ３７において、ソースプログラムの比較を行う。ステップＳ３８において、プログラムの一致率が所定値以上か否かを判断する。ステップＳ３８の判断がＮｏの場合には、ステップＳ４０に進む。ステップＳ３８の判断がＹｅｓの場合には、ステップＳ３９において、図９のテーブル３に基準プログラム、相手プログラムを書き出し、ステップＳ４０に進む。ステップＳ４０では、テーブル２の全リストの比較が終了したか否かを判断する。ステップＳ４０の判断がＮｏの場合には、ステップＳ３６に進み、以下、ステップＳ３９までの処理を再び行う。ステップＳ４0の判断がＹｅｓの場合には、処理を終了する。
【００３２】
図１４は、本発明の実施形態の処理を情報処理装置が実行するプログラムで実現する場合の情報処理装置のハードウェア構成の例を示す図である。
ＣＰＵ１１は、プログラムの命令を実行する。バス１０は、ＣＰＵ１１と他の装置を接続し、データの送受を可能にする。ＲＯＭ１２には、ＢＩＯＳなどの基本プログラムが格納され、ＣＰＵ１１への命令をユーザから受けたり、やＣＰＵ１１の演算結果等をユーザに提示することが可能なようにする。ＲＡＭ１３は、ＣＰＵ１１が実行可能なように、プログラムのコピーを保持する。ＣＰＵ１１によって実行されるプログラムはみなＲＡＭ１３に展開される。
【００３３】
記憶装置１７は、ハードディスク等からなり、本発明の実施形態を実現するプログラムや、実施形態に使用されるテーブル、比較されるソースプログラム等が格納される。ＣＰＵ１１によって、記憶装置１７に格納されるデータが使用される場合には、ＲＡＭ１３に一度コピーされる。読み取り装置１８は、ＣＤ−ＲＯＭ、フレキシブルディスク、ＭＯ、ＤＶＤ等の可搬記録媒体１９に格納された、実施形態のプログラムや、テーブル、その他のデータを読み取り、記憶装置１７に格納したり、ＲＡＭ１３にコピーして、ＣＰＵ１１が直接実行できるようにする。入出力装置２０は、ディスプレイ、キーボード、マウス、テンプレート等からなり、ユーザと情報処理装置との入出力を可能にするものである。通信インターフェース１４は、情報処理装置をネットワーク１５を介して、情報提供者１６のデータベースや情報処理装置と接続し、データを送受信したり、情報提供者１６の提供するネットワーク環境下での実施形態のプログラムの実行等を行うことができるようにするものである。
【００３４】
（付記１）
構造化プログラミングによって生成されたプログラムの類似性を互いに照合して類型化するプログラム類型化方法を情報処理装置に実現させるプログラムであって、
該プログラムを構成する機能単位を特定し、該機能単位の名前を抽出するステップと、
照合するプログラムの機能単位の名前と、照合相手のプログラムの機能単位の名前とを照合するステップと、
照合ステップによって得られた、照合するプログラムと照合相手のプログラムで同じ名前を持つ機能単位の数の、照合するプログラムに含まれる機能単位の数に対する割合から照合するプログラムを類型化した結果を生成するステップと、
を備えることを特徴とするプログラム類型化方法を情報処理装置に実現させるプログラム。
【００３５】
（付記２）
前記照合ステップは、
前記照合するプログラムの全機能単位の一部の名前と、前記照合相手のプログラムの全機能単位の名前とを照合して、予め粗く照合を行うステップ
を備えることを特徴とする請求項１に記載のプログラム。
【００３６】
（付記３）
前記照合ステップは、
前記粗く照合を行うステップで得られた照合結果を用いて、照合するプログラムの全機能単位の名前と、照合相手のプログラムの全機能単位の名前とを照合して、より詳細に照合を行うステップ
を備えることを特徴とする請求項２に記載のプログラム。
【００３７】
（付記４）
前記より詳細に照合を行うステップの後に、照合するプログラムのソースプログラムと照合相手のプログラムのソースプログラムを1行毎に比較して照合されるプログラムの個別の照合を行うステップ
を備えることを特徴とする請求項３に記載のプログラム。
【００３８】
（付記５）
前記機能単位は、ＣＯＢＯＬのＳＥＣＴＩＯＮ、Ｃ言語の関数、サブルーチン、Ｂａｓｉｃの関数、サブルーチン、Java（登録商標）の関数、Ｃｌａｓｓのいずれかであることを特徴とする請求項１〜４のいずれか１つに記載のプログラム。
【００３９】
（付記６）
前記照合するプログラムの全機能単位の一部は、該照合するプログラムの先頭の機能単位から所定個数の機能単位であることを特徴とする付記２に記載のプログラム。
【００４０】
（付記７）
前記照合するプログラムに含まれる機能単位の数は、照合相手のプログラムに含まれる機能単位の数より大きいことを特徴とする付記１に記載のプログラム。
【００４１】
（付記８）
構造化プログラミングによって生成されたプログラムの類似性を互いに照合して類型化するプログラム類型化方法であって、
該プログラムを構成する機能単位を特定し、該機能単位の名前を抽出するステップと、
照合するプログラムの機能単位の名前と、照合相手のプログラムの機能単位の名前とを照合するステップと、
照合ステップによって得られた、照合するプログラムと照合相手のプログラムで同じ名前を持つ機能単位の数の、照合するプログラムに含まれる機能単位の数に対する割合から、照合するプログラムを類型化した結果を生成するステップと、
を備えることを特徴とするプログラム類型化方法。
【００４２】
（付記９）
構造化プログラミングによって生成されたプログラムの類似性を互いに照合して類型化するプログラム類型化装置であって、
該プログラムを構成する機能単位を特定し、該機能単位の名前を抽出する抽出手段と、
照合するプログラムの機能単位の名前と、照合相手のプログラムの機能単位の名前とを照合する照合手段と、
照合手段によって得られた、照合するプログラムと照合相手のプログラムで同じ名前を持つ機能単位の数の、照合するプログラムに含まれる機能単位の数に対する割合から、照合するプログラムを類型化した結果を生成する類型化結果生成手段と、
を備えることを特徴とするプログラム類型化装置。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施形態の概念を示す図である。
【図２】ＣＯＢＯＬのソースプログラムの例とそこから抽出されるＳＥＣＴＩＯＮ名の例を示した図である。
【図３】類型化ＤＢ作成概念図である。
【図４】初期類型化概念図である。
【図５】細類型化概念図である。
【図６】類型結果表作成概念図である。
【図７】本発明の実施形態で使用する各テーブルの例を示す図（その１）である。
【図８】本発明の実施形態で使用する各テーブルの例を示す図（その２）である。
【図９】本発明の実施形態で使用する各テーブルの例を示す図（その３）である。
【図１０】本発明の実施形態の処理を表すフローチャート（その１）である。
【図１１】本発明の実施形態の処理を表すフローチャート（その２）である。
【図１２】本発明の実施形態の処理を表すフローチャート（その３）である。
【図１３】本発明の実施形態の処理を表すフローチャート（その４）である。
【図１４】本発明の実施形態の処理を情報処理装置が実行するプログラムで実現する場合の情報処理のハードウェア構成の例を示す図である。
【符号の説明】
【００４４】
１０      バス
１１      ＣＰＵ
１２      ＲＯＭ
１３      ＲＡＭ
１４      通信インターフェース
１５      ネットワーク
１６      情報提供者
１７      記憶装置
１８      読取装置
１９      可搬記録媒体
２０      入出力装置
【図１】
2005316707.tif 000003
【図２】
2005316707.tif 000004
【図３】
2005316707.tif 000005
【図４】
2005316707.tif 000006
【図５】
2005316707.tif 000007
【図６】
2005316707.tif 000008
【図７】
2005316707.tif 000009
【図８】
2005316707.tif 000010
【図９】
2005316707.tif 000011
【図１０】
2005316707.tif 000012
【図１１】
2005316707.tif 000013
【図１２】
2005316707.tif 000014
【図１３】
2005316707.tif 000015
【図１４】
2005316707.tif 000016