(57)【特許請求の範囲】
【請求項１】
統一モデリング言語を用いたソフトウェアのオブジェクト指向モデルを生成する際に必要なモデル図を作成するモデル図作成装置において、
モデル図における状態およびイベントの組み合わせに応じて定義される関数であってモデル図としてのクラス図および複数種類の振る舞い図の構成を定める関数、および前記クラス図に対応するクラスの種類を定義する情報が記述された状態イベント表を記憶する記憶部と、
前記記憶部が記憶する状態イベント表に基づいてクラス図を作成する構造図作成部と、
前記記憶部が記憶する状態イベント表に基づいて複数種類の振る舞い図を作成する振る舞い図作成部と、
を備えたことを特徴とするモデル図作成装置。
【請求項２】
前記状態イベント表は、
前記複数種類の振る舞い図の構成を定める関数として、ステートマシン図における状態の遷移を定める関数、シーケンス図におけるメッセージの送信条件を定める関数、およびシーケンス図におけるメッセージの送信先を定める関数を含むことを特徴とする請求項１に記載のモデル図作成装置。
【請求項３】
前記クラスの種類には、状態遷移機械を表すクラス、および既存のソフトウェアのクラスが含まれることを特徴とする請求項１または２に記載のモデル図作成装置。
【請求項４】
前記クラスの種類が前記既存のソフトウェアのクラスである前記状態イベント表では、
前記既存のソフトウェアに含まれる関数の情報として該関数の名称のみが記述されていることを特徴とする請求項３に記載のモデル図作成装置。
【請求項５】
前記クラスの種類が前記状態遷移機械を表すクラスである前記状態イベント表では、
前記既存のソフトウェアのクラスの関数を呼び出す機能を記述することが可能であることを特徴とする請求項３または４に記載のモデル図作成装置。
【請求項６】
前記クラス図および前記複数種類の振る舞い図を作成するために必要な情報を要素として有し、複数の要素の相互関係をツリー構造で示す要素構成図を作成する要素構成図作成部をさらに備えたことを特徴とする請求項１〜５のいずれか一項に記載のモデル図作成装置。
【請求項７】
前記要素構成図を表示可能な表示部と、
前記要素構成図作成部が前記要素構成図に対して要素を追加するごとに前記表示部における表示を切り換えて表示させる表示制御部と、
をさらに備えたことを特徴とする請求項６に記載のモデル図作成装置。
【請求項８】
前記表示部は、
前記クラス図および前記複数種類の振る舞い図を表示可能であり、
前記表示制御部は、
前記構造図作成部および前記振る舞い図作成部がそれぞれ作成した前記クラス図および前記振る舞い図を作成順に前記表示部に表示させることを特徴とする請求項７に記載のモデル図作成装置。
【請求項９】
前記表示制御部は、
前記要素構成図と前記クラス図および前記振る舞い図とを並べて前記表示部に表示させることを特徴とする請求項８に記載のモデル図作成装置。
【請求項１０】
統一モデリング言語を用いたソフトウェアのオブジェクト指向モデルを生成する際に必要なモデル図を作成するモデル図作成装置が実行するモデル図作成方法において、
モデル図における状態およびイベントの組み合わせに応じて定義される関数であってモデル図としてのクラス図および複数種類の振る舞い図の構成を定める関数、および前記クラス図に対応するクラスの種類を定義する情報が記述された状態イベント表を記憶する記憶部から該状態イベント表を参照してクラス図を作成するクラス図作成ステップと、
前記記憶部から前記状態イベント表を参照して複数種類の振る舞い図を作成する振る舞い図作成ステップと、
を有することを特徴とするモデル図作成方法。
【請求項１１】
統一モデリング言語を用いたソフトウェアのオブジェクト指向モデルを生成する際に必要なモデル図を作成するモデル図作成装置に、
モデル図における状態およびイベントの組み合わせに応じて定義される関数であってモデル図としてのクラス図および複数種類の振る舞い図の構成を定める関数、および前記クラス図に対応するクラスの種類を定義する情報が記述された状態イベント表を記憶する記憶部から該状態イベント表を参照してクラス図を作成するクラス図作成ステップと、
前記記憶部から前記状態イベント表を参照して複数種類の振る舞い図を作成する振る舞い図作成ステップと、
を実行させることを特徴とするモデル図作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアのオブジェクト指向モデルを生成する際に必要なモデル図を作成するモデル図作成装置、モデル図作成方法、モデル図作成プログラム、およびモデル図作成用の状態イベント表のデータ構造に関する。
【背景技術】
【０００２】
従来、ソフトウェアのオブジェクト指向モデルの開発においては、ソースコードを解析することによって各種モデル図を自動的に作成するリバースエンジニアリングが知られている。このリバースエンジニアリングによれば、仕様書と実際の製品との食い違いを検証したり、バグ等の発見を行うことができたりするため、ソフトウェアの生産性を向上させるとともに、システムの保守やセキュリティ強化に役立たせることができる。
【０００３】
このようなリバースエンジニアリング技術の例として、例えば、特許文献１では、ソースコードを解析して自動的にステートマシン図を作成する技術が開示されている。また、特許文献２および３では、ソースコードを解析して自動的にシーケンス図を作成する技術がそれぞれ開示されている。これらの従来技術によれば、開発対象のソフトウェアの一側面を反映したオブジェクト指向モデルの生成を実現することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１９８１０３号公報
【特許文献２】特開２００４−９４４９６号公報
【特許文献３】特開２００９−２９５０２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、ステートマシン図やシーケンス図等の振る舞い図を個別に作成することは可能であるものの、複数種類の振る舞い図をクラス図等の構造図とともに一括して作成することはできなかった。このため、上述した従来技術では、自動的に作成することができない振る舞い図は手作業で作成せざるを得ず、開発対象のソフトウェアの多様な側面を反映しつつ一貫性のあるオブジェクト指向モデルの生成を実現できているわけではなかった。
【０００６】
本発明は、上記に鑑みてなされたものであって、開発対象のソフトウェアの多様な側面を反映しつつ一貫性のあるオブジェクト指向モデルの生成を実現可能にするモデル図作成装置、モデル図作成方法、モデル図作成プログラムおよびモデル図作成用の状態イベント表のデータ構造を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明に係るモデル図作成装置は、統一モデリング言語を用いたソフトウェアのオブジェクト指向モデルを生成する際に必要なモデル図を作成するモデル図作成装置において、モデル図における状態およびイベントの組み合わせに応じて定義される関数であってモデル図としてのクラス図および複数種類の振る舞い図の構成を定める関数、および前記クラス図に対応するクラスの種類を定義する情報が記述された状態イベント表を記憶する記憶部と、前記記憶部が記憶する状態イベント表に基づいてクラス図を作成する構造図作成部と、前記記憶部が記憶する状態イベント表に基づいて複数種類の振る舞い図を作成する振る舞い図作成部と、を備えたことを特徴とする。
【０００８】
また、本発明に係るモデル図作成装置は、上記発明において、前記状態イベント表は、前記複数種類の振る舞い図の構成を定める関数として、ステートマシン図における状態の遷移を定める関数、シーケンス図におけるメッセージの送信条件を定める関数、およびシーケンス図におけるメッセージの送信先を定める関数を含むことを特徴とする。
【０００９】
また、本発明に係るモデル図作成装置は、上記発明において、前記クラスの種類には、状態遷移機械を表すクラス、および既存のソフトウェアのクラスが含まれることを特徴とする。
【００１０】
また、本発明に係るモデル図作成装置は、上記発明において、前記クラスの種類が前記既存のソフトウェアのクラスである前記状態イベント表では、前記既存のソフトウェアに含まれる関数の情報として該関数の名称のみが記述されていることを特徴とする。
【００１１】
また、本発明に係るモデル図作成装置は、上記発明において、前記クラスの種類が前記状態遷移機械を表すクラスである前記状態イベント表では、前記既存のソフトウェアのクラスの関数を呼び出す機能を記述することが可能であることを特徴とする。
【００１２】
また、本発明に係るモデル図作成装置は、上記発明において、前記クラス図および前記複数種類の振る舞い図を作成するために必要な情報を要素として有し、複数の要素の相互関係をツリー構造で示す要素構成図を作成する要素構成図作成部をさらに備えたことを特徴とする。
【００１３】
また、本発明に係るモデル図作成装置は、上記発明において、前記要素構成図を表示可能な表示部と、前記要素構成図作成部が前記要素構成図に対して要素を追加するごとに前記表示部における表示を切り換えて表示させる表示制御部と、をさらに備えたことを特徴とする。
【００１４】
また、本発明に係るモデル図作成装置は、上記発明において、前記表示部は、前記クラス図および前記複数種類の振る舞い図を表示可能であり、前記表示制御部は、前記クラス図作成部および前記振る舞い図作成部がそれぞれ作成した前記構造図および前記振る舞い図を作成順に前記表示部に表示させることを特徴とする。
【００１５】
また、本発明に係るモデル図作成装置は、上記発明において、前記表示制御部は、前記要素構成図と前記クラス図および前記振る舞い図とを並べて前記表示部に表示させることを特徴とする。
【００１６】
また、本発明に係るモデル図作成方法は、統一モデリング言語を用いたソフトウェアのオブジェクト指向モデルを生成する際に必要なモデル図を作成するモデル図作成装置が実行するモデル図作成方法において、モデル図における状態およびイベントの組み合わせに応じて定義される関数であってモデル図としてのクラス図および複数種類の振る舞い図の構成を定める関数、および前記クラス図に対応するクラスの種類を定義する情報が記述された状態イベント表を記憶する記憶部から該状態イベント表を参照してクラス図を作成するクラス図作成ステップと、前記記憶部から前記状態イベント表を参照して複数種類の振る舞い図を作成する振る舞い図作成ステップと、を有することを特徴とする。
【００１７】
また、本発明に係るモデル図作成プログラムは、統一モデリング言語を用いたソフトウェアのオブジェクト指向モデルを生成する際に必要なモデル図を作成するモデル図作成装置に、モデル図における状態およびイベントの組み合わせに応じて定義される関数であってモデル図としてのクラス図および複数種類の振る舞い図の構成を定める関数、および前記クラス図に対応するクラスの種類を定義する情報が記述された状態イベント表を記憶する記憶部から該状態イベント表を参照してクラス図を作成するクラス図作成ステップと、前記記憶部から前記状態イベント表を参照して複数種類の振る舞い図を作成する振る舞い図作成ステップと、を実行させることを特徴とする。
【００１８】
また、本発明に係るモデル図作成用の状態イベント表のデータ構造は、統一モデリング言語を用いたソフトウェアのオブジェクト指向モデルを生成する際に必要なモデル図における状態およびイベントの組み合わせに応じて定義される関数であってモデル図としてのクラス図および複数種類の振る舞い図の構成を定める関数、および前記クラス図に対応するクラスの種類を定義する情報が記述されていることを特徴とする。
【００１９】
また、本発明に係るモデル図作成用の状態イベント表のデータ構造は、上記発明において、前記関数として、ステートマシン図における状態の遷移を定める関数、シーケンス図におけるメッセージの送信条件を定める関数、およびシーケンス図におけるメッセージの送信先を定める関数を含むことを特徴とする。
【００２０】
また、本発明に係るモデル図作成用の状態イベント表のデータ構造は、上記発明において、前記構造図はクラス図であり、前記クラス図に対応するクラスの種類を定義する情報が記述されており、前記クラスの種類には、状態遷移機械を表すクラス、および既存のソフトウェアのクラスが含まれることを特徴とする。
【００２１】
また、本発明に係るモデル図作成用の状態イベント表のデータ構造は、上記発明において、当該状態イベント表における前記クラスの種類が前記既存のソフトウェアのクラスである場合、前記既存のソフトウェアに含まれる関数の情報として該関数の名称のみが記述されていることを特徴とする。
【００２２】
また、本発明に係るモデル図作成用の状態イベント表のデータ構造は、上記発明において、当該状態イベント表における前記クラスの種類が前記状態遷移機械を表すクラスである場合、前記既存のソフトウェアのクラスの関数を呼び出す機能が記述されていることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、クラス図および複数種類の振る舞い図の構成を定める関数、および前記クラス図に対応するクラスの種類を定義する情報が記述された状態イベント表に基づいてクラス図および複数種類の振る舞い図を自動的に作成するため、開発対象のソフトウェアの多様な側面を反映しつつ一貫性のあるオブジェクト指向モデルの生成を実現することが可能となる。
【図面の簡単な説明】
【００２４】
【図１】図１は、本発明の実施の形態１に係るモデル図作成装置の機能構成を示すブロック図である。
【図２】図２は、状態イベント表の構成例を示す図である。
【図３】図３は、状態イベント表の構成例（第２例）を示す図である。
【図４】図４は、図２に示す状態イベント表から作成されるクラス図の構成を示す図である。
【図５】図５は、図３に示す状態イベント表から作成されるクラス図の構成を示す図である。
【図６】図６は、図２に示す状態イベント表から作成されるステートマシン図の構成を示す図である。
【図７】図７は、図３に示す状態イベント表から作成されるステートマシン図の構成を示す図である。
【図８】図８は、図２および図３に示す状態イベント表から作成されるシーケンス図の構成を示す図である。
【図９】図９は、本発明の実施の形態１に係るモデル図作成装置が行うモデル図作成方法の処理の概要を示すフローチャートである。
【図１０】図１０は、本発明の実施の形態１に係るモデル図作成装置が行うクラス図の作成処理の概要を示すフローチャートである。
【図１１Ａ】図１１Ａは、コンポーネントを追加した要素構成図の表示部における表示例を示す図である。
【図１１Ｂ】図１１Ｂは、クラス図、クラス要素を追加した状態における要素構成図の表示部における表示例を示す図である。
【図１１Ｃ】図１１Ｃは、各種関数を追加した要素構成図の表示部における表示例を示す図である。
【図１１Ｄ】図１１Ｄは、属性を追加した要素構成図の表示部における表示例を示す図である。
【図１１Ｅ】図１１Ｅは、クラス図の表示部における表示例を示す図である。
【図１１Ｆ】図１１Ｆは、図３に示す状態イベント表に対して一連のクラス図作成処理を終了した要素構成図の表示部における表示例を示す図である。
【図１２】図１２は、本発明の実施の形態１に係るモデル図作成装置が行うステートマシン図の作成処理の概要を示すフローチャートである。
【図１３Ａ】図１３Ａは、ステートマシン図の要素を追加した要素構成図の表示部における表示例を示す図である。
【図１３Ｂ】図１３Ｂは、状態を追加した要素構成図の表示部における表示例を示す図である。
【図１３Ｃ】図１３Ｃは、イベントを追加した要素構成図の表示部における表示例を示す図である。
【図１３Ｄ】図１３Ｄは、開始要素を追加した要素構成図の表示部における表示例を示す図である。
【図１３Ｅ】図１３Ｅは、状態イベント表に対して一連のステートマシン図作成処理を終了した要素構成図の表示部における表示例を示す図である。
【図１４】図１４は、本発明の実施の形態１に係るモデル図作成装置が行うシーケンス図の作成処理の概要を示すフローチャートである。
【図１５Ａ】図１５Ａは、シーケンス図の要素を追加した要素構成図の表示部における表示例を示す図である。
【図１５Ｂ】図１５Ｂは、メッセージ終了点の要素を追加した要素構成図の表示部における表示例を示す図である。
【図１６】図１６は、本発明の実施の形態２に係るモデル図作成装置が備える状態イベント表記憶部が記憶する状態イベント表の構成例を示す図である。
【図１７】図１７は、本発明の実施の形態２に係るモデル図作成装置の状態イベント表記憶部が記憶する別な状態イベント表の構成例を示す図である。
【図１８】図１８は、本発明の実施の形態２に係るモデル図作成装置の状態イベント表記憶部が記憶するさらに別な状態イベント表の構成例を示す図である。
【図１９】図１９は、本発明の実施の形態２に係るモデル図作成装置が、図１８に示す状態イベント表に基づいて作成するクラス図の構成を示す図である。
【図２０】図２０は、本発明の実施の形態２に係るモデル図作成装置が、図１７および図１８に示す状態イベント表に基づいて作成するシーケンス図の構成を示す図である。
【図２１】図２１は、本発明の実施の形態２に係るモデル図作成装置の表示部が、全てのコンポーネントを追加した要素構成図を表示する場合の表示画面例を示す図である。
【発明を実施するための形態】
【００２５】
以下、添付図面を参照して、本発明を実施するための形態（以下、「実施の形態」という）を説明する。
【００２６】
（実施の形態１）
図１は、本発明の実施の形態１に係るモデル図作成装置の機能構成を示すブロック図である。同図に示すモデル図作成装置１は、統一モデリング言語（ＵＭＬ）を用いてソフトウェアのオブジェクト指向モデルを生成する際に必要となるモデル図を自動的に作成する装置である。同図に示すモデル図作成装置１は、キーボード、マウス、タッチパネル等のインタフェースを用いて実現される入力部２と、液晶または有機ＥＬ等からなる表示パネルを有し、各種情報を表示する表示部３と、ＵＭＬのモデル図を作成するための情報を含む各種情報を記憶する記憶部４と、モデル図作成装置１の動作を制御する制御部５と、を備える。
【００２７】
記憶部４は、モデル図作成装置１がモデル図を作成する際に参照する状態イベント表を記憶する状態イベント表記億部４１と、作成されたモデル図等の情報を記憶する作成情報記憶部４２とを有する。状態イベント表は、モデル図における状態とイベントとの関係を示す表であり、状態およびイベントの組み合わせに応じて定義される関数であってモデル図としての構造図および複数種類の振る舞い図の構成を定める関数が記述されたデータ構造を有している。１つのファイル（以下、コンポーネントという）には、複数の状態イベント表を記述することが可能である。状態イベント表の詳細な構成については後述する。
【００２８】
記憶部４は、本実施の形態１に係るモデル図作成プログラムや所定のＯＳを起動するプログラム等が予め記憶されたＲＯＭ、および各処理の演算パラメータやデータ等を記憶するＲＡＭ等を用いて実現される。
【００２９】
制御部５は、状態イベント表記憶部４１が記憶する状態イベント表に基づいてモデル図のうちの構造図を作成する構造図作成部５１と、状態イベント表記憶部４１が記憶する状態イベント表および構造図作成部５１が作成した構造図をもとに複数種類の振る舞い図を作成する振る舞い図作成部５２と、構造図および前記複数種類の振る舞い図を作成するために必要な情報を要素として有し、複数の要素の相互関係をツリー構造で示す要素構成図を作成する要素構成図作成部５３と、表示部３における表示を制御する表示制御部５４と、を有する。
【００３０】
本実施の形態１では、構造図としてクラス図を例にとる一方、振る舞い図としてステートマシン図およびシーケンス図を例にとって説明するが、これはあくまでも一例に過ぎない。例えば、構造図として、コンポーネント図およびオブジェクト図のいずれかを適用することも可能である。また、振る舞い図として、コミュニケーション図（コラボレーション図）、アクティビティ図、ユースケース図、タイミング図、および相互作用概要図のいずれかを適用することも可能である。
【００３１】
制御部５は、ＣＰＵ等を用いて実現され、制御対象であるモデル図作成装置１の各構成部位とバスラインを介して接続されている。制御部５は、記憶部４が記憶、格納する情報および本実施の形態１に係るモデル図作成プログラムを含む各種プログラムを記憶部４から読み出すことにより、本実施の形態１に係るモデル図作成方法に関連した演算処理を実行する。
【００３２】
なお、本実施の形態１に係るモデル図作成プログラムは、ハードディスク、フラッシュメモリ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、フレキシブルディスク等のコンピュータ読み取り可能な記録媒体に記録して広く流通させることも可能である。
【００３３】
以上の構成を有するモデル図作成装置１は、１つのコンピュータを用いて実現してもよいし、複数のコンピュータを用いて実現してもよい。後者の場合には、インターネット等の通信ネットワークを介してデータの送受信を行いながら、互いに連携して処理を行うようにすることも可能である。
【００３４】
図２は、状態イベント表記憶部４１が記憶する状態イベント表の構成例を示す図である。同図に示す状態イベント表１００は、モデル図における状態とイベントとの対応関係を与える表である。状態イベント表１００は、クラス名、マトリックス、関数テーブルおよび属性テーブルを含む。
【００３５】
クラス名は、表中で[Class_Name]という項目によって示されている。状態イベント表１００のクラス名は、項目の右側に記述された  ComponentAである。このクラス名は、クラス図およびステートマシン図の名前となる。また、クラス図に記載されるクラス名にもなる。
【００３６】
状態イベント表中のマトリックスは、状態（行）とイベント（列）の対応関係を表す。状態イベント表１００において、項目[State]が状態を示し、項目[Event]がイベントを示す。状態イベント表１００には、「状態１（STATE1）」、「状態２（STATE2）」という２つの状態が含まれる。「状態１」、「状態２」は日本語の状態名であり、モデル図ではそれぞれ「STATE1」、「STATE2」と表示される。また、状態イベント表１００には、「イベント１１（E11）」、「イベント１２（E12）」という２つのイベントが含まれる。「イベント１１」、「イベント１２」は日本語の状態名であり、モデル図ではそれぞれ「E11」、「E12」と表示される。以下、マトリックスの要素をセルという。
【００３７】
状態とイベントによって定まるセルの内部には、具体的な状態とイベントとの関係が記述されている。図２において、各セルの内部の具体的な記述は、ＸＭＬ（Extensible  Markup  Language）形式にしたがって記述されている。
【００３８】
セルに記述される内容について具体的に説明する。セルの記述内容は、以下に示すようなものである。
[f_関数名]
<Action>
<Condition  Func="条件関数名">
<Logic>イベント応答関数名</Logic>
<Message>送信先のクラス名＠イベント関数名</Message>
<TransitionState>遷移後の状態名</TransitionState>
</Condition>
</Action>
【００３９】
セルの最初の項目[f_関数名]は、応答関数名を与える。
Conditionタグ（<Condition>）は、クラス図の条件関数を定義する。このConditionタグの属性値（条件関数）は、ステートマシン図において遷移のガード条件やシーケンス図においてクラスのライフラインからのメッセージのガード条件を与える。
Logicタグ（<Logic>）は、ステートマシン図における遷移のアクション名を定義する。
Messageタグ（<Message>）は、「送信先のクラス名＠イベント関数名」という形式で記述される。このうち、送信先のクラス名は、シーケンス図におけるクラスのライフラインからのメッセージの送信先を与える。また、イベント関数名は、シーケンス図におけるクラスのライフラインからのメッセージ名を与える。なお、イベント関数に引数がある場合には、イベント関数名（引数１，引数２，・・・）と記述する。
TransitionStateタグ（<TransitionState>）は、ステートマシン図における遷移先の状態を定義する。
なお、１つのセルの中に、ConditionタグとMessageタグは複数記述してもよい。また、１つのセルの中で、Conditionタグ、Logicタグ、Messageタグ、TransitionStateタグは省略可能である。
【００４０】
図２に示す状態イベント表１００において、状態１およびイベント１１の組み合わせに対応するセルには、応答関数［f_Action11］が定義されている。この応答関数[f_Action11］の内容を説明する。Conditionタグにおける条件関数はConditon11である。Logicタグで定義される遷移のアクション名はAction11である。Messegeタグで定義される送信先のクラス名はComponentBであり、イベント関数名はイベント２１である。TransitionStateタグで定義される遷移先の状態は状態２である。
【００４１】
状態１およびイベント１２の組み合わせに対応するセルには、応答関数［f_Non］が定義されている。この応答関数[f_Non]は、いかなる処理も行わないこと（無処理）を意味する。
【００４２】
状態２およびイベント１１の組み合わせに対応するセルには、応答関数［f_Action13］が定義されている。この応答関数[f_Action13］の内容を説明する。Logicタグで定義される遷移のアクション名はAction13である。Messageタグで定義される送信先のクラス名はComponentBであり、イベント関数名はイベント２２である。
【００４３】
状態２およびイベント１２の組み合わせに対応するセルには、応答関数[f_Action12]が定義されている。この応答関数[f_Action12］の内容を説明する。Conditionタグにおける条件関数はConditon12である。Logicタグで定義される遷移のアクション名はAction12である。Messageタグで定義される送信先のクラス名はComponentBであり、イベント関数名はイベント２２である。TransitionStateタグで定義される遷移先の状態は状態１である。
【００４４】
状態イベント表１００では、関数テーブルとして、３種類の関数[Func_Logic]、[Func_Condition]、[Func_Interface]が記述されている。各関数には、関数名（[Func_Name]）、関数の中身であるソースコード（[Func_Code]）、Includeファイル名（[Func_Include]）、および関数を説明するコメント（[Func_Comment]）が記述されている（図２では、関数名以外は省略）。ソースコードは、例えばＣ、Ｃ＋＋、Ｊａｖａ（登録商標）等のプログラミング言語を用いて記述されている。
【００４５】
関数[Func_Logic]は、ステートマシン図におけるイベント応答関数であり、ステートマシン図における遷移のアクションを与える関数である。状態イベント表１００では、具体的な関数として、Action11()，Action12()，Action13()が定義されている。ここで、各関数の横に記述されている()は、引数なしを意味している。
関数[Func_Condition]は、ステートマシン図における遷移の条件およびシーケンス図におけるメッセージの条件を与える関数である。状態イベント表１００では、具体的な条件関数として、Condition11()，Condition12()が定義されている。
関数[Func_Interface]は、他のクラスから利用される関数である。状態イベント表１００では、具体的な関数として、戻り値がint型であるGet()，戻り値がboolean型であるSet(int)が定義されている。ここで、Setの引数は整数（intと記述）である。
なお、状態イベント表で定義される関数は、上述したものに限られるわけではない。
【００４６】
属性テーブルには、クラス図における属性が定義される。属性テーブルには、属性名（[Attr_Name]）、属性の型（[Attr_Type]）、初期値（[Attr_Ini]）、属性を説明するコメント（[Attr_Comment]）が記述されている（図２では属性名、属性の型以外は省略）。状態イベント表１００では、具体的な属性として、属性名attrが記述されている。
【００４７】
図３は、状態イベント表記憶部４１が記憶する別な状態イベント表の構成例を示す図である。同図に示す状態イベント表２００は、クラス名（[Class_Name]）がComponentBである。状態イベント表２００には、「状態３（STATE3）」、「状態４（STATE4）」、「状態５（STATE5）」という３つの状態が含まれる。また、状態イベント表２００には、「イベント２１（E21）」、「イベント２２（E22）」という２つのイベントが含まれる。
【００４８】
状態３およびイベント２１の組み合わせに対応するセルには、応答関数[f_Action21]が定義されている。この応答関数[f_Action21］において、Logicタグで定義される遷移のアクション名はAction21であり、TransitionStateタグで定義される遷移先の状態は状態４である。
【００４９】
状態３およびイベント２２の組み合わせに対応するセルには、応答関数[f_Action24]が定義されている。この応答関数[f_Action24］において、Logicタグで定義される遷移のアクション名はAction24であり、TransitionStateタグで定義される遷移先の状態は状態５である。
【００５０】
状態４およびイベント２１の組み合わせに対応するセルには、応答関数[f_Action22]が定義されている。この応答関数[f_Action22］において、Logicタグで定義される遷移のアクション名はAction22であり、TransitionStateタグで定義される遷移先の状態は状態５である。
【００５１】
状態４およびイベント２２の組み合わせに対応するセルには、応答関数[f_Action26]が定義されている。この応答関数[f_Action26］において、Logicタグで定義される遷移のアクション名はAction26であり、TransitionStateタグで定義される遷移先の状態は状態３である。
【００５２】
状態５およびイベント２１の組み合わせに対応するセルには、応答関数[f_Action23]が定義されている。この応答関数[f_Action23］において、Logicタグで定義される遷移のアクション名はAction23であり、TransitionStateタグで定義される遷移先の状態は状態３である。
【００５３】
状態５およびイベント２２の組み合わせに対応するセルには、応答関数[f_Action25]が定義されている。この応答関数[f_Action25］において、Logicタグで定義される遷移のアクション名はAction25であり、TransitionStateタグで定義される遷移先の状態は状態４である。
【００５４】
以上説明した応答関数[f_Action21]〜[f_Action26]には、ConditionタグやMessageタグは存在しない。
【００５５】
次に、モデル図作成装置１が、状態イベント表１００、２００に基づいて作成するクラス図、ステートマシン図およびシーケンス図の構成を説明する。
【００５６】
図４は、モデル図作成装置１が、状態イベント表１００から作成するクラス図の構成を示す図である。同図に示すクラス図３００は、最上部にクラス名ComponentAが記述されている。クラス名の下方には、属性名attrを有する属性に関する情報が追加されている。
【００５７】
属性の下方には、他のクラスから利用される関数（関数名Get,  Set）が追加されている。ここで、関数Get()の右側に記述されたintは、戻り値がint型であることを意味する。また、関数Set(int)の右側に記述されたbooleanは、戻り値が真偽値（true  or  false）であることを意味する。これらの引数と戻り値については、以下に示す関数においても同様に定められる。
【００５８】
他のクラスから利用される関数の下方には、イベント関数（E11，E12）、条件関数（Condition11，Condition12）、イベント応答関数（Action11，Action12，Action13）が追加されている。
イベント関数には、ステレオタイプ<<Event>>が設定されている。イベント関数のスコープは、全ての場所からアクセス可能なパブリックである。イベント関数は引数がなく、その戻り値はvoidである。
条件関数には、ステレオタイプ<<Guard>>が設定されている。条件関数のスコープは、自身のクラス内からのみアクセス可能なプライベートである。条件関数は引数がなく、その戻り値はbooleanである。
イベント応答関数には、ステレオタイプ<<Action>>が設定されている。イベント応答関数のスコープは、プライベートである。イベント応答関数は引数がなく、戻り値はvoidである。
【００５９】
図５は、モデル図作成装置１が、状態イベント表２００から作成するクラス図の構成を示す図である。同図に示すクラス図４００は、最上部にクラス名ComponentBが記述されている。クラス名の下方には、属性が追加されるが、このクラスには属性がないため、何も記述されていない。属性の下方には、項目<<Event>>において、２つのイベント関数（関数名E21,  E22）が記述されている。また、項目<<Action>>において、６つのイベント応答関数（関数名Action21,  Action22,  Action23,  Action24,  Action25,  Action26）が記述されている。
【００６０】
図６は、モデル図作成装置１が、状態イベント表１００から作成するステートマシン図を示す図である。同図に示すステートマシン図５００は、状態１（STATE1）と状態２（STATE2）との間の遷移を示す図である。
【００６１】
状態１から状態２への遷移は、イベントE11をトリガとし、条件Condition11の下でアクション名Action11で遷移する。この遷移は、状態イベント表１００の状態１およびイベント１１の組み合わせに対応するセルのConditionタグおよびLogicタグに記述されている。
【００６２】
状態２から状態１への遷移は、イベントE12をトリガとし、条件Condition12の下でアクション名Action12で遷移する。この遷移は、状態イベント表１００の状態２およびイベント１２の組み合わせに対応するセルのConditionタグおよびLogicタグに記述されている。
【００６３】
状態２から状態２への遷移は、イベントE11をトリガとし、無条件でアクション名Action13で遷移する。この遷移は、状態イベント表１００の状態２およびイベント１１の組み合わせに対応するセルのLogicタグに記述されている。
【００６４】
ステートマシン図５００の初期状態は、状態イベント表１００のマトリックスに含まれる状態の中で一番上に位置する状態１である。
【００６５】
図７は、モデル図作成装置１が、状態イベント表２００から作成するステートマシン図の構成を示す図である。同図に示すステートマシン図６００は、状態３（STATE3）、状態４（STATE4）および状態５（STATE5）の間の相互の遷移を示す図である。
【００６６】
状態３から状態４への遷移は、イベントE21をトリガとし、アクション名Action21で遷移する。この遷移は、状態イベント表２００の状態３およびイベント２１の組み合わせに対応するセルのLogicタグに記述されている。
【００６７】
状態４から状態５への遷移は、イベントE21をトリガとし、アクション名Action22で遷移する。この遷移は、状態イベント表２００の状態４およびイベント２１の組み合わせに対応するセルのLogicタグに記述されている。
【００６８】
状態５から状態３への遷移は、イベントE21をトリガとし、アクション名Action23で遷移する。この遷移は、状態イベント表２００の状態５およびイベント２１の組み合わせに対応するセルのLogicタグに記述されている。
【００６９】
状態３から状態５への遷移は、イベントE22をトリガとし、アクション名Action24で遷移する。この遷移は、状態イベント表２００の状態３およびイベント２２の組み合わせに対応するセルのLogicタグに記述されている。
【００７０】
状態５から状態４への遷移は、イベントE22をトリガとし、アクション名Action25で遷移する。この遷移は、状態イベント表２００の状態５およびイベント２２の組み合わせに対応するセルのLogicタグに記述されている。
【００７１】
状態４から状態３への遷移は、イベントE22をトリガとし、アクション名Action26で遷移する。この遷移は、状態イベント表２００の状態４およびイベント２２との組み合わせに対応するセルのLogicタグに記述されている。
【００７２】
ステートマシン図６００の初期状態は、状態イベント表２００のマトリックスに含まれる状態の中で一番上に位置する状態３である。
【００７３】
図８は、モデル図作成装置１が、状態イベント表１００および２００から作成するシーケンス図の構成を示す図である。同図に示すシーケンス図７００は、クラス名ComponentAからクラス名ComponentBへのメッセージの流れを与える図である。
【００７４】
状態１およびイベント１１の組み合わせに関連するメッセージとして、イベント２１が条件Condition11の下でクラス名ComponentBへ送信される。このメッセージ送信については、状態イベント表１００の状態１およびイベント１１の組み合わせに対応するセルのMessageタグに記述されている。
【００７５】
状態２およびイベント１１の組み合わせに関連するメッセージとして、イベント２２が無条件でクラス名ComponentBへ送信される。このメッセージ送信については、状態イベント表１００の状態２およびイベント１１の組み合わせに対応するセルのMessageタグに記述されている。
【００７６】
状態２およびイベント１２の組み合わせに関連するメッセージとして、イベント２２が条件Condition12の下でクラス名ComponentBへ送信される。このメッセージ送信については、状態イベント表１００の状態２およびイベント１２の組み合わせに対応するセルのMessageタグに記述されている。
【００７７】
図９は、モデル図作成装置１が行うモデル図作成方法の処理の概要を示すフローチャートである。モデル図作成装置１は、入力部２によってモデル図の作成指示信号が入力されると（ステップＳ１：Ｙｅｓ），クラス図（ステップＳ２）、ステートマシン図（ステップＳ３）、シーケンス図（ステップＳ４）を順次作成する。モデル図の作成指示信号が入力されない場合（ステップＳ１：Ｎｏ）、モデル図作成装置１は、ステップＳ１を繰り返す。なお、ステートマシン図とシーケンス図の作成順を逆にしてもよい。以下、ステップＳ２〜Ｓ４の処理を詳細に説明する。
【００７８】
図１０は、モデル図作成装置１が行うクラス図の作成処理（ステップＳ２）の概要を示すフローチャートである。モデル図作成装置１の記憶部４には、入力部２による入力によってモデル図用のフォルダが予め生成されているものとする。以下、このフォルダのフォルダ名をArchitectureとする。
【００７９】
まず、要素構成図作成部５３は、状態イベント表が記述された全てのコンポーネントを要素構成図に追加する（ステップＳ１１）。一例として、コンポーネント名Componentというコンポーネントに、図２に示す状態イベント表１００および図３に示す状態イベント表２００が個別の領域に記述されている場合を説明する。図１１Ａは、表示部３が表示制御部５４の制御のもとでコンポーネントを追加した要素構成図を表示する場合の表示例を示す図である。図１１Ａに示す要素構成図８０１では、破線で囲んだ領域（以下、破線領域という）に示すように、Componentの下層構造として、２つの状態イベント表に対応するコンポーネント（ComponentA，ComponentB）が記述されている。なお、破線領域は追加された箇所を明記するために便宜的に設けたものに過ぎず、表示部３で実際に表示されない。
【００８０】
モデル図作成装置１は、以下に説明するステップＳ１２〜Ｓ１６の処理を全ての状態イベント表に対して行う。まず、ステップＳ１２において、構造図作成部５１および要素構成図作成部５３は、クラス図、クラス要素を追加する（ステップＳ１２）。この際、構造図作成部５１は、クラス図にクラス要素を追加する処理を行う。また、要素構成図作成部５３は、要素構成図に対してクラス図、クラス要素を追加する。例えば、状態イベント表１００に対して処理を行う場合、ComponentAというクラス図、クラス要素を追加する。図１１Ｂは、要素構成図作成部５３がクラス図、クラス要素を追加した要素構成図の表示部３における表示例を示す図である。図１１Ｂに示す要素構成図８０２では、図１１Ａに示す要素構成図８０１に対し、異なるアイコンを有するクラス図とクラス要素が追加されている（破線領域を参照）。
【００８１】
その後、構造図作成部５１および要素構成図作成部５３は、各種関数をクラス図および要素構成図に対して追加する（ステップＳ１３）。例えば、状態イベント表１００に対して処理を行う場合、各種関数としては、イベント関数E11，E12，条件関数Condition11，Condition12，イベント応答関数Action11，Action12，Action13，および他クラスから利用される関数Get，Setが追加される。図１１Ｃは、各種関数を追加した要素構成図の表示部３における表示例を示す図である。図１１Ｃに示す要素構成図８０３では、図１１Ｂに示す要素構成図８０２に対し、上述した各種関数が追加されている（破線領域を参照）。
【００８２】
続いて、構造図作成部５１および要素構成図作成部５３は、属性を追加する（ステップＳ１４）。例えば、状態イベント表１００の場合、属性attrが追加される。図１１Ｄは、属性を追加した要素構成図の表示部３における表示例を示す図である。図１１Ｄに示す要素構成図８０４では、図１１Ｃに示す要素構成図８０３に対し、属性attrが追加されている（破線領域を参照）。
【００８３】
この後、表示制御部５４は、構造図作成部５１が作成したクラス図を表示部３に表示させる（ステップＳ１５）。図１１Ｅは、表示部３におけるクラス図の表示例を示す図である。同図に示す表示画面８０５は、状態イベント表１００に基づいて構造図作成部５１が作成したクラス図３００を表示するクラス図表示領域８０６と、要素構成図作成部５３が作成した要素構成図８０４とを並べて表示している。クラス図表示領域８０６の最上部には、クラス図名（ComponentA）が表示されている。
【００８４】
構造図作成部５１は、作成したクラス図を作成情報記憶部４２に記憶させる（ステップＳ１６）。なお、モデル図作成装置１は、ステップＳ１６の処理を、ステップＳ１５の前に行ってもよいし、ステップＳ１５と並行して行ってもよい。
【００８５】
モデル図作成装置１は、以上説明したステップＳ１２〜Ｓ１６の処理を全ての状態イベント表に対して行う。図１１Ｆは、要素構成図作成部５３が状態イベント表２００に対してステップＳ１４までの処理を終了した要素構成図の表示部３における表示例を示す図である。図１１Ｆに示す要素構成図８０７は、図１１Ｄに示す要素構成図８０４に対し、ComponentBに関するクラス図のツリー構造が追加されている（破線領域を参照）。なお、この場合にも、ステップＳ１５において、要素構成図８０７とクラス図４００が表示部３で並列表示される。
【００８６】
モデル図作成装置１は、全ての状態イベント表に対してクラス図の作成処理が終了した場合、図９に示すメインルーチンへ戻る。
【００８７】
次に、ステートマシン図の作成処理（ステップＳ３）について説明する。図１２は、モデル図作成装置１が行うステートマシン図の作成処理の概要を説明するフローチャートである。このステートマシン図の作成処理についても、全ての状態イベント表に対して繰り返し処理を行う。
【００８８】
まず、振る舞い図作成部５２および要素構成図作成部５３は、ステートマシン図を追加する（ステップＳ２１）。具体的には、振る舞い図作成部５２は、クラス図と同じ名称のステートマシン図の作成を開始する。一方、要素構成図作成部５３は、要素構成図のクラス図の要素の下層にステートマシン図の要素を追加する。図１３Ａは、ステートマシン図の要素を追加した要素構成図の表示部３における表示例を示す図である。図１３Ａに示す要素構成図８１１では、図１１Ｆに示す要素構成図８０７に対し、クラス図の要素の下層にComponentAのステートマシン図の要素が追加されている（破線領域を参照）。
【００８９】
続いて、振る舞い図作成部５２および要素構成図作成部５３は、ステートマシン図に必要な全ての状態を追加する（ステップＳ２２）。例えば、状態イベント表１００に対して処理を行う場合、状態１（STATE1）および状態２（STATE2）が追加される。図１３Ｂは、状態イベント表１００に対して状態を追加した要素構成図の表示部３における表示例を示す図である。図１３Ｂに示す要素構成図８１２では、図１３Ａに示す要素構成図８１１に対し、２つの状態の要素STATE1,  STATE2が追加されている（破線領域を参照）。
【００９０】
この後、振る舞い図作成部５２および要素構成図作成部５３は、状態イベント表のイベント名から、クラスの下のトリガ要素として、ステートマシン図に必要な全てのイベントを追加する（ステップＳ２３）。例えば、状態イベント表１００の場合には、イベントE11，E12を追加する。図１３Ｃは、イベントを追加した要素構成図の表示部３における表示例を示す図である。図１３Ｃに示す要素構成図８１３は、図１３Ｂに示す要素構成図８１２に対し、２つのイベントが追加されている（破線領域を参照）。
【００９１】
続いて、振る舞い図作成部５２は、ステートマシン図に必要な全ての遷移を追加する（ステップＳ２４）。例えば、状態イベント表１００に対して処理を行う場合、状態１から状態２への遷移と、状態２から状態１への遷移が追加される。この処理は、状態イベント表においてTransitionStateタグが記述されたセルに対応する状態を遷移元状態（ソース）とし、TransitionStateタグの内容を遷移先状態（ターゲット）として遷移を追加することに相当する。この処理は、要素構成図には反映されない。
【００９２】
この後、振る舞い図作成部５２は、ステップＳ２４で追加した遷移に対して、イベント名、条件、およびアクションを追加する（ステップＳ２５）。例えば、状態イベント表１００に対して処理を行う場合、まず状態１から状態２への遷移に対し、イベント名E11，条件名Condition11，アクションAction11を追加する。この処理では、状態イベント表においてTransitionStateタグが記述されたセルに対応するイベント名を名前とする遷移のトリガを追加する。また、状態イベント表においてConditionタグが記述されたセルがある場合、Conditionタグの属性名Funcの値をガード関数名として遷移のガードを追加する。また、Logicタグの内容をアクションにする。この処理も、要素構成図には反映されない。
【００９３】
続いて、振る舞い図作成部５２および要素構成図作成部５３は、開始要素を追加する（ステップＳ２６）。具体的には、モデル図作成装置１は、状態イベント表の一番上の状態を初期状態として、開始要素から初期状態への遷移を追加する。例えば、状態イベント表１００に対して処理を行う場合、初期状態はSTATE1である。図１３Ｄは、開始要素を追加した要素構成図の表示部３における表示例を示す図である。図１３Ｄに示す要素構成図８１４は、図１３Ｃに示す要素構成図８１３に対し、開始要素が追加されている（破線領域を参照）。
【００９４】
この後、表示制御部５４は、振る舞い図作成部５２が作成したステートマシン図を表示部３に表示させる（ステップＳ２７）。例えば、状態イベント表１００に対して、表示制御部５４は、図６に示すステートマシン図５００を要素構成図８１４とともに表示部３に並列表示させる。
【００９５】
振る舞い図作成部５２は、作成したステートマシン図を作成情報記憶部４２に記憶させる（ステップＳ２８）。なお、モデル図作成装置１は、ステップＳ２８の処理を、ステップＳ２７の前に行ってもよいし、ステップＳ２７と並行して行ってもよい。
【００９６】
モデル図作成装置１は、以上説明したステップＳ２１〜Ｓ２８の処理を全ての状態イベント表に対して行う。図１３Ｅは、状態イベント表２００に対して一連のステートマシン図作成処理（ステップＳ２１〜Ｓ２８の処理）を終了した要素構成図の表示部３における表示例を示す図である。同図に示す要素構成図８１５は、図１３Ｄに示す要素構成図８１４に対し、ComponentBに関するステートマシン図のツリー構造が追加されている（破線領域を参照）。なお、この場合にも、表示制御部５４は、要素構成図８１５およびステートマシン図６００を表示部３で並列表示させる。
【００９７】
モデル図作成装置１は、全ての状態イベント表に対してステートマシン図の作成処理を終了した場合、図９に示すメインルーチンへ戻る。
【００９８】
次に、シーケンス図の作成処理（ステップＳ４）について説明する。図１４は、モデル図作成装置１が行うシーケンス図の作成処理の概要を示すフローチャートである。シーケンス図作成処理についても、全ての状態イベント表に対して繰り返し処理を行う。
【００９９】
まず、制御部５は、状態イベント表にMessageタグの記述の有無を確認する（ステップＳ３１）。状態イベント表にMessageタグの記述がある場合（ステップＳ３１：Ｙｅｓ）、制御部５はステップＳ３２へ移行する。一方、状態イベント表にMessageタグの記述がない場合（ステップＳ３１：Ｎｏ）、制御部５は他の状態イベント表に対する処理へ移行する。例えば、状態イベント表１００はMessageタグの記述がある場合であり、状態イベント表２００はMessageタグの記述がない場合に相当する。
【０１００】
ステップＳ３２において、振る舞い図作成部５２および要素構成図作成部５３は、シーケンス図を追加する（ステップＳ３２）。ここで、振る舞い図作成部５２は、所定の名称を有するシーケンス図の作成を開始し、要素構成図作成部５３は、要素構成図のコンポーネントの要素の下層に上述した名称を要素名とするシーケンス図の要素を追加する。図１５Ａは、シーケンス図の要素を追加した要素構成図の表示部３における表示例を示す図である。図１５Ａに示す要素構成図８２１は、図１３Ｅに示す要素構成図８１５に対し、シーケンス図の要素が追加されている（破線領域を参照）。本実施の形態１では、シーケンス図の名称をComponentCとして新たに生成しているが、名称の設定の仕方は任意である。
【０１０１】
続いて、振る舞い図作成部５２は、状態イベント表における送信元のクラスをシーケンス図に追加する（ステップＳ３３）。例えば、状態イベント表１００に対して処理を行う場合には、クラス名ComponentAのクラスが追加される。この処理は、要素構成図の記述には反映されない。
【０１０２】
この後、振る舞い図作成部５２および要素構成図作成部５３は、メッセージ終了点の要素を追加する（ステップＳ３４）。図１５Ｂは、メッセージ終了点の要素を追加した要素構成図の表示部３における表示例を示す図である。図１５Ｂに示す要素構成図８２２は、図１５Ａに示す要素構成図８２１に対し、３つのメッセージ終了点（黒丸で表示）が追加されている（破線領域を参照）。
【０１０３】
続いて、振る舞い図作成部５２は、メッセージ終了点からステップＳ３３で追加した送信元のクラスへのメッセージを追加する（ステップＳ３５）。ここでのメッセージ名は、「状態名／イベント名（引数）」の形式で記述する。例えば、状態イベント表１００に対して処理を行う場合には、３つのセルにMessageタグが記述されている。このため、振る舞い図作成部５２は、３つのメッセージを追加する。各メッセージのメッセージ名は、「STATE1/E11()」、「STATE2/E11()」、「STATE2/E12()」である。この処理は、要素構成図の記述には反映されない。
【０１０４】
この後、振る舞い図作成部５２は、送信先のクラス名に対応するクラスをシーケンス図に追加する（ステップＳ３６）。例えば、状態イベント表１００の場合、送信先のクラス名はComponentBである。この処理も要素構成図の記述には反映されない。なお、状態イベント表で送信先のクラスが指定されていない場合には、送信先のクラス名を既存資産（レガシー）とすることも可能である。
【０１０５】
続いて、振る舞い図作成部５２は、送信先のクラスへのメッセージを追加する（ステップＳ３７）。ここでのメッセージ名は、「[条件]：イベント名（引数）」の形式で記述する。条件がない場合には、「イベント名（引数）」のみ記述する。例えば、状態イベント表１００に対して処理を行う場合、３つのセルにMessageタグが記述されている。このため、振る舞い図作成部５２は、３つのセルに対応して「[Condition11]:E21()」、「E22()」、「[Condition12]:E22()」という３つのメッセージを対応する箇所に追加する。この処理も要素構成図の記述には反映されない。
【０１０６】
この後、表示制御部５４は、振る舞い図作成部５２が作成したシーケンス図を表示部３に表示させる（ステップＳ３８）。例えば、状態イベント表１００に対しては、図８に示すシーケンス図７００が、図１５Ｂに示す要素構成図８２２とともに表示される。
【０１０７】
振る舞い図作成部５２は、作成したシーケンス図を作成情報記憶部４２に記憶させる（ステップＳ３９）。なお、モデル図作成装置１は、ステップＳ３９の処理を、ステップＳ３８の前に行ってもよいし、ステップＳ３８と並行して行ってもよい。
【０１０８】
モデル図作成装置１が全ての状態イベント表に対してシーケンス図の作成処理を終了した場合、要素構成図作成部５３は、要素構成図を作成情報記憶部４２に記憶させる（ステップＳ４０）。その後、モデル図作成装置１は、図９に示すメインルーチンへ戻る。
【０１０９】
以上説明した本発明の実施の形態１によれば、モデル図としての構造図および複数種類の振る舞い図の構成を定める関数が状態およびイベントの組み合わせに応じて記述された状態イベント表に基づいて構造図および複数種類の振る舞い図を自動的に作成するため、開発対象のソフトウェアの多様な側面を反映しつつ一貫性のあるオブジェクト指向モデルの生成を実現することが可能となる。
【０１１０】
また、本実施の形態１によれば、状態イベント表において、ステートマシン図における状態の遷移を定める関数、シーケンス図におけるメッセージの送信条件を定める関数、およびシーケンス図におけるメッセージの送信先を定める関数を記述することができるため、少なくとも２つの振る舞い図を自動的に作成することが可能となる。
【０１１１】
また、本実施の形態１によれば、構造図および複数種類の振る舞い図を作成するために必要な情報を要素として有し、複数の要素の相互関係をツリー構造で示す要素構成図を作成して表示部で表示するため、ユーザは状態イベント表から各種モデル図を作成するための情報を容易に認識することができる。
【０１１２】
また、本実施の形態１によれば、要素構成図に対して要素を追加するごとに表示部における表示を切り換えて表示するため、ユーザは、モデル図作成処理の進捗状況をリアルタイムで的確に把握することができる。
【０１１３】
また、本実施の形態１によれば、要素構成図とモデル図とを並列で表示するため、ユーザは１つの画面を見ることによって多様な情報を得ることができる。
【０１１４】
なお、本実施の形態１で説明したクラス図、ステートマシン図、およびシーケンス図の作成手順はあくまでも一例に過ぎず、矛盾が生じない範囲内で適宜手順を変更することが可能である。
【０１１５】
（実施の形態２）
本発明の実施の形態２は、モデル生成の際に既存のソフトウェア（レガシーコード）を自動的に取り込むための仕組みを与えるモデル図を作成することを特徴とする。本実施の形態２では、状態イベント表にクラスの種別を示す情報が記述されている。なお、本実施の形態２に係るモデル図作成装置の構成は、実施の形態１で説明したモデル図作成装置１の構成と同じである。
【０１１６】
本実施の形態２においても、構造図としてクラス図を例にとる一方、振る舞い図としてステートマシン図およびシーケンス図を例にとって説明するが、これはあくまでも一例に過ぎない。
【０１１７】
本実施の形態２では、２種類の状態イベント表を適用する。１種類目は、実施の形態１と同様に状態遷移機械のクラス図を生成する状態イベント表である。２種類目は、既存のソフトウェアのクラスの呼び出される関数を定める状態イベント表である。本実施の形態２では、状態イベント表の種類を定義する情報として、クラスタイプという項目を設ける。クラスタイプは、状態イベント表中で[Class_Type]と記述される。クラスタイプの名称は、１種類目の状態イベント表が「STM」であり、２種類目の状態イベント表が「Legacy」である。なお、このクラスタイプの名称は、あくまでも一例に過ぎない。
【０１１８】
状態イベント表のマトリックスを構成するセルであって状態とイベントとによって定まるセルの内部には、具体的な状態とイベントとの関係が、ＸＭＬ形式にしたがって記述されている。セルの具体的な記述内容は、以下に示すようなものである。
[f_関数名]
<Action>
<Condition  Func="条件関数名">
<Logic>イベント応答関数名</Logic>
<Message>クラスタイプSTMの送信先のクラス名＠イベント関数名</Message>
<Call>クラスタイプLegacyのクラス名＠関数名</Call>
<TransitionState>遷移後の状態名</TransitionState>
</Condition>
</Action>
【０１１９】
ここで、STM(State  Transition  Machine)は、状態遷移機械モデルで表現されるソフトウェアコンポーネントである。STMのクラスは、自身および外部からのトリガイベントに対してオブジェクトのメソッド（関数）を呼び出しながら状態を変化させる。
また、Legacyは、STMではない既存コードのソフトウェアコンポーネントである。Legacyのクラスは、メソッドを呼び出しても状態変化しない。
【０１２０】
本実施の形態２では、実施の形態１と比較して、セルの内部にCallタグ（<Call>）が追加されている。このCallタグは、クラスタイプLegacyのクラスに含まれる関数を状態遷移機械のクラスから呼び出すためのタグである。呼び出し対象の関数が引数を有する関数である場合には、
<Call>クラスタイプLegacyのクラス名＠関数名（引数1，引数2，…）</Call>
と記述される。一つのセルの中に複数のCallタグを記述することも可能である。セルにCallタグが記述されている場合、振る舞い図作成部５２は、クラス名に対応するクラスの要素をリンク先として、シーケンス図に追加する。CallタグはMessegeタグとは異なり、送信先が既存のソフトウェアのクラスになる。
【０１２１】
図１６〜図１８は、状態イベント表記憶部４１が記憶する状態イベント表の構成例を示す図である。以下の説明において、状態イベント表に記述された具体的な状態、イベント、応答関数等の名称については、例えば「状態１」、「イベント１１」、「応答関数Action11」というように、実施の形態１と同じ名称を用いて説明を行うが、これは実施の形態１と対比しやすくするための措置であるとともに、同じ内容を重複して説明するのを避けるための措置である。
【０１２２】
まず、図１６に示す状態イベント表９１０の構成を説明する。状態イベント表９１０は、クラス名、マトリックス、関数テーブルおよび属性テーブルに加えて、クラスタイプが記述されている。状態イベント表９１０のクラスタイプはSTMである。クラスタイプを除く状態イベント表９１０の記述内容は、実施の形態１で説明した状態イベント表１００の記述内容と同じである。
【０１２３】
次に、図１７に示す状態イベント表９２０の構成を説明する。状態イベント表９２０のクラスタイプはSTMである。また、状態イベント表９２０の記述内容は、上述した状態イベント表２００とほぼ同じであるが、応答関数[f_Action21]，[f_Action24]の内容が若干異なる。応答関数[f_Action21]には、クラス名がLegacyComponentであるクラスの引数を有しない関数である関数Method1を呼び出すことが記述されている。一方、応答関数[f_Action24]には、クラス名がLegacyComponentであるクラスの関数であって引数p1，p2を有する関数Method2(p1,p2)を呼び出すことが記述されている。
【０１２４】
次に、図１８に示す状態イベント表９３０の構成を説明する。状態イベント表９３０は、状態イベント表９２０の応答関数[f_Action21]，[f_Action24]に記述されたクラスを定義するものであり、クラス名がLegacyComponentであり、クラスタイプがLegacyである。状態イベント表９３０は、クラスタイプSTMの状態イベント表とは異なり、状態遷移を定めるマトリックスは記述されず、既存のソフトウェアとのインターフェースをなす関数[Func_Interface]のみが定義される。
【０１２５】
状態イベント表９３０では、具体的な関数として、引数を有しない関数Method1、およびint型の引数p1およびchar[]型の引数p2を有する関数Method2が定義されている。これらの関数Method1，Method2は、既存のソフトウェアにソースコードが存在するため、状態イベント表９３０において関数名のみを指定し、その中身（ソースコード）を記述する必要がない。したがって、関数[Func_Interface]の関数テーブルには、状態イベント表９１０、９２０の関数テーブルにある「中身（ソースコード）」の欄が設けられていない。
【０１２６】
次に、モデル図作成装置１が、状態イベント表９１０、９２０、９３０に基づいて作成するクラス図、ステートマシン図およびシーケンス図の構成を説明する。
【０１２７】
モデル図作成装置１が状態イベント表９１０から作成するクラス図およびステートマシン図は、実施の形態１で説明したクラス図３００（図４）およびステートマシン図５００（図６）とそれぞれ同じである。  また、モデル図作成装置１が状態イベント表９２０から作成するクラス図およびステートマシン図は、実施の形態１で説明したクラス図４００（図５）およびステートマシン図６００（図７）とそれぞれ同じである。  また、モデル図作成装置１が状態イベント表９１０、９２０から作成するシーケンス図は、実施の形態１で説明したシーケンス図７００（図８）と同じである。
【０１２８】
図１９は、モデル図作成装置１が、状態イベント表９３０に基づいて作成するクラス図の構成を示す図である。同図に示すクラス図９４０は、最上部にクラスのステレオタイプ<<Legacy>>とクラス名LegacyComponentが記述されている。クラス名の下方には、関数（関数名Method1，Method2）が記述されている。ここで、関数Method1は引数を有しない関数であり、その戻り値はvoidである。また、関数Method2はint型とchar[]型の二つの引数を有する関数であり、その戻り値はvoidである。
【０１２９】
図２０は、モデル図作成装置１が、状態イベント表９３０、９４０に基づいて作成するシーケンス図の構成を示す図である。同図に示すシーケンス図９５０は、クラス名ComponentB（クラスタイプSTM）からクラス名LegacyComponent（クラスタイプLegacy）へのメッセージの流れを与える図である。
【０１３０】
状態３およびイベント２１の組み合わせに関連するメッセージは、関数Method1の呼び出しである。また、状態３およびイベント２２の組み合わせに関連するメッセージは、関数Method2の呼び出しである。これらの呼び出しをシーケンス図で定義することにより、モデル生成時の既存のソフトウェアの読み出しが自動的に行われることとなる。
【０１３１】
本実施の形態２において、モデル図作成装置１が行うモデル図作成方法の処理の概要は、実施の形態１と同様である（図９、１０、１２、１４を参照）。
【０１３２】
図２１は、表示制御部５４が、全てのコンポーネントを追加した要素構成図を表示部３に表示させる場合の表示例を示す図である。同図に示す要素構成図９６０は、５つのコンポーネント（コンポーネント名：ComponentA，ComponentB，LegacyComponent，ComponentC，ComponentD）が追加されている。要素構成図９６０では、ComponentA，ComponentBおよびComponentCの下層構造が非表示状態にある場合を示している。ComponentA，ComponentBおよびComponentCの下層構造は、図１５Ｂに記述されているものと同じである。
【０１３３】
破線領域ＬＣには、コンポーネント名LegacyComponentを有するコンポーネントの要素として、LegacyComponentのクラス図、および関数Method1，Method2が記述されている。
【０１３４】
破線領域Ｄには、コンポーネント名ComponentDを有するコンポーネントの要素として、名称がComponentDであるシーケンス図、および２つのメッセージ終了点が記述されている。
【０１３５】
以上説明した本発明の実施の形態２によれば、上述した実施の形態１と同様の効果を得ることができる。
【０１３６】
また、本実施の形態２によれば、クラス図に対応するクラスの種類として、状態遷移機械を表すクラスに加えて、既存のソフトウェアのクラスを設けているため、従来はソースコードの中に埋もれていた部分をオブジェクトとして部品化して抽出し、再利用を容易に行うことが可能となる。
【０１３７】
また、本実施の形態２によれば、状態イベント表に既存のソフトウェアのクラスを呼び出す機能を有する関数を記述しているため、モデル生成を行う際、モデル生成を行う装置が、既存のソフトウェアのソースコードを、人手を介すことなく自動的にモデルに取り込むことができる。したがって、ユーザは、既存のソフトウェアのソースコードが再利用可能であるか否かを分析しなくて済み、モデルの生成をより迅速に行うことが可能となる。
【０１３８】
ここまで、本発明を実施するための形態を説明してきたが、本発明は上述した二つの実施の形態によってのみ限定されるべきものではない。例えば、本発明において、構造図作成部および振る舞い図作成部に対し、作成したモデル図の整合性をチェックする機能を具備させてもよい。この場合には、構造図作成部および振る舞い図作成部のチェック結果を表示部に表示させるようにすればより好ましい。
【０１３９】
また、本発明は、再利用可能なソフトウェアの部品であるドメインを開発するドメインエンジニアリングと、そのドメインを用いることによって製品であるソフトウェアを開発するアプリケーションエンジニアリングとを含むプロダクトライン型のソフトウェア開発において、プロダクトライン用のアーキテクチャ（コンポーネント図）を設計するために必要なモデル図を作成する際にも有用である。
【０１４０】
なお、本明細書で使用した各種モデル図、状態、イベント、関数、コンポーネント、クラス、クラスタイプ等の名称は、あくまでも例示用として設定したものに過ぎない。
【符号の説明】
【０１４１】
１  モデル図作成装置
２  入力部
３  表示部
４  記憶部
５  制御部
４１  状態イベント表記憶部
４２  作成情報記憶部
５１  構造図作成部
５２  振る舞い図作成部
５３  要素構成図作成部
５４  表示制御部
１００、２００、９１０、９２０、９３０  状態イベント表
３００、４００、９４０  クラス図
５００、６００  ステートマシン図
７００、９５０  シーケンス図
８０１、８０２、８０３、８０４、８０７、８１１、８１２、８１３、８１４、８１５、８２１、８２２、９６０  要素構成図
８０５  表示画面
８０６  クラス図表示領域
【図１】
0005929297.tif 000002
【図２】
0005929297.tif 000003
【図３】
0005929297.tif 000004
【図４】
0005929297.tif 000005
【図５】
0005929297.tif 000006
【図６】
0005929297.tif 000007
【図７】
0005929297.tif 000008
【図８】
0005929297.tif 000009
【図９】
0005929297.tif 000010
【図１０】
0005929297.tif 000011
【図１１Ａ】
0005929297.tif 000012
【図１１Ｂ】
0005929297.tif 000013
【図１１Ｃ】
0005929297.tif 000014
【図１１Ｄ】
0005929297.tif 000015
【図１１Ｅ】
0005929297.tif 000016
【図１１Ｆ】
0005929297.tif 000017
【図１２】
0005929297.tif 000018
【図１３Ａ】
0005929297.tif 000019
【図１３Ｂ】
0005929297.tif 000020
【図１３Ｃ】
0005929297.tif 000021
【図１３Ｄ】
0005929297.tif 000022
【図１３Ｅ】
0005929297.tif 000023
【図１４】
0005929297.tif 000024
【図１５Ａ】
0005929297.tif 000025
【図１５Ｂ】
0005929297.tif 000026
【図１６】
0005929297.tif 000027
【図１７】
0005929297.tif 000028
【図１８】
0005929297.tif 000029
【図１９】
0005929297.tif 000030
【図２０】
0005929297.tif 000031
【図２１】
0005929297.tif 000032