本連載は、未経験の人でもUMLを使いこなせるようになることを最終目標として、UMLについてゼロから解説しています。今回から数回にわたり、架空の宅配便会社「まいにち宅配便」の配達予約システムの開発プロジェクトを題材に、設計モデル(詳細設計のモデル)を作成する方法、設計モデルを実装につなげる方法、本連載で作成してきたさまざまなモデルをテストで活用する方法について解説します。
UMLはさまざまなオブジェクト指向方法論を源流としています(注1)。それ故、UML初心者の中には、UMLがオブジェクト指向言語を使った開発の詳細設計工程において万能な手法だと勘違いしている方もおられるようです。残念ながら、UMLは他の手法と同じく、"銀の弾丸"ではありません。
注1:オブジェクト指向方法論としては、ジェームズ・ランボーの「OMT(Object Modeling Technique:オブジェクトモデル化技法)」、グラディ・ブーチの「Booch method」、イヴァー・ヤコブソンの「OOSE(Object Oriented Software Engineering)」が有名。
UMLはオブジェクト指向言語の特徴でもあるクラスや関連やメッセージといった概念を備えているという点で、オブジェクト指向言語と相性が良いと言えます。しかし、オブジェクト指向にはこうした独自の仕組みに加えて、オブジェクト指向以外の言語から脈々と受け継がれている制御文、変数、演算子といった仕組みが存在します。
これらはオブジェクト指向言語によるメソッドの設計・実装に用いられますが、UMLのサポートは十分ではありません。したがって、旧来の言語から受け継いでいる仕組みを含んでいる設計の成果物を作成する必要がある場合は、フローチャートや詳細設計書といった従来の手法も併用することをお勧めします。
では、メソッドの設計・実装では役に立たないとしたら、UMLはどのような点でオブジェクト指向の設計・実装に役立つのでしょうか。
オブジェクト指向言語で開発する場合、実装単位はあくまでクラスです。しかし、上流工程の主要な成果物は機能に関するものであり、また、実装・単体テスト後のテストの主体および顧客から見たリリースの対象も機能です。
つまり、設計者や実装者が自分以外の利害関係者の要求に応えるには、機能を意識して作業を行わなければいけません。その際、実装単位であるクラスやメソッドを機能の切り口でつなぎ合わせて考える必要が生じます。
ここにUMLがオブジェクト指向設計・実装に役立つ理由があります。UMLのパッケージ図を使えば複数のパッケージの関係を、クラス図を使えば複数のクラスの関係を、シーケンス図を使えば複数のクラスの相互作用を表現できます。
これらの図を機能の単位で記述することによって、設計者は機能の観点からクラスを設計できるようになり、また、実装者は機能の観点から実装するクラスを理解できるようになるのです。
さて、前置きが長くなってしまいましたが、今回はUMLが得意とするオブジェクト指向設計に関する設計モデルを作成する方法、設計モデルから実装につなげる方法について解説します。
『出典:システム開発ジャーナル Vol.6(2008年9月発刊)』
本稿は原稿執筆時点での内容に基づいているため、現在の状況とは異なる場合があります。ご了承ください。