UMLの手軽で有効な利用方法
ところで、「モデリングを行い、モデルを作成する」ことのメリットは、何でしょうか。筆者が最も強く感じるメリットは、「コミュニケーションのサポートとなる」ことです。
モデリングする人(モデラー)は、モデリングという活動を通して、対象に存在する要素や要素間の関係、状態などを整理し、対象を正確に把握できます。
一方、情報を受け取る側の人にとっても、対象がビジュアライズ(可視化)されていることによって、口頭や文章、ソース・コードなどで説明を受けるよりも、より直観的に本質を理解できます。
さらに、UMLのような形式的な表記法に基づいて厳密に対象を表現することで、あいまいさの少ない情報伝達が可能になります。
このように、モデリングには、情報を伝達する側、受け取る側の双方にとってメリットがあるうえ、情報伝達時のコミュニケーション・ロスを軽減できるのです。
対象が単純な場合や、伝える目的が1つの場合は、1つの視点で描かれた1種類のモデルで間に合うかもしれません。しかし、対象が複雑な場合は、さまざまな視点に立ったモデルを作成しなければ、対象についての情報を正確に伝えられません。
しかも、今日のソフトウエアが対象とするビジネスの仕組みや、ソフトウエアに求められること(要求)、ソフトウエア自体の内部構造は、とても複雑です。このため、ソフトウエア開発においてモデリングを行う際は、さまざまな視点で対象をとらえる必要があります(図2)。
図2: さまざまな視点でソフトウエアをとらえる(クリックで拡大) |
2.2. ソースコード読解時にモデルを用いる
UMLモデルは、新しく構築するソフトウエアの情報を表すために使えるだけでなく、既存のソース・コードを読解する際にも役立ちます。
既存のソース・コードから、ある処理の流れを読み解く例を考えてみましょう。クラス数がとても多い場合や、クラス間の関係が複雑な場合、ソース・コードだけで処理の流れを理解することは、とても困難です。
ソース・コードの読解時にUMLモデルを記述することによって、この問題を解決できます。UMLモデルを記述すれば、クラスの責務やインタフェース、オブジェクト間の相互作用などを明確化できます。
このように、ソース・コードからモデルを作成することを、「リバース・エンジニアリング」と呼びます。多くのモデリング・ツールには、リバース・エンジニアリングの機能があります。
しかし、ツールを用いたリバース・エンジニアリングは、ソース・コードのすべてをUMLモデルに変換してしまいます。このため、注目したい一部の情報だけをモデル化するには、何らかの工夫が必要です。