(57)【要約】【課題】新規開発ソフトウェアのシーケンス図を、短時間かつ低コストで作成可能な装置、プログラム及び方法を提供すること。【解決手段】抽象概念登録部３により、入力部７から入力された操作に基づいてソフトウェアに含まれる各種の動作に対応する抽象概念の定義情報を作成し、抽象概念保存部１に保存しておき、抽象概念操作部５により、抽象概念保存部１から保存済みの抽象概念を読み出すとともに、ＵＭＬモデル保存部２からクラス図作成部４で作成され保存された新規開発ソフトウェアのクラス図を読み出して表示部８に表示し、入力部７から入力された操作に基づいて抽象概念にクラス図中の管理情報を関連付け、シーケンス図作成部６により、前記関連付けされた結果と、抽象概念保存部１に保存された抽象概念の定義情報とからシーケンス図を自動的に生成する。【選択図】図２０
2008059275.tif 000002
【特許請求の範囲】
【請求項１】
開発しようとするソフトウェアが満たすべき事項を規定した仕様書／設計書として、ソフトウェアが管理する情報とソフトウェアの動作とで表した文書や図を作成するソフトウェア仕様書／設計書作成装置であって、
ソフトウェアに含まれる各種の動作に対応する抽象概念の定義情報を保存する抽象概念保存手段と、
ソフトウェアが管理する情報を記述したクラス図を保存するＵＭＬモデル保存手段と、
入力手段から入力された操作に基づいてソフトウェアに含まれる各種の動作に対応する抽象概念の定義情報を作成し、抽象概念保存手段に保存する抽象概念登録手段と、
入力手段から入力された操作に基づいて開発しようとするソフトウェアのクラス図を作成し、ＵＭＬモデル保存手段に保存するクラス図作成手段と、
抽象概念保存手段から保存済みの抽象概念を読み出すとともに、ＵＭＬモデル保存手段から保存済みの開発しようとするソフトウェアのクラス図を読み出して表示手段に表示し、入力手段から入力された操作に基づいて抽象概念にクラス図中の管理情報を関連付けする抽象概念操作手段と、
抽象概念操作手段によって関連付けされた結果と、抽象概念保存手段に保存された抽象概念の定義情報とからシーケンス図を自動的に生成するシーケンス図作成手段とを備えた
ことを特徴とするソフトウェア仕様書／設計書作成装置。
【請求項２】
抽象概念登録手段は、
抽象概念に対応付けられたソフトウェアの動作を行う主体とその動作対象と動作名とを表す定義情報を作成する
ことを特徴とする請求項１記載のソフトウェア仕様書／設計書作成装置。
【請求項３】
抽象概念登録手段は、
抽象概念に対応付けられたソフトウェアの動作の順序を規定するための定義として、当該抽象概念間の順序を表す定義情報を作成する
ことを特徴とする請求項１記載のソフトウェア仕様書／設計書作成装置。
【請求項４】
抽象概念操作手段は、
生成しないソフトウェアの動作に対応する抽象概念にクラス図中の管理情報を関連付けない
ことを特徴とする請求項１記載のソフトウェア仕様書／設計書作成装置。
【請求項５】
抽象概念登録手段は、
複数の抽象概念に対応付けられた複数のソフトウェアの動作のいずれか一つでも生成できない場合に当該複数のソフトウェアの動作を全て禁止するための定義として、当該複数の抽象概念間の制約関係を表す定義情報を作成する
ことを特徴とする請求項１記載のソフトウェア仕様書／設計書作成装置。
【請求項６】
抽象概念登録手段は、
抽象概念に対応付けられたソフトウェアの動作の繰り返しを規定するための定義として、当該抽象概念の繰り返しを表す定義情報を作成し、
抽象概念操作手段は、
前記ソフトウェアの動作に対応する抽象概念にクラス図中の管理情報を繰り返しの単位を指定して関連付ける
ことを特徴とする請求項１記載のソフトウェア仕様書／設計書作成装置。
【請求項７】
抽象概念登録手段は、
複数の抽象概念に対応付けられた複数のソフトウェアの動作がまとまって繰り返すことを規定するための定義として、当該抽象概念の繰り返し及び繰り返しの単位が２以上の抽象概念に及ぶことを表す定義情報を作成し、
抽象概念操作手段は、
前記複数のソフトウェアの動作に対応する複数の抽象概念にクラス図中の管理情報を繰り返しの単位を指定して関連付ける
ことを特徴とする請求項１記載のソフトウェア仕様書／設計書作成装置。
【請求項８】
抽象概念登録手段は、
特定の複数の抽象概念に対応付けられた複数のソフトウェアの動作を同時に生成できる場合に別のソフトウェアの動作を追加することを規定するための定義として、当該別のソフトウェアの動作に対応する別の抽象概念の追加を表す定義情報を作成し、
抽象概念操作手段は、
前記別のソフトウェアの動作に対応する別の抽象概念にクラス図中の管理情報を関連付ける
ことを特徴とする請求項１記載のソフトウェア仕様書／設計書作成装置。
【請求項９】
コンピュータを、請求項１乃至８いずれか記載のソフトウェア仕様書／設計書作成装置を構成する各手段として機能させるためのプログラム。
【請求項１０】
開発しようとするソフトウェアが満たすべき事項を規定した仕様書／設計書として、ソフトウェアが管理する情報とソフトウェアの動作とで表した文書や図を作成するソフトウェア仕様書／設計書作成方法であって、
記憶手段と、入力手段と、表示手段とを備えたコンピュータを用い、
当該コンピュータは、
入力手段から入力された操作に基づいてソフトウェアに含まれる各種の動作に対応する抽象概念の定義情報を作成し、記憶手段に保存するステップと、
入力手段から入力された操作に基づいて開発しようとするソフトウェアのクラス図を作成し、記憶手段に保存するステップと、
記憶手段から保存済みの抽象概念とともに保存済みの開発しようとするソフトウェアのクラス図を読み出して表示手段に表示し、入力手段から入力された操作に基づいて抽象概念にクラス図中の管理情報を関連付けするステップと、
関連付けされた結果と、記憶手段に保存された抽象概念の定義情報とからシーケンス図を自動的に生成するステップとを実行する
ことを特徴とするソフトウェア仕様書／設計書作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータソフトウェア開発作業における仕様書／設計書を作成する技術に関する。
【背景技術】
【０００２】
ソフトウェア開発では、開発しようとするソフトウェアが満たすべき事項（要件や性能）を示す仕様書を作成し、当該仕様書に基づいてより具体的な実装を意識したソフトウェアの構造やアーキテクチャ等を定めた設計書を作成し、この設計書に基づいて最終的に実装を行う。これらの仕様書や設計書にはソフトウェアが持つ機能を記述する必要がある。
【０００３】
ソフトウェアの機能は、ソフトウェアが管理する情報等の静的な側面と、ソフトウェアの動作等の動的な側面という二つの面によって表される。それらの情報や動作は、自然言語を用いた文書やモデル言語（ＵＭＬ：Unified Modeling Language等）を用いた図等で記述される。この時、ソフトウェアの規模が大きくなればなるほどソフトウェアの動作は複雑になり、動作の記述量や複雑さは増大する。よって、ソフトウェア開発者がソフトウェアの動作を記述するために時間がかかり、ソフトウェア開発が高コスト化／長期化してしまうということが問題になっていた。
【０００４】
この問題を解決するために、ソフトウェアの仕様書／設計書のうちソフトウェアの動作を時系列に表現したシーケンス図を作成する際に既存のシーケンス図を再利用する手法が提案されている（非特許文献１参照）。この手法ではシーケンス図に抽象概念を導入し、ソフトウェアの情報を記述したクラス図をこの抽象概念に結びつけることでシーケンス図を作成する。そして抽象概念とクラス図の関係を変えることでシーケンス図を別々のソフトウェア用に使うことができるようになるため、シーケンス図の再利用を可能にしていた。
【非特許文献１】佐藤正崇、井上正輝、井上貴司、山村哲哉、「ＵＭＬモデル再利用による要求分析方法」、電子情報通信学会技術研究報告ＴＭ２００５−３９、Ｖｏｌ．１０５、Ｎｏ．４０７、２００５年１１月１０日発行
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、非特許文献１の手法では、これから作成したいソフトウェアの動作を表現するシーケンス図と同じものを過去に作成していなければ、シーケンス図を再利用することができないという問題が残っていた。
【０００６】
本発明では、過去にこれから開発するソフトウェアの動作と同じソフトウェアの動作を記述した仕様書／設計書の作成を行っていなければ、これから開発するソフトウェアの仕様書／設計書を作成する際に再利用できないという問題を解決し、過去にどのようなソフトウェアの動作を記述しているかということに関わらず、新規開発ソフトウェアの仕様書／設計書を短時間で作成可能とする装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
ソフトウェア開発のための仕様書／設計書に含まれるソフトウェアの動作を記述した文書や図を作成する際、非特許文献１記載の抽象概念に対するルールを付与し、そのルールを用いて文書や図を作成することで、仕様書／設計書を作成する時間の短縮を実現する。仕様書／設計書では、ソフトウェアの動作とソフトウェアが管理する情報を記述し、ソフトウェアの機能を表現する必要がある。そして、ソフトウェアの動作を表す文書や図には、自然言語で記述するユースケース記述、ＵＭＬで定義されているシーケンス図、アクティビティ図、ステートチャート図、コラボレーション図、等様々な形式が存在する。
【０００８】
ここではソフトウェアの動作を表現する図の一例として、ＵＭＬモデルの中の時系列に動作を記述するシーケンス図を用いて本発明が課題を解決する手段について述べる。また、ソフトウェアの静的な側面であるソフトウェアの管理情報は、ＵＭＬのクラス図を用いて記述するものとする。
【０００９】
シーケンス図は、図１に示すように、ソフトウェアの動作をオブジェクト同士のメッセージで表現する。図１において、オブジェクト１からオブジェクト２へのメッセージは、メッセージ名（メッセージ１）と引数（情報１、情報２）とから構成される。ここで、メッセージ名は、ソフトウェアがどのような動作を行っているのかを示しており、また、引数は、その動作を行うときに必要な情報を示している。
【００１０】
シーケンス図のメッセージの引数に記述する情報は、図２に示すように、ソフトウェアが扱う情報と情報間の関係とを表したクラス図に記述し、シーケンス図と同様に仕様書／設計書に含める必要がある。
【００１１】
上述したシーケンス図には次のような特徴がある。現在、様々な目的のソフトウェアが開発されており、同じ目的のソフトウェアの機能は共通したものになる。例えば、通信装置管理を目的としたソフトウェアであれば、「管理対象装置をソフトウェアに登録する」、「管理対象装置を監視する」等の機能を備えている。このとき、ソフトウェアの動作を表すシーケンス図の内容は共通部分を多く含み、類似したものになる。そして、同じ目的のソフトウェアの動作を表すシーケンス図同士が一致する部分はオブジェクト、メッセージの順序、メッセージのメッセージ名であり、一致しない部分はメッセージの引数である。これは「会社に在籍する社員を一意に特定する番号」のことを「社員番号」「社員コード」等の様々な名前で呼ぶ場合があるように、どのような情報を扱うのかということはソフトウェア毎に異なる部分が大きいことに由来する。
【００１２】
よって、シーケンス図に記述する内容のうち、オブジェクト、メッセージの順序、メッセージのメッセージ名は、ソフトウェアの使用目的により、共通して用いるものとして一意に定めることができる。そして、非特許文献１の手法では、メッセージの引数をソフトウェア毎に入れ替え可能にするために、図３に示すような抽象概念をシーケンス図に導入し、これによって過去に作成したシーケンス図の再利用を実現しており、その内容を以下で述べる。
【００１３】
図３では、オブジェクト１からオブジェクト２へ抽象概念１に対応する情報を用いてメッセージ１の内容で動作し、その次に、オブジェクト２からオブジェクト１へ抽象概念２に対応する情報を用いてメッセージ２の内容で動作するという、ソフトウェアの動作を表している。そして、図４に示すように前述した抽象概念とクラス図におけるソフトウェアが扱う情報とを関連付け、図３の抽象概念１に情報１及び情報２を、抽象概念２に情報３を代入することにより、図５に示すシーケンス図を得ることができる。
【００１４】
このように抽象概念を用いることにより、シーケンス図のオブジェクト、メッセージの順序、メッセージのメッセージ名を変更することなく、引数だけを入れ替えることが可能になる。よって、ソフトウェア毎にシーケンス図を作り変える必要がなく、過去に作成したシーケンス図を再利用することができるようになっていた。そして、以下の形式のファイルで、出力するシーケンス図名（シーケンス図１）を指定して、抽象概念と情報との関連付けを保持していた。
【００１５】
<target-diagram name=“シーケンス図１”>
<abstract-concept name=“抽象概念１”>
<related-to>情報１</related-to>
<related-to>情報２</related-to>
</abstract-concept>
<abstract-concept name=“抽象概念２”>
<related-to>情報３</related-to>
</abstract-concept>
</target-diagram>
しかし、過去に作成したシーケンス図の引数を入れ替えただけでは作成できないシーケンス図を作成したい場合に、上記の手法では再利用できないため効果が得られないことが問題になっており、本発明ではその問題を解決し、過去に作成していないシーケンス図を自動生成することを目的とする。
【００１６】
そのために、本発明では、図６に示すように、事前に行う［抽象概念の定義］と、抽象概念と情報との［関連付け作業時の表記］と、これらに基づくシーケンス図の［生成］という３つのルールを追加する。
【００１７】
以下、［抽象概念の定義］、［関連付け作業時の表記］及び［生成］の３つのルールについて説明する。
【００１８】
１．シーケンス図のメッセージのメッセージ名（動作名）、送信元（動作を行う主体）、送信先（動作対象）を決定するために、抽象概念にメッセージ名、送信元、送信先の属性を追加する：
本発明では、図７に示すように、抽象概念にメッセージ名、送信元、送信先を属性として追加する。これらの属性の追加により、図８に示すようにシーケンス図のメッセージ名、送信元、送信先が決定される。図７を表現するには、「メッセージ名」、「送信元」、「送信先」の属性をそれぞれ表すタグ「<message-name>，</message-name>」、「<sender>，</sender>」、「<receiver>，</receiver>」を含む以下の形式を用いて、例えば「抽象概念１」が生成するメッセージのメッセージ名が「メッセージ１」、送信元が「オブジェクト１」、送信先が「オブジェクト２」であることを示し、これを［抽象概念の定義１］と呼ぶ。
［抽象概念の定義１］
<abstract-concept name=“抽象概念１”>
<message-name>メッセージ１</message-name>
<sender>オブジェクト１</sender>
<receiver>オブジェクト２</receiver>
</abstract-concept>
そして、『抽象概念に含まれる「メッセージ名」及び当該抽象概念に関連付けられた「情報」からなり、抽象概念に含まれる「送信元」から「送信先」へのメッセージを生成する』を［生成１］のルールとする。
【００１９】
２．シーケンス図のメッセージの順序を決定するために、抽象概念間に順序付けを行う：
非特許文献１の手法では、過去に作成したシーケンス図によってメッセージの順序が規定されていた。本発明では、図９に示すように各抽象概念同士の間で順序付けを行う。このように順序付けを行うことにより、図１０に示すようなシーケンス図の順序が決定される。図９を表現するためには、「１つ前の抽象概念」の属性を表すタグ「<next-to>，</next-to>」を含む以下の形式を用いて、例えば「抽象概念１」の次に「抽象概念２」という順序を示し、これを［抽象概念の定義２］と呼ぶ。
［抽象概念の定義２］
<abstract-concept name=“抽象概念２”>
<next-to>抽象概念１</next-to>
</abstract-concept>
そして、『抽象概念が「１つ前の抽象概念」の属性を含む場合、抽象概念に含まれる「１つ前の抽象概念」のメッセージの後に、当該抽象概念のメッセージを生成する』を［生成２］のルールとする。
【００２０】
３．抽象概念に情報が関連付けられない場合にメッセージを生成しないようにする：
本発明では、不必要なメッセージを生成しないようにするために、図１１に示すように抽象概念２が情報と全く関連付けられない場合にはその抽象概念に対応付けられているメッセージを生成しないことにする。例えば、「抽象概念２」にメッセージ名、送信元、送信先の属性「メッセージ２，オブジェクト２，オブジェクト１」が含まれている場合、このルールがなければ引数無しの「メッセージ２（）」というメッセージが生成されるが、図１２に示すようにこのルールを適用してメッセージ２は生成しない。関連付け作業時には、以下のように「抽象概念２」に何も関連付けないことにより、これを実現する。
［関連付け作業時の表記］
<target-diagram name=“シーケンス図１”>
<abstract-concept name=“抽象概念１”>
<related-to>情報１</related-to>
<related-to>情報２</related-to>
</abstract-concept>
<abstract-concept name=“抽象概念２”>
（←関連付けられる情報が存在しない）
</abstract-concept>
</target-diagram>
そして、『抽象概念に「情報」が全く関連付けられていない場合、当該抽象概念のメッセージを生成しない』を［生成３］のルールとする。
【００２１】
４．複数の抽象概念間の制約関係を設け、制約を満たさない場合は全てのメッセージの生成を禁止する：
本発明では、図１３に示すような抽象概念３と抽象概念４に対して、「両方の抽象概念に情報が関連付けられなければならない」という制約を導入し、この制約が満たされるように情報と関連付けされていない場合は、これらの抽象概念に対応する全てのメッセージの生成を禁止した。図１３を表現するためには、「複数の抽象概念間に制約関係が設定されている」ことを表すタグ「<bind>，</bind>」を含む以下の形式を用いて、例えば「抽象概念３」と「抽象概念４」を結びつけ、これを［抽象概念の定義３］と呼ぶ。
［抽象概念の定義３］
<bind>
<abstract-concept>抽象概念３</abstract-concept>
<abstract-concept>抽象概念４</abstract-concept>
</bind>
もし、関連付け作業時に以下のように「抽象概念３」に［情報１］が関連付けられ、「抽象概念４」に情報が関連付けられないとすると、［抽象概念の定義３］で表現した制約を満たすことができないため、前述した［生成３］のルールによって「抽象概念４」に対応するメッセージのみを生成しないのではなく、「抽象概念３」に対応するメッセージも生成しない。
［関連付け作業時の表記］
<target-diagram name=“シーケンス図１”>
<abstract-concept name=“抽象概念３”>
<related-to>情報１</related-to>
</abstract-concept>
<abstract-concept name=“抽象概念４”>
（←関連付けられる情報が存在しない）
</abstract-concept>
</target-diagram>
そして、『複数の抽象概念間の制約関係が設定され、それらの抽象概念のうち「情報」が全く関連付けられていない抽象概念が一つでもある場合、当該複数の抽象概念のメッセージを全て生成しない』を［生成４］のルールとする。
【００２２】
５． 同じメッセージが繰り返すシーケンス図の記述を可能にする：
本発明では、図１４に示すように同一のメッセージ１が繰り返すシーケンス図の記述を可能にする。繰り返しのメッセージを作成するためには、図１５に示すように「抽象概念１」が繰り返し可能であることを、まず抽象概念の定義において示す。これを「繰り返し」の属性を表すタグ「<iterate>true</iterate>」を含む以下の形式で表し、［抽象概念の定義４］と呼ぶ。
［抽象概念の定義４］
<abstract-concept name=“抽象概念１”>
<iterate>true</iterate>
</abstract-concept>
次に、関連付け作業において、以下のように情報を関連付けする際にｉｄを付与することで、繰り返しメッセージを作成する。同じｉｄを付与された情報が一つのメッセージを構成し、付与されたｉｄの順序でメッセージを繰り返すことを表現している。ここでは、情報１がｉｄ＝１で一つのメッセージになり、情報２，３がｉｄ＝２で別のメッセージになる。
［関連付け作業時の表記］
<target-diagram name=“シーケンス図１”>
<abstract-concept name=“抽象概念１”>
<related-to id=1>情報１</related-to>
<related-to id=2>情報２</related-to>
<related-to id=2>情報３</related-to>
</abstract-concept>
</target-diagram>
そして、『抽象概念が「繰り返し」の属性を含む場合、抽象概念に含まれる「メッセージ名」及び当該抽象概念に関連付けられた「一のｉｄに対応する情報」からなり、抽象概念に含まれる「送信元」から「送信先」へのメッセージを、前記情報のｉｄ毎に繰り返し生成する』を［生成５］のルールとする。
【００２３】
６．複数のメッセージがまとまって繰り返すシーケンス図の記述を可能にする：
本発明では、図１６に示すように、メッセージ１とメッセージ２のような複数のメッセージがまとまって繰り返すシーケンス図の記述を可能にする。図１７に示すように、抽象概念１に情報１，２，４が対応づけられ、抽象概念２に情報３，５が対応づけられているとする。繰り返しメッセージを作成するためには、抽象概念の定義において図１７のように「抽象概念１」が「抽象概念２」とまとまりになって、繰り返すことを示す。これを「繰り返し」の属性を表すタグ「<iterate>true</iterate>」及び「繰り返しの単位が２以上の抽象概念に及ぶ」ことの属性を表すタグ「<iterate-group>，</iterate-group>」を含む以下の形式で、繰り返し可能であることと、複数のメッセージがまとまりになる対象を明記する。
［抽象概念の定義５］
<abstract-concept name=“抽象概念１”>
<iterate>true
<iterate-group>抽象概念２</iterate-group>
</iterate>
</abstract-concept>
<abstract-concept name=“抽象概念２”>
<next-to>抽象概念１</next-to>
</abstract-concept>
次に、関連付け作業において、情報を関連付けする際にｉｄを付与する。このとき、同じｉｄが付与された情報をそれぞれ含む複数のメッセージをまとめて生成し、付与されたｉｄの順序で複数のメッセージをまとまって繰り返すシーケンス図を作成する。ここでは、情報１，２，３がｉｄ＝１でひとつのまとまりのメッセージになり、情報４，５がｉｄ＝２で別のまとまりとなる。
［関連付け作業時の表記］
<target-diagram name=“シーケンス図１”>
<abstract-concept name=“抽象概念１”>
<related-to id=1>情報１</related-to>
<related-to id=1>情報２</related-to>
<related-to id=2>情報４</related-to>
</abstract-concept>
<abstract-concept name=“抽象概念２”>
<related-to id=1>情報３</related-to>
<related-to id=2>情報５</related-to>
</abstract-concept>
</target-diagram>
そして、『抽象概念が「繰り返し」の属性及び「繰り返しの単位が２以上の抽象概念に及ぶ」ことの属性を含む場合、各抽象概念に含まれる「メッセージ名」及び当該各抽象概念に関連付けられた「一のｉｄに対応する情報」からなり、各抽象概念に含まれる「送信元」から「送信先」への複数のまとまりのメッセージを、前記情報のｉｄ毎に繰り返し生成する』を［生成６］のルールとする。
【００２４】
７．特定の複数の抽象概念が存在するという条件を満たすときにメッセージを追加できるようにする：
図１８、図１９に示すように、抽象概念３と４に対応する情報が存在したとき、それぞれのメッセージを生成するだけではなく、新たな抽象概念Ａと、それに対応するメッセージをシーケンス図に追加できるようにした。図１８を表現するためには、「メッセージを追加する」ことを表すタグ「<create-message>，</create-message>」及び「追加する抽象概念」の属性を表すタグ「<create>，</create>」を含む以下の形式で作成するメッセージを示し、これを［抽象概念の定義６］と呼ぶ。
［抽象概念の定義６］
<create-message>
<abstract-concept>抽象概念３</abstract-concept>
<abstract-concept>抽象概念４</abstract-concept>
<create>
<abstract-concept name=”抽象概念Ａ”>
<message-name>メッセージＡ</message-name>
<sender>オブジェクト１</sender>
<receiver>オブジェクト２</receiver>
<next-to>抽象概念４</next-to>
</abstract-concept>
</create>
</create-message>
そして、『メッセージの追加が設定され、当該メッセージの追加に関わる特定の複数の抽象概念の全てに情報が関連付けられている場合、追加する抽象概念に含まれる「メッセージ名」及び当該追加する抽象概念に関連付けられた「情報」からなり、追加する抽象概念に含まれる「送信元」から「送信先」へのメッセージを追加・生成する』を［生成７］のルールとする。
【００２５】
以上のように［抽象概念の定義］、［関連付け作業時の表記］及び［生成］の３つのルールを追加することにより、作成できるシーケンス図の自由度が増し、過去に作成していないシーケンス図であっても、自動的に生成できるようになる。
【発明の効果】
【００２６】
本発明によれば、ソフトウェアの動作を含んだ仕様書／設計書を作成する際に、抽象概念からシーケンス図等のソフトウェアの動作に関する文書や図を自動的に生成できるように抽象概念を定義しておくことで、抽象概念とソフトウェアが管理する情報を関連付けするだけで、多様なソフトウェアの動作に関する文書や図を生成できるようになり、仕様書／設計書を作成する時間やコストを削減することができる。
【発明を実施するための最良の形態】
【００２７】
図２０は本発明の実施の形態にかかるソフトウェア仕様書／設計書作成装置、ここでは周知のコンピュータ上に実現したシーケンス図作成装置を示すもので、コンピュータにおけるハードディスク等の記憶装置によって実現される抽象概念保存部１及びＵＭＬモデル保存部２と、コンピュータにおけるＣＰＵ、メモリ等とともに記録媒体に記録されて提供されあるいは通信回線を介して伝送されて提供されコンピュータにおけるハードディスク等の記憶装置にインストールされた所定のプログラムによって実現される抽象概念登録部３、クラス図作成部４、抽象概念操作部５及びシーケンス図作成部６と、コンピュータにおける入力部７及び表示部８とからなっている。
【００２８】
抽象概念保存部１は、抽象概念登録部３によって作成された、ソフトウェアに含まれる各種の動作に対応する抽象概念の定義情報を保存する。
【００２９】
ＵＭＬモデル保存部２は、クラス図作成部４によって作成された、ソフトウェアが管理する情報を記述したクラス図を保存する。
【００３０】
抽象概念登録部３は、別途記憶した前記［抽象概念の定義１］〜［抽象概念の定義６］のルールに従い、入力部７から入力された操作に基づいて前記抽象概念の定義情報を作成する。
【００３１】
クラス図作成部４は、入力部７から入力された操作に基づいて開発しようとするソフトウェアのクラス図を作成する。
【００３２】
抽象概念操作部５は、抽象概念保存部１から保存済みの抽象概念を読み出すとともにＵＭＬモデル保存部２から保存済みの開発しようとするソフトウェアのクラス図を読み出して表示部８に表示し、別途記憶した前記［関連付け作業時の表記］のルールに従い、入力部７から入力された操作に基づいて抽象概念にクラス図中の情報を関連付けする。
【００３３】
シーケンス図生成部６は、別途記憶した前記［生成１］〜［生成７］のルールに従い、抽象概念操作部５によって関連付けされた結果と、抽象概念保存部１に保存された抽象概念の定義情報とから自動的にシーケンス図を生成する。
【００３４】
入力部７は、キーボード、マウス等からなり、オペレータ（ユーザ）が抽象概念登録部３、クラス図作成部４及び抽象概念操作部５に情報や操作を入力するためのものである。表示部８は、液晶ディスプレイ、ＣＲＴ等の画像表示装置からなり、抽象概念登録部３、クラス図作成部４、抽象概念操作部５及びシーケンス図作成部６における処理結果をオペレータに提示するためのものである。
【００３５】
図２１は本発明装置全体の処理動作の概要を示すもので、抽象概念登録部３により、入力部７から入力された操作に基づいてソフトウェアに含まれる各種の動作に対応する抽象概念の定義情報を作成し、抽象概念保存部１に保存する処理（抽象概念定義処理：ｓ１）と、クラス図作成部４により、入力部７から入力された操作に基づいて開発しようとするソフトウェアのクラス図を作成し、ＵＭＬ保存部２に保存する処理（クラス図作成処理：ｓ２）と、抽象概念操作部５により、抽象概念保存部１から保存済みの抽象概念を読み出すとともに、ＵＭＬ保存部２から保存済みの開発しようとするソフトウェアのクラス図を読み出して表示部８に表示し、入力部７から入力された操作に基づいて抽象概念にクラス図中の管理情報を関連付けする処理（関連付け処理：ｓ３）と、シーケンス図作成部６により、関連付けされた結果と、抽象概念保存部１に保存された抽象概念の定義情報とから自動的にシーケンス図を自動的に生成する処理（シーケンス図生成処理：ｓ４）とを含む。
【００３６】
前述した動作処理のうち、人手による作業を必要とするのは、抽象概念定義処理、クラス図作成処理及び関連付け処理の３つであるが、このうち、抽象概念定義処理はソフトウェアを開発する毎に行う必要はなく、事前に一度行えば十分である。
【００３７】
図２１の手順を、複数のソフトウェア（ソフトウェアＡ，Ｂ，Ｃ）を開発する場合を考えると、図２２に示すようになる。開発前に事前に抽象概念の定義情報を作成し保存しておき、それぞれのソフトウェアを開発する際には、それぞれのクラス図を作成し、同じ抽象概念の定義情報を用いて関連付けを行い、それぞれのソフトウェアに合わせたシーケンス図を自動的に生成する。
【００３８】
以下、具体的なシーケンス図の作成、ここでは装置管理を目的としたソフトウェアにおける、一つの「装置を登録する」機能を表現するシーケンス図の作成を例にとって、本発明の装置の詳細な構成及びその動作を説明する。
【００３９】
始めに、抽象概念登録部３により、図２３に示す処理の流れ図に従って抽象概念の定義情報を作成し、抽象概念保存部１に保存する。
【００４０】
即ち、入力部７及び表示部８を用い、入力部７からの操作を受け付け（ｓ１１）、図２４に示すような、装置管理を目的としたソフトウェアを開発するための抽象概念の定義情報を作成するための図面（定義図面）を作成し（ｓ１２）、当該図面の一部が別途記憶した前記［抽象概念の定義１］〜［抽象概念の定義６］のルールと一致するか否かを調べる（ｓ１３）。
【００４１】
ここで、定義図面の一部が［抽象概念の定義１］のルールと一致するとは、図７に示した図形と一致する図形があるかどうかということであり、ある場合は当該図形部分に対応する、前述した「メッセージ名」、「送信元」、「送信先」の属性をそれぞれ表すタグ「<message-name>，</message-name>」、「<sender>，</sender>」、「<receiver>，</receiver>」を含むＸＭＬ形式の定義情報（ファイル）を生成する（ｓ１４）。
【００４２】
例えば、図２４中の一点鎖線で示した［抽象概念の定義１］のルールと一致する図形部分に対応するＸＭＬファイルは、
<abstract-concept name=“登録開始”>
<message-name>登録を開始する</message-name>
<sender>クライアント</sender>
<receiver>サーバ</receiver>
</abstract-concept>
となる。
【００４３】
また、定義図面の一部が［抽象概念の定義２］のルールと一致するとは、図９に示した図形と一致する図形があるかどうかということであり、ある場合は当該図形部分に対応する、前述した「１つ前の抽象概念」の属性を表すタグ「<next-to>，</next-to>」を含むＸＭＬ形式の定義情報（ファイル）を生成する（ｓ１５）。
【００４４】
例えば、図２４中の一点鎖線で示した［抽象概念の定義２］のルールと一致する図形部分に対応するＸＭＬファイルは、
<abstract-concept name=“ＤＢ検索”>
<next-to>登録開始</next-to>
</abstract-concept>
となる。
【００４５】
また、定義図面の一部が［抽象概念の定義３］のルールと一致するとは、図１３に示した図形（但し、図１３中の「情報」及び「情報と抽象概念との結合部分」は除く。）と一致する図形があるかどうかということであり、ある場合は当該図形部分に対応する、前述した「複数の抽象概念間に制約関係が設定されている」ことを表すタグ「<bind>，</bind>」を含むＸＭＬ形式の定義情報（ファイル）を生成する（ｓ１６）。
【００４６】
例えば、図２４中の一点鎖線で示した［抽象概念の定義３］のルールと一致する図形部分に対応するＸＭＬファイルは、
<bind>
<abstract-concept>ＤＢ検索</abstract-concept>
<abstract-concept>送信</abstract-concept>
</bind>
となる。
【００４７】
また、定義図面の一部が［抽象概念の定義４］のルールと一致するとは、図１５に示した図形（但し、図１５中の「情報」及び「情報と抽象概念との結合部分」は除く。）と一致する図形があるかどうかということであり、ある場合は当該図形部分に対応する、前述した「繰り返し」の属性を表すタグ「<iterate>true</iterate>」を含むＸＭＬ形式の定義情報（ファイル）を生成する（ｓ１７）。
【００４８】
例えば、図２４中の一点鎖線で示した［抽象概念の定義４］のルールと一致する図形部分に対応するＸＭＬファイルは、
<abstract-concept name=“ＤＢ検索”>
<iterate>true
</iterate>
</abstract-concept>
となる。
【００４９】
また、定義図面の一部が［抽象概念の定義５］のルールと一致するとは、図１７に示した図形（但し、図１７中の「情報」及び「情報と抽象概念との結合部分」は除く。）と一致する図形があるかどうかということであり、ある場合は当該図形部分に対応する、前述した「繰り返し」の属性を表すタグ「<iterate>true</iterate>」及び「繰り返しの単位が２以上の抽象概念に及ぶ」ことの属性を表すタグ「<iterate-group>，</iterate-group>」を含むＸＭＬ形式の定義情報（ファイル）を生成する（ｓ１８）。
【００５０】
例えば、図２４中の一点鎖線で示した［抽象概念の定義５］のルールと一致する図形部分に対応するＸＭＬファイルは、
<abstract-concept name=“ＤＢ検索”>
<iterate>true
<iterate-group>送信</iterate-group>
</iterate>
</abstract-concept>
となる。
【００５１】
また、定義図面の一部が［抽象概念の定義６］のルールと一致するとは、図１８に示した図形（但し、図１８中の「情報」及び「情報と抽象概念との結合部分」は除く。）と一致する図形があるかどうかということであり、ある場合は当該図形部分に対応する、前述した「メッセージを追加する」ことを表すタグ「<create-message>，</create-message>」及び「追加する抽象概念」の属性を表すタグ「<create>，</create>」を含むＸＭＬ形式の定義情報（ファイル）を生成する（ｓ１９）。
【００５２】
例えば、図２４中の一点鎖線で示した［抽象概念の定義６］のルールと一致する図形部分に対応するＸＭＬファイルは、
<create-message>
<abstract-concept>保存</abstract-concept>
<abstract-concept>通知</abstract-concept>
<create>
<abstract-concept name=”確認”>
<message-name>保存結果を確認する</message-name>
<sender>サーバ</sender>
<receiver>サーバ</receiver>
<next-to>通知</next-to>
</abstract-concept>
</create>
</create-message>
となる。
【００５３】
このようにして［抽象概念の定義１］〜［抽象概念の定義６］のルールと一致する定義図面中の全ての部分についてＸＭＬ形式のファイルの生成を行い（ｓ２０）、生成したＸＭＬファイルを抽象概念保存部１へ保存する（ｓ２１）。
【００５４】
図２４の定義図面に対応する抽象概念の定義情報を示すＸＭＬファイルは、以下に示すように
<abstract-concept name=“登録開始”>
<message-name>登録を開始する</message-name>
<sender>クライアント</sender>
<receiver>サーバ</receiver>
</abstract-concept>
<abstract-concept name=“ＤＢ検索”>
<message-name>検索する</message-name>
<sender>サーバ</sender>
<receiver>ＤＢ</receiver>
<next-to>登録開始</next-to>
<iterate>true
<iterate-group>送信</iterate-group>
</iterate>
</abstract-concept>
<abstract-concept name=“送信”>
<message-name>送信する</message-name>
<sender>ＤＢ</sender>
<receiver>サーバ</receiver>
<next-to>ＤＢ検索</next-to>
</abstract-concept>
<abstract-concept name=“保存”>
<message-name>保存する</message-name>
<sender>サーバ</sender>
<receiver>ＤＢ</receiver>
<next-to>送信</next-to>
</abstract-concept>
<abstract-concept name=“通知”>
<message-name>通知する</message-name>
<sender>ＤＢ</sender>
<receiver>サーバ</receiver>
<next-to>保存</next-to>
</abstract-concept>
<create-message>
<abstract-concept>保存</abstract-concept>
<abstract-concept>通知</abstract-concept>
<create>
<abstract-concept name=”確認”>
<message-name>保存結果を確認する</message-name>
<sender>サーバ</sender>
<receiver>サーバ</receiver>
<next-to>通知</next-to>
</abstract-concept>
</create>
</create-message>
<bind>
<abstract-concept>ＤＢ検索</abstract-concept>
<abstract-concept>送信</abstract-concept>
</bind>
となる。
【００５５】
また、この「装置管理を目的としたソフトウェアを開発するための抽象概念の定義情報」を示すＸＭＬファイルのみから、つまり抽象概念に情報を関連付ける前の状態でシーケンス図を生成すると、図２５に示すようになる。
【００５６】
次に、クラス図作成部４により、図２６に示す処理の流れ図に従ってクラス図を作成し、ＵＭＬ保存部２に保存する。
【００５７】
即ち、入力部７及び表示部８を用い、入力部７からの操作を受け付け（ｓ３１）、図２７に示すような、開発しようとするソフトウェアのクラス図を作成し（ｓ３２）、作成したＵＭＬ言語によるクラス図をＵＭＬモデル保存部２に保存する（ｓ３３）。
【００５８】
次に、抽象概念操作部５により、図２８に示す処理の流れ図に従って抽象概念にクラス図中の情報を関連付けし、シーケンス図作成部へ渡す。
【００５９】
即ち、ＵＭＬモデル保存部２から保存済みのクラス図を読み出し、表示部８に表示し（ｓ４１）、同様に抽象概念保存部１から保存済みの抽象概念を読み出し、表示部８に表示し（ｓ４２）、入力部７からのクラス図と抽象概念との関連付け操作を受け付け（ｓ４３）、図２９乃至図３２に示すような、クラス図と抽象概念とを関連付けた図（抽象概念付クラス図）を作成し（ｓ４４）、該作成した図をＸＭＬ形式に変換し（ｓ４５）、変換したＸＭＬファイルをシーケンス図作成部６に渡す（ｓ４６）。
【００６０】
ここで、図２９は抽象概念「登録開始」に対して「装置タイプ」、「装置Ｎｏ」及び「ＩＰアドレス」という情報を関連付けする図を示しており、「登録を開始する」というメッセージの生成に用いられる。この図に対応するＸＭＬファイルは、
<target-diagram name=“「装置を登録する」シーケンス図”>
<abstract-concept name=“登録開始”>
<related-to>装置タイプ</related-to>
<related-to>装置Ｎｏ</related-to>
<related-to>ＩＰアドレス</related-to>
</abstract-concept>
</target-diagram>
となる。
【００６１】
また、図３０は抽象概念「ＤＢ検索」に対して「装置Ｎｏ」及び「ＩＰアドレス」という情報を関連付けするとともに「装置Ｎｏ」にはｉｄ＝１、「ＩＰアドレス」にはｉｄ＝２を付与し、また、抽象概念「送信」に対して「装置タイプ」及び「装置Ｎｏ」という情報を関連付けするとともに「装置タイプ」にはｉｄ＝１、「装置Ｎｏ」にはｉｄ＝２を付与する図を示しており、それぞれが「検索する」「送信する」というまとまりのメッセージの生成に用いられる。この図に対応するＸＭＬファイルは、
<target-diagram name=“「装置を登録する」シーケンス図”>
<abstract-concept name=“ＤＢ検索”>
<related-to id=1>装置Ｎｏ</related-to>
<related-to id=2>ＩＰアドレス</related-to>
</abstract-concept>
<abstract-concept name=“送信”>
<related-to id=1>装置タイプ</related-to>
<related-to id=2>装置Ｎｏ</related-to>
</abstract-concept>
</target-diagram>
となる。
【００６２】
また、図３１は抽象概念「保存」に対して「装置タイプ」、「装置Ｎｏ」及び「ＩＰアドレス」という情報を関連付けする図を示しており、「ＤＢに保存する」というメッセージの生成に用いられる。この図に対応するＸＭＬファイルは、
<target-diagram name=“「装置を登録する」シーケンス図”>
<abstract-concept name=“保存”>
<related-to>装置タイプ</related-to>
<related-to>装置Ｎｏ</related-to>
<related-to>ＩＰアドレス</related-to>
</abstract-concept>
</target-diagram>
となる。
【００６３】
また、図３２は抽象概念「通知」に対して何も情報を関連付けしない図を示しており、「通知する」というメッセージを生成しないことに用いられる。この図に対応するＸＭＬファイルは、
<target-diagram name=“「装置を登録する」シーケンス図”>
<abstract-concept name=“通知”>
（←関連付けられる情報が存在しない）
</abstract-concept>
</target-diagram>
となる。
【００６４】
最後に、シーケンス図生成部６により、図３３に示す処理の流れ図に従ってシーケンス図を自動的に生成する。
【００６５】
即ち、抽象概念操作部５よりクラス図と抽象概念とを関連付けたＸＭＬファイルを受け取り（ｓ５１）、抽象概念保存部１に保存された抽象概念の定義情報のＸＭＬファイルとともに当該ＸＭＬファイルが別途記憶した前記［生成１］〜［生成７］のルールと一致するか否かを調べる（ｓ５２）。
【００６６】
ここで、ＸＭＬファイルが［生成１］のルールと一致するとは、抽象概念にクラス図（の情報）が関連付けられているということであり、この場合は、その抽象概念の定義情報に含まれる「メッセージ名」及び当該抽象概念に関連付けられた「（クラス図の）情報」からなり、抽象概念の定義情報に含まれる「送信元」から「送信先」へのメッセージを生成する（ｓ５３）。例えば、図２９に示した関連付けに対応するＸＭＬファイルに基づき、「クライアント」から「サーバ」への「登録を開始する（装置タイプ，装置Ｎｏ．，ＩＰアドレス）」というメッセージを生成する。
【００６７】
また、ＸＭＬファイルが［生成２］のルールと一致するとは、抽象概念の定義情報が「１つ前の抽象概念」の属性を含むということであり、この場合は、その抽象概念の定義情報に含まれる「１つ前の抽象概念」のメッセージの後に、当該抽象概念のメッセージを生成する（ｓ５４）。例えば、図２４中の一点鎖線で示した［抽象概念の定義２］のルールと一致する図形部分に対応するＸＭＬファイルに基づき、「登録を開始する（装置タイプ，装置Ｎｏ．，ＩＰアドレス）」というメッセージの次に「送信する（装置Ｎｏ．）」というメッセージを生成する。
【００６８】
また、ＸＭＬファイルが［生成３］のルールと一致するとは、抽象概念にクラス図（の情報）が全く関連付けられていないということであり、この場合は、その抽象概念の定義情報に含まれる「メッセージ名」からなり、抽象概念の定義情報に含まれる「送信元」から「送信先」へのメッセージを生成しない（ｓ５５）。例えば、図３２に示した関連付けに対応するＸＭＬファイルに基づき、「ＤＢ」から「サーバ」への「保存結果を通知する（通知）」というメッセージを生成しない。
【００６９】
また、ＸＭＬファイルが［生成４］のルールと一致するとは、抽象概念の定義情報に複数の抽象概念間の制約関係が設定され、これらの複数の抽象概念のうちクラス図（の情報）が全く関連付けられていない抽象概念が少なくとも一つ存在するということであり、この場合は、制約関係が設定された複数の抽象概念のメッセージを全て生成しない（ｓ５６）。
【００７０】
例えば、図２４中の一点鎖線で示した［抽象概念の定義３］のルールと一致する図形部分に対応するＸＭＬファイル及び図３０に示した関連付けに対応するＸＭＬファイルに基づき、この場合は制約関係にある抽象概念「ＤＢ検索」と「送信」の両方にクラス図（の情報）が関連付けられているため、［生成４］のルールとは一致せず、各メッセージを生成する。
【００７１】
また、ＸＭＬファイルが［生成５］のルールと一致するとは、抽象概念の定義情報が「繰り返し」の属性を含むということであり、この場合は、その抽象概念の定義情報に含まれる「メッセージ名」及び当該抽象概念に関連付けられた「（クラス図の）一のｉｄに対応する情報」からなり、抽象概念の定義情報に含まれる「送信元」から「送信先」へのメッセージを、前記情報のｉｄ毎に繰り返し生成する（ｓ５７）。
【００７２】
また、ＸＭＬファイルが［生成６］のルールと一致するとは、抽象概念の定義情報が「繰り返し」の属性及び「繰り返しの単位が２以上の抽象概念に及ぶ」ことの属性を含むということであり、この場合は、各抽象概念の定義情報に含まれる「メッセージ名」及び当該各抽象概念に関連付けられた「（クラス図の）一のｉｄに対応する情報」からなり、各抽象概念の定義情報に含まれる「送信元」から「送信先」への複数のまとまりのメッセージを、前記情報のｉｄ毎に繰り返し生成する（ｓ５８）。
【００７３】
例えば、図２４中の一点鎖線で示した［抽象概念の定義４］並びに［抽象概念の定義５］のルールと一致する図形部分に対応するＸＭＬファイル及び図３０に示した関連付けに対応するＸＭＬファイルに基づき、「サーバ」から「ＤＢ」への「検索する（装置Ｎｏ．）」というメッセージ及び「ＤＢ」から「サーバ」への「送信する（装置タイプ）」というメッセージの組と、「サーバ」から「ＤＢ」への「検索する（ＩＰアドレス）」というメッセージ及び「ＤＢ」から「サーバ」への「送信する（装置Ｎｏ．）」というメッセージの組とを生成する。
【００７４】
また、ＸＭＬファイルが［生成７］のルールと一致するとは、抽象概念の定義情報にメッセージの追加が設定され、当該メッセージの追加に関わる特定の複数の抽象概念の全てにクラス図（の情報）が関連付けられているということであり、この場合は、追加する抽象概念の定義情報に含まれる「メッセージ名」及び当該追加する抽象概念に関連付けられた「（クラス図の）情報」からなり、追加する抽象概念の定義情報に含まれる「送信元」から「送信先」へのメッセージを追加・生成する（ｓ５９）。
【００７５】
例えば、図２４中の一点鎖線で示した［抽象概念の定義６］のルールと一致する図形部分に対応するＸＭＬファイル及び図３１、図３２に示した関連付けに対応するＸＭＬファイルに基づき、この場合は特定の制約関係にある抽象概念「保存」と「通知」の両方にクラス図（の情報）が関連付けられていないため、追加の抽象概念「確認」に対応するメッセージを生成しない。
【００７６】
このようにして［生成１］〜［生成７］のルールと一致するＸＭＬファイルの全ての部分についてメッセージを作成してシーケンス図を生成し（ｓ６０）、出力する（ｓ６１）、例えば表示部８に表示する。生成された「装置を登録する」シーケンス図を図３４に示す。
【図面の簡単な説明】
【００７７】
【図１】シーケンス図の一例を示す図
【図２】クラス図の一例を示す図
【図３】抽象概念付シーケンス図の一例を示す図
【図４】抽象概念付クラス図の一例を示す図
【図５】抽象概念を利用して作成されたシーケンス図の一例を示す図
【図６】本発明で追加したルールを説明する図
【図７】抽象概念の定義１の説明図
【図８】生成ルール１により生成されるメッセージの説明図
【図９】抽象概念の定義２の説明図
【図１０】生成ルール２により生成されるメッセージの説明図
【図１１】生成ルール３の説明図
【図１２】生成ルール３により生成されるメッセージの説明図
【図１３】抽象概念の定義３の説明図
【図１４】生成ルール５により生成されるメッセージの説明図
【図１５】抽象概念の定義４の説明図
【図１６】生成ルール６により生成されるメッセージの説明図
【図１７】抽象概念の定義５の説明図
【図１８】抽象概念の定義６の説明図
【図１９】生成ルール７により生成されるメッセージの説明図
【図２０】本発明の実施の形態にかかるソフトウェア仕様書／設計書作成装置の構成図
【図２１】本発明装置全体の処理の概要を示す流れ図
【図２２】複数のソフトウェアを開発する場合の手順を示す図
【図２３】抽象概念定義処理の詳細な流れ図
【図２４】抽象概念の定義情報を作成するための図
【図２５】抽象概念の定義情報のみから生成したシーケンス図の一例を示す図
【図２６】クラス図作成処理の詳細な流れ図
【図２７】クラス図の一例を示す図
【図２８】関連付け処理の詳細な流れ図
【図２９】抽象概念付クラス図の一例を示す図
【図３０】抽象概念付クラス図の一例を示す図
【図３１】抽象概念付クラス図の一例を示す図
【図３２】抽象概念付クラス図の一例を示す図
【図３３】シーケンス図作成処理の詳細な流れ図
【図３４】本発明により作成したシーケンス図の一例を示す図
【符号の説明】
【００７８】
１：抽象概念保存部、２：ＵＭＬモデル保存部、３：抽象概念登録部、４：クラス図作成部、５：抽象概念操作部、６：シーケンス図作成部６、７：入力部、８：表示部。
【図１】
2008059275.tif 000003
【図２】
2008059275.tif 000004
【図３】
2008059275.tif 000005
【図４】
2008059275.tif 000006
【図５】
2008059275.tif 000007
【図６】
2008059275.tif 000008
【図７】
2008059275.tif 000009
【図８】
2008059275.tif 000010
【図９】
2008059275.tif 000011
【図１０】
2008059275.tif 000012
【図１１】
2008059275.tif 000013
【図１２】
2008059275.tif 000014
【図１３】
2008059275.tif 000015
【図１４】
2008059275.tif 000016
【図１５】
2008059275.tif 000017
【図１６】
2008059275.tif 000018
【図１７】
2008059275.tif 000019
【図１８】
2008059275.tif 000020
【図１９】
2008059275.tif 000021
【図２０】
2008059275.tif 000022
【図２１】
2008059275.tif 000023
【図２２】
2008059275.tif 000024
【図２３】
2008059275.tif 000025
【図２４】
2008059275.tif 000026
【図２５】
2008059275.tif 000027
【図２６】
2008059275.tif 000028
【図２７】
2008059275.tif 000029
【図２８】
2008059275.tif 000030
【図２９】
2008059275.tif 000031
【図３０】
2008059275.tif 000032
【図３１】
2008059275.tif 000033
【図３２】
2008059275.tif 000034
【図３３】
2008059275.tif 000035
【図３４】
2008059275.tif 000036