UMLモデリングの本質
 

■著者 児玉公信
■編集 日経ITプロフェッショナル
■発行 日経BP社
■発売 日経BP出版センター
■発行日 2004年4月12日
■体裁 B5変型判,256ページ
■定価 2520円(本体2400円+税)

■商品コード 158860
■ISBN 4-8222-2118-0


お申し込みは下記の「買い物かごアイコン」をクリックしてください。詳細は、こちらをご覧ください。
 
 
情報システムを設計・開発する場合,良い「モデル」を作ること(モデリング)が重要な意味を持つ。UML(Unified Modeling Language)は,このモデリングに使う標準的な表記法である。最近,UMLを使う事例は増えているが,実際にモデリングしたものの出来は今ひとつであることが多い。UMLの表記法を単に覚えるだけでは,良いモデルを作ることができないからだ。
 なぜか。それはモデリングの知識や方法論が足りないからだ。モデルは,要求仕様の変更や事後の機能拡張に強くなければならない。さまざまな立場の人が,理解できるようわかりやすくなければならない。曖昧さや矛盾を含んでいてはならない。このようなモデリングをどうやったらできるのか。本書は「UMLでシステムをモデリングするときに,できるだけ本質的なモデルを追求する」ために必要な知識と知恵を解説する。
 
◆ 内容構成
第1章 UMLの基礎知識
1.1 なぜモデルを書くのか
1.2 モデリングの歴史
1.3 表記法を正しく知る
第2章 クラス図作成の技法
2.1 概念を扱う
2.2 クラス図の基本
2.3 クラス図作成の手順
2.4 動的側面を検証してクラス図を完成させる
2.5 実例でモデリングをマスターする
第3章 概念レベルから実装レベルへ
3.1 概念レベルのクラス図を実装レベルに変換する
3.2 インタフェースの設計
第4章 パターンとリファクタリング
4.1 分析・設計に役立つ「パターン」
4.2 『アナリシスパターン』
4.3 『デザインパターン』
4.4 ソフトウエアの柔軟性を高めるリファクタリング
第5章 ビジネスモデリングへの適用
5.1 UMLをビジネスモデリングで使う
第6章 モデリングの実践1(酒問屋の在庫管理)
6.1 要求をとらえてクラス図を書く
6.2 「揺さぶり」でモデルを洗練する
6.3 OCLで制約を記述する
6.4 実装モデルへ変換する
第7章 モデリングの実践2(航空券の予約)
7.1 分かりやすいクラス図を作る
7.2 定石にとらわれず無駄を取る
7.3 曖昧さや矛盾を概念レベルで撲滅する
第8章 モデリングのスキルを高めるには
8.1 モデルとは何か
8.2 モデリングのスキルを磨く
8.3 モデラーの心
付録
・UML2.0をどう使うべきか
・推薦図書

【第1版第1刷】に関して次の訂正/補足があります。(第2刷の訂正/補足もご覧ください)

【1】
55ページ図2-11の「顧客型」
56ページの1行目,3行目の「顧客タイプ」
56ページの9行目の「顧客種類」
は同じものを指していますので,「顧客タイプ」に統一します。

【2】
102ページ図3-5(b)のコードにはいくつか誤りと補足があります。
●HashMapとVectorを利用するためのimport文を追加。

●「会員群」フィールドの宣言部分で,static修飾子の先頭文字が大文字になっているので小文字に。

●「貸し出しリスト」フィールドの宣言で行末に「;」がない。

●コンストラクタの中で,staticである「会員群」を参照する際に,this(会員クラスのインスタンス)を修飾できない。

●find会員メソッドの戻り値の型が記述されていない。また,HashMapクラスはfindメソッドを持っていないので,getメソッドが正しい。

このため,次のコードに訂正します。
import java.util.*;
public class 会員 {

 private static HashMap 会員群 = new HashMap();
 private String 氏名;
 private Vector 貸し出しリスト;

 public 会員(String name) {
  this.氏名 = name;
  this.貸し出しリスト = new Vector();
  会員.会員群.put(name, this);
 }

 public static 会員 find会員(String name) {
  return (会員) 会員.会員群.get(name);
 }
}

【3】
104ページ図3-7のコードにも同様の誤りがあります。

●コンストラクタの中で,staticである「貸し出し群」を参照する際に,this(会員クラスのインスタンス)を修飾できない。という理由により
誤  this.貸し出し群.add(this);

正  貸し出し.貸し出し群.add(this);
に訂正します。


また,その下の部分を以下のように訂正します。
public class 会員 {

 private Vector 貸し出しリスト;
          :
 void add貸し出し(貸し出し borrowing){
  this.貸し出しリスト.add(borrowing);
 }



【4】
103ページ図3-6中にある
1.2.1:add(this) は
1.2.1:add(29274:貸し出し)
に訂正します。


【5】
190ページ図6-13(a)
「記入行」から「個体」への多重度を*に変更し,「取引」に次の制約のノートを追加します。
『制約:
 1つの「取引」オブジェクトがリンクする移動元の「記入行」にリンクする「個体」オブジェクトの集合は,同じく移動先の「記入行」にリンクする「個体」オブジェクトの集合と一致する』


【6】
同じく191ページ図6-14
「記入行」から「個体」への多重度を*に変更します。
制約記述は190ページのの図6-13と同じなので省略します。

【第1版第2刷】に関して次の訂正/補足があります。

【1】
67ページ図2-19および76ページの図2-23
予約クラスと貸し出しクラスに関連を追加します。多重度はともに「0..1」。これにともなって,67ページ下から1行目に次の文章を挿入します。
 「予約」と「貸し出し」の関連は予約の履行状況を記録する。予約が実行されずに終わることもあるので,「予約」から「貸し出し」に対する多重度は「0..1」。同様に,予約なしで借りることもあるので,その逆も「0..1」となる。

【2】
190ページ図6-13(a)および同じく191ページ図6-14
「記入行」から「個体」への多重度を「0..1」に変更します。