 |
はじめるUML 第2回 |
2005.4.1 掲載
モデル要素を整理整頓しよう!
今回からはUML2.0で変更となった点を中心に、具体的な利用方法を紹介していきます。 まずはOMGのUML仕様書「UML2.0 Superstructure Specification」の第7章Classesの中から、パッケージ図を見ていきます。
パッケージ図は、クラスなどのモデル要素が、どのパッケージにグループ化されているかを表現する図です。パッケージ間の依存関係や、入れ子構造も表現することができます。パッケージを用いてモデル要素をグループ化することで、モデル要素を名前空間ごとに管理できるので、各モデル要素の受け持つ役割を明確にすることができます。さらに、パッケージ単位での再利用も行えるようになります。 UML2.0では、このパッケージ単位での再利用をより行いやすくするために、「パッケージマージ」という概念が追加されました。

パッケージマージは、マージするパッケージからマージされるパッケージに向かって破線の矢印を引き、ステレオタイプ≪merge≫を付加して表現します。上の図は、パッケージAとパッケージBをマージして、パッケージCを作成することを表しています。
パッケージ単位での再利用は、パッケージマージの他に、「パッケージインポート」を用いても行うこともできます。それでは、「パッケージインポート」と「パッケージマージ」の違いはどこにあるのでしょうか。
両者の一番の大きな違いは、パッケージ内の要素に同じ名前の要素が存在した場合の対処方法です。パッケージインポートの場合、名前の衝突が発生すると元々の要素が隠されてしまいます。例えば、インポート元のパッケージに操作A1を持つクラスAがあり、インポート先のパッケージに操作A2を持つクラスAがあった場合、パッケージインポートを行うと、操作A2を持つクラスAが見えるようになります。
これに対してパッケージマージの場合は、名前の衝突が発生すると、汎化の関係となり、両方のクラスの特徴を持つクラスとなります。上記の例では、パッケージマージを行うと、クラスAは操作A1、操作A2の両方の操作を持つようになります。 パターンウィーバー2.0では、このパッケージマージの機能をサポートしています。前掲のモデルに対して、パッケージマージを行った結果を以下に示します。 
パッケージマージの機能をツールがサポートすることで、既存のモデルを再利用しやすくなったのではないかと思います。
■筆者紹介 坂本武志/Takeshi Sakamoto 株式会社テクノロジックアート テクニカルデプト システムコンサルタント
パターンウィーバー(PatternWeaver) ver2.0
- UML2.0 Superstructureの全てのダイアグラムに対応
- Eclipse3.0にプラグインとして統合
- 表現力の大幅な向上
- 新規プラグインの追加
●商品に関するお問い合わせ 株式会社テクノロジックアート e-mail : pw@tech-arts.co.jp http://pw.tech-arts.co.jp/pw/index.html
|