実際の業務に近い形で考えてみる#
次のような業務シナリオがある場合のモデルを考えてみましょう。入荷の予定を記入する伝票がある。入荷予定は以下の情報を持つ。
- 伝票番号
- 入荷予定日
- 仕入元会社(取引先)
- 入荷状態(未入荷/一部入荷/入荷済 のいずれか)
- 複数の商品の明細(商品名、個数)
- 入荷日
- 入荷状態(未入荷/入荷済)
その上で次の機能が必要となる。
- 全入荷伝票を検索・一覧表示する画面機能
- 入荷伝票を登録するための画面機能
- ある日に届いた商品の全明細を表示する画面機能
- ある日に届いた商品の全明細を表示する帳票機能
- 分析クラス図
- 設計クラス図
- ある日に届いた商品の全明細を表示する帳票機能のシーケンス図
オブジェクト図#
何はともあれ業務分析はオブジェクト図からです。オブジェクト図を描く時のコツは、複数あり得るオブジェクトは必ず複数描くことです。以下の例で言えば、
- 入荷伝票
- 商品

分析クラス図#
続いて、クラス名だけのクラス図を描いてみます。クラスにするものの説明を参考にして、- 入荷明細クラス
- 採番する際に伝票番号一覧が必要となる。
- 伝票入荷状態と明細入荷状態は異なるクラスである。
- 入荷明細一覧画面は入荷伝票ではなく入荷明細一覧を扱う。
尚、図中に青色を付けてあるのが画面・帳票機能のクラスです。

設計クラス図#
続いて属性と処理を記述し、分析クラス図を洗練して設計クラス図を仕上げます。尚、次のような帳票を出力する前提で処理を定義しました。

下の図が設計クラス図です。分析クラス図を描く段階で一覧系のクラスさえ見逃さなければそれほど難しくないことが判ると思います。
いくつかポイントを挙げます。
- 入荷伝票クラスと入荷明細一覧クラスの「次の明細を返す」
- 伝票番号一覧クラスの「最近採番値」
- 日付クラスの「日付の文字列を返す」
- 個数クラスの「単位付き個数を返す」
※Iteratorパターンには他に、
- 次の明細は存在するか
ある日に届いた商品の全明細を表示する帳票機能のシーケンス図#
設計クラス図で定義したメソッドを組み合わせてシーケンス図にします。ループしながら入荷明細を取得して、それぞれの値を出力する動きになります。

慣れないうちは、シーケンス図を描きながら設計クラス図を考えても構いません。両者を行ったり来たりしながら仕上げていきます。
慣れてくれば、クラス図に定義したメソッドに不足が無いのかをシーケンス図を使って確認するような作業になっていきます。
つまり、シーケンス図はクラス図の作成や説明を補足する意味合いが強いため、全てのシーケンス図を記述する必要は必ずしもありません。
まとめ#
- 業務モデルを作成する際にはまず実例を考える(オブジェクト図)
- 分析段階から一山クラス(一覧系クラス)を忘れない
コラム#
実際の業務のモデルを作成する際も、原則を忘れなければ難しくないことを理解してもらえたのではないかと思います。特に、- 一山クラス(一覧系クラス)
- 小粒クラス(日付、個数など)
これまで皆さんが携わってきたシステムを題材にして、分析クラス図を描いてみることをお薦めします。
次: 継承の使いどころ
添付ファイルの追加
ログイン済のユーザのみが添付ファイルをアップロード出来ます。
添付ファイル一覧
Kind | Attachment Name | Size | Version | Date Modified | Author | Change note |
---|---|---|---|---|---|---|
png |
biz_anal_class.png | 30.2 kB | 1 | 13-3-2012 00:42 | ytp | |
png |
biz_desi_class.png | 53.5 kB | 1 | 13-3-2012 00:42 | ytp | |
png |
biz_object.png | 38.0 kB | 1 | 10-3-2012 20:22 | ytp | |
png |
biz_repo_seq.png | 24.6 kB | 1 | 11-3-2012 17:51 | ytp | |
png |
report_layout.png | 6.1 kB | 1 | 11-3-2012 18:57 | ytp |
«
This particular version was published on 11-3-2012 23:20 by ytp.