(57)【要約】【課題】ユーザーからの操作情報に応じたモデル要素の変更が行われたか否かに基づいたモデル変換を行うことを可能とするモデル指向開発支援装置を提供する。【解決手段】上流工程の各モデル要素を複製したコピーモデルを記憶し、コピーモデルの上流工程の各モデル要素に応じた下流工程の各モデル要素を生成し、上流工程の各モデル要素の識別情報と、生成した下流工程のモデル要素の識別情報と、下流工程のモデル要素を生成した日時を示す更新日時とが対応付けられたトレース要素を生成し、コピーモデルに基づいて生成した下流工程の各モデル要素の内容と、予め記憶された下流工程の各モデル要素の内容との内容が異なり、かつ下流工程のモデル要素の更新日時と、モデル要素に対応するトレース要素の更新日時とが異なる場合、予め定められた手順に基づいて、予め記憶された各モデル要素と、コピーモデルに基づいて生成したモデル要素とを統合する。【選択図】図１
2010061543.tif 000002
【特許請求の範囲】
【請求項１】
開発対象であるソフトウェアシステムを構成する各機能をモデル化した各モデル要素を、抽象概念により表す上流工程から、ソースコードにより表す下流工程までの複数工程に階層化して行う前記ソフトウェアシステムの設計および開発を支援するモデル指向開発支援装置であって、
前記複数工程のうち第１の工程に含まれる前記各モデル要素と、前記第１の工程に対応する下流工程となる第２の工程に含まれる前記各モデル要素と、前記それぞれのモデル要素毎に、当該モデル要素が記憶された日時を示す更新日時とが予め記憶されているモデル記憶部と、
前記第１の工程に含まれる前記各モデル要素が複製されたコピーモデルが記憶されるコピーモデル記憶部と、
前記第１の工程の各モデル要素に基づいて、前記第２の工程の各モデル要素を生成するモデル変換要求の入力を受付ける入力部と、
前記入力部に前記モデル変換要求が入力されると、前記第１の工程の各モデル要素を複製して前記コピーモデル記憶部に記憶させるモデル複製部と、
予め定められたモデル変換ルールに基づいて、前記コピーモデル記憶部に記憶された前記第１の工程の各モデル要素に応じた前記第２の工程の各モデル要素を生成して前記コピーモデル記憶部に記憶させ、かつ、前記第１の工程の各モデル要素を識別する上流モデル要素識別情報と、当該第１の工程の各モデル要素に基づいて生成した前記第２の工程のモデル要素を識別する下流モデル要素識別情報と、前記第２の工程のモデル要素を生成した日時を示す更新日時とが対応付けられたトレース要素を生成するモデル要素変換部と、
前記モデル要素変換部が生成した前記トレース要素が記憶されるトレース要素記憶部と、
前記モデル要素変換部に生成され、前記コピーモデル記憶部に記憶された前記第２の工程の各モデル要素の内容と、前記モデル記憶部に記憶された前記第２の工程の各モデル要素の内容とを比較し、前記内容が異なるか否かを判定するモデル内容比較部と、
前記モデル内容比較部が、前記内容が異なると判定した場合、前記モデル記憶部に記憶された前記第１の工程の各モデル要素の前記更新日時と、前記第２の工程の各モデル要素の前記更新日時と、当該モデル要素に対応する前記トレース要素に含まれる前記更新日時とを比較し、更新日時が異なるか否かを判定する更新日時比較部と、
前記更新日時比較部が、前記更新日時が異なると判定した場合、予め定められた手順に基づいて、前記コピーモデル記憶部に記憶された前記各モデル要素と、前記モデル記憶部に記憶された前記モデル要素とを統合して前記モデル記憶部に記憶させるモデル更新部と、
を備えることを特徴とするモデル指向開発支援装置。
【請求項２】
前記更新日時比較部が、前記更新日時が異なると判定した場合、前記モデル要素に記憶された前記モデル要素と、前記コピーモデル記憶部に記憶された前記モデル要素のいずれの前記モデル要素を優先して前記モデル要素を統合するかを示す統合手順が記憶される統合手順記憶部と、
前記モデル更新部は、前記統合手順記憶部に記憶されている前記統合手順に基づいて、前記コピーモデル記憶部に記憶された前記各モデル要素と、前記モデル記憶部に記憶された前記モデル要素とを統合して前記モデル記憶部に記憶させる
ことを特徴とする請求項１に記載のモデル指向開発支援装置。
【請求項３】
前記入力部は、前記モデル記憶部に記憶された前記モデル要素の内容を変更する変更情報の入力を受付け、
前記入力部に入力される前記変更情報に応じて、前記モデル記憶部に記憶された前記モデル要素の内容を変更し、当該モデル要素に対応する前記更新日時として当該変更を行った日時を対応付けて前記モデル記憶部に記憶させるモデル編集部と、
を備えることを特徴とする請求項１または請求項２に記載のモデル指向開発支援装置。
【請求項４】
前記統合手順記憶部には、前記モデル記憶部に記憶された前記各モデル要素と、当該モデル要素に対応する前記トレース要素の存在の有無又はそれぞれの前記更新日時の異同に基づいて定められた条件に応じて前記統合手順が記憶され、
前記モデル更新部は、前記各モデル要素の全てについて、当該モデル要素に対応する前記トレース要素の存在の有無又はそれぞれの前記更新日時の異同が前記条件に一致するか否かを判定し、全て一致すれば、前記予め定められた手順に基づいて前記コピーモデル記憶部に記憶された前記各モデル要素と、前記モデル記憶部に記憶された前記モデル要素とを統合し、一致しないモデル要素が存在すれば、前記入力部に入力される前記モデル要素の前記変更情報に応じて前記統合を行う
ことを特徴とする請求項３に記載されたモデル指向開発支援装置。
【請求項５】
開発対象であるソフトウェアシステムを構成する各機能をモデル化した各モデル要素を、抽象概念により表す上流工程から、ソースコードにより表す下流工程までの複数工程に階層化して行う前記ソフトウェアシステムの設計および開発を支援し、前記複数工程のうち第１の工程に含まれる前記各モデル要素と、前記第１の工程に対応する下流工程となる第２の工程に含まれる前記各モデル要素と、前記それぞれのモデル要素毎に、当該モデル要素が記憶された日時を示す更新日時とが予め記憶されているモデル記憶部と、前記第１の工程に含まれる前記各モデル要素が複製されたコピーモデルが記憶されるコピーモデル記憶部と、前記第１の工程に含まれる前記各モデル要素に対応する前記第２の工程に含まれる前記各モデル要素との関連性を示すトレース要素が記憶されるトレース要素記憶部とを備えるモデル指向開発支援装置を用いたモデル指向開発支援方法であって、
入力部が、前記第１の工程の各モデル要素に基づいて、前記第２の工程の各モデル要素を生成するモデル変換要求の入力を受付けるステップと、
モデル複製部が、前記入力部に前記モデル変換要求が入力されると、前記第１の工程の各モデル要素を複製して前記コピーモデル記憶部に記憶させるステップと、
モデル要素変換部が、予め定められたモデル変換ルールに基づいて、前記コピーモデル記憶部に記憶された前記第１の工程の各モデル要素に応じた前記第２の工程の各モデル要素を生成して前記コピーモデル記憶部に記憶させ、かつ、前記第１の工程の各モデル要素を識別する上流モデル要素識別情報と、当該第１の工程の各モデル要素に基づいて生成した前記第２の工程のモデル要素を識別する下流モデル要素識別情報と、前記第２の工程のモデル要素を生成した日時を示す更新日時とが対応付けられたトレース要素を生成し、前記トレース要素記憶部に記憶させるステップと、
モデル内容比較部が、前記モデル要素変換部に生成され、前記コピーモデル記憶部に記憶された前記第２の工程の各モデル要素の内容と、前記モデル記憶部に記憶された前記第２の工程の各モデル要素の内容とを比較し、前記内容が異なるか否かを判定するステップと、
更新日時比較部が、前記モデル内容比較部により前記内容が異なると判定された場合、前記モデル記憶部に記憶された前記第１の工程の各モデル要素の前記更新日時と、前記第２の工程の各モデル要素の前記更新日時と、当該モデル要素に対応する前記トレース要素に含まれる前記更新日時とを比較し、更新日時が異なるか否かを判定するステップと、
モデル更新部が、前記更新日時比較部により前記更新日時が異なると判定された場合、予め定められた手順に基づいて、前記コピーモデル記憶部に記憶された前記各モデル要素と、前記モデル記憶部に記憶された前記モデル要素とを統合して前記モデル記憶部に記憶させるステップと、
を備えることを特徴とするモデル指向開発支援方法。
【請求項６】
開発対象であるソフトウェアシステムを構成する各機能をモデル化した各モデル要素を、抽象概念により表す上流工程から、ソースコードにより表す下流工程までの複数工程に階層化して行う前記ソフトウェアシステムの設計および開発を支援し、前記複数工程のうち第１の工程に含まれる前記各モデル要素と、前記第１の工程に対応する下流工程となる第２の工程に含まれる前記各モデル要素と、前記それぞれのモデル要素毎に、当該モデル要素が記憶された日時を示す更新日時とが予め記憶されているモデル記憶部と、前記第１の工程に含まれる前記各モデル要素が複製されたコピーモデルが記憶されるコピーモデル記憶部と、前記第１の工程に含まれる前記各モデル要素に対応する前記第２の工程に含まれる前記各モデル要素との関連性を示すトレース要素が記憶されるトレース要素記憶部とを備えるモデル指向開発支援装置のコンピュータに、
前記第１の工程の各モデル要素に基づいて、前記第２の工程の各モデル要素を生成するモデル変換要求の入力を受付けるステップと、
前記入力部に前記モデル変換要求が入力されると、前記第１の工程の各モデル要素を複製して前記コピーモデル記憶部に記憶させるステップと、
予め定められたモデル変換ルールに基づいて、前記コピーモデル記憶部に記憶された前記第１の工程の各モデル要素に応じた前記第２の工程の各モデル要素を生成して前記コピーモデル記憶部に記憶させ、かつ、前記第１の工程の各モデル要素を識別する上流モデル要素識別情報と、当該第１の工程の各モデル要素に基づいて生成した前記第２の工程のモデル要素を識別する下流モデル要素識別情報と、前記第２の工程のモデル要素を生成した日時を示す更新日時とが対応付けられたトレース要素を生成し、前記トレース要素記憶部に記憶させるステップと、
前記モデル要素変換部に生成され、前記コピーモデル記憶部に記憶された前記第２の工程の各モデル要素の内容と、前記モデル記憶部に記憶された前記第２の工程の各モデル要素の内容とを比較し、前記内容が異なるか否かを判定するステップと、
前記モデル内容比較部により前記内容が異なると判定された場合、前記モデル記憶部に記憶された前記第１の工程の各モデル要素の前記更新日時と、前記第２の工程の各モデル要素の前記更新日時と、当該モデル要素に対応する前記トレース要素に含まれる前記更新日時とを比較し、更新日時が異なるか否かを判定するステップと、
前記更新日時比較部により前記更新日時が異なると判定された場合、予め定められた手順に基づいて、前記コピーモデル記憶部に記憶された前記各モデル要素と、前記モデル記憶部に記憶された前記モデル要素とを統合して前記モデル記憶部に記憶させるステップと、
を実行させるモデル指向開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデル指向開発による設計及び開発を支援するモデル指向開発支援装置、モデル指向開発支援方法及びモデル指向開発支援プログラムに関する。
【背景技術】
【０００２】
近年、標準化されたモデリング手法（モデル駆動型アーキテクチャ、ＭＤＡ（Model-Driven Architecture））に基づいてソフトウェアシステムを開発するモデル指向開発が行われている。このようなモデル指向開発では、開発対象のソフトウェアシステムが備えるプログラムの機能をＵＭＬ（Unified Modeling Language）などに基づいてモデル化して表す。そして、要件に応じて抽象的に記述された上流工程モデルを、予め定められたモデル変換ルールに従って段階的に下流工程モデルに変換し、ソースコードを自動生成する。このようなモデル変換では、いずれかの工程のモデル要素、またはモデル変換ルールなどが変更された場合には、以下の工程の全てのモデル変換を再度行う必要があった。
そこで、特許文献１には、ジェネレータ手段が、モデル要素を所定単位毎に分割してモデル変換時にバージョンを付与しておき、再度のモデル変換の際にはバージョンの異なるモデル要素のみをモデル変換し、更新することで効率よく再モデル変換を行う技術が提案されている。
【特許文献１】特開２００６−１３９４７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上流工程のモデル要素に基づいてモデル変換され生成された下流工程のモデル要素は、ジェネレータ手段によりモデル変換された後に、ユーザーから入力される操作情報に応じて微調整が行われたり追加情報が付加されたりする場合がある。下流工程のモデル要素にこのような情報更新が行われた場合には、ジェネレータ手段によるバージョンが付与されない。このため、ユーザーから入力される操作情報に基づくモデル要素の変更があった後にジェネレータ手段により再度のモデル変換が行われる場合には、ユーザーから入力された操作情報に基づく変更が上書きされ失われてしまうこととなる。
【０００４】
本発明は、このような状況に鑑みてなされたもので、ユーザーからの操作情報に応じたモデル要素の変更が行われたか否かに基づいたモデル変換を行うことを可能とするモデル指向開発支援装置、モデル指向開発支援方法及びモデル指向開発支援プログラムを提供するものである。
【課題を解決するための手段】
【０００５】
上述した課題を解決するために、本発明は、開発対象であるソフトウェアシステムを構成する各機能をモデル化した各モデル要素を、抽象概念により表す上流工程から、ソースコードにより表す下流工程までの複数工程に階層化して行うソフトウェアシステムの設計および開発を支援するモデル指向開発支援装置であって、複数工程のうち第１の工程に含まれる各モデル要素と、第１の工程に対応する下流工程となる第２の工程に含まれる各モデル要素と、それぞれのモデル要素毎に、モデル要素が記憶された日時を示す更新日時とが予め記憶されているモデル記憶部と、第１の工程に含まれる各モデル要素が複製されたコピーモデルが記憶されるコピーモデル記憶部と、第１の工程の各モデル要素に基づいて、第２の工程の各モデル要素を生成するモデル変換要求の入力を受付ける入力部と、入力部にモデル変換要求が入力されると、第１の工程の各モデル要素を複製してコピーモデル記憶部に記憶させるモデル複製部と、予め定められたモデル変換ルールに基づいて、コピーモデル記憶部に記憶された第１の工程の各モデル要素に応じた第２の工程の各モデル要素を生成してコピーモデル記憶部に記憶させ、かつ、第１の工程の各モデル要素を識別する上流モデル要素識別情報と、第１の工程の各モデル要素に基づいて生成した第２の工程のモデル要素を識別する下流モデル要素識別情報と、第２の工程のモデル要素を生成した日時を示す更新日時とが対応付けられたトレース要素を生成するモデル要素変換部と、モデル要素変換部が生成したトレース要素が記憶されるトレース要素記憶部と、モデル要素変換部に生成され、コピーモデル記憶部に記憶された第２の工程の各モデル要素の内容と、モデル記憶部に記憶された第２の工程の各モデル要素の内容とを比較し、内容が異なるか否かを判定するモデル内容比較部と、モデル内容比較部が、内容が異なると判定した場合、モデル記憶部に記憶された第１の工程の各モデル要素の更新日時と、第２の工程の各モデル要素の更新日時と、モデル要素に対応するトレース要素に含まれる更新日時とを比較し、更新日時が異なるか否かを判定する更新日時比較部と、更新日時比較部が、更新日時が異なると判定した場合、予め定められた手順に基づいて、コピーモデル記憶部に記憶された各モデル要素と、モデル記憶部に記憶されたモデル要素とを統合してモデル記憶部に記憶させるモデル更新部と、を備えることを特徴とする。
【０００６】
また、本発明は、更新日時比較部が、更新日時が異なると判定した場合、モデル要素に記憶されたモデル要素と、コピーモデル記憶部に記憶されたモデル要素のいずれのモデル要素を優先してモデル要素を統合するかを示す統合手順が記憶される統合手順記憶部と、
モデル更新部は、統合手順記憶部に記憶されている統合手順に基づいて、コピーモデル記憶部に記憶された各モデル要素と、モデル記憶部に記憶されたモデル要素とを統合してモデル記憶部に記憶させることを特徴とする。
【０００７】
また、本発明は、入力部は、モデル記憶部に記憶されたモデル要素の内容を変更する変更情報の入力を受付け、入力部に入力される変更情報に応じて、モデル記憶部に記憶されたモデル要素の内容を変更し、モデル要素に対応する更新日時として変更を行った日時を対応付けてモデル記憶部に記憶させるモデル編集部と、を備えることを特徴とする。
【０００８】
また、本発明は、統合手順記憶部には、モデル記憶部に記憶された各モデル要素と、モデル要素に対応するトレース要素の存在の有無又はそれぞれの更新日時の異同に基づいて定められた条件に応じて統合手順が記憶され、モデル更新部は、各モデル要素の全てについて、モデル要素に対応するトレース要素の存在の有無又はそれぞれの更新日時の異同が条件に一致するか否かを判定し、全て一致すれば、予め定められた手順に基づいてコピーモデル記憶部に記憶された各モデル要素と、モデル記憶部に記憶されたモデル要素とを統合し、一致しないモデル要素が存在すれば、入力部に入力されるモデル要素の変更情報に応じて統合を行うことを特徴とする。
【０００９】
また、本発明は、開発対象であるソフトウェアシステムを構成する各機能をモデル化した各モデル要素を、抽象概念により表す上流工程から、ソースコードにより表す下流工程までの複数工程に階層化して行うソフトウェアシステムの設計および開発を支援し、複数工程のうち第１の工程に含まれる各モデル要素と、第１の工程に対応する下流工程となる第２の工程に含まれる各モデル要素と、それぞれのモデル要素毎に、モデル要素が記憶された日時を示す更新日時とが予め記憶されているモデル記憶部と、第１の工程に含まれる各モデル要素が複製されたコピーモデルが記憶されるコピーモデル記憶部と、第１の工程に含まれる各モデル要素に対応する第２の工程に含まれる各モデル要素との関連性を示すトレース要素が記憶されるトレース要素記憶部とを備えるモデル指向開発支援装置を用いたモデル指向開発支援方法であって、入力部が、第１の工程の各モデル要素に基づいて、第２の工程の各モデル要素を生成するモデル変換要求の入力を受付けるステップと、
モデル複製部が、入力部にモデル変換要求が入力されると、第１の工程の各モデル要素を複製してコピーモデル記憶部に記憶させるステップと、モデル要素変換部が、予め定められたモデル変換ルールに基づいて、コピーモデル記憶部に記憶された第１の工程の各モデル要素に応じた第２の工程の各モデル要素を生成してコピーモデル記憶部に記憶させ、かつ、第１の工程の各モデル要素を識別する上流モデル要素識別情報と、第１の工程の各モデル要素に基づいて生成した第２の工程のモデル要素を識別する下流モデル要素識別情報と、第２の工程のモデル要素を生成した日時を示す更新日時とが対応付けられたトレース要素を生成し、トレース要素記憶部に記憶させるステップと、モデル内容比較部が、モデル要素変換部に生成され、コピーモデル記憶部に記憶された第２の工程の各モデル要素の内容と、モデル記憶部に記憶された第２の工程の各モデル要素の内容とを比較し、内容が異なるか否かを判定するステップと、更新日時比較部が、モデル内容比較部により内容が異なると判定された場合、モデル記憶部に記憶された第１の工程の各モデル要素の更新日時と、第２の工程の各モデル要素の更新日時と、モデル要素に対応するトレース要素に含まれる更新日時とを比較し、更新日時が異なるか否かを判定するステップと、モデル更新部が、更新日時比較部により更新日時が異なると判定された場合、予め定められた手順に基づいて、コピーモデル記憶部に記憶された各モデル要素と、モデル記憶部に記憶されたモデル要素とを統合してモデル記憶部に記憶させるステップと、を備えることを特徴とする。
【００１０】
また、本発明は、開発対象であるソフトウェアシステムを構成する各機能をモデル化した各モデル要素を、抽象概念により表す上流工程から、ソースコードにより表す下流工程までの複数工程に階層化して行うソフトウェアシステムの設計および開発を支援し、複数工程のうち第１の工程に含まれる各モデル要素と、第１の工程に対応する下流工程となる第２の工程に含まれる各モデル要素と、それぞれのモデル要素毎に、モデル要素が記憶された日時を示す更新日時とが予め記憶されているモデル記憶部と、第１の工程に含まれる各モデル要素が複製されたコピーモデルが記憶されるコピーモデル記憶部と、第１の工程に含まれる各モデル要素に対応する第２の工程に含まれる各モデル要素との関連性を示すトレース要素が記憶されるトレース要素記憶部とを備えるモデル指向開発支援装置のコンピュータに、第１の工程の各モデル要素に基づいて、第２の工程の各モデル要素を生成するモデル変換要求の入力を受付けるステップと、入力部にモデル変換要求が入力されると、第１の工程の各モデル要素を複製してコピーモデル記憶部に記憶させるステップと、予め定められたモデル変換ルールに基づいて、コピーモデル記憶部に記憶された第１の工程の各モデル要素に応じた第２の工程の各モデル要素を生成してコピーモデル記憶部に記憶させ、かつ、第１の工程の各モデル要素を識別する上流モデル要素識別情報と、第１の工程の各モデル要素に基づいて生成した第２の工程のモデル要素を識別する下流モデル要素識別情報と、第２の工程のモデル要素を生成した日時を示す更新日時とが対応付けられたトレース要素を生成し、トレース要素記憶部に記憶させるステップと、モデル要素変換部に生成され、コピーモデル記憶部に記憶された第２の工程の各モデル要素の内容と、モデル記憶部に記憶された第２の工程の各モデル要素の内容とを比較し、内容が異なるか否かを判定するステップと、モデル内容比較部により内容が異なると判定された場合、モデル記憶部に記憶された第１の工程の各モデル要素の更新日時と、第２の工程の各モデル要素の更新日時と、モデル要素に対応するトレース要素に含まれる更新日時とを比較し、更新日時が異なるか否かを判定するステップと、更新日時比較部により更新日時が異なると判定された場合、予め定められた手順に基づいて、コピーモデル記憶部に記憶された各モデル要素と、モデル記憶部に記憶されたモデル要素とを統合してモデル記憶部に記憶させるステップと、を実行させるモデル指向開発支援プログラムである。
【発明の効果】
【００１１】
以上説明したように、本発明によれば、モデル指向開発における上流工程である第１の工程の各モデル要素に基づいて下流工程である第２の工程の各モデル要素を生成するモデル指向開発支援装置が、入力されるモデル変換要求に応じて第１の工程の各モデル要素を複製してコピーモデルを記憶し、予め定められたモデル変換ルールに基づいて、コピーモデルの第１の工程の各モデル要素に応じた第２の工程の各モデル要素を生成し、かつ、第１の工程の各モデル要素を識別する上流モデル要素識別情報と、第１の工程の各モデル要素に基づいて生成した第２の工程のモデル要素を識別する下流モデル要素識別情報と、第２の工程のモデル要素を生成した日時を示す更新日時とが対応付けられたトレース要素を生成し、コピーモデルに基づいて生成した第２の工程の各モデル要素の内容と、予め記憶された第２の工程の各モデル要素の内容との内容が異なり、かつ第２の工程のモデル要素の更新日時と、モデル要素に対応する前記トレース要素の更新日時とが異なる場合、予め定められた手順に基づいて、予め記憶された各モデル要素と、コピーモデルに基づいて生成したモデル要素とを統合するようにしたので、モデル要素の更新日時とトレース要素の更新日時とを比較することで、予め記憶されたモデル要素がモデル変換により生成されたものであるか否かを判定することができ、例えばユーザーから入力される操作情報などに応じて更新された変更が行われたか否かに応じてモデル変換を行うことが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施形態について、図面を参照して説明する。
＜構成＞
図１は、本実施形態によるモデル指向開発支援装置１００の構成を示すブロック図である。モデル指向開発支援装置１００は、標準化されたモデリング手法に基づいたモデル指向開発によるソフトウェアシステムの設計および開発を支援するコンピュータ装置である。モデル指向開発支援装置１００は、入力部、出力部、制御部、演算部、記憶部を備えており、いわゆるＰＣ（パーソナルコンピュータ）やサーバ専用ハードウェア機器が適用できる。モデル指向開発支援装置１００は、入力部１１０と、モデル編集部１２０と、モデル記憶部１３０と、制御部１４０と、コピーモデル記憶部１５０とを備えている。
【００１３】
モデル指向開発は、開発対象であるソフトウェアシステムが備えるプログラムを構成する各モデル要素を、抽象概念により表す上流階層から、ソースコードにより表す下流階層までの複数の階層工程に分割して行うプログラム開発手法である。モデル要素は、開発対象のソフトウェアシステムの機能を示す情報である。開発者は、まず、開発対象となるソフトウェアシステムの機能をシステム要件に基づいてＵＭＬ（Unified Modeling Language）などによりモデル化する。例えば、モデル指向開発支援装置１００は、ＵＭＬエディタなどの機能を備えており、開発ユーザーから入力される操作情報に応じてＵＭＬ情報を生成する。モデル指向開発支援装置１００は、システム要件がモデル化された上流工程モデルの各モデル要素を、ＱＶＴ（Queries/Views/Transformations）などの予め定められたモデル変換ルールに基づいて下流工程モデルのモデル要素に変換する。
【００１４】
ここで、上流工程のモデル要素から下流工程のモデル要素が生成される際には、その上流工程のモデル要素の識別情報と、生成された下流工程のモデル要素の識別情報と、モデル変換が行われた日時とが対応付けられた情報であるトレース要素が生成される。ここで、例えば、上流工程モデルにおけるモデル要素は、システムの動作環境やプログラム言語に依存しないモデル（プラットフォーム独立モデル（ＰＩＭ（Platform Independent Model）））であり、下流工程に向かうにつれてシステムの動作環境やプログラム言語が具体化された下流工程モデル（プラットフォーム特化モデル（ＰＳＭ（Platform Specific Model）））のモデル要素にモデル変換ルールに基づいて変換される。
【００１５】
モデル指向開発における各階層工程のモデル要素は、工程毎にモデル指向開発支援装置１００に記憶される。上流工程のモデル要素に基づいて下流工程のモデル要素の生成が行われモデル変換が行われた後にも、上流工程のモデル要素はモデル指向開発支援装置１００に記憶されているため、モデル変換を行った後に上流工程のモデル要素の編集を行うことも可能である。このように、モデル指向開発では、開発対象のソフトウェアシステムを、例えばビジネスモデリング、要求定義、外部設計、内部設計、プログラム実装、テストなどの上流工程から下流工程までの各工程におけるモデル要素で表し、上流工程のモデル要素を、予め定められたモデル変換ルールに基づいて下流工程モデルのモデル要素に変換していくことでソフトウェアシステムの開発を行う。これによりソフトウェアシステムの開発を自動化し、開発工数を削減するとともにシステム要件と実装の乖離を防ぎ、効率良いソフトウェアシステムの開発を行うことが可能となる。
【００１６】
入力部１１０は、ユーザーからの情報入力を受付ける入力デバイスであり、例えば、キーボードやマウスなどが適用できる。
モデル編集部１２０は、ユーザーから入力部１１０に入力される操作情報に応じて、モデル指向開発における各階層工程のモデル要素を編集し、モデル記憶部１３０に記憶させる。モデル編集部１２０は、モデル指向開発における工程毎に異なる編集機能を備えるようにして良い。例えば、本実施形態では、要求検討工程、詳細設計（外部設計）工程、プログラム設計（内部設計）工程の三工程に階層化したモデル指向開発を例として説明する。モデル編集部１２０には、例えば、要求検討工程、詳細設計（外部設計）工程においてはＵＭＬエディタなどのモデル作成ツールが適用できる。また、プログラム設計工程、実装工程においてはプログラムエディタ、テキストエディタなどが適用できる。
【００１７】
図２および図３は、本実施形態におけるモデル要素の設計の例を示す図である。例えば、詳細設計工程（ａ）のモデル要素として、「エンティティ」（ａ−１）、「画面構造」（ａ−２）、「画面遷移」（ａ−３）の３つのモデル要素が示される。エンティティ（ａ−１）は、開発対象のソフトウェアシステムで用いられるデータを示すモデル要素である。詳細設計工程のモデル要素であるエンティティ（ａ−１）に基づいて、予め定められたモデル変換ルール１により、下流工程であるプログラム設計工程（ｂ）のモデル要素であるＤＢアクセスクラス（ｂ−１）が生成される。ここでは、エンティティ要素１つにつきＤＢアクセスクラス要素が１つ生成される。エンティティの属性は、ＤＢアクセスクラスのパラメタに変換される。
【００１８】
同様に、開発対象のソフトウェアシステムの画面構造（ａ−２）を示す詳細設計工程のモデル要素に基づいて、予め定められたモデル変換ルール２により、下流工程であるプログラム設計工程のモデル要素であるビーンクラス（ｂ−３）およびＪＳＰ（Java(登録商標) Server Pages）要素（ｂ−４）が生成される。ここでは、詳細設計工程の画面構造要素１つにつき１つのＪＳＰ要素が生成される。ＪＳＰは、ＪＡＶＡ（登録商標）を用いたウェブサービス技術であり、ＪＳＰ要素はＪＳＰに基づくウェブサービスの機能に対応するモデル要素である。詳細設計工程の画面構造要素の属性は、ＪＳＰ要素の入出力タグとして設定される。また、詳細設計工程の画面構造要素１つにつき１つのビーンクラス要素が生成される。ここで、詳細設計工程の画面構造要素の属性は、ビーンクラス要素の属性として設定される。
【００１９】
同様に、開発対象のソフトウェアシステムの画面遷移（ａ−３）を示す詳細設計工程のモデル要素に基づいて、予め定められたモデル変換ルール３により、下流工程であるプログラム設計工程のモデル要素であるコマンドクラス（ｂ−２）が生成される。ここでは、詳細設計工程モデルに含まれる画面遷移要素１つにつきコマンドクラス要素が１つ生成される。ここで、エンティティ要素から変換された参照はコマンドクラスの属性として設定される。画面遷移要素を参照しているバウンダリ要素から生成されたビーンクラス要素は、コマンドクラス要素の入出力パラメタ属性として設定される。
【００２０】
図１に戻り、モデル記憶部１３０には、モデル指向開発におけるモデルを示す情報が記憶され、モデル指向開発における各階層工程のモデル要素を示す情報が記憶されるモデル要素記憶部１３１と、モデル要素記憶部１３１に記憶される階層工程毎のモデル要素の関連性を示すトレース要素が記憶されるトレース要素記憶部１３２とを備えている。
【００２１】
図４は、モデル要素記憶部１３１に記憶されるモデル要素のデータ例を示す図である。モデル要素は、「工程」と、「モデル要素名」と、「モデル要素ＩＤ」と、「親要素ＩＤ」と、「上流トレース」と、「下流トレース」と、「モデル要素種別」と、「モデル最終更新時間」とが対応付けられた情報を含んでいる。
【００２２】
「工程」は、モデル要素の階層工程を示す情報であり、例えば、「基本設計」、「詳細設計」、「プログラム設計」などが適用される。ここでは、工程を「全体」としたモデル要素を定義し、各階層工程のモデル要素は「全体」のモデル要素をルートとした木構造を構成する。ここで、木構造全体をプロジェクトといい、プロジェクトのルートとなるモデル要素の下位に各階層工程のルートとなるモデル要素が帰属する。それぞれの工程ルートとなる各モデル要素の下位には、その階層工程に含まれるモデル要素が帰属する。
【００２３】
「モデル要素名」は、モデル要素の内容を示す名称である。例えば、木構造のルートとなるモデル要素には「開発プロジェクト」、基本設計工程のルートとなるモデル要素には「基本設計工程」、基本設計工程における画面の見本を示すモデル要素には「画面モックアップ＿Ａ」などの名称が適用される。
「モデル要素ＩＤ」は、モデル要素の識別情報である。例えば、プロジェクトの頂点となるモデル要素には「Ｐ＿ＰＲＪ＿０００１」、基本設計工程の頂点となるモデル要素には「Ａ＿ＤＰ＿０００１」、画面モックアップには「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」などの識別情報が対応付けられる。
【００２４】
「親要素ＩＤ」は各階層工程内でのモデル要素間の帰属関係を示し、モデル要素を木構造に構成する情報である。例えば、基本設計工程のモデル要素「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」の「親要素ＩＤ」には基本設計工程のルートのモデル要素「Ａ＿ＤＰ＿０００１」が対応付けられており、画面モックアップ「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」は基本設計工程に帰属するモデル要素であることが示される。
【００２５】
「上流トレース」は、そのモデル要素が上流工程のモデル要素に基づいて生成されたモデル要素である場合に、そのモデル要素の生成時に生成されたトレース要素の識別情報である。このトレース要素の識別情報は、後述するトレース要素記憶部１３２に記憶されたトレースＩＤに対応する。このように、上流工程のモデル要素に基づいて下流工程のモデル要素が生成される際には、上流工程のモデル要素と下流工程のモデル要素との関連性を示すトレース要素が生成され、トレース要素記憶部１３２に記憶される。例えば、詳細設計工程のモデル要素「Ｂ＿ＳＳＤ＿ＳＤＥＳ＿０００１」は、上流トレースのトレースＩＤとして「ＴＲ＿００００」が対応付けられる。
【００２６】
「下流トレース」は、そのモデル要素に基づいて下流工程のモデル要素が生成された場合に、生成された下流工程のモデル要素との関連性を示すトレース要素の識別情報である。このトレース要素の識別情報は、トレース要素記憶部１３２に記憶されたトレースＩＤに対応する。例えば、基本設計工程のモデル要素「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」には、下流トレースのトレースＩＤとして「ＴＲ＿００００」が対応付けられる。
【００２７】
「モデル要素種別」は、対応するモデル要素の種別を示す情報である。例えば、プロジェクトにおけるモデル要素の木構造のルートとなるモデル要素には「プロジェクト」、画面モックアップには「モックアップ」などの情報が対応付けられる。
「モデル最終更新時間」は、対応するモデル要素が生成され、または生成された後に内容が変更されモデル要素記憶部１３１に記憶された更新日時を示す情報である。例えば、モデル最終更新時間は、「ｙｙｙｙ：ｍｍ：ｄｄ：ｈｈ：ｍｎ：ｓｓ」のフォーマットで表され、「（西暦４桁）：（月２桁）：（日２桁）：（時２桁）：（分２桁）：（秒２桁）」の計１４桁の数字で表される。
【００２８】
図５は、トレース要素記憶部１３２に記憶されるトレース要素のデータ例を示す図である。トレース要素は、「トレースＩＤ」と、「上流要素」と、「下流要素」と、「トレース最終更新時間」とが対応付けられた情報を含んでいる。
「トレースＩＤ」は、トレース要素の識別情報である。「上流要素」は、トレース情報が関連付ける上流工程のモデル要素の識別情報であり、モデル要素記憶部１３１に記憶されるモデル要素ＩＤに対応する。「下流要素」は、トレース情報が対応付ける下流工程のモデル要素の識別情報であり、モデル要素記憶部１３１に記憶されるモデル要素ＩＤに対応する。「トレース最終更新時間」は、上流工程のモデル要素に基づいて下流工程のモデル要素が生成され、モデル変換が行われた際にトレース情報が生成された時間を示す情報である。同一の上流工程のモデル要素から同一の下流工程のモデル要素への再度のモデル変換が行われ、下流工程のモデル要素の内容が変更されてモデル要素記憶部１３１に記憶された場合には、トレース最終更新時間には下流工程のモデル要素の内容が更新されモデル要素記憶部１３１に記憶された時間を示す情報に更新され記憶される。
【００２９】
図６は、図４および図５に示される各モデル要素、各トレース要素の関連性を概念的に示した図である。図６に示されるように、モデル化されたソフトウェアシステムのモデル要素は、プロジェクトを示すモデル要素「Ｐ＿ＰＲＪ＿０００１」をルートとして、基本設計工程のルートとなるモデル要素「Ａ＿ＤＰ＿００１」、詳細設計工程のルートとなるモデル要素「Ｂ＿ＤＰ＿００１」、プログラム設計工程のルートとなるモデル要素「Ｃ＿ＤＰ＿００１」が下位に帰属する。また、それぞれの階層工程のルートの下位にそれぞれのモデル要素が帰属する。ここで、本実施形態において、基本設計工程、詳細設計工程、プログラム設計工程の間の関連性を階層といい、上流、下流として表す。例えば、基本設計工程は詳細設計工程に対して上流工程の階層であり、詳細設計工程は基本設計工程に対して下流工程の階層であるという。また、本実施形態において、各階層工程のルートの下位に帰属するモデル要素間の関係を帰属といい、上位、下位として表す。例えば、基本設計工程のルートであるモデル要素「Ａ＿ＤＰ＿０００１」は、同じく基本設計工程のモデル要素「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」に対して上位のモデル要素であり、基本設計工程のモデル要素「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」は、同じく基本設計工程のルートであるモデル要素「Ａ＿ＤＰ＿０００１」に対して下位のモデル要素であるという。
【００３０】
例えば、図６の例では、基本設計工程のモデル要素「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」に基づいて下流工程となる詳細設計工程のモデル要素「Ｂ＿ＳＳＤ＿ＳＤＥＳ＿０００１」が生成されており、その関連性がトレース要素「ＴＲ＿００００」によって示されている。また、例えば、この詳細設計工程のモデル要素「Ｂ＿ＳＳＤ＿ＳＤＥＳ＿０００１」に基づいてプログラム設計工程のモデル要素「Ｃ＿ＤＣＤ＿ＪＳＰ＿０００１」とモデル要素「Ｃ＿ＤＥＣ＿ＢＥＡＮ＿０００１」との２つのモデル要素が生成されており、その関連性がトレース要素「ＴＲ＿０００１」またはトレース要素「ＴＲ＿０００４」によって示されている。また、例えば、基本設計工程のルートであるモデル要素「Ａ＿ＤＰ＿０００１」には、モデル要素「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」が下位に帰属している。また、プログラム設計工程のモデル要素「Ｃ＿ＤＣＤ＿ＢＰＲＯ＿０００３」は、対応するトレース要素が存在しないため、モデル要素変換部１４３によるモデル変換によらず、例えばモデル編集部１２０などによって生成されたモデル要素である。
【００３１】
図７は、モデル記憶部１３０に記憶される詳細設計工程のモデル要素およびトレース要素の詳細なデータ例を示す図である。このように、モデル要素記憶部１３１に記憶されたモデル要素は、図４のデータ例に示した情報の他に、開発対象のソフトウェアシステムの機能に対応する階層工程毎に、モデル要素種別に応じた各種設計情報等が含まれる。図７では、モデル要素種別に応じた設計情報に下線を付している。例えば、（ａ）は、詳細設計工程の画面構造「Ｂ＿ＳＳＤ＿ＳＤＥＳ＿０００１」のモデル要素のデータ例を示している。モデル要素「Ｂ＿ＳＳＤ＿ＳＤＥＳ＿０００１」は、ソフトウェアシステムにおいてディスプレイに表示させる一画面に対応するモデル要素であり、図４で示した共通情報の他に、本画面に含まれる１または複数の画面項目を示す「画面項目リスト」、本画面に遷移してくる遷移元の画面を示す「画面遷移リスト（イン）」、本画面から遷移する遷移先の画面を示す「画面遷移リスト（アウト）」との情報が含まれる。
【００３２】
図７の（ｂ）は、詳細設計工程の画面項目「Ｂ＿ＳＳＤ＿ＳＰＲＯ＿０００１」のモデル要素のデータ例を示している。モデル要素「Ｂ＿ＳＳＤ＿ＳＰＲＯ＿０００１」は、画面構造「Ｂ＿ＳＳＤ＿ＳＤＥＳ＿０００１」が示す画面に含まれる画面項目の内容を示しており、図４で示した共通情報の他に、画面項目の物理データ型と表示データ型がともに文字列であり、文字列のデータ長が１６（文字）であり、表示ラベルとして文字列「ユーザー名」を表示させることが示されている。
【００３３】
図８は、モデル記憶部１３０に記憶されるプログラム設計工程のモデル要素の情報の詳細なデータ例を示す図である。例えば、（ａ）は、詳細設計工程のプログラムであるＪＳＰ要素「Ｃ＿ＤＣＤ＿ＪＳＰ＿０００１」のモデル要素のデータ例を示している。モデル要素「Ｃ＿ＤＣＤ＿ＪＳＰ＿０００１」は、詳細設計工程の画面構造「Ｂ＿ＳＳＤ＿ＳＤＥＳ＿０００１」に基づいて生成されたモデル要素であり、ＪＳＰに基づいた画面構造を表す情報である。モデル要素「Ｃ＿ＤＣＤ＿ＪＳＰ＿０００１」は、図４で示した共通情報の他に、モデル要素の「物理名」、ＪＳＰに含まれる属性としてのモデル要素を示す「属性リスト」、本画面に遷移してくる遷移元のソフトウェアコンポーネントを示す「ビーンクラス（イン）」、本画面から遷移する遷移先のソフトウェアコンポーネントを示す「ビーンクラス（アウト）」との情報が含まれる。
【００３４】
図８の（ｂ）は、プログラム設計工程の入力属性項目「Ｃ＿ＤＣＤ＿ＪＳＰＡＴ＿０００１」のモデル要素のデータ例を示している。モデル要素「Ｃ＿ＤＣＤ＿ＪＳＰ＿０００１」は、詳細設計工程の画面構造「Ｂ＿ＳＳＤ＿ＳＰＲＯ＿０００１」に基づいて生成されたモデル要素であり、画面における入力項目を表す情報である。モデル要素「Ｃ＿ＤＣＤ＿ＪＳＰＡＴ＿０００１」は、図４で示した共通情報の他に、プログラムにおける物理名が「ＡＴＴＲＩＢＵＴＥ＿１」であり、物理データ型が「Ｓｔｒｉｎｇ」（文字列）であり、表示データ型が文字列であり、表示ラベルが「ユーザー名」であることなどが示されている。
【００３５】
図１に戻り、制御部１４０は、モデル記憶部１３０に記憶された上流工程のモデル要素に基づいて下流工程のモデル要素を生成し、モデル変換を行う。制御部１４０は、モデル取得部１４１と、モデル複製部１４２と、モデル要素変換部１４３と、モデル内容比較部１４４と、更新日時比較部１４６と、モデル更新部１４６と、マージ方法判定部１４７とを備えている。
モデル取得部１４１は、入力部１１０にモデル変換の実行命令が入力されると、モデル記憶部１３０に記憶されたモデル要素を読み出す。
【００３６】
モデル複製部１４２は、モデル取得部１４１がモデル記憶部１３０から読み出したモデル要素を複製し、コピーモデルとしてコピーモデル記憶部１５０に記憶させる。図９は、制御部１４０によるモデル変換処理の概念を示す図である。ここで、図９の（ａ）の列に示すように、モデル複製部１４２は、モデル記憶部１３０に記憶された各モデル要素（以下、実モデルという）から、プロジェクトルート（「Ｐ＿ＰＲＪ＿０００１」）と、最上流工程のモデル要素（「Ａ＿ＤＰ＿０００１」および「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」）と、各階層工程のルートのモデル要素（「Ｂ＿ＤＰ＿０００１」）のみを、コピーモデルとしてコピーモデル記憶部１５０に記憶させる。
【００３７】
図１に戻り、モデル要素変換部１４３は、モデル複製部１４２により複製されてコピーモデル記憶部１５０に記憶されたコピーモデルの各モデル要素の変換処理を行う。モデル要素変換部１４３は、モデル複製部１４２によってコピーモデル記憶部１５０に記憶されたコピーモデルの上流工程の各モデル要素から、自身の記憶領域に予め記憶されたモデル変換ルールに基づいて下流工程のモデル要素を生成し、コピーモデル記憶部１５０に記憶させ、モデル変換を行う。モデル変換ルールは、例えばＯＭＧ（Object Management Group）により定められたモデル変換の標準であるＱＶＴ（Queries/Views/Transformations）などが適用できる。例えば、図９の（ｂ）に示すように、モデル要素変換部１４３は、コピーモデルにおける上流工程のモデル要素「Ａ＿ＣＳＤ＿ＭＤＥＳ＿０００１」に基づいて、下流工程のモデル要素「Ｂ＿ＳＳＤ＿ＳＤＥＳ＿０００１」を生成する。
【００３８】
図１に戻り、モデル内容比較部１４４は、モデル記憶部１３０に記憶された下流工程の各モデル要素と、コピーモデル記憶部１５０に記憶された対応する下流工程のモデル要素との内容を比較し、情報の内容が異なるモデル要素が存在するか否かを判定する。
更新日時比較部１４６は、モデル内容比較部１４４により、実モデルとコピーモデルとのモデル要素に情報の内容が異なるモデル要素が存在すると判定され、差分がある場合には、差分があった実モデルのモデル要素の最終更新日時と、そのモデル要素を下流トレースとするトレース要素の最終更新日時またはそのモデル要素に対応する上流工程のモデル要素の最終更新日時とを読み出し、更新日時が異なるか否かを判定する。図９の（ｃ）に示すように、実モデルとコピーモデルとが比較される。
【００３９】
図１に戻り、マージ方法判定部１４７は、モデル内容比較部１４４による比較結果と、更新日時比較部１４６による比較結果と、マージ方法記憶部１６０に記憶されているモデル要素の統合手順を示すマージ方法とに基づいて、実モデルとコピーモデルとのマージ方法の判定を行う。マージ方法記憶部１６０には、実モデルとコピーモデルとの差分の条件に応じたマージ方法が予め記憶されている。マージ方法は、上流工程と下流工程のモデル要素が異なる場合に、例えば、「上流の追加を反映」、「上流の変更を反映」、「上流の削除を反映」、「下流の追加を維持」、「下流の変更を維持」、「下流の削除を維持」などにより表される。マージ方法判定部１４７により判定されるマージ方法のうち、マージ方法記憶部１６０に記憶されているマージ方法により行うマージを自動マージといい、逆にどのようなマージを行うかをユーザーに提示し、マージ方法を利用者に選択させることにより行うマージを手動マージという。
【００４０】
「上流の追加を反映」は、モデル変換後に上流工程にモデル要素が追加されている場合、追加された上流工程のモデル要素に対応する下流工程のモデル要素を生成し、実モデルに反映させる自動マージを行うことを示す。
「上流の変更を反映」は、モデル変換後に上流工程のモデル要素の内容に変更が加えられている場合、変更された上流工程のモデル要素に基づいて下流工程のモデル要素を生成し、実モデルに反映させる自動マージを行うことを示す。
「上流の削除を反映」は、モデル変換後に上流工程のモデル要素が削除されている場合、削除された上流工程のモデル要素に対応する実モデルの下流工程のモデル要素を削除する自動マージを行うことを示す。
【００４１】
「下流の追加を維持」は、モデル変換後に下流工程にモデル要素が追加されている場合、実モデルにおける下流工程に追加されたモデル要素を削除せず、追加されたモデル要素の記憶を維持する自動マージを行うことを示す。
「下流の変更を維持」は、モデル変換後に下流工程のモデル要素が変更されている場合、対応する上流工程のモデル要素に基づいて生成されたモデル要素に関わらず、実モデルにおける下流工程のモデル要素の変更を維持する自動マージを行うことを示す。
「下流の削除を維持」は、モデル変換後に下流工程のモデル要素が削除されている場合、対応する上流工程のモデル要素に基づいて生成されたモデル要素に関わらず、実モデルにおける下流工程のモデル要素の削除を維持する自動マージを行うことを示す。
【００４２】
マージ方法記憶部１６０には、このようなマージ方法のそれぞれを有効（ＯＮ）とするか無効（ＯＦＦ）とするかを示す情報が対応付けられて記憶されている。マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたこのようなマージ方法に基づいて、実モデルとコピーモデルとのマージ処理を行う。また、マージ方法判定部１４７は、実モデルとコピーモデルとのモデル要素の内容に差分がある場合で、マージ方法記憶部１６０に記憶されたマージ方法の条件に該当しないモデル要素が存在する場合には、入力部１１０から入力される操作情報に基づいて、実モデルとコピーモデルとのマージを行う。
モデル更新部１４５は、マージ方法判定部１４７によるマージ方法の判定結果に基づいて、モデル記憶部１３０に記憶された実モデルと、コピーモデル記憶部１５０に記憶されたコピーモデルとのマージ処理を行う。また、図９に示すように、モデル更新部１４５は、マージ処理が完了すると、コピーモデル記憶部１５０に記憶されたコピーモデルを削除する。
【００４３】
＜動作例＞
次に、図１０を参照して、まず、本発明によるモデル指向開発支援装置１００が行うモデル変換処理の動作例の概要を説明する。入力部１１０にモデル変換処理の実行命令が入力されると、モデル取得部１４１が、モデル記憶部１３０に記憶されたモデル要素を読み出す。モデル複製部１４２は、モデル取得部１４１が読み出したモデル要素を複製し、コピーモデルとしてコピーモデル記憶部１５０に記憶させる（ステップＳ１）。
【００４４】
モデル要素変換部１４３が、コピーモデル記憶部１５０に記憶された上流工程のモデル要素に基づいて、下流工程のモデル要素を生成する（ステップＳ２）。モデル内容比較部１４４が、コピーモデル記憶部１５０に記憶されたコピーモデルの下流工程のモデル要素と、モデル要素記憶部１３１に記憶された実モデルの下流工程のモデル要素とを比較し、差分があるか否かを判定する（ステップＳ３）。ステップＳ３で、モデル内容比較部１４４が、コピーモデル記憶部１５０に記憶されたコピーモデルの下流工程のモデル要素と、モデル要素記憶部１３１に記憶された実モデルの下流工程のモデル要素とに差分がないと判定すれば（ステップＳ３：いいえ）、モデル更新部１４５は、モデル記憶部１３０に記憶された実モデルの更新を行わずに処理を終了する（ステップＳ４）。
【００４５】
一方、ステップＳ３で、モデル内容比較部１４４が、コピーモデル記憶部１５０に記憶されたコピーモデルの下流工程のモデル要素と、モデル要素記憶部１３１に記憶された実モデルの下流工程のモデル要素とに差分があると判定すれば（ステップＳ３：はい）、マージ方法判定部１４７が、各モデル要素の比較結果に基づいて、自動マージを行うか手動マージを行うかのマージ方法の判定処理を行う（ステップＳ５）。
【００４６】
マージ方法判定部１４７は、全てのモデル要素の比較結果について、マージ方法記憶部１６０に記憶されたマージ方法の条件に一致するか否かを判定し、ステップＳ５で抽出された差分の全てについて自動マージを行うことが可能でないと判定すれば（ステップＳ６：いいえ）、実行可能な自動マージを実行した後に、モデル更新部１４５は、モデル編集部１２０による差分のあるモデル要素の編集を受付け、手動によるモデル要素のマージ処理を行う（ステップＳ７）。一方、マージ方法判定部１４７が、ステップＳ５で抽出された差分の全てについて自動マージを行うことが可能であると判定すれば（ステップＳ６：はい）、モデル更新部１４５は、コピーモデル記憶部１５０に記憶されたマージ方法に基づいてモデル変換により生成されたモデル要素のマージ処理を行う（ステップＳ８）。
【００４７】
次に、図１１、図１２、図１３を参照して、上述のステップＳ５でモデル指向開発支援装置１００が行うマージ方法の判定処理について詳細に説明する。
モデル内容比較部１４４が、上述のステップＳ３でコピーモデル記憶部１５０に記憶されたコピーモデルの下流工程のモデル要素と、モデル要素記憶部１３１に記憶された実モデルの下流工程のモデル要素とに差分があると判定した場合、マージ方法判定部１４７には、その差分の状態を示す情報が入力される（ステップＳ１０）。
【００４８】
マージ方法判定部１４７が、実モデルとコピーモデルとの差分の状態が、いずれかのモデルにモデル要素が存在しない差異であると判定した場合（ステップＳ１１：はい）、その存在しないモデルが実モデルであるかコピーモデルであるかを判定する（ステップＳ１２）。マージ方法判定部１４７は、差異のあるモデル要素が、実モデルに存在せずコピーモデルに存在すると判定した場合は（ステップＳ１３：いいえ）、そのモデル要素を下流要素とするトレース要素が、トレース要素記憶部１３２に記憶されているか否かを判定する（ステップＳ１４）。
【００４９】
マージ方法判定部１４７が、差異のあるモデル要素を下流要素とするトレース要素がトレース要素記憶部１３２に記憶されていないと判定した場合（ステップＳ１５：いいえ）、実モデルに存在せずコピーモデルのみに存在するそのモデル要素は、モデル要素変換部１４３によるモデル変換処理で初めて生成されたモデル要素である（ステップＳ１６）。そこで、マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたマージ方法を読み出し、「上流の追加を反映」がＯＮであれば（ステップＳ１７：はい）、自動マージを行うと判定する。「上流の追加を反映」がＯＦＦであれば（ステップＳ１７：いいえ）、手動マージを行うと判定する。
【００５０】
一方、ステップＳ１５で、マージ方法判定部１４７が、差異のあるモデル要素を下流要素とするトレース要素がトレース要素記憶部１３２に記憶されていると判定した場合（ステップＳ１５：はい）、上流工程のモデル要素に基づいて下流工程のモデル要素が生成されたモデル変換の後、下流工程のモデル要素が削除されたものである。そこで、更新日時比較部１４６が、上流工程のモデル要素の最終更新日時と、対応するトレース要素の最終更新日時とを読み出す。マージ方法判定部１４７は、上流工程のモデル要素の最終更新日時と、対応するトレース要素の最終更新日時とを比較し、いずれの最終更新日時が新しいかを判定する（ステップＳ１８）。
【００５１】
マージ方法判定部１４７が、上流工程のモデル要素の最終更新日時は対応するトレース要素の最終更新日時よりも新しいと判定した場合（ステップＳ１９：はい）、モデル変換の後に上流工程のモデル要素が変更されたものである（ステップＳ２０）。マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたマージ方法を読み出し、「下流の削除を維持」がＯＮであれば（ステップＳ２１：はい）、自動マージを行うと判定する。「下流の削除を維持」がＯＦＦであれば（ステップＳ２１：いいえ）、手動マージを行うと判定する。
【００５２】
一方、ステップＳ１９で、マージ方法判定部１４７が、上流工程のモデル要素の最終更新日時は対応するトレース要素の最終更新日時より新しくないと判定した場合（ステップＳ１９：いいえ）、モデル変換後に上流工程のモデル要素に変更は加えられてない（ステップＳ２２）。マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたマージ方法を読み出し、「下流の削除を維持」がＯＮであれば（ステップＳ２３：はい）、自動マージを行うと判定する。「下流の削除を維持」がＯＦＦであれば（ステップＳ２３：いいえ）、手動マージを行うと判定する。
【００５３】
ステップＳ１１で、マージ方法判定部１４７が、実モデルとコピーモデルとの差異が、いずれかのモデルにモデル要素が存在しない差異でないと判定した場合（ステップＳ１１：いいえ）、図１１のステップＳ３０に進む。この場合、実モデルとコピーモデルとのいずれにも対応する下流工程のモデル要素が存在する。更新日時比較部１４６が、下流工程のモデル要素の最終更新日時と、対応するトレース要素の最終更新日時とをモデル記憶部１３０から読み出すと、マージ方法判定部１４７は、いずれの最終更新日時が新しいかを判定する（ステップＳ３０）。
【００５４】
マージ方法判定部１４７が、下流工程のモデル要素の最終更新日時は対応するトレース要素の最終更新日時より新しくないと判定した場合（ステップＳ３１：いいえ）、モデル変換の後、上流工程のモデル要素のみが変更されている。そこで、マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたマージ方法を読み出し、「上流の変更を反映」がＯＮであれば（ステップＳ３２：はい）、自動マージを行うと判定する。一方、「上流の変更を反映」がＯＦＦであれば（ステップＳ３３：いいえ）、手動マージを行うと判定する。
【００５５】
一方、ステップＳ３１で、マージ方法判定部１４７が、下流工程のモデル要素の最終更新日時の方が対応するトレース要素の最終更新日時よりも新しいと判定した場合（ステップＳ３１：はい）、モデル変換後に下流工程のモデル要素が変更されている。マージ方法判定部１４７は、上流工程のモデル要素の最終更新日時と、トレース要素の最終更新日時とのいずれが新しいかを判定する（ステップＳ３４）。
【００５６】
マージ方法判定部１４７が、上流工程のモデル要素の最終更新日時はトレース要素の最終更新日時よりも新しいと判定した場合（ステップＳ３５：はい）、モデル変換の後に、上流工程のモデル要素と下流工程のモデル要素との双方が変更されている。この場合、マージ方法の設定に基づいた自動マージを行うことはできないため、マージ方法判定部１４７は、手動マージを行うと判定する（ステップＳ３６）。
【００５７】
一方、ステップＳ３５で、マージ方法判定部１４７が、上流工程のモデル要素の最終更新日時は対応するトレース要素の最終更新日時よりも新しくないと判定した場合（ステップＳ３５：いいえ）、モデル変化の後に下流工程のモデル要素のみが変更されている。この場合、マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたマージ方法を読み出し、「下流の変更を維持」がＯＮであれば（ステップＳ３８：はい）、自動マージを行うと判定する。一方、「下流の変更を維持」がＯＦＦであれば（ステップＳ３８：いいえ）、手動マージを行うと判定する。
【００５８】
ステップＳ１３で、マージ方法判定部１４７が、差異のあるモデル要素は実モデルに存在し、コピーモデルに存在しないと判定した場合は（ステップＳ１３：はい）、図１３のステップＳ４０に進む。マージ方法判定部１４７は、下流工程のモデル要素に対応するトレース要素がトレース要素記憶部１３２に記憶されているか否かを判定する（ステップＳ４０）。マージ方法判定部１４７が、下流工程のモデル要素に対応するトレース要素がトレース要素記憶部１３２に記憶されていないと判定した場合（ステップＳ４１：いいえ）、そのモデル要素はモデル要素変換部１４３によるモデル変換でなく、例えばモデル編集部１２０に入力される操作情報に応じて生成されたモデル要素である。マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたマージ方法を読み出し（ステップＳ４２）、「下流の追加を維持」がＯＮであれば（ステップＳ４３：はい）、自動マージを行うと判定する。一方、「下流の追加を維持」がＯＦＦであれば（ステップＳ４３：いいえ）、手動マージを行うと判定する。
【００５９】
一方、マージ方法判定部１４７が、下流工程のモデル要素に対応するトレース要素がトレース要素記憶部１３２に記憶されていると判定した場合（ステップＳ４１：はい）、モデル変換の後に上流工程のモデル要素が削除されている。この場合、下流工程のモデル要素の最終更新日時と、対応するトレース要素の最終更新日時とのいずれの最終更新日時が新しいかを判定する（ステップＳ４４）。マージ方法判定部１４７が、下流工程のモデル要素の最終更新日時は対応するトレース要素の最終更新日時よりも新しくないと判定した場合（ステップＳ４５：いいえ）、モデル変換の後に下流工程のモデル要素は変更されていない。マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたマージ方法を読み出し（ステップＳ４８）、「上流の削除を反映」がＯＮであれば（ステップＳ４９：はい）、自動マージを行うと判定する。一方、「上流の削除を反映」がＯＦＦであれば（ステップＳ４９：いいえ）、手動マージを行うと判定する。
【００６０】
一方、ステップＳ４５で、マージ方法判定部１４７が、下流工程のモデル要素の最終更新日時は対応するトレース要素の最終更新日時よりも新しいと判定した場合（ステップＳ４５：はい）、下流工程のモデル要素は、モデル変換の後に変更されている。マージ方法判定部１４７は、マージ方法記憶部１６０に記憶されたマージ方法を読み出し（ステップＳ４６）、「下流の変更を維持」がＯＮであれば（ステップＳ４７：はい）、自動マージを行うと判定する。一方、「下流の変更を維持」がＯＦＦであれば（ステップＳ４７：いいえ）、手動マージを行うと判定する。
【００６１】
次に、図１４から図１８を参照して、モデル変換のマージ処理の類型を例示して説明する。図１４は、（ａ）と（ｂ）と（ｃ）との順に動作過程が遷移していることを示す。（ａ）の列に示すように、初期状態ではモデル要素「Ａ」（０）が存在する実モデルが示される。ここで、「Ａ」はモデル要素ＩＤであり、（０）は最終更新日時を示す。ここでは、最終更新日時は、便宜的に、日時の前後に応じて１ずつ増加する整数によって示す。例えば、（０）は（１）よりも最終更新日時が古いことを表し、（１）は（２）よりも最終更新日時が古いことを表し、（１）と（１）は最終更新日時が同時であることを示す。（ｂ）の列には、実モデルからコピーモデルが生成され、コピーモデルの上流工程のモデル要素「Ａ」から下流工程のモデル要素「Ａ´」が生成されており、トレース要素が生成されている。また、実モデルとコピーモデルとが比較される。（ｃ）の列には、自動マージが行われた後の実モデルの状態が示される。このように、四角形で表される（ア）のモデル要素を上流工程のモデル要素とし、円計で表される（イ）をトレース要素とし、八角形で表される（ウ）のモデル要素を下流工程のモデル要素とする。
【００６２】
図１４では、（ａ）の状態で入力部１１０にモデル変換の実行命令が入力されると、（ｂ）に示すようにモデル取得部１４１によってモデル記憶部１３０に記憶されたモデル要素が読み出されてコピーモデル記憶部１５０にコピーされ、コピーモデルのモデル要素「Ａ」（０）に基づいて下流工程のモデル要素「Ａ´」（１）とトレース要素（０）が自動生成される。そして、モデル更新部１３６によって実モデルとコピーモデルとが比較されて、マージが行われて（ｃ）に示すように上流工程のモデル要素「Ａ」（０）と下流工程のモデル要素「Ａ´」（１）とが、実モデルとしてモデル記憶部１３０に記憶される。このケースは、上述の処理例ではステップＳ１６を経由するケースであり、下流工程のモデル要素が初めて生成された場合である。この後に、上流工程のモデル要素「Ａ」（０）または下流工程のモデル要素「Ａ´」（１）のいずれかが削除されるような編集が行われる場合がある。
【００６３】
図１５では、（ａ）に示すように上流工程のモデル要素「Ａ」（０）と、上流工程のモデル要素「Ａ」（０）に基づいて生成された下流工程のモデル要素「Ａ´」（１）と、下流工程のモデル要素「Ａ´」が生成された際に同時に生成されたトレース要素（１）とが存在する。入力部１１０にモデル変換の実行命令が入力されると、（ｂ）に示すようにモデル取得部１４１によってモデル記憶部１３０に記憶されたモデル要素が読み出されてコピーモデル記憶部１５０にコピーされ、コピーモデルのモデル要素「Ａ」（０）に基づいて下流工程のモデル要素「Ａ´」（２）が再度自動生成される。そして、モデル更新部１３６によって実モデルとコピーモデルとが比較される。ここでは、（ｃ）に示されるように、比較の結果、モデル要素の内容に差分が無く、モデル記憶部１３０に記憶される実モデルには更新を行わずにモデル変換処理が終了した例が示される。
【００６４】
図１６では、（ａ）に示すように上流工程のモデル要素「Ａ」（０）と、上流工程のモデル要素「Ａ」（０）に基づいて生成された下流工程のモデル要素「Ａ´」（１）と、下流工程のモデル要素「Ａ´」が生成された際に同時に生成されたトレース要素（１）とが存在する。そして、（ｂ）に示されるように、モデル編集部１２０に入力される操作情報に応じて、下流工程のモデル要素「Ａ´」（１）が変更されてモデル要素「Ａ´」（２）としてモデル記憶部１３０に記憶されている。ここでは、（ｃ）に示されるように、自動マージによるマージ方法に条件が一致せず、（ｄ）に示されるように手動によりマージが行われ、下流工程のモデル要素が更新されている。なお、ここでは、自動マージによるマージ方法に条件が一致すれば、自動によりマージが行われ、下流工程のモデル要素が更新されない。
【００６５】
図１７では、（ａ）に示すように上流工程のモデル要素「Ａ」（０）と、上流工程のモデル要素「Ａ」（０）に基づいて生成された下流工程のモデル要素「Ａ´」（１）と、下流工程のモデル要素「Ａ´」が生成された際に同時に生成されたトレース要素（１）とが存在する。そして、（ｂ）に示すように下流工程のモデル要素「Ａ´」（１）が削除されている。ここでは、（ｃ）に示すようにモデル要素変換部１４３により上流工程のモデル要素「Ａ」（０）に基づいてコピーモデルのモデル要素「Ａ´」（２）が生成され、比較の結果、（ｄ）に示されるように、手動により新たに生成された下流工程のモデル要素の追加が反映されている。
【００６６】
図１８では、（ａ）に示すように上流工程のモデル要素「Ａ」（０）と、上流工程のモデル要素「Ａ」（０）に基づいて生成された下流工程のモデル要素「Ａ´」（１）と、下流工程のモデル要素「Ａ´」（１）が生成された際に同時に生成されたトレース要素（１）とが存在する。そして、（ｂ）に示されるように、上流工程のモデル要素「Ａ」が削除されている。ここで、（ｃ）に示すようにモデル変換処理が行われると、実モデルの上流工程のモデル要素は削除されているため、コピーモデルにはモデル要素が生成されない。ここで、マージ方法が「上流の削除を反映」がＯＮであれば、（ｄ）に示すように上流工程のモデル要素と下流工程のモデル要素が、ともに削除された状態でモデル記憶部１３０に記憶される。また、この場合でも、必要であれば（ｅ）のように手動により下流工程のモデル「Ａ´´」（２）を生成することができる。
【００６７】
以上説明したように、本実施形態によれば、モデル指向開発支援装置１００による自動のモデル変換が行われモデル要素が生成された後に、生成されたモデル要素に対してユーザーからの操作情報に応じた手動の変更があった場合にも、その変更に応じてモデル変換を行うことが可能となる。例えば、上流工程のモデル要素に変更を加えた場合、下流工程のモデル要素に変更を加えた場合、上流工程と下流工程のモデル要素に変更を加えた場合などを、モデル要素自体の最終更新日時とトレース要素の最終更新日時とから判定することが可能となる。また、上流工程と下流工程のモデル要素に変更を加えた場合などには、自動ではマージを行えないような何らかの意図がある場合があるので、ユーザーによる手動のマージを行うことが可能となる。
【００６８】
また、本実施形態によれば、（１）ユーザーにより修正されたモデル要素は、モデル変換処理によって上書きされることなく保持される、（２）ユーザーが意図的に削除したモデル要素が、モデル変換処理によって再生成されることがない、（３）ユーザーが意図的に追加したモデルが、モデル変換処理によって削除されることがない、（４）ユーザーが修正していないモデルは要素は、モデル変換処理によって上書きされ上流工程の変更に追従する、（５）上記（１）〜（３）に該当する条件をリストアップし、ユーザーによる編集に委ねて矛盾が発生していないかをユーザーに確認させることができる、（６）上記（１）〜（３）に関わらず、強制的にモデル変換処理を行ってモデル要素を上書きする、などのモデル変換処理が可能となる。
【００６９】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりモデル変換処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００７０】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【図面の簡単な説明】
【００７１】
【図１】本発明の一実施形態によるモデル指向開発支援装置の構成を示す図である。
【図２】本発明の一実施形態によるモデル指向開発の概念データ例を示す図である。
【図３】本発明の一実施形態によるモデル指向開発の変換ルール例を示す図である。
【図４】本発明の一実施形態によるモデル要素記憶部に記憶されるデータ例を示す図である。
【図５】本発明の一実施形態によるトレース要素記憶部に記憶されるデータ例を示す図である。
【図６】本発明の一実施形態によるモデル要素の木構造の概念を示す図である。
【図７】本発明の一実施形態による詳細設計工程のモデル要素のデータ例を示す図である。
【図８】本発明の一実施形態によるプログラム設計工程のモデル要素のデータ例を示す図である。
【図９】本発明の一実施形態によるモデル変換処理の概念を示す図である。
【図１０】本発明の一実施形態によるモデル指向開発支援装置の動作例概要を示すフローチャートである。
【図１１】本発明の一実施形態によるモデル指向開発支援装置の動作例を示すフローチャートである。
【図１２】本発明の一実施形態によるモデル指向開発支援装置の動作例を示すフローチャートである。
【図１３】本発明の一実施形態によるモデル指向開発支援装置の動作例を示すフローチャートである。
【図１４】本発明の一実施形態によるマージ処理の一類型を示す図である。
【図１５】本発明の一実施形態によるマージ処理の一類型を示す図である。
【図１６】本発明の一実施形態によるマージ処理の一類型を示す図である。
【図１７】本発明の一実施形態によるマージ処理の一類型を示す図である。
【図１８】本発明の一実施形態によるマージ処理の一類型を示す図である。
【符号の説明】
【００７２】
１００  モデル指向開発支援装置
１１０  入力部
１２０  モデル編集部
１３０  モデル記憶部
１３１  モデル要素記憶部
１３２  トレース要素記憶部
１４０  制御部
１４１  モデル取得部
１４２  モデル複製部
１４３  モデル要素変換部
１４４  モデル内容比較部
１４６  更新日時比較部
１４５  モデル更新部
１４７  マージ方法判定部
１５０  コピーモデル記憶部
１６０  マージ方法記憶部
【図１】
2010061543.tif 000003
【図２】
2010061543.tif 000004
【図３】
2010061543.tif 000005
【図４】
2010061543.tif 000006
【図５】
2010061543.tif 000007
【図６】
2010061543.tif 000008
【図７】
2010061543.tif 000009
【図８】
2010061543.tif 000010
【図９】
2010061543.tif 000011
【図１０】
2010061543.tif 000012
【図１１】
2010061543.tif 000013
【図１２】
2010061543.tif 000014
【図１３】
2010061543.tif 000015
【図１４】
2010061543.tif 000016
【図１５】
2010061543.tif 000017
【図１６】
2010061543.tif 000018
【図１７】
2010061543.tif 000019
【図１８】
2010061543.tif 000020