組込み分野のための
UML モデル解説書

製品編 P005

交通 IC カードチャージ機

本書は、UML モデルカタログに含まれる「交通 IC カードチャー
UMTP 組込みジ機」のモデルの詳細を記述したものです。モデリングの初心者にモデリング部会

は教科書や参考書として、モデリングのベテランの方々にはモデル

2016.5.15 更新のヒントとして、ぜひともお手元に置いて活用してください。

Copyright(c)2013-2016 consortium for UML based Modeling Technologies Promotion All Rights Reserved

組込み分野のための UML モデルカタログ

UMTP は特定非営利活動法人 UML モデリング推進協議会の登録商標です。その他、本書に記載されている会社名、商品名などは、一般に各社の商標または登録商標です。

2

交通 IC カードチャージ機

目次

はじめに .................................................................................................... 4要求仕様 .................................................................................................... 4
モデル一覧 ............................................................................................... 16
BCE パターンを用いたモデル........................................................................ 17
分析モデル ............................................................................................. 17
PIM 設計モデル ....................................................................................... 20
パッケージ構成 ..................................................................................... 20
静的構造 .............................................................................................. 23
動的振る舞い ........................................................................................ 39

3

組込み分野のための UML モデルカタログ

はじめに
近年の組み込み機器は、機能の増大と複雑化、ネットワークを介した他システムとの連携などにより、デバイスを制御する部分よりも、むしろアプリケーション部分の方が開発の大半を占めます。そのような機器の開発では、システムをいかにすっきりと部分に分けるかが、システム全体の品質に大きく影響します。
今回のモデリングにあたっては、BCE パターンと呼ばれる手法を用いてアーキテクチャを構築したり、システム全体の状態遷移を捉えてその状態毎に処理クラスを割り当てる方法を適用しました。
組み込み機器の個々のデバイスコントロールではなく、装置としてのアプリケーション全体を設計する
ような場合には、有用な考え方だと思いますので、是非参考にしてください。

要求仕様
交通 IC カードチャージ機とは、主に鉄道の駅の乗車券用の自動券売機の横や改札の近くなどに設置されている、鉄道の乗車などに利用できる IC カードにお金をチャージする(入れる)ための装置です。
一般的には、IC カードを読み書きする装置および現金を挿入する装置(つり札を排出する装置を兼ねることが多い)と、ボタンや表示パネル・スピーカーなど利用者とのやりとりを行うための装置から構成されます。
最近では乗車券等の自動券売機でも、IC カードにお金をチャージする機能が利用できるものが増えていますが、今回対象とする交通 IC カードチャージ機はチャージ専用の装置で、乗車券を購入することはできません。
但し、モデリングにあたっては、自動券売機等の他の装置への転用(または借用)がしやすい構成にすることを考慮しています。

IC カードチャージ機の主な機能
IC カードチャージ機は、装置の製造メーカーや鉄道会社によって機能が異なりますが、ほとんどの場合には、以下の機能を備えています。
IC カードに現金でお金をチャージする機能

領収書を発行する機能

IC カードの残高や利用履歴を確認する機能



問題が発生した場合などに、係員に連絡するための機能

これらの機能を実現するために、IC カードチャージ機を管理するシステムとの通信など、外部との通信を行う機能も必須です。
その他、現金を扱う装置である関係上、現金の盗難などの不正な行為へ対処するための機能も必要です。

今回の IC カードチャージ機
今回モデルの題材とする IC カードチャージ機では、上記のような一般的な機能に加えて、次の機能を搭載しています。
IC カードにクレジットカードでお金をチャージする機能IC カードの利用履歴をレシートに印刷する機能

はじめに

4

交通 IC カードチャージ機

また、IC カードチャージ機を管理(メンテナンス)するための機能として、以下のような機能を搭載しています。
利用レポート(装置が利用された履歴・ログ)を印刷する機能

印刷機能が正常に動作することを確認するための、テストプリントを実行する機能



問題が発生した場合などに、使用不可にする機能

今回のモデルの題材となる IC カードチャージ機の外見を以下の図に示します。

スピーカー

マイク

ICカードチャージ機

よびだし
とりけし

案内表示

1000

2000

ICカード挿入口

チャージ金額3000
5000

クレジットカード
10000
11
44
77
**

履歴表示

領収書/履歴紙幣・おつり
発行

閉

開
かぎ

5

22
55
88
00

33
66
99
##

組込み分野のための UML モデルカタログ

ユースケース
今回題材とする IC カードチャージ機のユースケースを示します。
u c 交通IC カードチャージ 機

交通ICカードチャージ機【UC1-2】クレジ ット
カ ードでチャージ する【UC1-1】現金でチ
ャージ する【UC1】チャージ する <<extend>>【UC2】領収書を発行する<<include>>【UC3】ICカ ードの残高を照会する

ユーザー

ICカ ードシ ステム<<include>>【UC4】ICカ ードの【UC5】ICカ ードの利用履歴を表示す利用履歴を印刷す<<extend>>るる

クレジ ットシ ステム【UC6】係員を呼び出す【UC7-1】使用不可にする

係員呼び出し・通話
シ ステム【UC7】使用可否を設定する【UC7-2】使用可能
にする

メンテナー

【UC8】利用レポート
を管理する【UC8-1】利用レポートを印刷する【UC8-2】利用レポートをクリア する【UC9】テストプリ
ントをする<<mitigate>>

お金を盗む

警備シ ステム

泥棒
図1

要求仕様

【UC10】警報を鳴らす

6交通 IC カードチャージ機

このユースケース図には、全部で 7 つのアクターが登場します。「ユーザー」は IC カードチャージ機を利用する、利用者を表します。「メンテナー」は、IC カードチャージ機を管理する人を表します。その他、
IC カードチャージ機に関係するシステムとして、4 つのシステムがあり、これらもアクターとして表現しています。
「IC カードシステム」は、IC カードチャージ機とさまざまなやりとりを行う、個々の IC カードチャー
ジ機を総合的に管理するシステムです。多くの情報は IC カードチャージ機には存在せず、IC カードシステ
ム側で保持します。また、この IC カードシステムはクレジットカードの利用有無などを確認できる「クレジットシステム」とシステム間でつながっています。(そのため、クレジットカードに関する問い合わせも、
IC カードシステムに対して行います。)
管理に関するシステムとして、「係員呼び出し・通話システム」と「警備システム」があります。係員呼び出し・通話システムは操作方法が不明な場合やトラブル発生時の対応などを一元化するために存在し、呼び出しボタンを押すとシステムの係員と会話を行うことができます。警備システムは、こじあけなど、IC
カードチャージ機に対する不正なアクセスがあった場合に警備員が駆けつけるために、警備会社のシステムとつながっています。この不正なアクセスの存在を明示するために、ミスユースケースとして「お金を盗む」を、ネガティブアクターとして「泥棒」をユースケース図に記載しました。

7

組込み分野のための UML モデルカタログ

ユースケース記述
本カタログでは、上記ユースケースのうち、UC1-1、UC４、UC7-1、UC8-1 について扱います。
次節にて、システム全体の状態遷移図を示していますので、そちらと合わせて読み進めていただくと、理解しやすいと思います。

<UC1-1：現金でチャージする>■概要
現金を利用して、IC カードにチャージする■アクター
ユーザー、IC カードシステム■事前条件
・待機中になっている■事後条件
・待機中になっている・または、使用停止表示中になっている■メインフロー
1. ユーザーは IC カードを IC カード挿入口に挿入する
2. システムはカードロックを有効にする。IC カードが不正・その他利用不可能な場合には、例外フロー
2e に行く3. システムは画面に操作を促すメッセージ(案内メッセージ)を表示する。
とりけしボタンが押された場合あるいはタイムアウトした場合には、代替フロー3a.に行く(以下 10.
まで同様)
4. システムは IC カードの残高とチャージの上限値から、チャージ可能なチャージ金額ボタンを点灯させる
5. ユーザーはチャージを希望する金額のチャージ金額ボタンを押す
6. システムはユーザーが押したチャージ金額ボタン以外のチャージ金額ボタンを消灯させる
7. システムは画面に金額と、挿入額を表示する
8. ユーザーは紙幣挿入口へ希望する金額分の紙幣を入れる
9. システムは IC カードシステムに入金を通知する
10. システムはカードロックを解除する。釣り札がある場合には、代替フロー10a.に行く。タイムアウ
トした場合には、例外フロー10e.に行く(以下 13.まで同様)
11. システムは発行ボタンを点灯させる
12. システムは点灯しているチャージ金額ボタンを消灯させる
13. システムは画面に、入金後の残高を表示する
14. ユーザーは IC カードを取り出す
15. システムは画面を消去する
16. システムは発行ボタンを消灯させる
要求仕様

8

交通 IC カードチャージ機

17. システムは、待機中に戻る■代替フロー
3a. とりけしボタンが押された場合あるいはタイムアウトした場合
3a1. システムは入金済の紙幣を出す
3a2. ユーザーは紙幣を取り出す。タイムアウトした場合には、例外フロー10e.に行く
3a3. メインフローの 14.に戻る

10a. 釣り札がある場合
10a1. システムは釣り札を出す
10a2. ユーザーは紙幣を取り出す。タイムアウトした場合には、例外フロー10e.に行く
10a3. メインフローの 11.に戻る■例外フロー2e. IC カードが不正・その他利用不可能な場合
2e1. IC カードが利用できない旨のメッセージを表示する
2e2. システムはカードロックを解除する
2e3. メインフローの 14.に戻る

10e. IC カードや紙幣の取り出しがタイムアウトした場合
10e1. システムは釣り札を取り込む
10e2. システムは IC カードを取り込む
10e3. システムは使用停止表示中に移行する■課題やＴ.B.D 項目
なし

■備考
なし

9

組込み分野のための UML モデルカタログ<UC4：IC カードの利用履歴を表示する>■概要
IC カードの利用履歴を画面に表示する■アクター
ユーザー、IC カードシステム■事前条件
・待機中になっている■事後条件
・待機中になっている・または、使用停止表示中になっている■メインフロー
1. ユーザーは IC カードを IC カード挿入口に挿入する
2. システムはカードロックを有効にする。IC カードが不正・その他利用不可能な場合には、例外フロー
2e.に行く3. システムは画面に、操作を促すメッセージ(案内メッセージ)を表示し、履歴表示ボタンを点灯させる。
とりけしボタンが押された場合あるいはタイムアウトした場合には、代替フロー3a.に行く(以下 8.まで同様)
4. ユーザーは履歴表示ボタンを押す
5. システムは IC カードシステムに、IC カードの利用履歴を問い合わせる
6. IC カードシステムは、IC カードの利用履歴をシステムへ送信する。IC カードシステムからの応答がない場合、またはエラーが返された場合は例外フロー6e.に行く
7. システムはカードロックを解除する。タイムアウトした場合は例外フロー7e.へ行く（以下 8.まで同様）
8. システムは画面に利用履歴と、履歴印刷の案内ガイド(*備考 1.)を表示する。また、システムは発行
ボタンを点灯させる
9. ユーザーは IC カードを取り出す
10. システムは画面を消去する。システムは、履歴表示ボタンと発行ボタンを消灯する
11. 待機中に戻る■代替フロー
3a. とりけしボタンが押された場合あるいはタイムアウトした場合
3a1. システムはカードロックを解除する。画面にカードを取り出すよう表示する
3a2. メインフロー9.に戻る。

■例外フロー2e. IC カードが不正・その他利用不可能な場合
2e1. IC カードが利用できない旨のメッセージを表示する
要求仕様

10

交通 IC カードチャージ機

2e2. システムはカードロックを解除する
2e3. メインフローの 9.に戻る

6e. IC カードシステムからの応答がない場合、またはエラーが返された場合
6e1. システムは画面に利用履歴情報が取得できない旨のメッセージを表示する
6e2. システムはカードロックを解除する
6e3. メインフロー9.に戻る

7e. IC カードや紙幣の取り出しがタイムアウトした場合
7e1. システムは釣り札を取り込む
7e2. システムは IC カードを取り込む
7e3. システムは使用停止表示中に移行する■課題やＴ.B.D 項目なし■備考
1. 履歴印刷の案内ガイドとは、発行ボタンを押すことで利用履歴を印刷できる旨を示す表示です11組込み分野のための UML モデルカタログ<UC7-1：使用不可にする>■概要
交通 IC カードチャージ機を使用不可にする

■アクター
メンテナー

■事前条件
・待機中になっている■事後条件
・使用停止表示中になっている■メインフロー
1. メンテナーは、鍵を開ける
2. システムは、画面にメンテナンスモードメニューを表示し、押下可能なボタンを点灯する
3. メンテナーは、[1000]ボタンを押す
4. システムは、使用不可にし、その旨を表示する
5. メンテナーは、鍵を閉める
6. システムは、使用停止表示中に移行する■代替フローなし■例外フローなし■課題やＴ.B.D 項目
なし

■備考
なし

要求仕様

12

交通 IC カードチャージ機<UC8-1：利用レポートを印刷する>■概要
利用レポートを印刷し、排出する

■アクター
メンテナー

■事前条件
・待機中になっている■事後条件
・待機中になっている■メインフロー
1. メンテナーは、鍵を開ける
2. システムは、画面にメンテナンスモードメニューを表示し、押下可能なボタンを点灯する
3. メンテナーは、[5000]ボタンを押す。用紙が切れている場合は、例外フロー3e.に行く
4. システムは、領収書/履歴発行口から利用レポートを排出し、受け取りを促すメッセージを表示する
5. メンテナーは、利用レポートを受け取る
6. メンテナーは、鍵を閉める
7. システムは、待機中に戻る■代替フローなし■例外フロー
3e. 用紙が切れている場合
3e1. システムは、画面に用紙が切れている旨を表示する
3e2. メンテナーは、用紙を補給する
3e3. メインフローの 2.に行く■課題やＴ.B.D 項目
なし

■備考
なし

13

組込み分野のための UML モデルカタログ

システム全体の状態遷移
ユースケース図とそれぞれのユースケース記述を総合して、システム全体の振る舞いを状態図としてまとめたものが、以下の図です。
(以下の図はサマリーになっています。モデルファイルを参照していただくと、詳細な状態遷移図を見ることができます。)
st m シ ステ ム状態

機構的に、鍵が開いた状態でないと電源ON/OFFできない

電源ON

電源OFF
ユーザー利用不可
鍵を開ける

メンテ ナンス中
entry / カードロック解除
entry / 取り込み中の紙幣・クレジットカードの排出
鍵を閉める ["使用不可"以外選択]

鍵を開ける

使用停止表示中
entry / カードロック

鍵を閉める ["
使用不可"選
択]
警報機検知

異常検知中
do / 警備システムに異常を通知する
do / 警報を鳴らす
鍵を開ける

警報機検知
ユーザー利用可チェック完了 [サービス不可]

待機中
entry / おつり用の紙幣残量、印紙残量等のチェック
ICカード挿入
取り込み完了

ユーザー利用処理中
entry / カードロック
exit / カードロック解除
処理完了

処理続行不可(
エラー)
取り出し中

キャンセル

取り出し完了
タイムアウト(取り忘れ検知)
後処理中
entry / クレジットカード・紙幣をシステム内に取り込む

図2

要求仕様

14

交通 IC カードチャージ機

ユースケース記述の視覚的表現
今回の IC カードチャージ機の要求分析においては、ユースケース記述と合わせて、ユーザーと IC カー
ドチャージ機とのやりとりを視覚的に表わす、“紙芝居”を作成しました。
以下に、サンプルとして UC7-1 の“紙芝居”を示します(他のユースケースの”紙芝居”は、別ファイルとして提供しています)。

①

②
スピーカー

ICカードチャージ機

マイク

スピーカー

よびだし

ICカードチャージ機

よびだし

とりけし

案内表示

1000

チャージ金額
3000
5000

2000

【メンテナンスモード】
使用不可にする
使用可能にする
利用レポートを印刷する
利用レポートをクリアする
テストプリントをする

クレジットカード
10000

1000
11
44
77
**

履歴表示

領収書/履歴

とりけし

ICカード挿入口[1000][2000][5000][10000]
[発行]

22
55
88
00

33
66
99
##

マイク

2000

チャージ金額
3000
5000

ICカード挿入口

クレジットカード
10000
11
44
77
**

履歴表示

紙幣・おつり

領収書/履歴

発行

閉

22
55
88
00

33
66
99
##

紙幣・おつり
発行

閉

開

開

かぎ

かぎ

③

④
スピーカー

ICカードチャージ機

よびだし
とりけし

[1000][2000][5000][10000]
[発行]

1000

マイク

【メンテナンスモード】
使用不可にする
使用可能にする
利用レポートを印刷する
利用レポートをクリアする
テストプリントをする

2000

チャージ金額
3000
5000

スピーカー

とりけし

ICカード挿入口

使用不可にしました

クレジットカード
1000

10000

履歴表示

22
55
88
00

33
66
99
##

マイク

【メンテナンスモード】－ 使用不可にする －

よびだし

11
44
77
**

領収書/履歴ICカードチャージ機

2000

チャージ金額
3000
5000

ICカード挿入口

クレジットカード
10000
11
44
77
**

履歴表示

紙幣・おつり

領収書/履歴

発行

閉

22
55
88
00

33
66
99
##

紙幣・おつり
発行

閉

開

開
かぎ

かぎ

⑤

⑥
スピーカー

ICカードチャージ機

マイク

スピーカー

【メンテナンスモード】－ 使用不可にする －

よびだし
とりけし

2000

チャージ金額30005000

使 用 不 可とりけし

ICカード挿入口

クレジットカード
10000

1000
11
44
77
**

履歴表示

領収書/履歴マイク

よびだし

使用不可にしました

1000

ICカードチャージ機

22
55
88
00

33
66
99
##

2000

チャージ金額
3000
5000

ICカード挿入口

クレジットカード
10000
11
44
77
**

履歴表示

紙幣・おつり

領収書/履歴

発行

閉

22
55
88
00

33
66
99
##

紙幣・おつり
発行

閉

開

開

かぎ

かぎ

交通 IC カードチャージ機の要求分析モデルは、UC 図、UC 記述と“紙芝居”、システム全体の状態遷移図
によって成り立っています。
15

組込み分野のための UML モデルカタログ

モデル一覧
着目点

概要

ポイント

BCE パターンを用いたモデル交通 IC カードチャージ機のアプリケーション部分
を、B(Boundary:システムの境界)
C(Control:システムが行う処理)、
E(Entity:システムが扱うもの/こと)、の性質の違いに着目してモジュール分割しています。

「これがチャージ機である」という知識の凝集度を極力高め、ソフトのほとんどの部分がチャージ機能付の券売機等、他の機器に転用できる(また借用できる)構造を狙ってい
ます。

モデル一覧

16

交通 IC カードチャージ機

BCE パターンを用いたモデル
分析モデル
モデリングのコンセプト
分析モデルの作成にあたっては、ドメイン（システムが扱う問題領域）に対する理解を詳細にし、整理し、語彙を揃えることを目的に、交通 IC カードチャージ機が扱うデータを洗い出しました。
データを洗い出すことだけに集中した理由は、分析のこの段階では「What(何をつくるのか)」に思考と議論を集中させ、「How(実現手段)」の検討に入ることを防止する意味もあります。機能の実現手段については、後の PIM 設計モデル作成時に検討します。
分析モデル作成作業の結果として、交通 IC カードチャージ機が扱うデータは、


情報が付随するモノや情報のライフタイムの違いによっていくつかのグループに分けられる。



扱うデータの種類も量もそれほど多くない。

ということが分かりました。その結果を、下の図に示します。

クラス図
IC カードチャージ機が扱うデータ
c lass 概念モ デル
ユーザーによるIC カードチャージ 機の一回の利用毎にある情報

Ｉ Ｃ カードのサービス毎にある情報

現金によるチャージ

チャージ

サービス仕様チャージ金額
領収書発行有無

1回のチャージの上限金額
カードの上限金額<<enumeration>>
ユーザー利用結果
装置毎にある情報

ユーザー利用ジ ョブ

クレジ ッ トカードによる
チャージ

残高照会

正常終了
ICカードエラー
おつり取り忘れ・・・

利用レポート

おつり金額
投入金額

1*
1

利用履歴

*

*

日時
1*

0..1

利用履歴照会
利用履歴印刷有無*1
チャージ 機情報

1

駅名
設置場所

Ｉ Ｃ カード毎にある情報

クレジ ッ トカード毎にある情報
1

1<<enumera...
IC カード状態
有効
紛失中
・・・

IC カード情報
残高1

IC カード1*<<enumeration>>
クレジ ッ トカード状態

1

ICカード番号

有効
無効

クレジ ッ トカード情報
1 *クレジ ッ トカード
クレジットカード番号
11

1
ICカードシステムから取得できる情報*

ICカードから読み取れる情報

ICカードシステムから取得できる情報

クレジットカードから読み取れる情報

IC カード利用履歴
残高
日時チャージ 履歴
*

支払い履歴
着駅
発駅

精算履歴
駅

図3

17

分析モデル

組込み分野のための UML モデルカタログ

オブジェクト図
装置毎にある情報の具体例
o bje c t 利用レポート: IC カード
ICカード番号 = ＩＤ123456: 利用履歴: 現金によるチャージ

日時 = 2012/12/12 12:12

チャージ金額 = 5000円<<enumeration>>
正常終了 : ユーザー利用結果: チャージ 機情報: IC カード

駅名 = 品川駅
設置場所 = 港南口

ICカード番号 = ID567890: 利用レポート: 利用履歴: クレジ ッ トカードによるチャージ

日時 = 2012/12/12 14:05

チャージ金額 = 10000円<<enumeration>>
正常終了 : ユーザー利用結果

装置が利用された履歴情報。
メンテナーが装置内紙幣の管理等の用途で用いる。

: クレジ ッ トカード
クレジットカード番号 = ****1234: IC カード
ICカード番号 = ID765432: 利用履歴: 現金によるチャージ

日時 = 2012/12/12 15:37

チャージ金額 = 1000円<<enumeration>>
おつり 取り 忘れ : ユーザー利用結果

図4

BCE パターンを用いたモデル

18

交通 IC カードチャージ機

IC カード毎にある情報の具体例
o bje c t IC カード情報
ICカードが利用された履歴情報。
ユーザーが交通費の管理等の用途で用いる。

<<enumeration>>
有効 : IC カード状態: IC カード情報: IC カード
ICカード番号 = ＩＤ123456: チャージ 機情報
駅名 = 品川駅
設置場所 = 港南口

新宿- 渋谷 : 支払い履歴
日時 = 2012/12/12 9:05
残高 = 1000円

2 0 1 2 / 1 2 / 1 2 1 2 : 1 2 : チャージ 履歴
日時 = 2012/12/12 12:12
残高 = 5700円
渋谷- 目黒 : 支払い履歴

目黒- 品川 : 支払い履歴

日時 = 2012/12/12 11:11
残高 = 850円

日時 = 2012/12/12 12:01
残高 = 700円

図5

19

分析モデル

組込み分野のための UML モデルカタログ

PIM 設計モデル
モデリングのコンセプト
交通 IC カードチャージ機のアプリケーション全体を、
Boundary (システムと外部との境界)

Control (システムで行う処理)Entity (システムが扱うもの/こと)の性質の違いに着目してモジュール分割しています。これにより、汎用性の高いソフトウェア部品の集合として全体の機能を実現することを狙っています。
また、Control の部分は、システム全体の状態遷移に着目し、システムの状態に応じて処理を行うクラスを切り替えるアーキテクチャーになっています。

パッケージ構成
交通ＩＣカードチャージ機のソフトウェアの、トップレベルのパッケージ構成を以下に示します。各パ
ッケージの性質の理解を助けるために、それぞれにステレオタイプをつけています。Boundary, Control,
Entity の他に、便利機能を実現するモジュールやクラスには、Utility というステレオタイプをつけています。

クラス図
トップのパッケージ構成
c lass ドメイン構成<<control>>ア プリ ケーシ ョン<<entity>>
装置<<control>>
機能コントローラ<<boundary>>
外部通信<<utility>>
UI<<entity>>
クレジ ッ ト情報<<boundary>>
論理デバイス

図6

BCE パターンを用いたモデル

20

交通 IC カードチャージ機

機能コントローラのサブパッケージ
c lass 機能コントローラ<<control>>
機能コントローラ<<entity>>
ユーザー利用ジ ョブ<<entity>>仕様

図7

ステレオタイプパッケージ名説明

control

アプリケーション

交通ＩＣカードチャージ機アプリ全体の状態遷移を司る。

control

機能コントローラ

それぞれの状態での機能の実現を司る。

entity機能コントローラ::ユーザー利用ジョブ

一回のユーザー利用毎にある情報。
一般的に言う、セッション、トランザクション、のようなイメージ。

entity機能コントローラ::仕様

サービス仕様や機器の動作仕様に関する定数値を定義する。

entity装置

一つの装置に固有の情報を保持する。

boundary

外部通信

他システムとの通信を司る。

entity

クレジット情報

IC カードやクレジットカードのドメイン知識を司る。

utility

UI

パネルやボタンについて、上位レイヤが論理デバイスの構成に依存しないためのラッパー。
将来的に、UI が例えばタッチパネルに変更になった場合も、
上位レイヤに変更を生じさせない狙い。

boundary

論理デバイス交通ＩＣカードチャージ機に搭載されているデバイスの操作を司る。
ある程度高度なサービスを提供することにより、低位ドライバの変更(デバイスの変更)から上位レイヤを守る。

21

PIM 設計モデル

組込み分野のための UML モデルカタログ

シーケンス図<<control>>や<<boundary>>のパッケージがどのようにやり取りして処理を進めるのか、そして割り込み処理等の並行性をどのように実現するのかを表わすために、パッケージ間での大枠のシーケンスを以下の図に示します。

パッケージ間の相互作用
sd ドメインシーケンス<<control>>アプリケーション<<control>>
状態1:機能コントローラ<<control>>
状態2:機能コントローラ<<boundary>>
外部通信<<boundary>>
論理デバイスユーザー
ユーザー利用ジョブをセットする(ユーザー利用ジョブ)処理を開始する()
必要な処理を行う()
通信する()
ユーザーによる処理を促す()「イベントを待つ()」ことによってブロックされたコンテキストが、イベントの受信によって再開される。

イベントを待つ()メインとは異なるコンテキスト(割り込み等)操作する()<<ユーザー操作>>
イベントハンドラを呼び出す()
イベントを送信する(イベント)

必要な処理を行う() ～続き～
ユーザー利用ジョブを更新する()ユーザー利用ジョブを取得する()

次の状態を判断する()
処理を終了する()

ユーザー利用ジョブをセットする(ユーザー利用ジョブ)処理を開始する()
必要な処理を行う()

図8「アプリケーション」は、システムの状態が変化する際、処理を担当させる「機能コントローラ」のオブジェクトを切り替えることによって状態遷移を実現します。
各「機能コントローラ」は「外部通信」や「論理デバイス」等とやり取りしながら、担当分の処理を進めます。
BCE パターンを用いたモデル

22

交通 IC カードチャージ機

静的構造
アプリケーションパッケージ
アプリケーションパッケージのクラス構成は以下の通りです。
c lass ア プリ ケーシ ョン<<interface>>
機能コントローラ: : 装置イベントハンドラ
かぎオープン() :void
かぎクローズ() :void
警報検知() :void<<utility>>
イニシ ャライザ
システムを初期化する() :void<<enumeration>>
IC カードシ ステ ム状態<<control>>IC カードチャージ 機<<use>>

main() :int
かぎオープン() :void
かぎクローズ() :void
警報検知() :voidcurrent
1

ICカードシステム状態
0..1

メンテナンス中
使用停止表示中
異常検知中
待機中
ユーザー利用処理中
取り出し中
後処理中

1

<<entity>>
ユーザー利用ジ ョブ: : ユーザー利用ジ ョブ<<control>>

機能コントロー ラ ::機能コントロー ラ

ICカード利用可/不可
おつり残量
ユーザー利用可/不可
押されたボタンの情報

イベントを送信する(イベント) :void
イベントを待つ() :イベント
強制終了する() :void

処理を開始する() :void
処理を終了する() :void

図9ステレオタイプ

クラス名

説明

control

IC カードチ
ャージ機「機能コントローラ」を上位から操り、切り替えることによって、IC カードシステム全体の状態遷移を司る。

utilityイニシャラ
イザシステム起動時にオブジェクトの生成や関連付けなどの初期化を行う。

enumeration

IC カードシ
ステム状態

交通ＩＣカードチャージ機が取りうるトップレベルの状態の列挙。

「IC カードチャージ機」クラスがメインのコントローラです。IC カードチャージ機全体の状態遷移を司り、各状態に応じて処理を行う「機能コントローラ」オブジェクトを切り替えることで、IC カードチャー
ジ機全体を制御します。
状態遷移の判断は、各「機能コントローラ」の処理結果や、システムの状態に大きな影響を与える異常系のイベント(処理中に鍵が開けられた、警報を検知した等)の受信をもって行います。
上のクラス図中の、他のパッケージのクラスについては、各々のパッケージの節にて解説します。

23

PIM 設計モデル

組込み分野のための UML モデルカタログ

機能コントローラパッケージ

機能コントローラのクラス「機能コントローラ」パッケージには、システムのとる個々の状態に対応したクラス群があり、共通のインタフェースや機能をベースクラスが持つ設計になっています。システムのとる状態については、要求仕様の、「システム全体の状態遷移システム全体の状態遷移システム全体の状態遷移」の節(14 ページ)を参照してください。

システムの状態に対応したクラス群
c lass 機能コントローラクラス群<<control>>
メンテ ナンスコントローラ
使用可/不可 :boolean
ボタン押下(ボタン種別) :void
使用不可モードが選択されているか() :boolean
処理を開始する() :void
処理を終了する() :void<<control>>
使用停止コントローラ
処理を開始する() :void
処理を終了する() :void<<control>>
異常検知コントローラ
処理を開始する() :void
処理を終了する() :void<<control>>

機能コントロー ラ

イベント

イベントを送信する(イベント) :void
イベントを待つ() :イベント
強制終了する() :void

処理を開始する() :void
処理を終了する() :void<<entity>>
ユーザー利用ジョブ: : ユーザー利用ジョブ

1<<control>>
ユーザー機能コントローラ*

ICカード利用可/不可 :ｂoolean
おつり残量 :int
ユーザー利用可/不可 :ｂoolean
押されたボタンの情報 :ボタンデバイス

ユーザー利用ジョブをセットする(ユーザー利用ジョブ) :void
ユーザー利用ジョブを取得する() :ユーザー利用ジョブ<<control>>
待機コントローラ
ICカード挿入() :void
処理を開始する() :void
処理を終了する() :void<<control>>
取り出しコントローラ<<control>>
ユーザー利用処理コントローラ
処理を開始する() :void
処理を終了する() :void

ICカード取り出し() :void
クレジットカード取り出し完了() :void
ボタン押下(ボタン種別) :void
紙幣取り出し完了() :void
処理を開始する() :void
処理を終了する() :void<<control>>
後処理コントローラ
処理を開始する() :void
処理を終了する() :void

図10

ステレオタイプ

クラス名

説明

control

機能コントローラ

全機能コントローラのベースクラス。
処理を開始する()」は自身がコントロールする状態に入ったことの通知。
処理を終了する()」は自身がコントロールする状態から抜け出る
ことの通知。
「強制終了する()」は何らかの理由により、処理を途中で止めることの指示。

イベント

コンテキスト(タスク)を跨ぐ情報伝達に用いる。
今回は詳細まで検討できていないが、検討を進める過程で、どのようなイベントなのかを識別する情報や、イベントに付随するデータを保持することなどが、盛り込まれていく。

control

メンテナンスコントローラ「メンテナンス中」の処理を行う。

control

使用停止コントローラ「使用停止表示中」の処理を行う。

control

異常検知コントローラ「異常検知中」の処理を行う。

BCE パターンを用いたモデル

24

交通 IC カードチャージ機

control

ユーザー機能コントローラ「ユーザー利用可」の状態の機能コントローラのベースクラス。
ユーザーによる交通 IC カードチャージ機の一回の利用に関する情報、すなわち「ユーザー利用ジョブ」オブジェクトを保持する。

control

待機コントローラ「待機中」の処理を行う。

control

ユーザー利用処理コン
トローラ「ユーザー利用処理中」の処理を行う。

control

取り出しコントローラ「取り出し中」の処理を行う。

control

後処理コントローラ「後処理中」の処理を行う。

機能コントローラの子クラスは、「ユーザー利用不可」状態のサブ状態のクラス群と、「ユーザー利用可」状態のサブ状態のクラス群に分かれます。このうち「ユーザー利用可」状態のクラス群は、共通の「ユーザー利用ジョブ」オブジェクトを参照することにより、各機能コントローラ間で情報を共有します。この方法以外には、機能コントローラクラス同士は依存しあうことを禁止することで、各コントローラクラスのソフトウェア部品としての独立性を高めることを図ります。
上で示した機能コントローラクラスのうち、「ユーザー利用処理コントローラ」は比較的責務が大きいため、「ユーザー利用処理中」のサブ状態に対応した機能コントローラクラスを保持し、それぞれのサブ状態に応じた処理を委譲します。以下に、「ユーザー利用処理中」のサブ状態と、対応するクラス図を示します。

25

PIM 設計モデル

組込み分野のための UML モデルカタログ「ユーザー利用処理中」のサブ状態
st m ユーザー利用処理中
ユーザー利用処理中
entry / カードロック
exit / カードロック解除
IC カード処理設定中
entry / タイマースタート
exit / タイマーストップ
IC カード確認中
do / カード確認

操作選択中
do / 【表示】現残高
do / 【表示】操作を選択してください。チャージの場合・・・
操作選択完了 [チャージ]
ユーザー入金中操作選択完了 [履歴表示ボタン押下]do / 【表示】ガイド

とりけしボタン押下,
タイムアウト

ユーザー入金終了
IC カード処理中
チャージ処理中
entry / チャージ処理

チャージ処理完了

利用履歴表示処理中
entry / 履歴表示処理

利用履歴表示処理完了
処理続行不可(
エラー)
取り出し中

図11

BCE パターンを用いたモデル

26

交通 IC カードチャージ機「ユーザー利用処理中」のサブ状態に対応する機能コントローラ
c lass ユーザー利用処理中<<control>>

機能コントロー ラ
イベントを送信する(イベント) :void
イベントを待つ() :イベント
強制終了する() :void

処理を開始する() :void
処理を終了する() :void<<control>>
ユーザー機能コントローラ
ユーザー利用ジョブをセットする(ユーザー利用ジョブ) :void
ユーザー利用ジョブを取得する() :ユーザー利用ジョブ<<control>>
ユーザー利用処理コントローラ
処理を開始する() :void
処理を終了する() :void1

1<<control>>IC カード処理設定コントローラ<<control>>IC カード処理コントローラ

処理を開始する() :void
処理を終了する() :void

ICカード取り出し() :void
ICカード挿入() :void
イベントを送信する(イベント) :void
イベントを待つ() :イベント
ボタン押下(ボタン種別) :void
ユーザー利用ジョブをセットする(ユーザー利用ジョブ) :void
ユーザー利用ジョブを取得する() :ユーザー利用ジョブ強制終了する() :void
処理を開始する() :void
処理を終了する() :void

図12ステレオタイプ

クラス名

説明

control

IC カード処理設定コン
トローラ「IC カード処理設定中」の処理を行う。

control

IC カード処理コントローラ「IC カード処理中」の処理を行う。

今回のモデル作成では、上記の通りのクラス構成になりましたが、これらのコントローラクラス群は更に検討を進めていく中で、複数のクラスに分割されていく可能性があります。

27

PIM 設計モデル

組込み分野のための UML モデルカタログ「機能コントローラ」パッケージには、この他に、装置の状態を監視して上位レイヤに報告するクラス(「装置状態」)や、煩雑な処理を機能コントローラから請け負うユーティリティのクラスがあります。

「機能コントローラ」パッケージのその他のクラス
c lass 機能コントローラのその他 カタログ掲載用
レシート出力用の情報を取得する<<utility>>
装置利用履歴ユーテ ィリテ ィ<<control>>
メンテ ナンスコントローラ<<use>>

印刷情報を取得する(装置利用履歴) :レシート出力情報

パネル表示用の情報を取得する<<utility>>
IC カード利用履歴ユーテ ィリテ ィ<<control>>IC カード処理コントローラ<<use>>

パネル表示情報を取得する(ICカード利用履歴) :パネル表示情報
印刷情報を取得する(ICカード利用履歴) :レシート出力情報<<use>><<control>>
取り出しコントローラ

レシート出力用の情報を取得する<<interface>>
装置イベントハンドラ
かぎオープン() :void
かぎクローズ() :void
警報検知() :void
0..1<<control>>
装置状態<<control>>
係員呼び出しコントローラ

イベントハンドラを登録する(装置イベントハンドラ) :void
かぎオープン() :void
かぎクローズ() :void
かぎこじ開け() :void

ボタン押下(ボタンデバイス) :void
通話の解除() :void

図13

ステレオタイプ

クラス名説明

utility

装置利用履歴ユーティ
リティ「装置::装置利用履歴」オブジェクトを、レシートに印字する形式の情報に変換する。

utility

IC カード利用履歴ユー
ティリティ「クレジット情報::IC カード利用履歴」オブジェクトを、パネルに表示する形式の情報やレシートに印字する形式の情報に変換する。

control

係員呼び出しコントローラ

係員呼び出し・通話機能を司る。この機能は、「システム状態」で示した交通 IC カードチャージ機全体の状態遷移からは独立した機能であり、上位レイヤのコントロール外である。通常の機能とは、スピーカーデバイスの競合だけ気をつける必要がある。

control

装置状態

装置の状態を監視し、必要に応じて上位レイヤに報告する。

interface

装置イベントハンドラ「装置状態」オブジェクトが発信するイベントを受信するためのインタフェース。

BCE パターンを用いたモデル

28

交通 IC カードチャージ機

機能コントローラのサブパッケージ「機能コントローラ」パッケージには、「ユーザー利用ジョブ」と「仕様」というサブパッケージがあります。これらのサブパッケージのクラス図を以下に示します。

機能コントローラ::ユーザー利用ジョブ
c lass 機能コントローラ: : ユーザ. . .
<<entity>>
ユーザー利用ジョブ
ICカード利用可/不可
おつり残量
ユーザー利用可/不可
押されたボタンの情報
図14

ステレオタイプ

クラス名

説明

entity

ユーザー利用ジョブ

ユーザーの一回のチャージ機利用に関連する情報を保持する。

「ユーザー利用ジョブ」クラスは、ユーザーの一回のチャージ機利用に関連する情報を保持する機能を持っています。このオブジェクトを、「アプリケーション」や「機能コントローラ」間で受け渡しながら処理を進めることにより、必要な情報の交換を行います。
「ユーザー利用ジョブ」に情報を書き込むオブジェクトは、その情報を誰が何のために利用するのかを知らず、また情報を読み込むオブジェクトは、誰がいつ情報を書き込んだのかを知らないというスタンスで利用することにより、「アプリケーション」や「機能コントローラ」間の結合度を下げる狙いがあります。
詳細な検討が進む中で、情報が増えて煩雑になった場合には、「ユーザー利用ジョブ」の中身を構造化して複数クラスに分割するなどし、肥大化・複雑化しないように心がける必要があります。

機能コントローラ::仕様
c lass 機能コントローラ: : 仕様
チャージ機仕様
サービス仕様1回のチャージの上限金額 {readOnly}
カードの上限金額 {readOnly}
サービス仕様を取得する() :サービス仕様

・・・
サービス可能おつり残量 {readOnly}
サービス可能印紙残量 {readOnly}
取り出しタイムアウト時間 {readOnly}
無操作タイムアウト時間 {readOnly}
チャージ機仕様を取得する() :チャージ機仕様

図15

ステレオタイプ

クラス名

説明

サービス仕様交通ＩＣカードのサービス(運営事業体)仕様に関する定数値を定義。

チャージ機仕様

チャージ機の動作仕様に関する定数値を定義。

「仕様」パッケージは、サービス仕様や機器の動作仕様に関する定数値が定義されている、仕様カタロ
グのような役割を持っています。
定数値がソースコードの様々な箇所に散在しているより、このようにまとまっている方が、パラメータ
調整やバリエーション展開時の対応工数を下げることができるという狙いがあります。

29

PIM 設計モデル

組込み分野のための UML モデルカタログ

機能コントローラクラスの詳細「機能コントローラ」パッケージの各コントローラクラスは、処理の流れ・手順だけを司り、各手順の詳細は他のクラスに任せ、専門的知識を極力持たないというのが設計の基本的な考え方になっています。
そのため、これらのコントローラクラスは他のパッケージの多くのクラスと関連を持ちます。「機能コントローラ」パッケージのコントローラクラスと他のパッケージのクラスとの関連を表わすクラス図を、下にいくつか示します。

メンテナンスコントローラ詳細
c lass 機能コントローラ: : メンテ ナンス<<interface>>
論理デバイス: : かぎイベントハンドラ<<interface>>
UI: : ボタンイベントハンドラ

かぎのイベントを受け取る<<entity>>
装置: : 装置利用履歴

装置利用履歴をクリアする

ボタンのイベントを受け取る<<control>>
メンテ ナンスコントローラ<<utility>>
UI: : チャージ 機UIユーテ ィリ テ ィ<<use>>
メンテナンス画面の情報を取得する<<use>>
UIを表示する<<use>><<utility>>
UI: : UI

レシート出力用の情報を <<use>>
取得する<<utility>>
装置利用履歴ユーテ ィリ テ ィ

カードロックを解除する

1<<論理デバイス>>
論理デバイス: : IC カード挿入デバイス

利用レポートを印刷する
1<<論理デバイス>>
論理デバイス: : レシ ート出力デバイス<<論理デバイス>>
論理デバイス: : 紙幣入出力デバイス
取り込み中紙幣を 1
排出する<<論理デバイス>>
論理デバイス: : クレジ ッ トカードデバイス※) 属性・操作は非表示にしています
クレジットカードを
排出する

図16

BCE パターンを用いたモデル

30

1

交通 IC カードチャージ機

待機コントローラ詳細
cla s s 待 機 コ ン トロ ー ラ カタ ロ グ掲 載 用<<interface>>
論理デバイス : : IC カードイベントハンドラ<<utility>>
UI: : チャージ 機UIユーテ ィリテ ィ

ICカードのイベントを取得する

待機画面の情報を取得する<<use>><<control>>
待機コントローラ<<utility>>
UI: : UI

UIを表示する<<use>>

印刷紙の残量を取得する

おつりの残量を取得する
1

1<<論理デバイス>>
論理デバイス : : 紙幣入出力デバイス<<論理デバイス>>
論理デバイス : : レシ ート出力デバイス※) 属性・操作は非表示にしています

図17

取り出しコントローラ詳細
c lass 取り出しコントローラ<<interface>>
論理デバイス: : IC カードイベントハンドラ<<interface>>
UI: : ボタンイベントハンドラ

取り出しコントローラは制御すべき状態が多いため、領収書やＩＣカード利用履
歴の発行系の処理は別途ヘルパークラ
スに外出することも今後検討する
発行ボタンのイベントを受信する<<interface>>
論理デバイス: : クレジッ トカード
イベントハンドラ<<control>>
取り出しコントローラ

取り出し画面の情報を取得する<<utility>>
UI: : チャージ機UIユーテ ィリテ ィ<<use>><<interface>>
論理デバイス: : 紙幣入出力イベントハンドラ

UIを表示する<<use>><<utility>>
UI: : UI

取り出しのイベントを受信する<<use>>
レシート出力用の情報を取得する

おつりを排出する<<論理デバイス>>
論理デバイス: : 紙幣入出力デバイス<<論理デバイス>>
論理デバイス: : クレジッ トカードデバイス<<utility>>
IC カード利用履歴ユーテ ィリテ ィ
クレジットカードを排出する<<論理デバイス>>
論理デバイス: : レシート出力デバイス
領収書やＩＣカード利用履歴を印刷する※) 属性・操作は非表示にしています

図18

31

PIM 設計モデル

組込み分野のための UML モデルカタログ

外部通信パッケージ「外部通信」パッケージには、交通 IC カードチャージ機がやりとりする外部システムとの"窓口"のクラスが定義されています。外部システムの種類は、ユースケース図で検討されている通りです。
c lass 外部通信<<facade>>
IC カードシステ ム
ICカードの残高を更新する(ICカード :ICカード, 残高 :int, チャージ機シリアル番号 :int) :void
ICカード情報を取得する(ICカード :ICカード) :ICカード情報
ICカード利用履歴を取得する(ICカード :ICカード) :ICカード利用履歴
クレジットカードの決算をする(クレジットカード :クレジットカード, 暗証番号 :文字列, 金額 :int) :boolean
クレジットカード情報を取得する(クレジットカード :クレジットカード) :クレジットカード情報<<facade>>
係員呼び出し・ 通話システ ム
コールバックを登録する(コールバック :係員呼び出し・通話システムコールバック) :void
呼び出しを開始する() :void*<<interface>>
係員呼び出し・ 通話システ ムコールバッ ク
通話の解除() :void<<facade>>
警備システ ムコールバックを登録する(コールバック :警備システムコールバック) :void
警報を解除する() :void
警報を通知する() :void*<<interface>>
警備システ ムコールバッ ク
警報解除() :void

図19

ステレオタイプ

クラス名

説明

façadeIC カードシステム

ＩＣカードシステムを利用するための窓口。

façade

係員呼び出し・通話システム

係員呼び出し・通話システムを利用するための窓口。

interface

係員呼び出し・通話システム
コールバック

係員呼び出し・通話システムからのメッセージを受信するためのインタフェース。

façade警備システム警備システムを利用するための窓口。

interface

警備システムコールバック

警備システムからのメッセージを受信するためのインタフェース。

BCE パターンを用いたモデル

32

交通 IC カードチャージ機

装置パッケージ「装置」パッケージには、交通 IC カードチャージ機の装置が固体毎に保持すべき情報を管理するためのクラスが定義されています。
cla s s 装置<<entity>>
装置
+
+
+

装置を取得する() :装置
装置情報を取得する() :装置情報
装置利用履歴を取得する() :装置利用履歴

11<<entity>>
装置情報<<entity>>
装置利用履歴++装置利用履歴を追加する(装置利用) :void装置利用履歴をクリアする() :void

-

駅名
機器名
シリアル番号<<ordered>>*<<enumeration>>
装置利用種別
チャージ
利用履歴表示・・・<<entity>>
装置利用
1

-

日時
ICカード番号
取引額

図20

ステレオタイプ

クラス名

説明

entity装置「装置」パッケージで管理する情報の元締め。

entity装置情報

設置場所等、装置を特定するための情報。

entity装置利用履歴装置が利用された履歴を管理するためのリスト。

entity装置利用

装置の 1 回の利用情報。

enumeration

装置利用種別装置の利用形態の種別を表わす列挙。

33

PIM 設計モデル

組込み分野のための UML モデルカタログ

クレジット情報パッケージ「クレジット情報」パッケージには、IC カードやクレジットカードを通して、クレジット機能を用いるために必要な情報を保持するクラスが定義されています。
ここでは、カードそのものから交通 IC カードチャージ機が読み取ることができる情報と、外部システムに問い合わせて得られる情報を分けて定義しています。
c lass クレジ ッ ト情報
ICカード

クレジットカード
ICカードからチャージ機で読み取れる情報<<entity>>
IC カード

必要に応じてICカー
ドシステムから取得できる情報

クレジットカードからチャージ機で読み取れる情報

ICカード番号

クレジットカード番号

1<<entity>>
IC カード情報
残高<<entity>>
クレジ ッ トカード

1

1<<entity>>
IC カード利用履歴

必要に応じてICカードシス
テムから取得できる情報<<entity>>
クレジ ッ トカード情報

1<<enumeration>>
IC カード状態* <<ordered>><<entity>>

有効
紛失登録
・・・

ICカー ド利用
残高
日時<<entity>>
チャージ
駅名
機器名

1
<<enumeration>>
クレジ ッ トカード状態<<entity>>
支払い<<entity>>
精算

着駅
発駅

有効
無効

駅名

図21

ステレオタイプ

クラス名

説明

entityＩＣカード

IC カードそのものから交通 IC カードチャージ機が読み取れる
情報。

entityIC カード情報

IC カードそのものから読み取れる情報を用いて外部システムから得られる、カードの状態についての情報。

enumeration

IC カード状態

IC カードの状態を表す列挙。

entityIC カード利用履
歴一つのＩＣカードの利用履歴。一回の利用情報である「ＩＣカード利用」のリスト。

entityIC カード利用

一回のＩＣカードの利用の情報。

entityチャージ

一回のＩＣカードの利用の情報(チャージ)。

entity支払い

一回のＩＣカードの利用の情報(IC カードを利用した交通費の支払い)。

entity精算

一回のＩＣカードの利用の情報(駅の窓口等での精算)。

entity

クレジットカード

クレジットカードそのものから交通ＩＣカードチャージ機が読み取れる情報。

entity

クレジットカード情報

クレジットカードそのものから読み取れる情報を用いて外部シ
ステムから得られる、クレジットカードに関する情報。
交通ＩC カードチャージ機は利用限度額や有効期限等を管理しない。利用限度額を超えた場合等は、チャージをする際に IC カ

BCE パターンを用いたモデル

34

交通 IC カードチャージ機

ードシステムからエラーが返る。
enumeration

クレジットカード状態

現在のクレジットカードの状態。利用可/不可の判断に用いる。

35

PIM 設計モデル

組込み分野のための UML モデルカタログ

UI パッケージ「UI」パッケージには、パネルやボタンの物理的なデバイス構成を隠蔽するための、ラッパークラスが定義されています。具体的には、今回の開発対象の機器では、表示用のパネルと、ボタンがそれぞれ物理的に独立したデバイスになっていますが、「UI」パッケージのクラスを通してパネルやボタンを扱う上位レイ
ヤのクラスは、その構成に依存しません。
これにより、UI の物理的なデバイス構成が異なる装置(例えばタッチパネルを搭載する装置)に対しても上位レイヤのロジックを変更することなく適用することができます。
c lass UI<<interface>>
ボタンイベントハンドラ<<utility>>
チャージ 機UIユーテ ィリテ ィ

ボタン押下(ボタン :ボタン種別) :void

メンテナンス画面情報を取得する() :UI情報
取り出し画面情報を取得する() :UI情報
待ち受け画面情報を取得する() :UI情報*<<utility>>
UI
UI情報を設定する(UI情報 :UI情報) :void
ボタンイベントハンドラを解除する(ハンドラ :ボタンイベントハンドラ) :void
ボタンイベントハンドラを登録する(ハンドラ :ボタンイベントハンドラ, イベントマスク :byte) :void
ボタン押下(ボタン :ボタンデバイス) :void
現在のUI情報を取得する() :UI情報<<instantiate>>

論理デバイス: :ボタン種別<<use>><<entity>>
UI情報
パネル表示情報をセットする(表示情報 :パネル表示情報)
パネル表示情報を取得する() :パネル表示情報
ボタン情報をセットする(ボタン種別 :ボタン種別, ボタン情報 :ボタン情報) :ボタン情報
ボタン情報を取得する(ボタン種別 :ボタン種別) :ボタン情報
論理デバイス: :ボタン種別<<interface>>
論理デバイス: : ボタンイベントハンドラ
1

ボタン押下(ボタン :ボタンデバイス) :void<<entity>>
ボタン情報

*
1

有効/無効 :int<<論理デバイス>>
論理デバイス: : パネルデバイス
1

表示する(表示情報 :パネル表示情報) :void
表示中の情報を取得する() :パネル表示情報

1<<論理デバイス>>

論理デ バイス::ボタンデ バイス
ボタンを消灯する() :void
ボタンを点灯する() :void

論理デバイス: : パネル表示情報※) 「論理デバイス」パッケージのクラスの属性・操作は最低限のものだけを表示しています。

図22

ステレオタイプ

クラス名説明

utility

UI

上位レイヤのクラスが、パネルやボタンを操作するためのイ
ンタフェースを提供するクラス。

interface

ボタンイベントハン
ドラ

上位レイヤのクラスが、ボタンが押下されたイベントを受け取るためのインタフェース。

entityUI 情報

UI の設定(パネルやボタンをどのように表示させるか)を表現するクラス。
UI の現在の設定を取得したり、UI の設定を更新したりする
際のデータとして用いる。

entity

ボタン情報

ボタンの設定を表現するクラス。

utility

チャージ機 UI ユー 画面の種類に応じた「UI 情報」オブジェクトを作成するク
ティリティ
ラス。

BCE パターンを用いたモデル

36

交通 IC カードチャージ機

論理デバイスパッケージ「論理デバイス」パッケージには、交通 IC カードチャージ機のソフトウェアが扱う物理的なデバイスに対応したクラスが定義されています。各クラスは、各デバイスの詳細な仕様を隠蔽し、ある程度インテリジ
ェントな機能を実現します。また、各デバイスで発生したイベントを通知するためのインタフェースもあわせて定義されています。
※)「論理デバイス」パッケージでは、各クラスの解説を割愛します。

パネル、ボタンのデバイス
cla s s パネル と ボ タ ン カタ ロ グ掲載用<<論理デバイス>>
パネルデバイス++表示する(パネル表示情報) :void
表示中の情報を取得する() :パネル表示情報
0..1

パネル表示情報

パネル表示エ リア+

背景色 :int+++

パネル表示エリアを末尾に追加する(パネル表示エリア) :void
パネル表示エリアを取得する(int) :パネル表示エリア
パネル表示エリアをクリアする() :void

+
+
+
+

*
{ordered}+

文字列 :int
フォントサイズ :int
フォントカラー :int
寄せ方向 :int<<interface>>
ボタンイベントハンドラ
ボタン押下(ボタンデバイス) :void*<<enumeration>>
ボタン種別
呼び出し
取り消し
履歴表示
発行
1000円
2000円
3000円
5000円
10000円<<論理デバイス>>

ボタンデ バイス

1

+
+
+
+
+
+

ボタン種別を取得する() :ボタン種別

ボタンを点灯する() :void
ボタンを消灯する() :void

ボタンが点灯中かどうかを取得する() :boolean
イベントハンドラを登録する(ボタンイベントハンドラ, byte) :void
イベントハンドラの登録を解除する(ボタンイベントハンドラ) :void<<論理デバイス>>

メソッドの中身は空。
(何もしない)<<論理デバイス>>

点灯不可ボタンデ バイス

点灯可能ボタンデ バイス

+
+

+
+

<<論理デバイス>>
取り消しボタンデバイス

ボタンを点灯する() :void
ボタンを消灯する() :void<<論理デバイス>>
呼び出しボタンデバイス<<論理デバイス>>
履歴表示ボタンデバイス

ボタンを点灯する() :void
ボタンを消灯する() :void<<論理デバイス>>
発行ボタンデバイス<<論理デバイス>>
金額ボタンデバイス

図23

37

PIM 設計モデル

組込み分野のための UML モデルカタログ

IC カード、紙幣、クレジットカードの入出力デバイス
c lass IC カード、 紙幣、 クレジッ トカード<<interface>>
IC カードイベントハンドラ<<論理デバイス>>
IC カード挿入デバイス

ICカード取り出し() :void
ICカード挿入(ICカード番号) :void*

イベントハンドラの登録を解除する(ハンドラ) :void
イベントハンドラを登録する(ハンドラ, イベントマスク) :void
カードロックをかける() :void
カードロックを解除する() :void<<interface>>
紙幣入出力イベントハンドラ<<論理デバイス>>
紙幣入出力デバイス
イベントハンドラの登録を解除する(ハンドラ) :void
イベントハンドラを登録する(ハンドラ, イベントマスク) :void
ストック中の紙幣を排出する(金額) :void
紙幣ストック残量を取得する() :int
紙幣の取り込みを開始する(金額) :void
取り込み中の紙幣をストックする(金額) :void
取り込み中の紙幣を排出する() :void
排出中の紙幣を取り込む() :void

紙幣取り込み完了(総額) :void
紙幣取り出し完了() :void
排出中紙幣の取り込み完了() :void*<<interface>>
クレジッ トカードイベントハンドラ<<論理デバイス>>
クレジッ トカードデバイス
イベントハンドラの登録を解除する(ハンドラ) :void
イベントハンドラを登録する(ハンドラ, イベントマスク) :void
クレジットカードの挿入を可能にする() :void
クレジットカードの挿入を不可にする() :void
クレジットカードを排出する() :void
暗証番号入力を開始する() :void
排出中のクレジットカードを取り込む() :void*

クレジットカード取り出し完了() :void
クレジットカード挿入(クレジットカード番号) :void
暗証番号入力(暗証番号) :void
排出中クレジットカード取り込み完了() :void

図24

レシート出力、かぎのデバイス
c lass レシ ート出力、 かぎ<<論理デバイス>>
レシ ート出力デバイス
テストプリントをする() :void
レシートを出力する(レシート出力情報) :void
印紙の残量を取得する() :残量

レシ ート出力情報
行を追加する(文字列) :void<<interface>>
かぎイベントハンドラ<<論理デバイス>>
かぎデバイス
イベントハンドラの登録を解除する(かぎイベントハンドラ) :void
イベントハンドラを登録する(かぎイベントハンドラ, byte) :void

図25

BCE パターンを用いたモデル

38*

かぎオープン() :void
かぎクローズ() :void
かぎこじ開け() :void

交通 IC カードチャージ機

動的振る舞い交通 IC カードチャージ機の振る舞いの検討にあたっては、「汎用シーケンス」と「ユースケースシーケ
ンス」の 2 種類のシーケンス図を作成しています。
「汎用シーケンス」とは、様々な処理の中で共通して行われるオブジェクト間のシーケンスを切り出したもので、他のシーケンス図から参照・利用される(複合フラグメントの ref を利用)ことを意図しています。
「ユースケースシーケンス」は、ユースケース毎のシナリオを、システムのオブジェクト間でどのようなやりとりによって実現するのかを示すもので、ユースケース毎に存在します。

汎用シーケンス
UI を表示するシーケンス
sd UIを表示する

待ち受け用のＵＩ表示の例であるが、他のUIも流れは同じ<<control>>:機能コントローラ<<utility>>:チャージ機UIユー
ティリティ<<utility>>:UI

このケースでは「ＵＩ情報」オブジェクトを生成しているが、例えば、表示中の画面の一部だけ変更したい場
合などは、「UI::UI::現在のUI情報を取得する()」で取得したオブジェクトの一部だけを更新すればよい。

<<論理デバイス>>:パネルデバイス<<論理デバイス>>
5000円 :ボタンデバイス

待ち受け画面情報を取得する() :UI情報
待ち受け画面の
情報 :UI情報:パネル表示情報
5000円 :ボタン情報

ボタン種別(論理デバイス::ボタン種別)の個数分のオブジェクトを扱うが、ここでは図の分かりやすさのためにひとつだけ示す:パネル表示エリア「パネル表示情報」に対し、待ち受け画面用の表示情報を設定する()「パネル表示エリア」に対し、待ち受け画面用の表示情報を設定する()
パネル表示エリアを末尾に追加する(パネル表示エリア)「ボタン情報」に対し、待ちうけ画面用の設定(ex.5000円ボタンを無効)をする
待ちうけ画面の情報:UI
情報()【「ＵＩ」パッケージによるラッピング例】
上位レイヤからの"ボタンを無効にする"という要求を、
この論理デバイスでは”消灯する"という手段を用いて実現する。
こうした事情に関する知識は、「ＵＩ」パッケージに閉じられており、「機能コントローラ」も「論理デバイス」も知らない。

UI情報を設定する(UI情報)表示する(パネル表示情報)
ボタンを消灯する()

図26

39

PIM 設計モデル

組込み分野のための UML モデルカタログ

待機中状態のシーケンス
sd 待機コントローラ<<control>>:ICカードチャージ機<<control>>:待機コントローラ<<論理デバ...
:紙幣入出力デバ
イス:ユーザー<<論理デバ...
:レシート出力デバ
イス:チャージ機仕様処理を開始する()
チャージ機仕様を取得する() :チャージ機仕様
紙幣ストック残量を取得する() :int
おつりや印紙残量の規定値を取得する

alt[紙幣ストック残量(おつり)が規定値未満]

ユーザー利用ジョブを取得する() :ユーザー利用ジョブ「ユーザー利用ジョブ」にユーザー利用不可を設定する()

印紙の残量を取得する() :残量
alt[印紙残量が規定値未満]
ユーザー利用ジョブを取得する() :ユーザー利用ジョブ「ユーザー利用ジョブ」にユーザー利用不可を設定する()「ユーザー利用ジョブ」にユーザー利用可とおつり残量を設定する()
イベントハンドラを登録する(ICカードイベントハンドラ, byte)ref
ＵＩ を表示する

イベントを待つ() :イベント

メイン と は異なる コン テ キ スト(割り込み等)

ICカードを挿入する()
ICカード挿入()イベントを送信する(イベント)処理を終了する()
イベントハンドラの登録を解除する(ICカードイベントハンドラ)

図27

相互作用使用

記載ページ

UI を表示する

39

BCE パターンを用いたモデル

40<<論理デバ...
:ICカード挿入デバイス

交通 IC カードチャージ機

異常系の処理を行うシーケンス
sd 異常系の処理をする
かぎのこじ開けを検知した例<<control>>:ICカードチャージ機<<control>>
アクティブ :機能コントロー
ラ<<control>>:装置状態<<論理デバ...
:かぎデバイス<<control>>:異常検知コントローラ

処理を開始する()処理中()

メイン と は異なる コン テ キ スト(割り込み等)

かぎこじ開け()かぎこじ開け検知()

警報検知()
強制終了する()

イベントを送信する(
イベント)

処理中 ～続き～()イベントを待つ()

強制終了に必要な処理をする()

正常系の処理の中で、イベント待ちが発生した際に、強制終了のイ
ベントを受信することで、異常が発生したことに初めて気付く。

次の状態を判断する()
処理を終了する()処理を開始する()

図28

41

PIM 設計モデル

組込み分野のための UML モデルカタログ

かぎオープン時のシーケンス
sd かぎオープン:ICカードチャージ機:メンテナー<<control>>:メンテナンスコント
ローラ
アクティブ :機能コ
ントローラ<<論理デバ...
:かぎデバイス<<singleton>>:装置状態<<論理デバ...
<<論理デバ...
<<論理デバ...
:ICカード挿入デバ :クレジットカードデ :紙幣入出力デバ
イス
バイス
イス

かぎを開ける()
かぎオープン()
かぎオープン()
強制終了する()
イベントを送信する(イベント)

処理中 ～続き～()イベントを待つ() :イベント

強制終了に必要な処理をする()

処理を終了する()処理を開始する()
カードロックを解除する()
クレジットカードを排出する()
取り込み中の紙幣を排出する()
ボタンイベントハンドラを登録する(ボタンイベントハンドラ, byte)

図29

BCE パターンを用いたモデル

42<<utility>>:UI

交通 IC カードチャージ機

かぎクローズ時のシーケンス
sd かぎクローズ:ICカードチャージ機:メンテナンスコント
ローラ<<utility>>:UI<<論理デバ...
:かぎデバイス<<singleton>>:装置状態:メンテナー
かぎを閉める()
かぎクローズ()
かぎクローズ()
イベントを送信する(イベント)

図30

43

PIM 設計モデル

組込み分野のための UML モデルカタログ

ユースケースシーケンス
UC1-1 全体のシーケンス
sd UC 1 - 1<<control>>:ICカードチャージ機<<control>>:待機コントローラ<<論理デバ...
:ICカード挿入デバイス

ref
待機コントローラ (IC カード挿入待機)

処理を開始する()refユーザー利用処理コントローラ

処理を終了する()処理を開始する()

ref
取り出しコントローラ

処理を終了する()処理を開始する()

ref
後処理コントローラ

処理を終了する()

図31

相互作用使用

記載ページ

待機コントローラ40

ユーザー利用処理コントローラ

45

取り出しコントローラ

48

後処理コントローラ

49

BCE パターンを用いたモデル

44

交通 IC カードチャージ機

UC1-1 ユーザー利用処理コントローラ

45

PIM 設計モデル

組込み分野のための UML モデルカタログ

図32

相互作用使用

記載ページ

UI を表示する

39

BCE パターンを用いたモデル46

交通 IC カードチャージ機

UC1-1 代替パス A-01
sd 代替パス A- 0 1:ユーザー<<facade>>:ICカードシステ
ム<<control>>:ユーザー利用処理コントローラ<<論理デ...
:ICカード挿入デバイス<<control>>:ICカード処理設
定コントローラ<<論理デ...
:紙幣入出力デ
バイス<<論理デ...
:取り消しボタンデバイス

ボタン押下()
処理を中断する()イベントを送信する(イベント)

カードロックを解除する()

取り込み中の紙幣を排出する()

図33

47

PIM 設計モデル

組込み分野のための UML モデルカタログ

UC1-1 取り出しコントローラ
sd 取り出しコントローラ<<control>>:取り出しコントロー
ラ

:ユーザー

<<論理デバ...
:ICカード挿入デバ
イス<<論理デバ...
:紙幣入出力デバ
イス

処理を開始する()
イベントハンドラを登録する(ICカードイベントハンドラ, byte)

釣り金額をユーザー利用ジョブから取得()

alt

イベントハンドラを登録する(紙幣入出力イベントハンドラ, byte)[代替A-02]

ストック中の紙幣を排出する(int)

イベントを待つ() :イベント

紙幣取り込み完了(int)ref
UIを表示する (チャージ完了後の画面)

イベントを待つ() :イベント

ICカード取り出し()処理を終了する()
alt イベントハンドラの登録を解除する(紙幣入出力イベントハンドラ)[代替A-02]

イベントハンドラの登録を解除する(ICカードイベントハンドラ)

図34

相互作用使用

記載ページ

UI を表示する

39

BCE パターンを用いたモデル48

交通 IC カードチャージ機

UC1-1 後処理コントローラ
sd 後処理コントローラ<<control>>:後処理コントローラ<<utility>>:チャージ機UIユー
ティリティ<<singleton>>:UI処理を開始する()

ref
UIを表示する (表示内容の消去)押されたボタンの情報をユーザー利用ジョブから取得()

ボタン消灯情報の取得() :UI情報

UI情報を設定する(UI情報)処理を終了する()

図35

相互作用使用

記載ページ

UI を表示する

39

49

PIM 設計モデル

組込み分野のための UML モデルカタログ

UC-4 全体のシーケンス
sd UC 4<<control>>:ICカードチャージ機<<control>>:待機コントローラ<<論理デバイス>>:ICカード挿入デバイスref
待機コントローラ(IC カード挿入待機時)処理を開始する()refユーザー利用処理コントローラ(履歴表示)

処理を終了する()処理を開始する()

ref
取り出しコントローラ

処理を終了する()シーケンス図「UC1-1取り出しコントローラ」と同じシーケンスです。

ref

処理を開始する()

後処理コントローラ
処理を終了する()シーケンス図「UC1-1後処理コントローラ」と同じシーケンスです。

図36

相互作用使用

記載ページ

待機コントローラ40

ユーザー利用処理コントローラ

45

取り出しコントローラ

48

後処理コントローラ

49

BCE パターンを用いたモデル

50

交通 IC カードチャージ機

UC4 ユーザー利用処理コントローラ
sd ユーザー利用処理コントローラ(履歴表示):ユーザー<<control>>:ユーザー利用処
理コントローラ<<論理デ...
:ICカード挿入デバイス<<control>>:ICカード処理設定コ
ントローラ<<control>>:ICカード処理コン
トローラ

処理を開始する()
カードロックをかける()ref
IC カード処理設定コントローラ(履歴表示)

カードロックを解除する()ref
IC カード処理コントローラ(履歴表示)

処理を終了する()

図37

相互作用使用

記載ページ

IC カード処理設定コントローラ

52

IC カード処理コントローラ

53

51

PIM 設計モデル

組込み分野のための UML モデルカタログ

UC4 IC カード処理設定コントローラ
sd IC カード処理設定コントローラ(履歴表示):ユーザー<<control>>:ユーザー利用処理
コントローラ<<論理デ...
:ICカード挿入デバイス<<control>>:ICカード処理設
定コントローラ:サービス
仕様<<control>>:ICカード処理コ
ントローラ<<facade>>:ICカードシステ
ム

ユーザー利用ジョブをセットする(ユーザー利用ジョブ)処理を開始する()
ICカード情報を取得する(ICカード) :ICカード情報

ICカードが不正・その他利用不可であるか()ref
UIを表示する(案内メッ セージの表示画面)
サービス仕様を取得する() :サービス仕様
サービス仕様の上限額と現在の金額を比較して、光るボタンを決
める

判定()

ref
UIを表示する(履歴表示ボタンとチャージ可能なボタンを点灯)

イベントハンドラを登録する(ボタンイベントハンドラ, byte)
イベントを待つ() :イベント

メインとは異なるコンテキスト(割り込み等)
押下()
ボタン押下(ボタン種別)
イベントを送信する(イベント)

ユーザ利用ジョブを更新する() :ユーザー利用ジョブ
押されたボタン種別(今回は履歴表示)をユーザ利用ジョブに登録する

ユーザー利用ジョブを取得する() :ユーザー利用ジョブ処理を終了する()

イベントハンドラの登録を解除する(ボタンイベントハンドラ)ref
UIを表示する(履歴表示ボタンと金額ボタンを消灯する)

図38

相互作用使用

記載ページ

UI を表示する

39

BCE パターンを用いたモデル

52<<論理デ...
履歴表示 :ボタンデバイス

交通 IC カードチャージ機

UC4 IC カード処理コントローラ
sd IC カード処理コントローラ(履歴表示):ユーザー<<control>>:ユーザー利用処理
コントローラ<<論理デ...
<<contro...
:ICカード挿入デ :ICカード処理コ
バイス
ントローラ

<<facade>>:ICカードシステ
ム<<utility>>:ICカード利用履歴ユー
ティリティ<<論理デ...
:発行ボタンデバ
イス

ユーザー利用ジョブをセットする(ユーザー利用ジョブ)処理を開始する()
ICカード利用履歴を取得する(ICカード) :ICカード利用履歴

パネル表示情報を取得する(ICカード利用履歴) :パネル表示情報

ref
UIを表示する(パネルに利用履歴を表示する)

ref

UIを表示する(発行ボタンを点灯する)
イベントハンドラを登録する(ボタンイベントハンドラ, byte)

イベントハンドラを登録する(ICカードイベントハンドラ, byte)
イベントを待つ() :イベント

ICカードを取り出す()

メインとは異なるコンテキスト(割り込み等)
ICカード取り出し()
イベントを送信する(イベント)

このシーケンス図では、ユー
ザによりICカードが取り出された場合の処理を示す。
発行ボタンが押された場合はこの後「UC5:ICカードの利用履歴を印刷する」の処理となる。

ユーザ利用ジョブを更新する()
ICカードが取り出されたことをユー
ザ利用ジョブに登録する。

ユーザー利用ジョブを取得する() :ユーザー利用ジョブ処理を終了する()
イベントハンドラの登録を解除する(ボタンイベントハンドラ)
イベントハンドラの登録を解除する(ICカードイベントハンドラ)ref

UIを表示する(発行ボタンを消灯する)

図39

相互作用使用

記載ページ

UI を表示する

39

53

PIM 設計モデル

組込み分野のための UML モデルカタログ

UC7-1
sd UC 7 - 1:ICカードチャージ機:メンテナンスコントロー
ラ<<utility>>:UI:メンテナー<<論理デバイス>>
1000円 :金額ボタンデバイス<<control>>:使用停止コントローラ<<論理デバイ...
:ICカード挿入デバイス

ref
かぎオー プ ン

ref
UIを 表示す る （メン テ ナン スメニュー ）イベントを待つ() :イベント

押下()
ボタン押下(ボタンデバイス)
ボタン押下(ボタン種別)
イベントを送信する(イベント)

使用可不可フラグを使用不可にする()

ref
UIを 表示す る （使用不可にし ま し た）

イベントを待つ() :イベントref
かぎクロ ー ズ

使用不可モードが選択されているか() :boolean

処理を終了する()
ボタンイベントハンドラを解除する(ボタンイベントハンドラ)処理を開始する()

カードロックをかける()ref
UIを 表示す る （使用停止）

イベントを待つ() :イベント

図40

相互作用使用

記載ページ

かぎオープン

42

UI を表示する

39

かぎクローズ

43

BCE パターンを用いたモデル

54

交通 IC カードチャージ機

UC8-1
sd UC 8 - 1:メンテナー<<control>><<control>>:ICカードチャージ :メンテナンスコント機
ローラ<<utility>>:UI<<論理デバ...
5000円 :金額ボタ
ンデバイス<<singleton>>:装置<<entity>>:装置利用履歴<<utility>>:レシート出力情報<<論理デバ...
:装置利用履歴ユ:レシート出力デバ
ーティリティ
イス

ref
かぎオープンref
UIを表示する（ メンテ ナンスメニュ ー）
イベントを待つ() :イベント

押下()
ボタン押下(ボタンデバイス)
ボタン押下(ボタン種別)
イベントを送信する(イベント)

印紙の残量を取得する() :残量
alt 例外フロー： E- 0 1
ref[レシート用紙切れ]

UIを表示する（ レシ ート用紙切れメッ セージ ）イベントを待つ() :イベント
印紙補給()
ref
UIを表示する（ メンテ ナンスメニュ ー）ref
UIを表示する（ 利用レポート印刷中）装置利用履歴を取得する() :装置利用履歴

装置利用履歴を追加する(装置利用)

印刷情報を取得する(装置利用履歴) :レシート出力情報
生成()
参照()

レシートを出力する(レシート出力情報)
参照()

イベントを待つ() :イベントref
かぎクローズ

使用不可モードが選択されているか() :boolean

処理を終了する()
ボタンイベントハンドラを解除する(ボタンイベントハンドラ)

図41

相互作用使用

記載ページ

かぎオープン

42

UI を表示する

39

かぎクローズ

43

55

PIM 設計モデル

組込み分野のための UML モデルカタログ「交通 IC カードチャージ機」
初版発行 ２０１３年（平成２５年）１２月２４日
発行者 UMTP, Japan
編 著 組込みモデリング部会
印刷
UMTP, Japan
東京都渋谷区代々木 1 丁目 22 番 1 号
http://www.umtp-japan.org/

Copyright(c)2013-2016 consortium for UML based Modeling Technologies Promotion All Rights Reserved