(57)【特許請求の範囲】
【請求項１】
コンピュータを、
開発対象であるソフトウェアシステムの既存のモデル情報に含まれるクラスのコピークラスの作成指示の入力を受けて当該クラスの取得指示を出力するモデル自動生成部と、
前記取得指示を受けて前記モデル情報から前記コピークラスの元であるクラスを取得するモデル情報取得部と、
前記モデル自動生成部から前記取得されたクラスのコピークラスの作成指示を受けて当該クラスのコピークラスを作成するモデル編集部として機能させる
ソフトウェア開発支援プログラムであって、
前記モデル自動生成部は、前記取得されたクラスに付加されている複数のフィールドから、可視性が非公開である属性が付加されたフィールドを取得し、このフィールドのコピーフィールドの作成指示を前記モデル編集部に出力し、
前記モデル編集部は、前記コピーフィールドの作成指示を受けて、前記属性が付加されたフィールドのコピーフィールドを前記コピークラスに作成すること
を特徴とするソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、統一モデリング言語（ＵＭＬ）によるソフトウェア開発支援システムおよび開発支援方法に係り、特にオブジェクト指向技術によるソフトウェア開発におけるモデルの自動生成に関する。
【背景技術】
【０００２】
ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）は、ソフトウェア開発のためのモデリング言語であり、開発対象のシステムの構造を表現するための表記法で、開発者同士の意思疎通を図ることができる。
【０００３】
ＵＭＬによるソフトウェア開発には、開発対象となるシステムの仕様作成、設計、実装を支援する表記物として、ユースケース図（システムの機能定義）、アクティビティ図（動作の流れ）、シーケンス図（オブジェクト間の相互作用）、オブジェクト図（インスタンスのスナップショット表記）、クラス図（静的なモデルを定義）などを作成する。ＵＭＬには上記のユースケース図やクラス図などの１０個の図が定義されているが、画面や画面遷移を表現する図を作成する機能を持たせたものもある（例えば、非特許文献１参照）。
【０００４】
これらの図に使用される各機能要素は、ＵＭＬに定められる画面部品（矩形、楕円、円、矢印、アクター記号、コネクタ記号、ノード記号、選択記号など）および文字（名称や属性情報）の組み合わせで作成される。
【０００５】
モデルの自動生成環境として、上記の非特許文献１では、モデルからソースコードを生成するフォワードエンジニアリングと、ソースコードからモデルを作成するリバースエンジニアリングの両方を搭載し、ラウンドトリップエンジニアリングを手軽に行うことができる。
【０００６】
また、作成されたＵＭＬ図（モデル情報）からスケルトンレベルのソースコードを生成する機能は、Ｒａｔｉｏｎａｌ  ＲｏｓｅやＥｌａｐｉｚなど様々なＵＭＬモデリングツールに組み込まれている。Ｒａｔｉｏｎａｌ  Ｒｏｓｅ  Ｄｅｖｅｌｏｐｅｒ  ｆｏｒ  Ｊａｖａ（登録商標）は、ＵＭＬに基づくビジュアルモデリング環境であり、ユースケース図やクラス図などＵＭＬの図を作成したり、モデルからＪａｖａコードを生成することができる。ｅｃｌｉｐｓｅは、ソフトウェアを構築および配置するための統合開発環境であり、コード生成（補完）機能、デバッグ機能など統合開発環境に必要な機能だけでなく、フィールドからＧｅｔｔｅｒやＳｅｔｔｅｒメソッドを生成する機能も持っている。
【非特許文献１】明電時報  ２００６  ９・１０月通巻３１０号  Ｎｏ．５
【発明の開示】
【発明が解決しようとする課題】
【０００７】
オブジェクト指向プログラミングでは、オブジェクト内の構造（フィールド）を外部から隠蔽することにより、外部からは公開された手続き（メソッド）を利用することでしかデータを操作できないようにする。これにより、オブジェクト内部の仕様変更が外部に影響しなくなり、ソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用が容易になる。
【０００８】
このような場合、図８に例を示すように、オブジェクトを表現するクラスに、フィールドとこのフィールドにアクセスするための公開メソッド（ＧｅｔｔｅｒとＳｅｔｔｅｒ）を作成する。一般に、フィールドと公開メソッドの関係は同一のパターンで表現することができるため、上記のｅｃｌｉｐｓｅにも見られるように、簡単にフィールドから公開メソッドを自動生成することができる。
【０００９】
ソフトウェアの設計モデルの一つにＭＶＣがある。処理の中核である「Ｍｏｄｅｌ」、表示・出力の「Ｖｉｅｗ」、入力を受け取りＶｉｅｗとＭｏｄｅｌを制御する「Ｃｏｎｔｒｏｌｌｅｒ」の３つの組み合わせでシステムを実装する。明確に機能ごとに分類することで、互いに仕様変更の影響を受けにくくなる。
【００１０】
このような場合、図９に例を示すように、Ｍｏｄｅｌのクラス構造とＶｉｅｗのクラス構造をほぼ同じようにすることがあるが、一般にＭｏｄｅｌのクラス構造は現実の世界を表現するために複雑で入り組んでいることが多いため、これをパターンで表現するのは非常に複雑で容易ではない。また、Ｒａｔｉｏｎａｌ  Ｒｏｓｅ  Ｄｅｖｅｌｏｐｅｒ  ｆｏｒ  Ｊａｖａやｅｃｌｉｐｓｅなどには、このような機能は存在しない。
【００１１】
本発明の目的は、従来のパターン方式で生成し難い複雑なモデルに対しても、元モデルに対して新たなモデルを自動生成することができるソフトウェア開発支援プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
そこで、本発明のソフトウェア開発支援プログラムは、コンピュータを、開発対象であるソフトウェアシステムの既存のモデル情報に含まれるクラスのコピークラスの作成指示の入力を受けて当該クラスの取得指示を出力するモデル自動生成部と、前記取得指示を受けて前記モデル情報から前記コピークラスの元であるクラスを取得するモデル情報取得部と、前記モデル自動生成部から前記取得されたクラスのコピークラスの作成指示を受けて当該クラスのコピークラスを作成するモデル編集部として機能させるソフトウェア開発支援プログラムであって、前記モデル自動生成部は、前記取得されたクラスに付加されている複数のフィールドから、可視性が非公開である属性が付加されたフィールドを取得し、このフィールドのコピーフィールドの作成指示を前記モデル編集部に出力し、前記モデル編集部は、前記コピーフィールドの作成指示を受けて、前記属性が付加されたフィールドのコピーフィールドを前記コピークラスに作成する。
【発明の効果】
【００１８】
以上のとおり、本発明によれば、開発対象モデルを作成・削除・変更し、このモデル編集で作成した開発対象モデルの情報を取得できるモデル作成部に対し、取得したモデル情報を元に新たなモデルを作成・削除・変更を指示するモデル自動生成部を備えたため、従来のパターン方式で生成できる簡単なモデルに対してだけでなく、従来のパターン方式で生成し難い複雑なモデルに対しても、元モデルに対して新たなモデルを自動生成することができる。
【００１９】
また、開発対象システムごとに自動生成の手法が異なる場合、モデル自動生成部のエントリを取得するインタフェースを実装し、開発対象システムごとの専用のモデル自動生成部を作成しておけば、このモデル自動生成部のみを取り替えるだけで済む。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明の実施形態を示すソフトウェア開発支援システムの要部構成図であり、主にモデルの自動生成の機能ブロックを示す。同図に示すように、モデル作成部１にはモデル情報取得部１Ａとモデル編集部１Ｂを備え、モデル自動生成部２とモデルデータベース（以下、モデルＤＢ）３、キーボードやマウスなどの操作部４、ディスプレイなどの表示部５を備え、各部はコンピュータシステムのハードウェア資源とこれに搭載するソフトウェアによって機能構成される。
【００２１】
モデル作成部１は、ＵＭＬのユースケースやクラスなどのＵＭＬモデルや、ウィンドウやダイアログなどのＧＵＩ部品などの、モデルの作成を行う。開発者は、対象システムのモデルを、操作部４を介してモデル作成部１において作成する。あるモデルを元モデルとして別のモデルを作成する場合、操作部４を介してモデル作成部１において、そのモデルを自動生成する。
【００２２】
この自動生成手順は図２に示す。モデル作成部１は、開発者が自動生成を指示したときに、モデル自動生成部２にモデルの自動生成を指示する（Ｓ１〜Ｓ３）。モデル自動生成部２は、モデルを自動生成するときに起動し、モデル情報取得部１Ａから自動生成の元になるモデルを取得し、モデル編集部１Ｂに自動生成による新たなモデルの作成や既存モデルの削除・変更を指示し、モデル情報取得部１Ａは指定した条件に合うモデルをモデルＤＢ３から選択して渡す（Ｓ４〜Ｓ８）。モデル編集部１Ｂは、モデルの作成やモデルの削除・変更を行い、モデルＤＢ３に登録し、これを表示部を介して開発者に提示する（Ｓ９〜Ｓ１１）。
【００２３】
一般に対象システムごとに自動生成のやり方は異なるため、図３に示すように、モデル自動生成部２は２Ａと２Ｂを取り替え可能にする。このため、モデル自動生成部２にはエントリを取得するためのインタフェースを用意する。モデル作成部１は、このインタフェースを利用してモデル自動生成部のエントリを取得して、このエントリに対して自動生成を指示する。
【００２４】
また、モデル作成部１にもエントリを取得するためのインタフェースを用意する。モデル自動生成部２は、このインタフェースを利用してモデル作成部１を取得し、このエントリからモデル情報取得部１Ａやモデル編集部１Ｂのエントリを取得して、このエントリに対してやり取りを行う。図２は、これらエントリのやり取りを行う場合を示す。
【００２５】
以下、本実施形態を基にしたモデルの自動生成の具体例を説明する。
【００２６】
（具体例１）ＵＭＬのフィールドから、このフィールドを取得するＵＭＬのメソッドを自動生成する。
【００２７】
（例１Ａ）
開発者は、操作部を介してモデル作成部１にフィールドを取得するメソッドを自動生成する指示を出す。モデル作成部１は、モデル自動生成部２のエントリを取得して、このエントリにフィールドを取得するメソッドを自動生成する指示を出す。モデル自動生成部２は、モデル作成部のエントリを取得して、このエントリを介してモデル情報取得部に選択されている複数のクラスの取得を指示する。
【００２８】
モデル情報取得部１Ａは、モデルＤＢ３から選択されている複数のクラスを取り出して返す。選択されている各クラスから、例えばフィールドを取得するメソッドを自動生成することを表すステレオタイプ＜＜ａｕｔｏ＿ｇｅｔ＞＞が付加されている、フィールドを取得するメソッドを自動生成する元となる複数のフィールドを取得する。
【００２９】
モデル作成部１のエントリを介してモデル編集部１Ｂに、上記の各フィールドを取得するメソッドの作成を指示をする。モデル編集部１Ｂは、上記の各フィールドを取得するメソッドを作成して、モデルＤＢ３に登録し、これを表示部を介して開発者に提示する。
【００３０】
図４は、選択されているクラスはクラスＡ（ＣｌａｓｓＡ）であり、フィールドを取得するメソッドを自動生成する元となるフィールドはフィールドＢ１（ｍ＿ｆｉｅｌｄＢ１）とフィールドＢ３（ｍ＿ｆｉｅｌｄＢ３）である場合の例である。それぞれ、フィールドＢ１を取得するメソッド（ｇｅｔＦｉｅｌｄＢ１）とフィールドＢ３を取得するメソッド（ｇｅｔＦｉｅｌｄＢ３）が自動生成されている。
【００３１】
（例１Ｂ）
上記の例１Ａと同様にフィールドを取得するメソッドを自動生成するが、自動生成のやり方が異なる場合を図５に示す。
【００３２】
例１Ａとの違いは、（ａ）モデル情報取得部から取得するモデルの条件が、可視性がｐｒｉｖａｔｅのフィールドであり、（ｂ）モデル編集部へのメソッド作成の指示におけるメソッド名が異なる点である。
【００３３】
フィールドを取得するメソッドを自動生成する元となる複数のフィールドが、ｆｉｅｌｄＣ２とｆｉｅｌｄＣ３であり、それぞれのメソッド名がＧｅｔＦｉｅｌｄＣ２とＧｅｔＦｉｅｌｄＣ３となっている。
【００３４】
上記の例１Ａと例１Ｂのように、自動生成のやり方が異なる対象システムごとにモデル自動生成部を作成して取り替えることにより、対象システムごとの自動生成を実現することができる。
【００３５】
（具体例２）ＵＭＬのクラスから、このクラスと同じ内容の別のＵＭＬのクラスを自動生成する
（例２Ａ）
開発者は、操作部を介してモデル作成部にクラスからコピークラスを自動生成する指示を出す。モデル作成部１は、モデル自動生成部２のエントリを取得して、このエントリにクラスからコピークラスを自動生成する指示を出す。
【００３６】
モデル自動生成部２は、モデル作成部１のエントリを取得して、このエントリを介してモデル情報取得部１Ａに選択されている複数のクラスの取得を指示する。モデル情報取得部１Ａは、モデルＤＢ３から選択されている複数のクラスを取り出して返す。
【００３７】
モデル作成部１のエントリを介してモデル編集部１Ｂに、上記の選択されている各クラスからコピークラスの作成を指示する。モデル編集部１Ｂは、上記のコピークラスを作成して、モデルＤＢ３に登録する。
【００３８】
続いて、モデル自動生成部２は、各クラスから、例えばコピークラスにコピーフィールドを自動生成することを表すステレオタイプ＜＜ａｕｔｏ＿ｃｏｐｙ＞＞が付加されている、コピーフィールドを自動生成する元となる複数のフィールドを取得する。
【００３９】
モデル編集部１Ｂに、上記の各フィールドのコピーフィールドを、コピークラスに作成する指示をする。モデル編集部１Ｂは、上記の各コピーフィールドを作成して、モデルＤＢ３に登録し、これを表示部を介して開発者に提示する。
【００４０】
図６は、選択されているクラスはクラスＡであり、コピーフィールドを自動生成する元となるフィールドはフィールドＢ１とフィールドＢ３である場合の例である。それぞれ、コピーフィールドＢ１’とコピーフィールドＢ３’が自動生成されている。
【００４１】
（例２Ｂ）
上記の例２Ａと同様にコピークラスを自動生成するが、自動生成のやり方が異なる場合を図７に示す。
【００４２】
例２Ａとの違いは、（ａ）モデル情報取得部から取得するモデルの条件が、可視性がｐｒｉｖａｔｅのフィールドであり、（ｂ）モデル編集部へのフィールド作成の指示におけるフィールド名が異なる点である。
【００４３】
コピーフィールドがそれぞれｎｅｗＦｉｅｌｄＣ１’とｎｅｗＦｉｅｌｄＣ２’となっている。
【００４４】
上記の例２Ａと例２Ｂのように、自動生成のやり方が異なる対象システムごとにモデル自動生成部を作成して取り替えることにより、対象システムごとの自動生成を実現することができる。
【００４５】
なお、本発明は、コンピュータを、上記の実施形態で示すソフトウェア開発支援システムの一部又は全部の機能部として機能させるプログラムとして提供することができる。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施形態を示すソフトウェア開発支援システムの要部構成図。
【図２】モデル自動生成手順。
【図３】対象システムごとのモデル自動生成部をもつ例。
【図４】フィールドからメソッドを自動生成する例（１）。
【図５】フィールドからメソッドを自動生成する例（２）。
【図６】クラスから別のクラスを自動生成する例（１）。
【図７】クラスから別のクラスを自動生成する例（２）。
【図８】オブジェクト指向での情報隠蔽の例。
【図９】ＭｏｄｅｌとＶｉｅｗのクラス階層の例。
【符号の説明】
【００４７】
１  モデル作成部
１Ａ  モデル情報取得部
１Ｂ  モデル編集部
２  モデル自動生成部
３  モデルＤＢ
４  操作部
５  表示部
【図１】
0005544064.tif 000002
【図２】
0005544064.tif 000003
【図３】
0005544064.tif 000004
【図４】
0005544064.tif 000005
【図５】
0005544064.tif 000006
【図６】
0005544064.tif 000007
【図７】
0005544064.tif 000008
【図８】
0005544064.tif 000009
【図９】
0005544064.tif 000010