(57)【要約】【課題】一旦作成されたクラス図を見直す際に、最適なデザインパターンによるクラス図の設計を支援する、クラス図変換装置およびクラス図変換プログラムを提供する。【解決手段】クラス図変換装置１は、クラス図を構成するパターンを特定するためのパターン判定ロジック、および、変換可能なパターンの組合せを示す変換パターン情報を記憶する記憶手段（記憶部４０）と、変換前のクラス図情報を取得して表示装置２に表示させ、クラス図変換の適用箇所の選択情報を取得し、取得した選択情報に示されるクラス図の適用箇所のパターンを、パターン判定ロジックに基づき特定し、特定したパターンが変換可能なパターンを、変換パターン情報を参照して取得し、表示装置２に表示させる表示処理手段（表示処理部１１）とを備える。【選択図】図１
2014092920.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト指向のソフトウェア開発で利用されるクラス図における、クラスや前記クラス間の接続関係を表す関連の組合せで示される構造のパターンを、現時点のパターンと異なる他のパターンに変換して表示装置に表示させるクラス図変換装置であって、
前記クラス図を構成する、前記クラス、前記クラスの属性および前記クラスの実例を示すオブジェクトを、前記クラス図を変換する際の対等な構成要素とし、
前記クラス図を構成するパターンが、所定のパターン群のうちのどのパターンに該当するかを特定するためのパターン判定ロジック、変換前のパターンと当該変換前のパターンにおいて変換可能な変換後のパターンとの組合せを示す変換パターンが複数格納される変換パターン情報、および、変換前の前記クラス図における、前記クラスや関連の組合せで示される構造のパターンを示すクラス図情報を記憶する記憶手段と、
前記変換前のクラス図情報を取得して前記変換前のクラス図を前記表示装置に表示させ、前記変換前のクラス図の前記クラス、前記属性および前記オブジェクトのうち少なくともいずれか１つが選択された変換対象となる適用箇所を、入力手段を介して取得し、
取得した前記適用箇所に示される前記変換前のクラス図のパターンを、前記パターン判定ロジックに基づき特定し、前記特定したパターンについて変換可能な前記変換パターンを、前記変換パターン情報を参照して決定し、
決定した前記変換可能な変換パターンに示される、前記変換前のパターンと当該変換前のパターンにおいて変換可能な１つ以上の変換後のパターンとを前記表示装置に表示させ、前記１つ以上の変換後のパターンのうちから選択された変換後のパターンの選択情報を、前記入力手段を介して取得し、
前記適用箇所に示される前記変換前のクラス図のパターンを、取得した前記変換後のパターンに変換し、前記表示装置に表示させる表示処理手段と、
を備えることを特徴とするクラス図変換装置。
【請求項２】
前記所定のパターン群には、前記クラス図における、前記クラスの継承関係、集約関係、属性関係、および、前記クラスと当該クラスの実例を示すオブジェクトとの関係であるインスタンス、のいずれかを含むことを特徴とする請求項１に記載のクラス図変換装置。
【請求項３】
コンピュータを、請求項１または請求項２に記載のクラス図変換装置を構成する各手段として機能させるためのクラス図変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向のソフトウェア開発のため作成されたクラス図を、適切な他のクラス図に変換する、クラス図変換装置およびクラス図変換プログラムの技術に関する。
【背景技術】
【０００２】
近年のソフトウェア開発ではオブジェクト指向の開発手法が広く採用されており、特にＪａｖａ（登録商標）を用いた開発では、ＵＭＬ（Unified Modeling Language）（登録商標）によるクラス図を利用することが多い。現在のオブジェクト指向開発の特徴として、ＵＭＬというモデリング言語を、概念モデリング工程から論理モデリング工程、実装する言語がＪａｖａ言語等のオブジェクト指向言語であれば物理モデリング工程まで、一貫して使い続けて開発できることによって、上流工程から下流工程までを通しての仕様書自体の流用性が向上し仕様書作成作業の時間を削減できる。また、上流工程での設計の意図を同じモデリング言語を使うことで下流工程に伝えやすくなること等が知られている。
【０００３】
従来のモデリングと同様、オブジェクト指向に基づくソフトウェア開発においても、モデル化対象に対する構造の捉え方は一般に複数あり得るため、採用する構造の最終的な判断は、設計者が行う必要がある。これに関し、構造化手法等の従来の開発手法とは異なり、オブジェクト指向の開発手法においては、モデル化対象に対する構造（クラスおよびクラス間の関連）の捉え方として、クラスの組合せをパターン化した「デザインパターン」（なお、デザインパターンを複数まとめて提示（カタログ化）したものを、以下「デザインパターンカタログ」という。非特許文献１参照）や、クラスを再設計する方法をカタログ化した「リファクタリングカタログ」が提案されている（非特許文献２参照）。これにより、モデル化対象の構造を従来に比べ決定しやすくなっている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】E. Gamma他、（本位田真一  他訳）、“オブジェクト指向における再利用のためのデザインパターン”、ソフトバンクパブリッシング、東京、1999年10月
【非特許文献２】M. Fowler、(児玉公信, 友野晶夫, 他訳)、“リファクタリング  プログラミングの体質改善テクニック”、ピアソン桐原、東京、2000年
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、オブジェクト指向に基づくソフトウェア開発において、実際に設計者がデザインパターンやリファクタリングカタログを使用したい場合に、現状では、以下に示す問題がある。
・そもそも、デザインパターンやリファクタリングカタログをサポートするツールが充分ではない。
・さらに、既存のデザインパターンやリファクタリングカタログを利用するためには、個々のデザインパターンやリファクタリングに対する高度な知識が必要となるため、利用しにくい。
【０００６】
また、構造化設計のときと同様に、オブジェクト指向に基づくソフトウェア開発においては、下流工程においてモデリング性能等の実装を考慮した構造設計を行う一方で、上流工程のモデリングでは実装方式や実装する言語、ミドルウェア等に依らない抽象的な構造設計を行うため、クラス図で表現される構造が一般に異なってくる。しかし、このように各工程での観点の違いを考慮したクラス図の変換ツールは存在しない。
【０００７】
さらに、実際にクラス設計を行う場合に、モデルの表現方法が複数存在するため、どのデザインパターン（構造）で表現するのが最適かを設計者が迷うことが多い。その場合、設計者は、複数のデザインパターンそれぞれに当てはめ直してクラス図におけるクラスをひとつひとつ手作業で変更して最適なデザインパターンで表現するように試行錯誤する必要があり、非常に大きな労力を有する。
【０００８】
このような背景に鑑みて本発明がなされたのであり、本発明は、一旦作成されたクラス図を見直す際に、最適なデザインパターンによるクラス図の設計を支援する、クラス図変換装置およびクラス図変換プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００９】
前記した課題を解決するため、請求項１に記載の発明は、オブジェクト指向のソフトウェア開発で利用されるクラス図における、クラスや前記クラス間の接続関係を表す関連の組合せで示される構造のパターンを、現時点のパターンと異なる他のパターンに変換して表示装置に表示させるクラス図変換装置であって、前記クラス図を構成する、前記クラス、前記クラスの属性および前記クラスの実例を示すオブジェクトを、前記クラス図を変換する際の対等な構成要素とし、前記クラス図を構成するパターンが、所定のパターン群のうちのどのパターンに該当するかを特定するためのパターン判定ロジック、変換前のパターンと当該変換前のパターンにおいて変換可能な変換後のパターンとの組合せを示す変換パターンが複数格納される変換パターン情報、および、変換前の前記クラス図における、前記クラスや関連の組合せで示される構造のパターンを示すクラス図情報を記憶する記憶手段と、前記変換前のクラス図情報を取得して前記変換前のクラス図を前記表示装置に表示させ、前記変換前のクラス図の前記クラス、前記属性および前記オブジェクトのうち少なくともいずれか１つが選択された変換対象となる適用箇所を、入力手段を介して取得し、取得した前記適用箇所に示される前記変換前のクラス図のパターンを、前記パターン判定ロジックに基づき特定し、前記特定したパターンについて変換可能な前記変換パターンを、前記変換パターン情報を参照して決定し、決定した前記変換可能な変換パターンに示される、前記変換前のパターンと当該変換前のパターンにおいて変換可能な１つ以上の変換後のパターンとを前記表示装置に表示させ、前記１つ以上の変換後のパターンのうちから選択された変換後のパターンの選択情報を、前記入力手段を介して取得し、前記適用箇所に示される前記変換前のクラス図のパターンを、取得した前記変換後のパターンに変換し、前記表示装置に表示させる表示処理手段と、を備えることを特徴とするクラス図変換装置とした。
【００１０】
このようにすることで、クラス図変換装置は、設計者等により選択されたクラス図変換の適用箇所のパターンを、パターン判定ロジックに基づき特定し、その特定したパターンについて変換可能な1つ以上の変換後のパターンを表示装置に表示させる。そして、クラス図変換装置は、適用箇所の選択情報に示される変換前のクラス図を、設計者等により選択された変換後のパターンに変換し、表示装置に表示することができる。
よって、設計者等は、表示装置に表示された１つ以上の変換後のパターンの中から、最適な変換後のパターンを選択することができるため、各パターン（デザインパターン）についての高度な知識を必要とすることがなく、クラス図を変換することが可能となる。
【００１１】
請求項２に記載の発明は、前記所定のパターン群には、前記クラス図における、前記クラスの継承関係、集約関係、属性関係、および、前記クラスと当該クラスの実例を示すオブジェクトとの関係であるインスタンス、のいずれかを含むことを特徴とする請求項１に記載のクラス図変換装置とした。
【００１２】
このようにすることで、オブジェクト指向に基づくソフトウェア開発において、クラス図の設計時に、頻繁に利用され、かつ、複数のパターンで表現できるためどのパターンで表現するのが最適かを判断するのが難しい、継承関係、集約関係、属性関係およびインスタンスについて、変換後のパターンを表示し、設計者等に選択させることができる。
【００１３】
請求項３に記載の発明は、コンピュータを、請求項１または請求項２に記載のクラス図変換装置を構成する各手段として機能させるためのクラス図変換プログラムとした。
【００１４】
このようにすることで、コンピュータを、請求項１または請求項２に記載のクラス図変換装置を構成する各手段として機能させることができる。
【発明の効果】
【００１５】
本発明によれば、一旦作成されたクラス図を見直す際に、最適なデザインパターンによるクラス図の設計を支援する、クラス図変換装置およびクラス図変換プログラムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係るクラス図変換装置の構成例を示す機能ブロック図である。
【図２】本実施形態に係るクラス図変換装置が取り扱う同型表現のパターンを説明するための図である。
【図３】本実施形態に係るクラス図情報データベースに格納されるパターン［１］のクラス図情報の一例を示す図である。
【図４】本実施形態に係るクラス図情報データベースに格納されるパターン［２］のクラス図情報の一例を示す図である。
【図５】本実施形態に係るクラス図情報データベースに格納されるパターン［３］のクラス図情報の一例を示す図である。
【図６】本実施形態に係るクラス図情報データベースに格納されるパターン［４］のクラス図情報の一例を示す図である。
【図７】本実施形態に係るクラス図情報データベースに格納されるパターン［５］のクラス図情報の一例を示す図である。
【図８】本実施形態に係るクラス図情報データベースに格納されるパターン［６］のクラス図情報の一例を示す図である。
【図９】本実施形態に係るクラス図変換装置が取り扱う同型表現の他の例を示す図である。
【図１０】本実施形態に係るクラス図情報データベースに格納されるパターン［５］のクラス図情報の他の例を示す図である。
【図１１】本実施形態に係るクラス図変換装置が実行する、クラス図変換処理の流れを示すフローチャートである。
【図１２】（ａ）は、１つのクラスが変換対象の適用箇所として選択された場合に、その選択されたクラスと「関連」を有する他の構成要素とを示す概念図である。（ｂ）は、（ａ）の概念図をクラス図で示した図である。
【図１３】本実施形態に係る変換前パターン選択画面の一例を示す図である。
【図１４】本実施形態に係る変換パターン一覧画面の例を示す図である。
【図１５】本実施形態に係る変換パターン一覧画面の例を示す図である。
【図１６】本実施形態に係るクラス図変換装置による第１変換パターンのクラス図変換処理を説明するための図である。
【図１７】本実施形態に係るクラス図変換装置による第２変換パターンのクラス図変換処理を説明するための図である。
【図１８】本実施形態に係るクラス図変換装置による第３変換パターンのクラス図変換処理を説明するための図である。
【図１９】本実施形態に係るクラス図変換装置による第４変換パターンのクラス図変換処理を説明するための図である。
【図２０】本実施形態に係るクラス図変換装置による第５変換パターンのクラス図変換処理を説明するための図である。
【図２１】本実施形態に係るクラス図変換装置による第６変換パターンのクラス図変換処理を説明するための図である。
【図２２】本実施形態に係るクラス図変換装置による第７変換パターンのクラス図変換処理を説明するための図である。
【図２３】本実施形態に係るクラス図変換装置による第８変換パターンのクラス図変換処理を説明するための図である。
【図２４】本実施形態に係るクラス図変換装置による第９変換パターンのクラス図変換処理を説明するための図である。
【図２５】本実施形態に係るクラス図変換装置による第１０変換パターンのクラス図変換処理を説明するための図である。
【図２６】従来のデザインパターンの適用例を説明するための図である。
【発明を実施するための形態】
【００１７】
次に、本発明を実施するための形態（以下、「本実施形態」という）について、適宜図面を参照しながら詳細に説明する。
【００１８】
＜前提となる技術＞
まず、本発明の前提となる技術について説明する。
【００１９】
（デザインパターンの適用）
オブジェクト指向に基づくソフトウェア開発におけるデザインパターンの適用作業は、概ね以下の５段階から構成されている。
【００２０】
（１）状況理解段階
設計者がモデル化対象を理解する段階であり、この段階で設計者はモデリングツール等を用いてモデルを可視化し、モデル化対象の理解を深める。
（２）デザインパターン選択段階
設計者は、デザインパターンカタログからＵＭＬで書かれたデザインパターンを選択する。
（３）モデル／コード上での適用箇所決定段階
設計者は、選択したデザインパターンについて適用可能な箇所を設計モデル／実装コードで決定する。なお、現状では、ツールにより自動的に適用箇所を明示するような機能は開発されていないため、設計者がモデリングツールを用いて人手で決定する。
（４）展開段階
前記（３）の適用箇所決定段階で決定した箇所の構成要素（クラスや属性等）とデザインパターンを構成するロール（具体的なクラスの代わりに、その役割や振る舞いを抽象化したモデルとなる要素）とを対応付けて、その対応付けられた構成要素をデザインパターンに合うように変換・配置する。なお、現状では、設計者が構成要素を対応付けた後に、自動的に変換・配置する機能を有するモデリングツールが存在している（非特許文献１参照）。
（５）周囲調整段階
前記（４）の展開段階によりデザインパターンを展開した箇所の周辺を、展開前と比較して不具合がないか確認する。最終的な不具合の有無の判断は、現状では、設計者が行う必要がある。よって、（４）の展開段階で、構成要素を自動的に変換・配置した場合においても、設計者が不具合の有無を判断し、手動で修正を行う。
【００２１】
上記のデザインパターンの適用例を、図２６を参照して説明する。
まず、設計者は、（１）の状況理解段階において、図２６（ａ）に示すクラス「Ａ」，「Ｂ」，「Ｃ」，「Ｄ」，「Ｅ」の構成要素を抽出したものとする。
そして、（２）のデザインパターン選択段階において、設計者が、デザインパターンとして図２６（ｂ）に示す「Observerパターン」をデザインパターンカタログから選択したものとする。この「Observerパターン」は、図２６（ｂ）に示すように、４つのロール（「Subject」，「Observer」，「ConcreteSubject」，「ConcreteObserver」）から構成され、それぞれのロールは、線や矢印等で示される「関連」で結ばれている。なお、以下において、ＵＭＬの表記法として規定されているクラス間の接続関係を示す「関連」を、鍵カッコ付きの関連（「関連」）として記載する。
【００２２】
次に、（３）の適用箇所決定段階において、設計者は、デザインパターンの適用箇所を図２６（ａ）に示す構成要素から決定する。ここでは、クラス「Ａ」，「Ｂ」，「Ｃ」，「Ｄ」，「Ｅ」のすべての構成要素が、設計者により決定されたものとする。
【００２３】
続いて、（４）の展開段階において、各構成要素とデザインパターンを構成するロールとの対応付けを行う。
ここでは、図２６（ｃ）に示すように、設計者により、クラス「Ａ」が「Subject」に対応付けられ、クラス「Ｃ」が「Observer」に対応付けられ、クラス「Ｂ」が「ConcreteSubject」に対応付けられ、クラス「Ｄ」およびクラス「Ｅ」が「ConcreteObserver」に対応付けられる。
そして、設計者による各構成要素とデザインパターンを構成するロールとの対応付けの後、モデリングツールが、自動的に変換配置を行い、図２６（ｄ）に示すような、クラス図を設計する。つまり、図２６（ｄ）に示すクラス図は、図２６（ａ）の構成要素を、図２６（ｂ）の「Observerパターン」のデザインパターンに適用した結果である。
【００２４】
次に、（５）の周囲調整段階で、設計者は、図２６（ｄ）に示すクラス図の不具合の有無を判断し、不具合がある場合には、手動で修正を行う。
【００２５】
このように、デザインパターンを用いた現状のモデリングツールの機能は、ＵＭＬで記述されたデザインパターンを表示し、表示したデザインパターンのロールと適用したい各構成要素とを手動で対応させた後、そのデザインパターンに合致するように各構成要素の変換・配置を自動で行うことにとどまる。
【００２６】
（リファクタリング）
また、デザインパターンの適用と類似した機能として、プログラムの「リファクタリング」が知られている。このリファクタリングは、プログラムの外部から見た動作を変更せずに、ソースコードの内部構造を整理するプログラム改善技術である。しかしながら、このリファクタリングを支援するためのリファクタリングカタログを用いたツールは、通常プログラムレベルでの作業支援に限られている。
【００２７】
以上のように、ソースコードプログラムや実装モデル等の下流工程のソフトウェア成果物を対象とするリファクタリング支援ツールや、前記した従来のデザインパターン適用支援ツールでは、上流工程（概念モデリング工程や論理モデリング工程）のクラス図の編集におけるパターン適用やクラス図の変換を支援できなかった。
特に、デザインパターンをサポートする従来のモデリングツールは、ＵＭＬで記述されたデザインパターンカタログを単純に表示するのみであり、多くのパターンからどのパターンを選べばよいのか判断するために、デザインパターンカタログに記載されている個々のデザインパターンについての高度な知識を必要としていた。つまり、設計者は、設計対象の１つのモデルに対して、そのモデルの表現方法が複数存在するため、実際にクラス設計をしようとするとどのデザインパターン（構造）で表現すればよいか迷うことが多く、一旦、あるデザインパターンでクラス図を設計した後、別のデザインパターンに当てはめて直して最適なデザインパターンを決定するような試行錯誤が必要であり非常に大きな労力を有していた。
【００２８】
特に、テレコム（telecommunication）向け管理システムに関する標準技術を規定するＴＭＦｏｒｕｍ（ＴＭＦ：TeleManagement Forum）の提供する情報モデルであるＳＩＤ（Shared Information and Data Model）を用いた管理システムのモデリング（TeleManagement Forum GB922, “Information Framework (SID): Concepts and Principles,” Version 7.15, March 2011.）においては、以下の特徴があり、さらに問題があった。
・ＳＩＤは概念モデルであるため、開発工程を進めるにつれて、ＳＩＤのクラス図に現れる実装に依存しない構造を、実装方式や実装する言語、ミドルウェア等を考慮した構造に変換していく必要がある。
・ＳＩＤのモデリングでは、前記したパターンカタログには見られないＳＩＤ独自のパターン（デザインパターン）が適応される。特に、「Entity Characteristic Pattern」（後記する図２のパターン［４］ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン）は、あるクラスについて、属性を追加したい場合でも、既存クラスを変更せずにインスタンスの追加で対応できるという拡張性を備えたデザインパターンである。このＳＩＤ独自のパターンについては、従来のデザインパターンカタログに含まれておらず、設計者がクラス図設計に利用することができなかった。
【００２９】
これらの特徴を踏まえ、ＳＩＤを用いた管理システムのモデリングを含めたオブジェクト指向のソフトウェア開発を支援するため、本実施形態に係るクラス図変換装置およびクラス図変換プログラムは、既存のデザインパターンやリファクタリングに限定されず、クラス設計時に設計者がどのデザインパターンを選択するかしばしば判断を迷いそうなパターンを対象にした。また、既存のデザインパターンやリファクタリングに関する高度な知識を必要とせず、クラス図の見直しや修正を支援することができるものとした。
【００３０】
＜概要＞
次に、本実施形態に係るクラス図変換装置１等が実行する処理の概要について説明する。本実施形態に係るクラス図変換装置１等は、一旦作成されたクラス図を精査（つまりクラス図の見直し）する際に、作成されたクラス図とは異なるパターン（デザインパターン）を提示し、その提示したパターンの中から最適なパターンを選択させ、クラス図を変換する。
【００３１】
本実施形態においては、一旦あるパターンで作成されたクラス図を他のパターンのクラス図に変更するときに頻繁に出てくるパターン変更の判断（変換パターン）を類型化し、「変換パターン情報」としてクラス図変換装置１に記憶しておく。そして、一旦あるパターンで作成されたクラス図についての変換可能な他のパターンを、クラス図変換装置１に記憶した変換パターン情報に基づき表示して、設計者に変換後の他のパターンを選択させてクラス図の表示をその選択されたパターンに変換する。
【００３２】
本実施形態のクラス図変換装置１は、対象とするクラスとその「関連」のパターン（デザインパターン）として、以下の６種類を対象とする。なお、詳細は、図２〜図８を用いて後記する。
・パターン［１］：クラスと属性の関係
・パターン［２］：クラスの集約関係
・パターン［３］：クラスの集約関係＋間に抽象クラス
・パターン［４］：ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン
（Entity Specification Characteristic パターン）
・パターン［５］：委譲による継承関係の実現
・パターン［６］：継承関係
【００３３】
このパターン［１］〜［６］のうち、相互に変換可能な以下に示す１０種の変換パターンを、クラス図変換装置１が取り扱う。また、本実施形態においては、クラス図の構造を記述する際に通常異なる概念であるクラス、属性、オブジェクトに関して、クラス図を変換する処理において対等な構成要素として扱うことを特徴とする。なお、詳細は、図２，図１６〜図２５等を用いて後記する。
（第１変換パターン）  ：パターン［１］→［２］
（第２変換パターン）  ：パターン［２］→［１］
（第３変換パターン）  ：パターン［２］→［３］
（第４変換パターン）  ：パターン［３］→［２］
（第５変換パターン）  ：パターン［３］→［４］
（第６変換パターン）  ：パターン［４］→［３］
（第７変換パターン）  ：パターン［２］→［４］
（第８変換パターン）  ：パターン「４」→「２」
（第９変換パターン）  ：パターン［５］→［６］
（第１０変換パターン）：パターン［６］→［５］
【００３４】
本実施形態において、クラス図変換装置１は、変換前のクラス図のパターンを特定し、そのパターンにおけるクラスやそのクラスの組合せ、「関連」等から、異なる表現のパターンに変換可能な変換パターン（変換後のパターン）を設計者に提示し選択させる。そして、クラス図変換装置１は、選択された変換パターンに基づき、そのクラス図のパターンを変換して表示する。
以下、クラス図変換装置１の構成を具体的に説明する。
【００３５】
＜クラス図変換装置の構成＞
図１は、本実施形態に係るクラス図変換装置１の構成例を示す機能ブロック図である。
クラス図変換装置１は、一旦あるパターンで作成されたクラス図に基づき、そのクラス図と同じ内容を表現する（以下、「同型表現」というときがある。）他のパターン（デザインパターン）のクラス図を表示し、設計者が選択した他のパターンのクラス図に変換して表示させる装置である。
図１に示すように、クラス図変換装置１は、入力装置３および表示装置２に接続される。入力装置３は、例えば、マウスやキーボード、タッチパネル等から構成される。また、表示装置２は、液晶ディスプレイ等から構成される。
そして、このクラス図変換装置１は、制御部１０と、入出力部２０（入力手段）と、メモリ部３０と、記憶部４０（記憶手段）とを含んで構成される。
【００３６】
制御部１０は、一旦あるパターンで作成されたクラス図を、他のパターンのクラス図に変換して表示する制御の全般を司り、表示処理部１１（表示処理手段）と入出力情報処理部１２とを備える。
【００３７】
表示処理部１１（表示処理手段）は、クラス図の変換するための処理全般を司り、クラス図表示部１１１と、変換パターン表示部１１２と、クラス図変換処理部１１３とを含んで構成される。
【００３８】
クラス図表示部１１１は、クラス、属性、「関連」等を示す情報であるクラス図情報１００（詳細は後記）に基づき、クラス図を表示装置２に表示させ、クラス図の構成要素のうち、クラス図変換の適用箇所となる、クラスやクラスの組合せ等を、設計者に選択させる。
【００３９】
変換パターン表示部１１２は、設計者が選択したクラス図変換の適用箇所について、その適用箇所が、クラスとその「関連」で示される所定のパターン（６種類のパターン）のうち、どのパターンに該当するかを特定する。そして、変換パターン表示部１１２は、特定したパターンについて、同型表現として変換可能な変換パターンを、後記する変換パターンデータベース４２に記憶された変換パターン情報を参照して抽出し、「適用可能な変換パターンの一覧画面（変換パターン一覧画面３００）」（図１４，図１５参照）を生成し、表示装置２に表示させる。そして、変換パターン表示部１１２は、「適用可能な変換パターンの一覧画面（変換パターン一覧画面３００）」に基づく、変換パターンの選択情報を受け付ける。
【００４０】
クラス図変換処理部１１３は、取得した変換パターンの選択情報に基づき、適用箇所となるクラス図の構成要素を、選択された変換パターンに基づき変換し、変換後のクラス図を生成して、表示装置２に表示させる。
【００４１】
入出力情報処理部１２は、入力装置３から入出力部２０を介して取得した入力情報を、表示処理部１１に引き渡し、表示処理部１１からの出力情報を、入出力部２０を介して表示装置２に送信する。
【００４２】
入出力部２０（入力手段）は、入力装置３であるマウスやキーボード、タッチパネル等から制御部１０の処理に関する情報（選択情報等）を受け付ける。また、制御部１０が生成したクラス図に関する情報を表示装置２に出力する。なお、この入出力部２０は、入力インタフェースと出力インタフェースとから構成される。
【００４３】
メモリ部３０は、ＲＡＭ（Random Access Memory）等の記憶手段からなり、制御部１０の処理に必要な情報を一時的に記憶する。
【００４４】
記憶部４０（記憶手段）は、クラス図を生成するために必要な情報であるクラス図情報１００（後記する図３〜図８参照）を格納するクラス図情報データベース４１と、変換パターンデータベース４２とが記憶される。
【００４５】
このクラス図情報１００には、クラス図を表示装置２に表示するための情報として、図３〜図８等に示すように、関連種別１０１、関連ＩＤ１０２、Ｆｒｏｍ要素種別１０３、Ｆｒｏｍ要素ＩＤ１０４、Ｔｏ要素種別１０５、Ｔｏ要素ＩＤ１０６、Ｆｒｏｍ要素名１０７、Ｔｏ要素名１０８および表示関連情報１０９のデータ項目が含まれる。
関連種別１０１は、クラス図の構成要素間の「関連」の種別が格納され、例えば、クラスとそのクラスの属性との関係であることを示す「属性（CLASS-ATTRIBUTE）」、クラス間が全体−部分の関係であることを示す「集約（AGGREGATION）」、あるクラスの特性（属性、操作）を他のクラスが引き継ぐことを示す「継承（INHERITANCE）」、あるクラスとそのクラスの実例を示すオブジェクトとの関係であることを示す「インスタンス（CLASS-INSTANCE）」が格納される。
関連ＩＤ１０２は、そのクラス図（クラス図情報１００）内において、その構成要素間の「関連」に固有な識別子である。
【００４６】
Ｆｒｏｍ要素種別１０３には、あるクラス図内の注目する２つの構成要素のうち、上位側の構成要素の種別が格納され、例えば、クラス、属性、オブジェクトが格納される。
また、Ｆｒｏｍ要素ＩＤ１０４には、Ｆｒｏｍ要素種別１０３の構成要素について、そのクラス図（クラス図情報１００）内で固有な識別子が格納される。
なお、クラス図情報１００のＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示される構成要素（クラス）を、以下において、「上位のクラス」と呼ぶことがある。
【００４７】
Ｔｏ要素種別１０５には、あるクラス図内の注目する２つの構成要素のうち、下位側の構成要素の種別が格納され、例えば、クラス、属性、オブジェクトが格納される。
また、Ｔｏ要素ＩＤ１０６には、Ｔｏ要素種別１０５の構成要素について、そのクラス図（クラス図情報１００）内で固有な識別子が格納される。
なお、クラス図情報１００のＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される構成要素（クラス）を、以下において、「下位のクラス」と呼ぶことがある。
【００４８】
Ｆｒｏｍ要素名１０７には、Ｆｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示される構成要素の具体的な名称が格納される。
また、Ｔｏ要素名１０８には、Ｔｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される構成要素の具体的な名称が格納される。
【００４９】
表示関連情報１０９には、クラス図を画面上に表示させる形状や位置情報等が格納される。例えば、クラスの画面上での形状（四角形等）や、画面上での位置情報（例えば、四角形であれば４点の座標情報）等が格納される。また、構成要素間を結ぶ線で示される「関連」の形状として、「継承」であれば白抜き三角（△）の矢印、「集約」であれば、全体を示すクラス側に白抜きのひし形（◇）等が格納され、構成要素間に方向性がある場合には、矢印の向きに関する情報等が格納される。
【００５０】
なお、本実施形態においては、クラス、属性、オブジェクトのそれぞれを、クラス図を変換する処理の対象となる構成要素として扱うため、Ｆｒｏｍ要素種別１０３およびＴｏ要素種別１０５において、クラス図の構造を記述する際に通常異なる概念とされるクラス、属性およびオブジェクトが、対等な情報として記憶される。
【００５１】
図１に戻り、変換パターンデータベース４２には、クラス図から選択された変換対象の適用箇所が所定のパターン（６種類のパターン）のうちどのパターンに該当するかを特定するためのパターン判定ロジックと、同型表現として相互に変換可能な前記した１０種の変換パターンを示す変換パターン情報とが記憶される（詳細は、後記する。）。なお、このパターン判定ロジックには、具体的には、クラス図から変換対象の適用箇所として選択されたある１つのクラスについて、そのクラスが格納されたレコードが所定のパターン（６種類のパターン）に含まれる可能性があるか否かを決定するためのロジックと、クラス図から変換対象の適用箇所として複数のクラスの組合せが選択された場合に、その複数のクラスの組合せを所定のパターン（６種類のパターン）と特定するためのロジックとが記憶される。
【００５２】
なお、記憶部４０は、ハードディスク、フラッシュメモリ等の記憶手段からなり、制御部１０の処理を行うためのプログラム（クラス図変換プログラム）等を記憶する。
また、この制御部１０の機能は、例えばクラス図変換装置１の記憶部４０に記憶されたプログラム（クラス図変換プログラム）をＣＰＵ（Central Processing Unit）がメモリ部３０に展開し実行することで実現される。
【００５３】
ここで、クラスとのその「関連」で示される６種類のパターン（デザインパターン）と、同型表現として相互に変換可能な前記した１０種の変換パターンについて、具体的に説明する。
【００５４】
（６種のパターンの詳細）
図２は、本実施形態に係るクラス図変換装置１が取り扱う同型表現のパターンを説明するための図である。図２においては、クラスとクラス間の「関連」等で示される６種類のパターンと、同型表現であるパターンの組合せ、つまり、変換可能なパターン（変換パターン）を示している。
【００５５】
≪パターン［１］≫
図２に示すように、パターン［１］は、「クラスと属性の関係」を示す。ＵＭＬの記載方式に基づき、クラスは画面上での形状として四角形で表現され、そのクラスのクラス名（図２の［１］では、「クラスＡ」）と、そのクラスの属性名（図２の［１］では、「属性ａ」，「属性ｂ」，「属性ｃ」）が表示される。
【００５６】
このパターン［１］の「クラスと属性の関係」を、画面上に生成するためのクラス図情報１００（１００ａ）を図３に示す。図３は、クラス図情報データベース４１に格納されるパターン［１］のクラス図情報１００（１００ａ）の一例を示す図である。
パターン［１］のクラス図情報１００（１００ａ）には、例えば、第１行目に示すように、関連種別１０１として「属性（CLASS-ATTRIBUTE）」が格納され、関連ＩＤ１０２に「１（１−１）」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「Ａ」、Ｔｏ要素種別１０５に「属性」、Ｔｏ要素ＩＤ１０６に「ａ」が格納される。つまり、クラス「Ａ」と属性「ａ」との関係が、「属性（CLASS-ATTRIBUTE）」であることを示す情報が格納される。なお、属性「ｂ」および属性「ｃ」についても同様である。
なお、変換パターンデータベース４２に格納されるパターン判定ロジックには、クラス図から変換対象の適用箇所として選択されたある１つのクラスについて、そのクラスが格納されたレコードがパターン［１］に含まれる可能性があるか否かを決定するためのロジックとして、クラス図情報１００のそのレコードの関連種別１０１が「属性（CLASS-ATTRIBUTE）」の情報であり、かつ、そのレコードのＦｒｏｍ要素種別１０３が「クラス」であり、Ｔｏ要素種別１０５が「属性」であること（ロジック１−１）、が格納される。また、クラス図から変換対象の適用箇所として複数のクラスの組合せが選択された場合に、その複数のクラスの組合せをパターン［１］と特定するためのロジックとして、その複数のクラスを格納する各レコードにおいて、それぞれが前記した（ロジック１−１）の条件を満たし、かつ、各レコードのＦｒｏｍ要素ＩＤ１０４が同一であること（ロジック１−２）、が格納される。
【００５７】
≪パターン［２］≫
図２に示すパターン［２］は、「クラスの集約関係」を示す。集約（AGGREGATION）は、全体を示すクラス側に白抜きのひし形（◇）が付された線でクラス間が接続される。そして、クラス「ａ」、クラス「ｂ」およびクラス「ｃ」が、クラス「Ａ」（全体）の部分である関係を示す。
【００５８】
このパターン［２］の「クラスの集約関係」を、画面上に生成するためのクラス図情報１００（１００ｂ）を図４に示す。図４は、クラス図情報データベース４１に格納されるパターン［２］のクラス図情報１００（１００ｂ）の一例を示す図である。
パターン［２］のクラス図情報１００（１００ｂ）には、例えば、第１行目に示すように、関連種別１０１として「集約（AGGREGATION）」が格納され、関連ＩＤ１０２に「２（２−１）」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「Ａ」、Ｔｏ要素種別１０５に「クラス」、Ｔｏ要素ＩＤ１０６に「ａ」が格納される。つまり、クラス「Ａ」とクラス「ａ」とが集約（全体−部分）の関係にあることを示す情報が格納される。なお、クラス「ｂ」およびクラス「ｃ」についても同様である。よって、クラス「Ａ」がクラス「ａ」，「ｂ」，「ｃ」を集約する関係にあることを示す。
なお、変換パターンデータベース４２に格納されるパターン判定ロジックには、クラス図から変換対象の適用箇所として選択されたある１つのクラスについて、そのクラスが格納されたレコードがパターン［２］に含まれる可能性があるか否かを決定するためのロジックとして、クラス図情報１００のそのレコードの関連種別１０１が「集約（AGGREGATION）」の情報であり、かつ、そのレコードのＦｒｏｍ要素種別１０３が「クラス」であり、Ｔｏ要素種別１０５が「クラス」であること（ロジック２−１）、が格納される。また、クラス図から変換対象の適用箇所として複数のクラスの組合せが選択された場合に、その複数のクラスの組合せをパターン［２］と特定するためのロジックとして、その複数のクラスを格納する各レコードにおいて、それぞれが前記した（ロジック２−１）の条件を満たし、かつ、各レコードのＦｒｏｍ要素ＩＤ１０４が同一であること（ロジック２−２）、が格納される。
【００５９】
≪パターン［３］≫
図２に示すパターン［３］は、「クラスの集約関係＋間に抽象クラス」を示す。この抽象クラス（図２の［３］では、「クラスＲ」）は、その下位のクラス（図２の［３］では、「クラスａ」、「クラスｂ」および「クラスｃ」）に共通する属性、操作、役割等を１つのクラスとしてまとめたものであり、その下位のクラスは、上位のクラスである抽象クラスを継承するものとして表現される。そして、その抽象クラス（クラス「Ｒ」）がさらに上位のクラス（図２の［３］では、クラス「Ａ」）に、集約される関係であることを示す。
【００６０】
このパターン［３］の「クラスの集約関係＋間に抽象クラス」を、画面上に生成するためのクラス図情報１００（１００ｃ）を図５に示す。図５は、クラス図情報データベース４１に格納されるパターン［３］のクラス図情報１００（１００ｃ）の一例を示す図である。
パターン［３］のクラス図情報１００（１００ｃ）には、例えば、第１行目に、関連種別１０１として「集約（AGGREGATION）」が格納され、関連ＩＤ１０２に「２」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「Ａ」、Ｔｏ要素種別１０５に「クラス」、Ｔｏ要素ＩＤ１０６に「Ｒ」が格納される。
また、第２行目に、関連種別１０１として「継承（INHERITANCE）」が格納され、関連ＩＤ１０２に「３（３−１）」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「Ｒ」、Ｔｏ要素種別１０５に「クラス」、Ｔｏ要素ＩＤ１０６に「ａ」が格納される。なお、第３行目と第４行目についても、同様に格納され、それぞれＴｏ要素ＩＤ１０６に「ｂ」，「ｃ」が格納される。
よって、クラス「Ａ」がクラス「Ｒ」を集約し、クラス「ａ」，「ｂ」，「ｃ」が、クラス「Ｒ」を継承する関係にあることを示す。
なお、変換パターンデータベース４２に格納されるパターン判定ロジックには、クラス図から変換対象の適用箇所として選択されたある１つのクラスについて、そのクラスが格納されたレコードがパターン［３］に含まれる可能性があるか否かを決定するため、および、クラス図から変換対象の適用箇所として複数のクラスの組合せが選択された場合に、その複数のクラスの組合せをパターン［３］と特定するためのロジックとして、クラス図情報１００のその選択されたクラスが含まれる複数のレコード中に、関連種別１０１が「集約（AGGREGATION）」のレコードと「継承（INHERITANCE）」のレコードとがそれぞれ少なくとも１つ存在し、集約のレコードのＴｏ要素ＩＤ１０６と継承のレコードのＦｒｏｍ要素ＩＤ１０４が同一であること、が格納される。  
【００６１】
≪パターン［４］≫
図２に示すパターン［４］は、「ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン」を示す。この「ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン」は、ＳＩＤ独自のパターンであり、このパターンに特有なクラスは、そのクラスの含まれる情報としてそのクラスの具体的なオブジェクトが対応付けられる。
図２の［４］に示す例では、クラス「ＳＡ」がオブジェクト「Ａ」をデータとして備えていること、そして、クラス「ＳＡ」がクラス「ＳＡＣ」を集約する関係にあること、クラス「ＳＡＣ」がオブジェクト「ａ」，「ｂ」，「ｃ」をデータとして備えていること、を示している。
【００６２】
このパターン［４］の「ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン」を、画面上に生成するためのクラス図情報１００（１００ｄ）を図６に示す。図６は、クラス図情報データベース４１に格納されるパターン［４］のクラス図情報１００（１００ｄ）の一例を示す図である。
パターン［４］のクラス図情報１００（１００ｄ）には、例えば、第１行目に、関連種別１０１として「インスタンス（CLASS-INSTANCE）」が格納され、関連ＩＤ１０２に「４（４−１）」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「ＳＡ」、Ｔｏ要素種別１０５に「オブジェクト」、Ｔｏ要素ＩＤ１０６に「Ａ」が格納される。
また、第２行目に、関連種別１０１として「集約（AGGREGATION）」が格納され、関連ＩＤ１０２に「２」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「ＳＡ」、Ｔｏ要素種別１０５に「クラス」、Ｔｏ要素ＩＤ１０６に「ＳＡＣ」が格納される。
第３行目には、関連種別１０１として「インスタンス（CLASS-INSTANCE）」が格納され、関連ＩＤ１０２に「４（４−２）」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「ＳＡＣ」、Ｔｏ要素種別１０５に「オブジェクト」、Ｔｏ要素ＩＤ１０６に「ａ」が格納される。なお、第４行目と第５行目についても、同様に格納され、それぞれＴｏ要素ＩＤ１０６に「ｂ」，「ｃ」が格納される。
なお、変換パターンデータベース４２に格納されるパターン判定ロジックには、クラス図から変換対象の適用箇所として複数のクラスの組合せが選択された場合に、その複数のクラスの組合せをパターン［４］と特定するためのロジックとして、クラス図情報１００の複数のレコード中に、関連種別１０１が「集約（AGGREGATION）」のレコードと「インスタンス（CLASS-INSTANCE）」のレコードとがそれぞれ少なくとも１つ存在し、集約のレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４に示されるクラスと同一のクラスがインスタンスのレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４に存在すること、また、集約のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６に示されるクラスと同一のクラスが他のインスタンスのレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４に存在すること、が格納される。
【００６３】
≪パターン［５］≫
図２に示すパターン［５］は、「委譲による継承関係の実現」を示す。ここで、「委譲」とは、自クラス（オブジェクト）に依頼されたメッセージを、他のクラス（オブジェクト）に処理を委ねることをいう。図２の［５］に示す例では、クラス「Ｂ」とクラス「Ａ」とが、委譲の関係であり、クラス「Ｂ」がクラス「Ａ」に処理を委ねることを示している。なお、クラス図においてこの委譲の関係は、例えば、図２の［５］に示すように、委譲元を示すクラス側に集約を示す白抜きのひし形（◇）が付され、委譲先を示すクラス側に矢印（→）が付された線で接続されて表現される。
【００６４】
このパターン［５］の「委譲による継承関係の実現」を、画面上に生成するためのクラス図情報１００（１００ｅ）を図７に示す。図７は、クラス図情報データベース４１に格納されるパターン［５］のクラス図情報１００（１００ｅ）の一例を示す図である。
パターン［５］のクラス図情報１００（１００ｅ）には、第４行目に、関連種別１０１として「集約（AGGREGATION）」が格納され、関連ＩＤ１０２に「２」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「Ｂ」、Ｔｏ要素種別１０５に「クラス」、Ｔｏ要素ＩＤ１０６に「Ａ」が格納される。そして、表示関連情報１０９に、クラス「Ｂ」からクラス「Ａ」に向けて矢印（→）があること（図７においては、「Ｂ」→「Ａ」（委譲）と示す。）が格納される。
なお、変換パターンデータベース４２に格納されるパターン判定ロジックには、クラス図から変換対象の適用箇所として選択されたある１つのクラスについて、そのクラスが格納されたレコードがパターン［５］に含まれるか否かを決定するためのロジックとして、クラス図情報１００のそのレコードの関連種別１０１が「集約（AGGREGATION）」の情報であり、かつ、その集約のレコードのＦｒｏｍ要素種別１０３およびＴｏ要素種別１０５が「クラス」であり、さらに、その集約のレコードの表示関連情報１０９に委譲先を示す矢印の情報が存在すること（ロジック５−１）、が格納される。また、クラス図から変換対象の適用箇所として複数のクラスの組合せが選択された場合に、その複数のクラスの組合せをパターン［５］と特定するためのロジックとして、その複数のクラスを格納する各レコードにおいて、それぞれが前記した（ロジック５−１）の条件を満たし、かつ、各レコードのＦｒｏｍ要素ＩＤ１０４が同一であること（ロジック５−２）、が格納される。
【００６５】
≪パターン［６］≫
図２に示すパターン［６］は、「継承関係」を示す。図２の［６］に示す例では、クラス「Ｂ」がクラス「Ａ」を継承する関係にあることを示している。
【００６６】
このパターン［６］の「継承関係」を、画面上に生成するためのクラス図情報１００（１００ｆ）を図８に示す。図８は、クラス図情報データベース４１に格納されるパターン［６］のクラス図情報１００（１００ｆ）の一例を示す図である。
パターン［６］のクラス図情報１００（１００ｆ）には、第４行目に、関連種別１０１として「継承（INHERITANCE）」が格納され、関連ＩＤ１０２に「３」、Ｆｒｏｍ要素種別１０３に「クラス」、Ｆｒｏｍ要素ＩＤ１０４に「Ａ」、Ｔｏ要素種別１０５に「クラス」、Ｔｏ要素ＩＤ１０６に「Ｂ」が格納される。これにより、クラス「Ｂ」がクラス「Ａ」を継承する関係であることを示す。
なお、変換パターンデータベース４２に格納されるパターン判定ロジックには、クラス図から変換対象の適用箇所として選択されたある１つのクラスについて、そのクラスが格納されたレコードがパターン［６］に含まれるか否かを決定するためのロジックとして、クラス図情報１００のそのレコードの関連種別１０１が「継承（INHRITANCE）」の情報であり、かつ、その継承のレコードのＦｒｏｍ要素種別１０３およびＴｏ要素種別１０５が「クラス」であること（ロジック６−１）、が格納される。また、クラス図から変換対象の適用箇所として複数のクラスの組合せが選択された場合に、その複数のクラスの組合せをパターン［６］と特定するためのロジックとして、その複数のクラスを格納する各レコードにおいて、それぞれが前記した（ロジック６−１）の条件を満たし、かつ、各レコードのＦｒｏｍ要素ＩＤ１０４が同一であること（ロジック６−２）、が格納される。
【００６７】
なお、変換対象の適用箇所のパターンを判定する場合に、図３に示したパターン［１］の「クラスと属性の関係」のクラス図情報１００（１００ａ）のように、関連種別１０１が「属性（CLASS-ATTRIBUTE）」のレコードのみの場合は、（ロジック１−１）または（ロジック１−２）に基づき、パターン［１］に関する判定を行う。一方、対象となるクラス図情報１００のレコードに、「属性（CLASS-ATTRIBUTE）」のレコードと、それ以外の「関連」のレコードが混在する場合には（例えば、図８参照）、属性のレコードは、その属性を備えるクラスと一体なものとして、その属性のレコードを判断対象とせずに、属性以外の「関連」のレコードについて、パターン［２］〜パターン［６］に関する判定を行う。
【００６８】
（同型表現の変換パターン）
次に、同じく図２を参照して、前記した６種類のパターンのうち、同型表現として相互に変換可能な組合せである変換パターンについて説明する。なお、図２において、同型表現であり、相互に変換可能なパターンについて、その間に両矢印（⇔）を示している。
【００６９】
同型表現の変換パターンには、前記したように１０種の組合せがある。以下、具体的に説明する。
【００７０】
図２に示すように、パターン［１］の「クラスと属性の関係」とパターン［２］の「クラスの集約関係」とは、相互に変換可能である。
これは、パターン［１］のクラス「Ａ」が備える各属性の要素は、パターン［２］のように、その属性をクラスの概念で捉え直してクラスＡに集約させることと、同等であると捉えられる場合があることによる（第１変換パターン：パターン［１］→［２］）。また、逆に、パターン［２］の集約関係で示される下位のクラスを、パターン［１］のように、上位のクラスの属性として捉え直すことができる場合がある（第２変換パターン：パターン［２］→［１］）。
【００７１】
図２に示すように、パターン［２］の「クラスの集約関係」とパターン［３］の「クラスの集約関係＋間に抽象クラス」とは、相互に変換可能である。
これは、パターン［２］の「クラスの集約関係」における下位のクラスを、パターン［３］のように、下位のクラスに共通する属性、操作、役割等を抽出して新規に抽象クラスを設け、その抽象クラスに、下位のクラスを継承させることと、同等であると捉えられる場合があることによる（第３変換パターン：パターン［２］→［３］）。また、逆に、パターン［３］のように下位のクラスに共通する属性、操作、役割等を継承関係を用いて抽象クラスとしてまとめず、パターン［２］のように、個々の下位のクラスと上位のクラスとを集約関係として捉えることもできる場合がある（第４変換パターン：パターン［３］→［２］）。
【００７２】
図２に示すように、パターン［３］の「クラスの集約関係＋間に抽象クラス」とパターン［４］の「ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン」とは、相互に変換可能である。
これは、パターン［３］に示される抽象クラス以外のクラスそれぞれを、インスタンス化してオブジェクトとし、パターン［４］に示すように、上位のクラスのデータとして包含させることができる場合があることによる（第５変換パターン：パターン［３］→［４］）。また、逆に、パターン［４］のようにインスタンス化したオブジェクトを、パターン［３］のように、脱インスタンス化し、クラスとして表現することができる場合がある（第６変換パターン：パターン［４］→［３］）。
【００７３】
図２に示すように、パターン［２］の「クラスの集約関係」とパターン［４］の「ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン」とは、相互に変換可能である。
これは、パターン［２］に示されるクラスそれぞれを、インスタンス化してオブジェクトとし、パターン［４］に示すように、そのオブジェクトに共通な属性等を新規な上位のクラスとして包含させることができる場合があることによる（第７変換パターン：パターン［２］→［４］）。また、逆に、パターン［４］のようにインスタンス化したオブジェクトを、パターン［２］のように、脱インスタンス化し、オブジェクトに共通な属性等を上位のクラスとせずに、個々のクラスとして表現することができる場合がある（第８変換パターン：パターン［４］→［２］）。
【００７４】
図２に示すように、パターン［５］の「委譲による継承関係の実現」とパターン［６］の「継承関係」とは、相互の変換可能である。
これは、例えば、クラス「Ｂ」がクラス「Ａ」に処理を委ねる、つまり、委譲関係にある場合に、クラス「Ａ」とクラス「Ｂ」とは継承関係にある、つまり、クラス「Ａ」の特性（属性、操作）をクラス「Ｂ」が引き継ぐ関係として表現できる場合があることによる（第９変換パターン：パターン［５］→［６］）。また、逆に、パターン［６］に示すように、クラス「Ｂ」がクラス「Ａ」の特性（属性、操作）を継承する場合に、クラス「Ｂ」がクラス「Ａ」に処理を委ねる関係、つまり、委譲関係として表現できる場合がある（第１０変換パターン：パターン［６］→［５］）。
【００７５】
なお、本実施形態において示した６種類のパターンに基づく、クラス図変換処理である第１変換パターン〜第１０変換パターン以外にも、他のパターン（デザインパターン）を処理対象としてもよいし、他の変換パターンを実行するようにしてもよい。
【００７６】
変換パターンの他の具体例として、図９に示すように、パターン［２］の「クラスの集約関係」がパターン［５］の「委譲による継承関係の実現」と相互に変換可能なものとする変換パターンを考えることができる。これは、パターン［２］の集約（全体−部分）で示される上位のクラス（図９の「クラスＡ」）と下位のクラス（図９の「クラスａ，ｂ，ｃ」）の関係を有する場合に、上位のクラスが下位のクラスに処理を委ねる関係、つまり、委譲関係として表現できる場合があることによる（以下、「第１１変換パターン：パターン［２］→［５］」と呼ぶ。）。また、逆に、パターン［５］に示すように、上位のクラス（「クラスＡ」）が下位のクラス（「クラスａ，ｂ，ｃ」）に処理を委譲する関係にある場合に、その上位のクラスが下位のクラスを集約する関係であることと、同等であると捉えられる場合があることによる（以下、「第１２変換パターン：パターン［５］→［２］」と呼ぶ。）。
なお、この第１１変換パターンにより、パターン［２］が変換された後のパターン［５］の「委譲による継承関係の実現」を、画面上に生成するためのクラス図情報１００（１００ｇ）を図１０に示す。図１０に示すように、パターン［５］の「委譲による継承関係の実現」のクラス図情報１００（１００ｇ）は、図４に示した、パターン［２］の「クラスの集約関係」のクラス図情報１００（１００ｂ）の集約のレコードの表示関連情報１０９の項目に、上位のクラスから下位のクラスに向けて委譲を示す矢印（→）が格納される。
本実施形態に係るクラス図変換装置１は、この第１１変換パターン（パターン［２］→［５］）および第１２変換パターン（パターン［５］→［２］）を、前記した変換パターン情報に含めるようにすることもできる。
【００７７】
以上説明した第１変換パターン〜第１０変換パターンにおいて６種類のパターンそれぞれに注目すると、次に示すような、変換前のパターンから変換後のパターンに変換可能な「変換パターン情報」として捉えることができる。
【００７８】
パターン［１］→［２］
パターン［２］→［１］，［３］，［４］
パターン［３］→［２］，［４］
パターン［４］→［２］，［３］
パターン［５］→［６］
パターン［６］→［５］
【００７９】
この変換パターン情報は、例えば、パターン［２］に着目したとき、そのパターン［２］において表現されるクラス図が、パターン［１］，［３］，［４］に変換可能であることを示す。
なお、この変換パターン情報が、変換パターンデータベース４２（図１参照）に格納される。
【００８０】
そして、本実施形態に係るクラス図変換装置１は、変換前のクラス図のパターンが、パターン［１］〜パターン［６］のいずれかであると判定した場合に、変換パターンデータベース４２に格納された変換パターン情報を参照し、その判定されたパターンについて変換可能な上記の変換パターンを表示して設計者に選択させる。そして、クラス図変換装置１は、その選択されたパターンにクラス図を変換し表示する。
【００８１】
＜クラス図変換処理＞
次に、本実施形態に係るクラス図変換装置１が実行するクラス図変換処理について説明する。
【００８２】
図１１は、本実施形態に係るクラス図変換装置１が実行する、クラス図変換処理の流れを示すフローチャートである。なお、クラス図変換装置１の記憶部４０のクラス図情報データベース４１には、変換前のクラス図を構成するための情報であるクラス図情報１００（変換前のクラス図情報１００）が、予め記憶されているものとする。
【００８３】
まず、クラス図変換装置１のクラス図表示部１１１（図１参照）は、クラス図情報データベース４１から、変換前のクラス図情報１００を取得し（ステップＳ１０）、表示装置２に表示させる。
【００８４】
そして、クラス図表示部１１１は、表示させたクラス図に基づき、設計者に変換対象の適用箇所を選択させる。そして、クラス図表示部１１１は、そのクラス図の適用箇所の選択情報を、入力装置３から入出力部２０を介して受け付けたか否かを判定する（ステップＳ１１）。ここで、クラス図表示部１１１は、適用箇所の選択情報を受け付けていない場合には（ステップＳ１１→Ｎｏ）、適用箇所の選択情報が入力されるまで待つ。
この適用箇所の選択は、例えば、設計者が入力装置３により、画面に表示されたクラス図のうち、１つのクラスをクリック（マウス等による所定の操作）等することにより指定したり、複数のクラスの組合せをマウス等の所定の操作により同時に選択（範囲指定）したりすること等により、そのクラス図のうちの一部または全部の構成を、クラス図変換の適用箇所として選択する。
そして、クラス図表示部１１１は、適用箇所の選択情報を受け付けると（ステップＳ１１→Ｙｅｓ）、その適用箇所の選択情報を、変換パターン表示部１１２（図１参照）に引き渡す。
【００８５】
変換パターン表示部１１２は、変換前のクラス図情報１００のうち適用箇所の選択情報により指定される構成（以下、「適用箇所のクラス図情報」と呼ぶ。）に基づき、変換パターンデータベース４２（図１参照）に格納されたパターン判定ロジックを参照し、その変換対象となる適用箇所が、クラスとその「関連」で示される所定のパターン（６種類のパターン）のうち、どのパターンに該当するかを特定する（ステップＳ１２）。つまり、変換前のパターンがどのパターンに該当するかを特定する。
【００８６】
ここで、ステップＳ１２の変換前のパターンの特定処理について、設計者により、１つのクラスが変換対象の適用箇所として選択された場合と、複数のクラスの組合せが変換対象の適用箇所として選択（範囲指定）された場合とに分けて、詳細に説明する。
なお、１つのクラスが変換対象の適用箇所として設計者により選択された場合には、変換パターン表示部１１２は、その選択されたクラスを含む「関連」のパターンを表示させ（後記する、図１３の「変換前パターン選択画面２００」参照）、設計者に変換前のパターンを選択入力させることにより、変換前のパターンを特定する。一方、複数のクラスの組合せが変換対象の適用箇所として選択（範囲指定）された場合には、変換パターンデータベース４２（図１参照）に格納されたパターン判定ロジックに基づき、変換パターン表示部１１２が、変換前のパターンを特定する。
【００８７】
変換パターン表示部１１２は、１つのクラスが変換対象の適用箇所として選択された場合には、その選択されたクラスと直接的に接続された「関連」を有する他の構成要素（クラス、属性、オブジェクト）を抽出する。具体的には、変換パターン表示部１１２は、変換前のクラス図情報１００のうち、選択されたクラスを含むレコードを抽出する。つまり、変換パターン表示部１１２は、その抽出したレコードの関連種別１０１および選択されたクラスが上位の構成要素または下位の構成要素のどちらであるか（以下、「『関連』の向き」と呼ぶことがある。）を判定する。
図１２（ａ）は、ステップＳ１１において、図１２（ｂ）に示すクラス図が画面表示されていた場合に、設計者により、１つのクラスとして「クラスＡ」が選択され、その「クラスＡ」と直接的に接続された「関連」を有する他の構成要素である、「属性Ｘ」，「クラスａ」，「クラスｂ」，「クラスｃ」，「クラスＢ」が変換パターン表示部１１２により抽出され、その関連種別１０１および「関連」の向きが判定された場合の概念図である。つまり、図１２（ａ）は、変換前のクラス図情報１００に、クラスＡが上位のクラスまたは下位のクラスのどちらかに存在するレコードとして、属性のレコードが１つ、集約のレコードが３つ、継承のレコードが１つ、の計５つの「関連」のレコードが存在することと、その「関連」の向きとを示している。
【００８８】
次に、変換パターン表示部１１２は、抽出された他の構成要素（ここでは、「属性Ｘ」，「クラスａ」，「クラスｂ」，「クラスｃ」，「クラスＢ」）それぞれのレコード毎に、その選択されたクラスを含む「関連」のパターンを、変換パターンデータベース４２（図１参照）に格納されたパターン判定ロジックに基づき決定する。そして、変換パターン表示部１１２は、そのレコード毎に決定したパターンを、変換前パターン選択画面２００（図１３参照）として表示し、設計者に変換前のパターン、つまり、変換対象となるパターンを選択させる。
【００８９】
図１３は、変換前パターン選択画面２００の一例を示す図である。変換前パターン選択画面２００には、変換前のクラス図情報１００のうち、選択されたクラスと抽出された他の構成要素が格納されたレコード毎に、パターン判定ロジックに基づき決定されたパターンが表示される。例えば、図１３に示すように、「クラスＡ」と「属性Ｘ」とが格納された属性のレコードについては、パターン［１］の「クラスと属性の関係」がそのレコードから決定されたパターンとして表示される（符号２１０）。「クラスＡ」と「クラスａ」とが格納された集約のレコードについては、パターン［２］の「クラスの集約関係」がそのレコードから決定されたパターンとして表示される（符号２２０）。同様に、「クラスＡ」と「クラスｂ」とが格納された集約のレコードについては、パターン［２］の「クラスの集約関係」がそのレコードから決定されたパターンとして表示される（符号２３０）。「クラスＡ」と「クラスｃ」とが格納された集約のレコードについては、パターン［２］の「クラスの集約関係」がそのレコードから決定されたパターンとして表示される（符号２４０）。また、「クラスＡ」と「クラスＢ」とが格納された継承のレコードについては、パターン［６］の「継承関係」がそのレコードから決定されたパターンとして表示される（符号２５０）。
そして、変換パターン表示部１１２は、設計者により変換前パターン選択画面２００の選択ボタン（符号２０１）が選択入力されることで、変換対象となるパターン（変換前のパターン）を特定する。
【００９０】
また、変換パターン表示部１１２は、設計者により選択された適用箇所のクラス図情報が、複数のクラスの組合せを同時に選択（範囲指定）された情報であれば、変換パターンデータベース４２（図１参照）に格納されたパターン判定ロジックのうち、各パターン（６つのパターン）それぞれに該当するか否かを、パターン［１］〜パターン［６］まで順に判定することにより、どのパターンに該当するのかを判定する。
【００９１】
図１１に戻り、変換パターン表示部１１２は、ステップＳ１２の結果、１つのクラスが変換対象の適用箇所として設計者により選択された場合において、表示された変換前パターン選択画面２００（図１３）でいずれのパターンも選択されなかった場合（不図示の終了ボタンが押された場合等）や、複数のクラスの組合せが変換対象の適用箇所として選択（範囲指定）された場合において、所定のパターン（６種類のパターン）のいずれにも該当しない場合には、処理を終了する（ステップＳ１３→Ｎｏ）。一方、変換パターン表示部１１２は、いずれかのパターンが設計者により変換前のパターンとして特定された場合、または、複数のクラスの組合せが所定のパターン（６種類のパターン）のいずれかに該当した場合には（ステップＳ１３→Ｙｅｓ）、次のステップＳ１４に進む。
【００９２】
ステップＳ１４において、変換パターン表示部１１２は、適用箇所のクラス図のパターンについて、変換可能な変換パターンを、変換パターンデータベース４２（図１参照）に格納された変換パターン情報を参照して抽出し、変換パターン一覧画面３００（図１４，図１５参照）を生成し、表示装置２に表示させる。
【００９３】
図１４は、１つのクラスが変換対象の適用箇所として設計者により選択された場合における例として、図１３の符号２２０に示す「クラスＡ」と「クラスａ」とが格納された集約のレコードにおけるパターン［２］の「クラスの集約関係」が設計者により選択された場合の変換パターン一覧画面３００（３００ａ）を示している。
【００９４】
図１４に示すように、変換パターン一覧画面３００（３００ａ）は、適用箇所のパターン表示領域３１０と変換パターン表示領域３２０と備える。この適用箇所のパターン表示領域３１０には、ステップＳ１２で特定した適用箇所のクラス図のパターン（変換前のパターン）を表示させる。また、変換パターン表示領域３２０には、その適用箇所のクラス図のパターンにおいて変換可能な変換パターンとして、変換後のクラス図のパターンが表示される。そして、設計者は、適用箇所のクラス図について変換させたいパターンを、その各変換パターンに設けられた選択ボタン（符号３０１（３０１ａ，３０１ｂ，３０１ｃ））を選択入力することにより決定する。
図１４においては、変換パターン表示領域３２０に、適用箇所となるパターン［２］の「クラスの集約関係」に対して変換可能な変換パターンである、パターン［１］の「クラスと属性の関係」、パターン［３］の「クラスの集約関係＋間に抽象クラス」、および、パターン［４］の「ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン」が表示され、設計者により選択される。
【００９５】
また、図１５は、複数のクラスの組合せが変換対象の適用箇所として選択（範囲指定）された場合において、変換パターン表示部１１２により、適用箇所のクラス図のパターンが「［２］クラスの集約関係」と判定された場合の変換パターン一覧画面３００（３００ｂ）を示している。
【００９６】
図１４に示す変換パターン一覧画面３００（３００ａ）と同様に、図１５に示す変換パターン一覧画面３００（３００ｂ）においては、適用箇所のパターン表示領域３１０に、ステップＳ１２で判定した適用箇所のクラス図のパターン（複数の構成要素を含む変換前のパターン）が表示させる。また、変換パターン表示領域３２０には、その適用箇所のクラス図のパターンにおいて変換可能な変換パターンとして、変換後のクラス図のパターン（複数の構成要素により構成されるパターン）が表示される。そして、設計者は、適用箇所のクラス図について変換させたいパターンを、その各変換パターンに設けられた選択ボタン（符号３０３（３０３ａ，３０３ｂ，３０３ｃ））を選択入力することにより決定する。
【００９７】
図１１に戻り、ステップＳ１５において、変換パターン表示部１１２は、表示装置２に表示された変換パターン一覧画面３００において、設計者により変換パターンが選択されることにより、入出力部２０を介して、変換パターンの選択情報を受け付けたか否かを判定する。ここで、変換パターン表示部１１２は、変換パターンの選択情報を受け付けていない場合には（ステップＳ１５→Ｎｏ）、受け付けるまで待つ。一方、変換パターン表示部１１２は、変換パターンの選択情報を受け付けた場合には（ステップＳ１５→Ｙｅｓ）、その変換パターンの選択情報をクラス図変換処理部１１３に引き渡し、次のステップＳ１６に進む。
【００９８】
ステップＳ１６において、クラス図変換処理部１１３は、ステップＳ１５で受け付けた変換パターンの選択情報に基づき、適用箇所のクラス図を変換する。そして、クラス図変換処理部１１３は、変換後のクラス図を表示装置２に表示させる。なお、このクラス図変換処理部１１３による、各変換パターンに基づく変換処理の詳細については、後記する。
【００９９】
このようにすることで、本実施形態に係るクラス図変換装置１によれば、設計者が選択した適用箇所のクラス図のパターンにおいて、変換可能な変換パターンを提示し、設計者が選択した変換パターンにより、適用箇所のクラス図を変換することができる。
【０１００】
（クラス図の変換処理）
次に、本実施形態に係るクラス図変換装置１のクラス図変換処理部１１３による、クラス図の変換処理について説明する。
クラス図変換処理部１１３は、前記した（第１変換パターン）〜（第１０変換パターン）に基づき、クラス図の変換処理を実行する。以下、クラス図変換処理部１１３が、各変換パターンの変換処理を実行する際に行う、クラス図情報１００のデータの変換処理について具体的に説明する。
【０１０１】
≪第１変換パターン：パターン［１］→［２］≫
図１６は、本実施形態に係るクラス図変換装置１が第１変換パターン（［１］クラスと属性の関係→［２］クラスの集約関係）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図１６は、変換前のクラス図情報（符号１０１０）と、クラス図の変換処理による変換後のクラス図情報（符号２０１０）とを示している。クラス図変換処理部１１３は、第１変換パターンの場合、図１６に示すように、関連種別１０１を「属性」から「集約」に書き換え、Ｔｏ要素種別１０５を「属性」から「クラス」に書き換える。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［１］→［２］へのクラス図情報１００の変換を行う。
【０１０２】
なお、図１６においては、変換前のクラス図情報（符号１０１０）として、図３のクラス図情報１００（１００ａ）の１行目のみを示し、属性「ｂ」，「ｃ」についての記載を省略している。また、変換後のクラス情報（符号２０１０）についても、クラス「ｂ」，「ｃ」についての記載を省略している。以下、図１７〜図２５も同様に、ＩＤ（Ｆｒｏｍ要素ＩＤ１０４またはＴｏ要素ＩＤ１０６）のみ異なる構成要素については、変換前と変換後のクラス図情報１００において、その記載を省略している。
【０１０３】
≪第２変換パターン：パターン［２］→［１］≫
図１７は、本実施形態に係るクラス図変換装置１が第２変換パターン（［２］クラスの集約関係→［１］クラスと属性の関係）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図１７は、変換前のクラス図情報（符号１０２０）と、クラス図の変換処理による変換後のクラス図情報（符号２０２０）とを示している。クラス図変換処理部１１３は、第２変換パターンの場合、図１７に示すように、関連種別１０１を「集約」から「属性」に書き換え、Ｔｏ要素種別１０５を「クラス」から「属性」に書き換える。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［２］→［１］へのクラス図情報１００の変換を行う。
【０１０４】
≪第３変換パターン：パターン［２］→［３］≫
図１８は、本実施形態に係るクラス図変換装置１が第３変換パターン（［２］クラスの集約関係→［３］クラスの集約関係＋間に抽象クラス）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図１８は、変換前のクラス図情報（符号１０３０）と、クラス図の変換処理による変換後のクラス図情報（符号２０３０）とを示している。クラス図変換処理部１１３は、第３変換パターンの場合、図１８に示すように、関連種別１０１が「集約」のＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６について、抽象クラス（クラスＲ）を新規に挿入する。そして、クラス図変換処理部１１３は、新たにレコードを追加して、関連種別１０１に「継承」を設定し、Ｆｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４に新規に挿入した抽象クラス（クラスＲ）を設定し、そのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６に、変換前のＴｏ要素種別１０５の「クラス」と変換前のＴｏ要素ＩＤ１０６の「ａ」とを移行する。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［２］→［３］へのクラス図情報１００の変換を行う。
【０１０５】
≪第４変換パターン：パターン［３］→［２］≫
図１９は、本実施形態に係るクラス図変換装置１が第４変換パターン（［３］クラスの集約関係＋間に抽象クラス→［２］クラスの集約関係）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図１９は、変換前のクラス図情報（符号１０４０）と、クラス図の変換処理による変換後のクラス図情報（符号２０４０）とを示している。クラス図変換処理部１１３は、第４変換パターンの場合、図１９に示すように、変換前のクラス情報（符号１０４０）から「継承」のレコードを削除し、変換前の「継承」のレコードのＴｏ要素種別１０５の「クラス」およびＴｏ要素ＩＤ１０６の「ａ」を、変換後の「集約」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６に移行する。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［３］→［２］へのクラス図情報１００の変換を行う。
【０１０６】
≪第５変換パターン：パターン［３］→［４］≫
図２０は、本実施形態に係るクラス図変換装置１が第５変換パターン（［３］クラスの集約関係＋間に抽象クラス→［４］ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図２０は、変換前のクラス図情報（符号１０５０）と、クラス図の変換処理による変換後のクラス図情報（符号２０５０）とを示している。クラス図変換処理部１１３は、第５変換パターンの場合、図２０に示すように、変換前の「集約」のレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示される「クラスＡ」を、変換後に新たに追加した「インスタンス」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「オブジェクトＡ」としてインスタンス化する。また、クラス図変換処理部１１３は、変換前の「継承」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「クラスａ」を、変換後に新たに追加した「インスタンス」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「オブジェクトａ」としてインスタンス化する。
クラス図変換処理部１１３は、変換前の「集約」のレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示される「クラスＡ」、および、Ｔｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「クラスＲ」それぞれを、変換後に各オブジェクトを収容する新規なクラス（「クラスＳＡ」「クラスＳＡＣ」）に書き換える。そして、クラス図変換処理部１１３は、変換前の「継承」のレコードを削除する。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［３］→［４］へのクラス図情報１００の変換を行う。
【０１０７】
≪第６変換パターン：パターン［４］→［３］≫
図２１は、本実施形態に係るクラス図変換装置１が第６変換パターン（［４］ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン→［３］クラスの集約関係＋間に抽象クラス）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図２１は、変換前のクラス図情報（符号１０６０）と、クラス図の変換処理による変換後のクラス図情報（符号２０６０）とを示している。クラス図変換処理部１１３は、第６変換パターンの場合、図２１に示すように、変換前の「集約」のＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示されるクラスである「クラスＳＡ」のオブジェクトであり、「インスタンス」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「オブジェクトＡ」を、変換後の「集約」のレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示される「クラスＡ」として脱インスタンス化する。また、クラス図変換処理部１１３は、変換前の「集約」のＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示されるクラスである「クラスＳＡＣ」のオブジェクトであり、「インスタンス」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「オブジェクトａ」を、変換後の新たに追加した「継承」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「クラスａ」として脱インスタンス化する。
また、クラス図変換処理部１１３は、変換後の「クラスａ」が継承する新規のクラス（クラスＲ）を設定し、変換後の「集約」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６に格納し、さらに、変換後の「継承」のレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４に格納する。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［４］→［３］へのクラス図情報１００の変換を行う。
【０１０８】
≪第７変換パターン：パターン［２］→［４］≫
図２２は、本実施形態に係るクラス図変換装置１が第７変換パターン（［２］クラスの集約関係→［４］ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図２２は、変換前のクラス図情報（符号１０７０）と、クラス図の変換処理による変換後のクラス図情報（符号２０７０）とを示している。クラス図変換処理部１１３は、第７変換パターンの場合、図２２に示すように、変換前の「集約」のレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示される「クラスＡ」を、変換後に新たに追加した「インスタンス」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「オブジェクトＡ」としてインスタンス化する。また、クラス図変換処理部１１３は、変換前の「集約」のＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「クラスａ」を、変換後に新たに追加した「インスタンス」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「オブジェクトａ」としてインスタンス化する。
クラス図変換処理部１１３は、変換後の「オブジェクトＡ」を収容する新規なクラス（「クラスＳＡ」）と、変換後の「オブジェクトａ」を収容する新規なクラス（「クラスＳＡＣ」）とを設定する。そして、クラス図変換処理部１１３は、クラスＳＡがクラスＳＡＣを集約するレコードを生成する。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［２］→［４］へのクラス図情報１００の変換を行う。
【０１０９】
≪第８変換パターン：パターン［４］→［２］≫
図２３は、本実施形態に係るクラス図変換装置１が第８変換パターン（［４］ＴＭＦ ＳＩＤ Ｓｐｅｃ．Ｃｈａｒ．パターン→［２］クラスの集約関係）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図２３は、変換前のクラス図情報（符号１０８０）と、クラス図の変換処理による変換後のクラス図情報（符号２０８０）とを示している。クラス図変換処理部１１３は、第８変換パターンの場合、図２３に示すように、変換前の「集約」のＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示されるクラスである「クラスＳＡ」のオブジェクトであり、「インスタンス」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「オブジェクトＡ」を、変換後の「集約」のレコードのＦｒｏｍ要素種別１０３およびＦｒｏｍ要素ＩＤ１０４で示される「クラスＡ」として脱インスタンス化する。また、クラス図変換処理部１１３は、変換前の「集約」のＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示されるクラスである「クラスＳＡＣ」のオブジェクトであり、「インスタンス」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「オブジェクトａ」を、変換後の「集約」のレコードのＴｏ要素種別１０５およびＴｏ要素ＩＤ１０６で示される「クラスａ」として脱インスタンス化する。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［４］→［２］へのクラス図情報１００の変換を行う。
【０１１０】
≪第９変換パターン：パターン［５］→［６］≫
図２４は、本実施形態に係るクラス図変換装置１が第９変換パターン（［５］委譲による継承関係の実現→［６］継承関係）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図２４は、変換前のクラス図情報（符号１０９０）と、クラス図の変換処理による変換後のクラス図情報（符号２０９０）とを示している。クラス図変換処理部１１３は、第９変換パターンの場合、図２４に示すように、変換前の「集約」のレコードのＦｒｏｍ要素ＩＤ１０４の値「Ｂ」を、変換後に新たに設定した「継承」のレコードのＴｏ要素ＩＤ１０６に設定する。また、クラス図変換処理部１１３は、変換前の「集約」のレコードのＴｏ要素ＩＤ１０６の値「Ａ」を、変換後の新たに設定した「継承」のレコードのＦｒｏｍ要素ＩＤ１０４に設定する。そして、クラス図変換処理部１１３は、変換前の「集約」のレコードを削除する。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［５］→［６］へのクラス図情報１００の変換を行う。
【０１１１】
≪第１０変換パターン：パターン［６］→［５］≫
図２５は、本実施形態に係るクラス図変換装置１が第１０変換パターン（［６］継承関係→［５］委譲による継承関係の実現）を実行する際のクラス図情報１００の変換処理を説明するための図である。
図２５は、変換前のクラス図情報（符号１１００）と、クラス図の変換処理による変換後のクラス図情報（符号２１００）とを示している。クラス図変換処理部１１３は、第１０変換パターンの場合、図２５に示すように、変換前の「継承」のレコードのＦｒｏｍ要素ＩＤ１０４の値「Ａ」を、変換後に新たに設定した「集約」のレコードのＴｏ要素ＩＤ１０６に設定する。また、クラス図変換処理部１１３は、変換前の「継承」のレコードのＴｏ要素ＩＤ１０６の値「Ｂ」を、変換後の新たに設定した「集約」のレコードのＦｒｏｍ要素ＩＤ１０４に設定する。そして、クラス図変換処理部１１３は、変換後の新たに設定した「集約」のレコードの表示関連情報１０９に、クラスＢから委譲先であるクラスＡに向けての矢印（→）の情報を格納する。続いて、クラス図変換処理部１１３は、変換前の「継承」のレコードを削除する。
このようなデータ処理を実行することにより、クラス図変換処理部１１３は、パターン［６］→［５］へのクラス図情報１００の変換を行う。
【０１１２】
以上説明したように、本実施形態に係るクラス図変換装置１およびクラス図変換プログラムによれば、既存のデザインパターンに限定されず、設計者が選択に迷いそうなパターンについて、その変換パターンを表示して設計者に選択させることができる。よって、設計者は変更が必要なパターンついての高度な知識を必要とせず、一旦作成したクラス図を見直して、最適なクラス図のパターンに変換することが可能となる。
【符号の説明】
【０１１３】
１      クラス図変換装置
２      表示装置
３      入力装置
１０    制御部
１１    表示処理部（表示処理手段）
１２    入出力情報処理部
２０    入出力部（入力手段）
３０    メモリ部
４０    記憶部（記憶手段）
４１    クラス図情報データベース
４２    変換パターンデータベース
１００  クラス図情報
１１１  クラス図表示部
１１２  変換パターン表示部
１１３  クラス図変換処理部
２００  変換前パターン選択画面
３００  変換パターン一覧画面
【図１】
2014092920.tif 000003
【図２】
2014092920.tif 000004
【図３】
2014092920.tif 000005
【図４】
2014092920.tif 000006
【図５】
2014092920.tif 000007
【図６】
2014092920.tif 000008
【図７】
2014092920.tif 000009
【図８】
2014092920.tif 000010
【図９】
2014092920.tif 000011
【図１０】
2014092920.tif 000012
【図１１】
2014092920.tif 000013
【図１２】
2014092920.tif 000014
【図１３】
2014092920.tif 000015
【図１４】
2014092920.tif 000016
【図１５】
2014092920.tif 000017
【図１６】
2014092920.tif 000018
【図１７】
2014092920.tif 000019
【図１８】
2014092920.tif 000020
【図１９】
2014092920.tif 000021
【図２０】
2014092920.tif 000022
【図２１】
2014092920.tif 000023
【図２２】
2014092920.tif 000024
【図２３】
2014092920.tif 000025
【図２４】
2014092920.tif 000026
【図２５】
2014092920.tif 000027
【図２６】
2014092920.tif 000028