Silverlight をインストールするには、ここをクリックします*
Japan変更|すべてのMicrosoft のサイト
MSDN
|MSDN ライブラリ|デベロッパー センター|ダウンロード情報|開発ツール製品|コミュニティ|ご意見・ご要望|サイトマップ
MSDN Home > MSDN アカデミック アライアンス > 第 3 回:Visio によるクラス図設計入門

第 3 回:Visio によるクラス図設計入門

〜 Visio によるオブジェクト指向設計入門 〜

3.1 はじめに

システム設計において基礎となるクラス図は、システムの構成をグラフィカルに把握できるため、システム開発において重要な役割を担います。そこで、本章では、UMLダイアグラムの中でもクラス図の設計方法をチュートリアル形式で説明します。また、Visio によるコード自動生成機能について説明します。コード自動生成機能を使用することにより、システム設計フェーズからシステム開発フェーズにスムーズに移行できます。コード自動生成機能では、Visual C# .NET、Visual Basic .NET、Visual C++ .NETの 3 種類のコードを生成することができます。本連載では、Visual C# .NET のコード自動生成機能について詳しく説明します。

3.2 Visio の作図支援機能

3.2.1 Visio の CASE ツールの特徴

Visio の最近のバージョンでは、オブジェクト指向ベースのソフトウェアエンジニアリングを支援する CASE ツールとしての機能が充実してきました。CASE ツールの機能としては、効率よく作図するための機能や、コードからモデル図を作図する機能、モデル図からコードを作成する機能などがあります。本章では、Visio の CASE ツールの機能の中でも、効率よく作図するための機能とシステム設計から開発までをシームレスに行うための機能について説明します。

3.2.2 Visio の UML 機能紹介

Visio には、UML モデル図テンプレートなどUMLの記述の効率化を図るための機能が用意されています。本項では、Visio の機能の中でも、【UML クラス プロパティ】ダイアログボックスとモデルエクスプローラについて説明します。

(1) 【UML クラス プロパティ】ダイアログボックス

Visio には、シェイプに属性を付与するために、【UML 関連プロパティ】ダイアログボックスや【UML クラス プロパティ】ダイアログボックス、【UML アクター プロパティ】ダイアログボックスなど様々なダイアログボックスが用意されています。例えば、【UML クラス プロパティ】ダイアログボックスでは、クラスの詳細やクラスの所有する属性や操作などを指定項目に入力するだけで容易に設定できます。【UML クラス プロパティ】ダイアログボックスの表示方法を図 1 に示します。

図 1【UML クラスプロパティ】ダイアログボックスの表示方法

図 1【UML クラスプロパティ】ダイアログボックスの表示方法

(2) モデルエクスプローラ

モデルエクスプローラとは、ツリービュー形式で、システムの構成を表示する機能です。モデルエクスプローラを利用することにより、現在設計しているシステムのモデルの階層をグラフィカルに把握できます。そのため、作図をスムーズに行うことができ、クオリティの高い UML モデル図を作図できます。また、ユーザは、モデルエクスプローラ上で、モデル要素の追加や削除、プロパティの設定ができます。この他にも、図面ページにモデル要素をドラッグ & ドロップすることにより、モデル要素をリアルタイムに作図できます。モデルエクスプローラの表示方法を図2に示します。

図 2 モデルエクスプローラの表示方法

図 2 モデルエクスプローラの表示方法

3.3 クラス図設計チュートリアル

本節では、オブジェクト指向に沿ったシステム設計や開発を行う場合に重要な位置を占めるクラス図の設計方法をチュートリアル形式で説明します。クラス図を作図することにより、設計者は、システム全体の構成を明確に把握できます。

3.3.1 オブジェクト指向設計とクラス図

クラス図は、オブジェクト指向設計において最も重要なダイアグラムであり、システム設計の基本となる図です。クラス図を記述することにより、クラス間の静的な関係やクラスが持つデータや振る舞いを明確に表現できます。また、UML はオブジェクト指向に準拠した仕様であるため、UML で記述したクラス図に従ってプログラムを実装することにより、オブジェクト指向プログラミングを容易に実現できます。

3.3.2 UML クラス図作成チュートリアル

本節では、図書管理システムのクラス図をチュートリアル形式で説明します。図書管理システムは、図書や利用者の新規登録、図書の貸出や返却を行うシステムです。このシステムは、図書館の管理者のみが使用し、図書館の利用者は、管理人に申請することにより、図書の貸出や返却を行うことができます。図書管理システムのユースケース図を図 3 に示します。

図 3 図書管理システムのユースケース図

図 3 図書管理システムのユースケース図

(1) シナリオの作成

シナリオとは、システムを使用してユーザが実際に行う処理の具体的な流れを文章で表現したものです。シナリオは、開発するシステムの各ユースケースに対し 1 つ以上記述する必要があります。また、シナリオは、可能な限り詳しく記述する必要があります。しかし、開発するシステムの規模が大きい場合、オブジェクト間の関係が複雑になるため、シナリオは、要約して基本的な内容のみを記述します。

まず、図書管理システムの 「図書利用者の登録」 ユースケースについて記述したシナリオの例を示します。

○月○日初めて図書館を訪れた関大太郎さんは、図書館を利用するために、図書館の管理人である総情太郎さんに利用者登録をお願いしました。そこで、総情太郎さんは、関大太郎さんに名前、住所、電話番号を尋ね、入力端末に関大太郎さんの情報を入力しました。図書管理システムは、図書館利用者情報と照会し、登録済み利用者ではないことを確認後、新規利用者として関大太郎さんを登録しました。

次に、「新規図書の登録」 ユースケースについて記述したシナリオの例を示します。

○月×日新規図書が図書館に配達されました。そこで、図書館の管理人である総情太郎さんは、取扱図書情報と照会し、新規図書であるかを確認しました。確認の結果、新規図書であったため、総情太郎さんは、図書名、著者名、出版社名を入力し、新規図書として登録しました。

そして、「図書貸出」 ユースケースについて記述したシナリオの例を示します。

×月○日図書館の登録者である関大花子さんは、取扱図書である 「Visio と UML」 の本の貸出を希望しました。そこで、図書館の管理人である総情太郎さんは、入力端末に 「Visio と UML」 の図書 ID と利用者 ID を入力しました。図書管理システムは、「Visio と UML」が貸出可能であることを確認後、入力情報に従い図書履歴情報を更新しました。

最後に、「図書返却」 ユースケースについて記述したシナリオの例を示します。

×月×日図書館の登録者である関大花子さんは、貸出図書である 「Visio と UML」 の本を返却するために、図書館を訪れました。そこで、図書館の管理人である総情太郎さんは、入力端末に図書 ID、利用者 IDを入力しました。その後、図書管理システムは、入力情報に従い図書履歴情報を更新しました。

(2) クラスの抽出

クラスの抽出とは、クラス図を記述する場合に必要なクラスを決定することです。クラスの抽出には、3 つの手順を踏みます。まず、シナリオからオブジェクトを抽出します。オブジェクトは、シナリオ内の名詞や名詞句に着目して検討することにより抽出できます。図書管理システムのシナリオから抽出したオブジェクトの一覧を図 4 に示します。

図 4 シナリオから抽出したオブジェクトの一覧

図 4 シナリオから抽出したオブジェクトの一覧

次に、抽出したオブジェクトを抽象化し、クラスの候補を作成します。最後に、クラス候補が実際のクラスであるかを確認します。例えば、「同一の対象を表現していないか」 や 「システムのアクターを示していないか」、「クラスの状態を示していないか」 などを確認します。確認の終了したクラスから、実際にUMLで記述します。クラスの設定方法を図 5 に示します。また、図書管理システムに使用するクラスを図 6 に示します。

図 5 クラスの設定方法

図 5 クラスの設定方法

図 6 図書管理システムに使用するクラス

図 6 図書管理システムに使用するクラス

図 6 に示す通り、図書管理システムのクラスは、利用者クラス、管理データベースクラス、図書クラス、図書履歴クラスと入力クラスの 5 個です。各クラスの説明を次に示します。

利用者クラスは、シナリオから抽出した関大太郎さんと関大花子さんの各オブジェクトを抽象化することにより作成します。利用者クラスでは、氏名や住所など利用者のデータを管理・操作します。図書クラスは、シナリオから抽出した取扱図書と新規図書の各オブジェクトの状態を抽象化することにより作成します。図書クラスでは、図書名や著者など取扱図書のデータを管理・操作します。貸出履歴クラスは、シナリオから抽出した貸出図書の各オブジェクトの状態を抽象化することにより作成します。貸出履歴クラスでは、貸出中や返却遅延など、取扱図書の状態を管理します。ユーザインタフェースクラスは、シナリオから抽出した入力端末のオブジェクトを抽象化することにより作成します。ユーザインタフェースクラスでは、図書や利用者の登録や図書管理の場合に必要なデータを入力し、他のクラスに入力データを送信します。データベース管理クラスは、シナリオから抽出した図書利用者情報や図書情報、図書履歴情報のサブクラスを汎化することにより作成します。データベース管理クラスでは、図書管理システムに必要な全てのデータの操作や更新を行います。

図書管理システムの場合、総情太郎と管理者は、同一の実体を示すため、総情太郎をクラスとして定義できません。また、管理者は、システムのアクターであるため、図書管理システムのクラス図のクラスとして定義できません。

(3) 関連の設定

関連とは、クラス間の関係を表現するためのモデル要素です。関連をクラス図に記述することにより、クラス間の関係やクラスの役割、特定のクラスに関連するクラスの数を明示的に表現できます。関連の設定方法を図 7、関連を設定したクラス図を図 8 に示します。

図 7 関連の設定方法

図 7 関連の設定方法

図 8 関連を設定したクラス図

図 8 関連を設定したクラス図

図 8 に示す通り、図書クラスや利用者クラス、図書履歴クラスは、ユーザインタフェースクラスからデータを受け取ることにより、インスタンスが生成されます。そのため、図書クラスや利用者クラス、図書履歴クラスは、ユーザインタフェースクラスに依存しているといえます。

図書クラスや利用者クラス、図書履歴クラスがデータベース管理クラスにSQL 文を送信することにより、データベース管理クラスは SQL 文を Oracle や SQL サーバーなどの DBMS (DataBase Management System) に発行します。また、図書クラスや利用者クラス、図書履歴クラスは、SQL 文を発行した結果をデータベース管理クラスから受け取ります。以上のことより、図書クラスや利用者クラス、図書履歴クラスは、データベース管理クラスと関連します。

データベース管理クラスでは、データベースの管理や操作を行います。一方、図書クラスや利用者クラス、図書履歴クラスでは、各テーブルのレコードの管理や操作を行います。そのため、データベース管理クラス側の多重度を 「1」、図書クラスや利用者クラス、図書履歴クラス側の多重度を 「0..*」 に設定します。

(4) 操作と属性の設定

操作とは、オブジェクトが所有するメソッドです。また、属性とは、オブジェクトが所有するデータです。操作と属性には、性質として、public(+) や protected(#)、private(-) などのアクセス指定子を設定できます。ユーザは、操作と属性を設定することにより、クラスが所有するデータやメソッドを明示的に表現できます。

属性は、システム開発を行う場合、クラスが必要とする、もしくは所有するデータを記述します。また、クラスごとに所有する操作は、シーケンス図をもとにして記述します。シーケンス図におけるオブジェクト間のメッセージのやり取りが各クラスの所有する操作となります。「新規利用者の登録」 シーケンス図を図 9、「図書貸出」 シーケンス図を図 10 に示します。「新規図書の登録」 シーケンス図と 「図書返却」 シーケンス図については、「新規利用者の登録」 シーケンス図と 「図書貸出」 シーケンス図と同様の処理を行うため、省略します。

図 9 「新規利用者の登録」 シーケンス図

図 9 「新規利用者の登録」 シーケンス図

図 10 「図書貸出」 シーケンス図

図 10 「図書貸出」 シーケンス図

シーケンス図やシナリオをもとに、属性や操作を追加したクラス図を図 11 に示します。

図 11 属性や操作を追加したクラス図

図 11 属性や操作を追加したクラス図

3.4 コード自動生成

Visio には、記述した UML モデル図からコードを出力する機能があります (※)。本節では、Visio のコード自動生成機能の利用と使用方法について説明します。

※ この機能は、Visual Studio.NET Enterprise Architect に付属している Visio でのみ可能です。

3.4.1 コード自動生成の利点

コード自動生成機能とは、Visio で記述したUML モデル図から自動でクラスのコードを出力する機能です。コードを自動生成することによる利点は大きく分けて 2 つ挙げられます。

1 つ目は、Visio がシステム設計図からクラスの定義部分のコードを自動で生成するため、開発フェーズを大幅に短縮できます。そのため、多くの工数を設計フェーズに使用することができ、より品質の高いシステムを実現できます。2 つ目は、Visio がコードを自動で生成することにより、スペルミスやクラスの継承、定義などコードを記述する場合に発生するヒューマンエラーを最小限に抑えることができます。

3.4.2 Visio のコード自動生成機能の使用方法

本項では、Visio の CASE ツールの機能の一つであるコード自動生成機能の使用方法について詳しく説明します。コード自動生成機能を利用することにより、Visual C# や Visual Basic、Visual C++ のクラス間の関係やメソッド、属性などを宣言したコードを自動で作成することができます。本連載では、Web アプリケーション開発を始めとする様々なアプリケーション開発の現場で高い開発効率を実現することが可能な Visual C# を中心にシステム開発を行います。Visio のコード自動生成機能の使用方法を図 12 に示します。

図 12 コード自動生成機能の使用方法

図 12 コード自動生成機能の使用方法

Visio のコード自動生成機能を使用して、第 3 節で作成した図書管理システムのクラス図から出力された Visual C# .NET のコードを図 13 に示します。

図 13 図書管理システムのコード

図 13 図書管理システムのコード

3.5 まとめ

本章では、UML クラス図設計をチュートリアル形式で説明しました。また、Visio の機能を用いて UML クラス図からシステム開発フェーズにスムーズに移行するための機能である 「コード自動生成機能」 について説明しました。

本章で説明した通り、Visio には、システム設計や開発を支援する CASE ツールの機能が豊富に用意されています。Visio をシステム開発プロジェクトに導入することにより、従来、開発者の頭を悩ませていた、設計から開発への移行をシームレスにかつ低コストで行うことができます。また、Visio のコード自動生成機能によって出力されたコードは、オブジェクト指向プログラミングに準拠しています。そのため、システムの仕様変更に対しても、柔軟に対応できるという大きな利点があります。


著者紹介

田中 成典 (たなか しげのり)

1986年関西大学工学部土木工学科卒業
1988年関西大学大学院工学研究科 土木工学専攻博士課程前期課程修了
1996年博士 (工学) 授与,関西大学
1997年関西大学総合情報学部助教授 (現在に至る)
主な著書:やさしいCのはじめかた,オーム社,1993年
 建設技術者のための知識情報処理の実践,関西大学出版部,1999年
 DirectX8,工学社,2001年
 ステップアップXML,工学社,2002年
 Linuxアプリケーション入門,森北出版,2002年    ほか

中山 浩太郎 (なかやま こうたろう)

2001年3月関西大学総合情報学部卒業
2001年4月関西大学大学院総合情報学研究科入学 (現在に至る)
2002年4月同志社女子大学非常勤講師 (現在に至る)
主な著書:Web工房シリーズ Perlの達人,森北出版,1999年
 DirectX8,工学社,2001年
 Linuxアプリケーション入門,森北出版,2002年    ほか

石井 健一 (いしい けんいち)

1999年4月関西大学総合情報学部総合情報学科入学 (現在に至る)
主な著書:ステップアップXML活用法,工学社,2002年

野中 一希 (のなか かずき)

1999年4月関西大学総合情報学部総合情報学科入学 (現在に至る)
2002年1月株式会社関西総合情報研究所入社 (現在に至る)

中村 健二 (なかむら けんじ)

2000年4月関西大学総合情報学部総合情報学科入学 (現在に至る)
2002年4月株式会社関西総合情報研究所入社 (現在に至る)


Microsoft