クラス図を用いてUMLによるモデリングを行うテーマとしては、「レイヤ構成」「クラス/ファイルの依存関係」「設計者/実装者向けのガイドライン」があります。今回は、レイヤ構成とクラス/ファイルの依存関係について説明します。

レイヤ構成

アーキテクチャ設計の主要な作業に、レイヤの設計があります。アーキテクトは「どのようなレイヤが必要か」「各レイヤにどのような責務を持たせるか」「どのようなフレームワークを利用するか」「どのようなクラスを実装するか」を定義します。

以下の図は「配達予約システム」のレイヤ構成を定義しているクラス図です。この図では、レイヤに対応付けたパッケージを定義し、各パッケージにおいて実装しなければならないクラスとインタフェースと成果物を定義し、さらに各クラスで継承するスーパークラス/依存するフレームワークのパッケージを定義しています。

なお、JavaやC#の「継承」がUMLの「汎化」に当たり、Javaの「import」およびC#の「using」がUMLの「依存」に当たります。

レイヤ構成を示したクラス図

クラス/ファイルの依存関係

近年主流のフレームワークは(以前ほどではないにしろ)設定ファイルを活用することでクラスなどの依存関係を疎にし、対象システムの保守性を向上させています。ところが、いざ保守担当者がメンテナンスを行おうとすると、ソースコードだけでクラスやファイルなどの依存関係を把握するのは非常に手間がかかるようになってしまいました。こうした環境の下で、依存関係を理解できていない担当者が保守することになれば、仕様変更に対するソースコードの変更漏れが生じてしまいます。

このため、以下の図のようなクラス/ファイルの依存関係に焦点を当てたクラス図を作成し、開発者や保守担当者に十分な情報を提供することが大事です。ちなみに、この図ではstruts-config.xmlファイルがjspファイルとActionクラスに依存していること、mytaku.diconファイルがSeriviceやDaoのインタフェースや実装クラスに依存していることについて記述しています。

クラス/ファイルの依存関係を示したクラス図

『出典:システム開発ジャーナル Vol.5(2008年7月発刊)
本稿は原稿執筆時点での内容に基づいているため、現在の状況とは 異なる場合があります。ご了承ください。