UMLって何のためにあるの? - (page 3)

小笠原記子(ウルシステムズ)

2006-12-22 11:00

UMLの用途

 実は、UMLは記法を決めているだけでその使い方までは定義していません。つまり、UMLをどう使うかは利用者に任されているため、記述方法さえ守れば自由にUMLを使って構わないのです。とはいえ、実際のシステム開発の現場では主に3つの用途で使われることが多く、UMLの使い方はそれぞれ異なります。

用途1.モデリング

 要件定義フェーズでは、現行システムを理解することや、「何を作るか?」を意識してユーザーの要件を聞き出すために、モデリングという技法を使ってシステムの全体像を描く作業をすることがあります。この作業を行う人のことをモデラーと呼び、モデリングによって作成する図のことを概念モデルと呼びます。概念モデル自体はどのような表現をしても構わないのですが、一般的にはUMLのクラス図を使うことが多いようです。これは、後の設計フェーズを担当する設計者にとって理解し易いため、というのが理由のひとつです。

 UMLを使ったモデリングでは、ユーザーの頭の中にある要件を情報として整理し、その情報同士の関係を定義して図式化することでシステムの要件を全体像として捉えます。実際にこの作業を見ていると、まるで最初からそこに存在したかのようにクラス図ができあがっていく様子にとても驚きます。また、クラス図の読み方にいくつか決まり事はあるものの、覚えるべき事はほんのわずかで直感的に判断できるため、UMLに慣れていないユーザーにとっても理解しやすく、ユーザーからの概念モデル(クラス図)に対する評価は総じて高いです。

 もし、クラス図を使わずに言葉だけでユーザーの要件を整理しようとすると、部分的な要件の詳細化はできるものの、全体を把握することが難しく、「要するに何か」がぼやけてしまうデメリットがあります。一方、クラス図をユーザーと一緒に作り上げていくモデリングでは、全体像が視覚的に理解でき、さらにユーザー自身が気付かなかった課題も発見できるというメリットがあります。

 ただ、モデリングの段階で作成するクラス図は、次に説明する設計レベルのクラス図に比べて非常に粒度が粗く、情報も不足していることが多いため、そのままではプログラミングすることができません。その代わり、「だいたいこんな感じ」というレベルに留めることで、早いうちからユーザーと開発者の間でシステムに対する要求を合意できるため、要件定義フェーズでは非常に有効です。

 このように、モデリングではUMLのクラス図を使うことが一般的ですが、抽象度の高いクラス図の情報を具体化して補うステートマシン図やオブジェクト図もよく使われます。なお、システム機能の洗い出しをするためにユースケース図を使うこともありますが、一般の開発現場では機能一覧で代用することの方が多いようです。

用途2.設計

 このように、要件定義フェーズにUMLを使って作成した図は、設計フェーズでより具体化されます。例えば、概念モデル(クラス図)やステートマシン図からデータベースの論理設計を行なったり、実装イメージに近づけるためにクラスの詳細化を行なったりします。

 設計フェーズでは「どのようにして作るか?」を意識しますが、Javaなどのオブジェクト指向言語で開発することが前提となっている場合、UMLを使って設計図(クラス図やシーケンス図など)を書くことが多いです。実際に動くモノを作るための設計なので、モデリングに比べてより厳密性が求められるのですが、このとき表記方法が明確に定められているUMLが非常に役に立ちます(但し、業務仕様など個別のロジックをUMLで表現することは出来ません)。

 設計フェーズにおいてクラス図を使う一番のメリットは、クラス間のインタフェースを早い段階から明確にできる点です。設計フェーズで書くクラス図には、クラスの属性や関係だけでなく操作も表すことになっています。例えば、受注クラスに受注登録という操作を持たせることで、そのクラスを使って受注情報を登録できることが分かります。ここでは、操作を実行するために必要な(入力)情報と、実行結果の(出力)情報を明らかにしてクラスのインタフェースを定義するのですが、その操作自体の中身を詳しく示す必要がないため、必要な情報を最低限の表記で示すことができます。

 なお、設計フェーズでクラス図やシーケンス図などを作ることは必須ではなく、比較的小規模のシステムでかつ開発メンバー間で予め設計方法が共有できている場合には、必要に応じてコーディング済のプログラムからリバースしてクラス図などを作成し、設計書を後から作成することもあります。リバース機能は、この後説明するツールでサポートされています。

用途3.プログラミング

 実行環境に依存しないUMLモデルから、ツールを使って実際に動くプログラムに変換する技術のことをMDA(Model Driven Architecture)と呼びます。MDAに則ると、モデリング→設計→プログラミングへの変換を全てUMLだけでできるようになるのです。

 しかし、実際の現場ではMDAはほとんど普及しておらず、相変わらずプログラマーが設計書を見ながら手でコーディングするスタイルがいまだに続いています。現時点では、ツールそのものがサポートしている技術が未成熟であることもあり、実際の現場でMDAが積極的に使われることになるのはまだまだ先になりそうです。

UMLツールの種類

 UMLで図を書く際には一般的にツールを利用します。ツールには無料で使えるものから有償のものまでさまざまですが、どれもUMLで定められている記法に従った図を書く機能を一通り備えています。

 日本国内では、チェンジビジョンの無償UMLツール「JUDE/Community」がよく使われています。現時点でこのツールはUML1.4にしか対応していませんが、基本的な利用であれば問題なく使えます。有償版の「JUDE/Professional」はUML2.0に対応しています。

 他に、有償ツールでお手頃なものにはスパークスシステムズジャパンの「Enterprise Architect」やマイクロソフトの「Visio」があります。また、プログラミングをしながらもっと手軽に使いたい場合には、ソースコードとの連携が簡単なオープンソースの開発ツール「Eclipse」のプラグイン(無償)も多数提供されています。

おわりに

 UMLの記法は、誰が見ても一通りの解釈しかできないように厳密に定義されています。これは一見堅苦しくも思えるのですが、その厳密さによって曖昧さが排除できるメリットは非常に大きなものです。私は、UMLの存在意義は、システム化対象とする実務の世界をシステムの世界へ変換するための手段を提供することであると考えています。全ての開発者がUMLを通して同じものを見ることができるようになれば、情報の伝達はもっとスムーズになるはずです。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ホワイトペーパー

新着

ランキング

  1. セキュリティ

    「デジタル・フォレンジック」から始まるセキュリティ災禍論--活用したいIT業界の防災マニュアル

  2. 運用管理

    「無線LANがつながらない」という問い合わせにAIで対応、トラブル解決の切り札とは

  3. 運用管理

    Oracle DatabaseのAzure移行時におけるポイント、移行前に確認しておきたい障害対策

  4. 運用管理

    Google Chrome ブラウザ がセキュリティを強化、ゼロトラスト移行で高まるブラウザの重要性

  5. ビジネスアプリケーション

    技術進化でさらに発展するデータサイエンス/アナリティクス、最新の6大トレンドを解説

ZDNET Japan クイックポール

注目している大規模言語モデル(LLM)を教えてください

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]