ロゴ
ホーム 提案事例 Obxetoについて 問い合わせ

1. 実行可能なUMLモデルによる開発プロセス

定義されたUMLモデル仕様を実行するためには,モデルを実行可能ななんらかの プログラミング言語に変換する必要があります。また,繰り返される開発プロセスも 考慮しなければなりません。これらの点を考慮してUMLモデルからコードを生成し, シミュレーションより評価検証する方法を下記の「図1:コード生成プロセス」に 提案します。ただし,操作を記述する汎用的な言語のサポートは含まれていません。

図1:開発プロセス
図1-1:コード生成プロセス

このプロセスでは,1)複数のモデルを合成すること,2)デザインパターンの適用, 3)既存コード合成,4)コードスタイル規則を適用することがモデルコンパライラに組み込まれる ことになっています。

UMLモデルからクラスの属性や操作仕様を単純にコード化することは比較的簡単かも知れません。 しかし,モデルの振る舞いを検証しようとした場合,クラスの振る舞いを実装するためになんらかの 方法でコードを生成する仕組みを実装する必要があります。また,実装の段階で要求されるコードスタイル規則 への対応やコメントの付加,変数の初期化方法をコード生成ロジックに実装する必要があります。 これらの要求を実現するために,以下の機能を実装しています。

  • モデル合成とデザインパターンの適用:一例として下記の「図1-2:モデル合成」に示すように, 温度コントローラの振る舞いをコード生成する方法を示しています。クラス仕様とステートマシーン仕様を ステートパターンを適用して合成し,その合成されたモデルからコードを生成します。
  • 既存コード合成:モデルから生成できないコードは,ユーザが記述したコードを,タグを使って 埋め込むことができます。この機能をにより,既存のコード及び新規にユーザが記述するコードとの合成 を可能にしています。
  • コードスタイル:コード生成ロジックを変更することで,個々のコードスタイル対応しています。
図1:モデル合成
図1-2:モデル合成

2. UMLモデル実行環境による設計レビュー

下記の図は温度制御をUMLモデル(シーケンス仕様,クラス仕様,ステートマシーン仕様)で記述し、 設計レビューのためにモデルコンパイラによりUMLモデルをシミュレーション実行したものです。 モデルコンパイラは3つのUML仕様を合成して,Javaコードを生成するように設計されています。 1回目のレビューで保温加熱から保温中状態に復帰しないことが判明したため、設計モデルに緑の矢印の状態遷移を追加しました。 2回目のシミュレーション結果は、設計ミスがなくなったことを示しています。 このような開発環境をどのように構築することができるかを提案します。

図2:実行可能なUMLモデルを使用した設計
図2-1:実行可能なUMLモデルを使用した設計

下記の「図2-2:クラス図」と「図2-3:ステートマシーン図」は実際にモデルリングツールで定義されたUML モデルです。このモデルからシミュレーションのためのコードが生成されました。

図1:開発プロセス
図2-2:クラス図
図1:開発プロセス
図2-3:ステートマシーン図

3. UMLモデル実行環境によるモデル試験

下記の図3-1はUMLシミュレーター(USIM)の概要です。設計されたUMLをこのシミュレーター上に実装します。 各ユースケース毎に動作させて、アクターに対するシステムの振る舞いがユースケース記述通りかを検証します。 システムよりアクターを目的に応じたステレオタイプで使用することも可能です。 また、システム対象領域内でのオブジェクト情報(属性値、状態)に関しても目的に応じて変更可能です。

図3:実行可能なUMLモデルを使用したモデル試験
図3-1:実行可能なUMLモデルを使用したモデル試験

図3-2は設計されたUMLモデルをUSIM実装してレンタルショップ・シミュレーターとして、検証試験を行っている様子です。 お客である太郎がDVDを借りに行きますが,システム上のDVD情報に対応してどのように太郎が行動するかをシミュレーション しています。試してみたいという方は,問合せ先までメールにてお知らせ下さい。

図3:実行可能なUMLモデルを使用したモデル試験
図3-2:実行可能なUMLモデルを使用したモデル試験