目のつけどころが"ソフト"でしょ 開発プロセス考13 ――統合モデル化言語とは

伊藤 昌夫

tag: 組み込み

コラム 2002年7月11日

 統合モデル化言語という名まえを持つ「UML(Unified Modeling Language)」は,主としてソフトウェアの分析・設計において成果物を記述するために用いられます.最近では,UMLは一つの症状を表すことばにもなっています.それは,UMLが当初の意図を超えてあらゆる局面で用いることのできる言語であるという認識であったり,UMLを理解すればオブジェクト指向がわかるという幻想であったり,という所に現れています.

●UMLとオブジェクト指向の関係

 UMLではモデル図が全部で九つあるのですが,その一つであるクラス図について少し考えてみます.UMLではクラスは図1(a)のように記述します.最初に書かれるクラス名というのは,表札のようなものです.そのクラスは,属性と操作によって記述されます.これは,オブジェクト指向を抽象データ型としてとらえるとわかりやすくなります(図1(b)).抽象データ型は,抽象データ構造と操作から成り立つとします.抽象データ構造は,直接外部と接続することはできません.これが情報隠ぺいになります.操作は,その抽象データ型に関する操作になります.

DWM0055itom23zu1.jpg
〔図1〕UML のモデル図の考えかた

 「抽象」だらけですが,単純なデータ型で考えるとわかりやすくなります.例えば複素数というデータ型を考えて,その構造を実部と虚部を表すデータからなる構造として定義します.複素数型どうしの演算,例えば加算は,実部は実部で虚部は虚部で加えることになりますが,それは加算と名づけられた操作のところに定義されます.

 どうしてもある複素数の実部がいくつかを知りたくなったらどうするか? 情報隠ぺいが成立していますから,直接知ることはできません.それを知る必然性があるのであれば,単にその値を返すだけの操作(アクセッサと呼ばれる)を用意します.

 これがクラスのいちばんの基本になります.そのことが先のUMLの図では直接的に表現されていません.一つには構造を含んだ図を書きづらいということもあるのですが,直接属性にアクセスしたいということも,絶対にないとは言えないからです.

 さて,ここまではVHDLなどを書かれている方にとっては何でもないことかもしれません.抽象データ型の考えかたはAda言語によく現れていて,VHDLはそのAda言語をベースにしているからです.UMLは,実際のプログラムの構造を表すほかに,ソフトウェアの世界ではシステムの分析にも用いられます.このときは,プログラムの構造を表現するということのほかに別の考慮が必要になるだろうというのが,今回の主題です.

●何を中心に分析するかを意識することが大事

 システムを記述するとき,ソフトウェアの世界でこれまで主流だった方法は,データ中心の考えかたです.特に事務系の応用では典型的で,実体-関連図がこれに相当します.先ほどのクラス図のところで,操作の欄(コンパートメント)を無視すると,ほとんど実体-関連図と同様の記述が可能になります.

 もちろん,UMLもしょせん道具なので,どう使うかは勝手なのですが,先のクラスが抽象データ型だということを敷延する,すなわち操作を重視すると少し違った表現も可能になります.この方法では,逆に属性の欄を無視してみます.ある型があって,その型には操作が付随していると見るわけです.先ほどの例だと複素数(分析段階で出てくることはほとんどないが...)は,加算ということに関して操作を持っています.すなわち自身の加算については責任を持つという言いかたをするわけです.これは,責任駆動と呼ばれる手法になり,一般のアプリケーションの設計に用いた場合,データ中心(ここでは属性中心くらいの意味)より良い構造が得られるという結果が報告されています.

 UMLはやはり単なる図式としてとらえるべきでしょう.その道具を使って何を表現するかは,自分が何に関心を持っているか,何を中心に分析・設計を行うかということを決めることが大事で,それなくしては道具(UML)も使い切れないということになります.いくら「統合」という名まえが付いていてもです.言い換えれば,広い範囲で使用されることを意図しているというまさにそのことによって,利用するときには,自分がどういう意図で使うかを明確にするという注意が必要になるのです.

(本コラムはDESIGN WAVE MAGAZINE 2002年6月号に掲載されました)


◆筆者プロフィール◆
伊藤昌夫(いとう・まさお).自動車会社,航空機関連会社のソフトウェア・エンジニアを経て,ニルソフトウェアを設立.ソフトウェア・プロセスおよび開発環境が専門で,そのためのコンサルテーションおよびツールの提供を行っている.設計における人間の認知活動に興味を持っている.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日