かんたん UML入門 [改訂2版] (プログラミングの教科書)
はじめに
『かんたんUML入門』は、初心者にとってわかりやすい本をめざし、2013年に出版しました。それから4年、多くの方々に手に取って頂きました。本書では、その間変更があったところについて修正し、改訂版としてより読みやすくしました。
日本においても、UMLの書籍は多く出版されるようになってきています。そのため、これからUMLを学ぼうとする方々にとっては、どの書籍を選択すればよいのか迷うところでしょう。特にUMLはオブジェクト指向の考え方と密接にかかわっており、初心者にとっては、敷居が高いのではないでしょうか。
本書はこれからUMLを学ぼうとする方々向けの教科書として、1章ではUMLとは何か、なぜUMLが必要なのかについて、2章では基礎となるオブジェクト指向の概念、3章では開発プロセスの説明を行っています。
そして、4章~12章では、UMLの図を「図の目的」、「使用する工程」、「表記法」、「描き方」などの節ごとに、丁寧にわかりやすく解説しました。
13章はビジネス系システムの実践例として、SNSの事例を解説しています。身近な題材なのでわかりやすいと思います。
14章は組み込みシステムの実践例としてETロボコンの事例を取り上げています。ETロボコンは、自律型ライントレース・ロボット(LEGO Mindstorms)を題材にして、UML等で分析・設計したソフトウェアを搭載し競うコンテストです。走行性能を競う競技部門と、分析・設計モデルの内容を競うモデル部門などがあります。組み込みシステムの技術者にとっては、腕試しの場にもなっています。このETロボコンを目指す人にとっても本書は参考になると思っております。
最後に、本書を出版するにあたり、協力及び便宜を図って頂いた各方面の方々にこの場を借りてお礼申し上げます。
2017年5月 竹政昭利
目次
1章 UMLとは何か?
1-01 プログラムを設計するには
1-02 モデリングとは何か?
1-03 モデルとUML
1-04 UML はなぜ必要なのか?
システムに求められる要求の高度化と多様化
システムの大規模化と複雑化
関係者間でのコミュニケーションの困難さ
世界の標準語「UML」
1-05 UML を効果的に活用するための技術要素
1-06 この章のまとめ
2章 オブジェクト指向とUML
2-01 オブジェクト指向の基本
オブジェクト指向とは
オブジェクト
クラス
カプセル化
継承
ポリモーフィズム
2-02 UMLの基本
UMLとは
UML を利用する目的
UML が登場した背景
UML の特徴
様々な開発対象をカバーする汎用的な表記法
UMLを使ったモデルベースの開発
2-03 図の体系と各図の概要
図の体系
ユースケース図
クラス図
シーケンス図
コミュニケーション図
ステートマシン図
アクティビティ図
パッケージ図
オブジェクト図
コンポーネント図
配置図
合成構造図
タイミング図
相互作用概要図
2-04 UML の共通要素
共通のモデル要素
ノート
フレーム
ステレオタイプ
メタ属性
制約
タイプとインスタンス
2-05 この章のまとめ
3章 開発プロセス
3-01 開発プロセスとは
3-02 ウォーターフォール型開発プロセス
概要
長所・短所
3-03 スパイラル型開発プロセス
概要
長所・短所
RAD
3-04 反復型開発プロセス
概要
長所・短所
3-05 この章のまとめ
4章 ユースケース図
4-01 概要
ユースケース図の例
ユースケース図を描く意義
4-02 表記法
ユースケース
アクター
関連
システム境界
ユースケースの包含 (include)
ユースケースの拡張 (extend)
ユースケースの汎化
アクターの汎化
4-03 ユースケース図の描き方
ユースケース図を描く手順
システムで実現したいことのアイデアを出す
ユースケースとアクターの候補を見つける
システムで実現すべき範囲を明確にし、ユースケースとアクターの候補を見直す
候補を洗練し、ユースケースとアクターを明確にする
4-04 ユースケース図の注意点
分析中毒に陥らないようにする
ユースケースは、アクターが処理を中断する粒度で抽出する
ユースケース名は動詞で表現する
CRUD のユースケースは「管理する」と表現する
4-05 この章のまとめ
5章 オブジェクト図
5-01 概要
オブジェクト図
オブジェクト図とは
5-02 表記法
オブジェクト
オブジェクト名の表記
オブジェクト名表記のバリエーション
リンク
属性値の情報
5-03 オブジェクト図の描き方
5-04 この章のまとめ
6章 クラス図
6-01 概要
クラス図
クラス図とは
6-02 表記法
クラス
属性
操作
可視性
誘導可能性
多重度
関連端名
限定子
汎化
集約
コンポジション
依存
インタフェース
6-03 クラス図の描き方
分析クラス図と設計クラス図
分析クラス図の描き方
設計クラス図の描き方
6-04 クラス図の注意点
オブジェクト指向との関連
オブジェクト指向プログラミングの特徴
カプセル化
継承
is – a 関係と has – a 関係
多態性(ポリモーフィズム)
6-05 補足事項
関連クラスについて
分析クラス図と設計クラス図の役割
6-06 この章のまとめ
7章 シーケンス図
7-01 概要
シーケンス図
シーケンス図とは
7-02 表記法
ライフライン
メッセージ
メッセージ名
戻り値
引数
メッセージの種類
同期メッセージ
非同期メッセージ
リプライメッセージ
生成メッセージ
ファウンドメッセージ
ロストメッセージ
実行指定
破棄イベント
結合フラグメント
ループ
オルタナティブ
オプション
相互作用の利用
7-03 高度な結合フラグメント
ブレイク
パラレル
クリティカル領域
7-04 シーケンス図の描き方
表現する相互作用を決める
登場する要素を決める
相互作用を表現する
図の整合性を確認する
7-05 この章のまとめ
8章 コミュニケーション
8-01 概要
コミュニケーション図
コミュニケーション図とは
8-02 表記法
ライフライン
メッセージ
シーケンス番号
引数
メッセージの種類
同期メッセージ
非同期メッセージ
リプライメッセージ
条件付きメッセージ
繰り返しメッセージ
8-03 コミュニケーション図の描き方
表現する相互作用を決める
相互作用を表現する
図の整合性を確認する
8-04 この章のまとめ
9章 ステートマシン図
9-01 概要
ステートマシン図
状態と遷移
9-02 基本的な表記法
単純状態
開始擬似状態
終了状態
entry アクション
exit アクション
do アクティビティ
外部遷移
内部遷移
9-03 状態の階層化
コンポジット状態とサブ状態
サブ状態への外部遷移
コンポジット状態のトリガの適用範囲
コンポジット状態内の開始擬似状態と終了状態
直交状態と領域直交状態への外部遷移
直交状態内のサブ状態への外部遷
9-04 擬似状態
浅い履歴擬似状態
深い履歴擬似状態
フォーク擬似状態とジョイン擬似状態
選択擬似状態
ジャンクション擬似状態
停止擬似狀態
9-05 状態の再利用
サブマシン状態、入状点、退状
サブマシン状態の再利用
9-06 ステートマシン図の拡張
拡張の表記法
9-07 ステートマシン図の描き方
ステートマシン図を描く対象を決定する
システム全体のステートマシン図
クラス単位のステートマシン図
状態を抽出する
トリガを抽出する
処理を実行する箇所を特定する
9-08 この章のまとめ
10章 アクティビティ図
10-01 概要
アクティビティ図
アクティビティ図とは
10-02 基本的な表記法
アクティビティ
アクションと制御フロー
開始ノード
アクティビティ終了ノード
デシジョンノード
マージノード
オブジェクトノードとオブジェクトフロー
10-03 並行処理の表記法
並行処理を含むアクティビティ
フォークノードとジョインノード
イベント受信アクション
シグナル送信アクション
パーティション
10-04 アクティビティ図の注意
10-05 この章のまとめ
11章 パッケージ図
11-01 概要
パッケージ図
パッケージ図とは
11-02 表記法
パッケージ
パッケージの内部要素
パッケージ階層
依存関係
11-03 パッケージ図の描き方
依存関係の方向
11-04 パッケージ図の注意点
内部要素の統合
内部要素の切り出し
11-05 この章のまとめ
12章 サブの図
12-01 コンポーネント図
概要
コンポーネント図とは
表記法
コンポーネント
インタフェース
アセンブリコネクタ
サブシステム
ポート
委譲コネクタ
コンポーネント図の描き方
コンポーネントの抽出
アーキテクチャの設計
コンポーネント図の注意点
クラス図との関係
システム全体から見たコンポーネント図
12-02 配置図
概要
配置図とは
表記法
ノードと通信経路
デバイスと実行環境
成果物
成果物間の関係
成果物の配置
マニフェステーション
配置図の描き方
作図の注意点
タイプとインスタンスの活用
12-03 合成構造図
概要
合成構造図とは
表記法
構造化分類子
パートとプロパティ
コネクタ
ポート
要求インタフェースと提供インタフェース
インスタンス仕様とリンク
コラボレーションとコラボレーションロール
コラボレーション使用とロールバインディング
合成構造図の描き方
構造化分類子とする対象を決める
インスタンス仕様を検討する
クラスを検討する
コラボレーションを検討する
合成構造図の注意点
合成構造で物理的な構成関係を表現しない
12-04 タイミング図
概要
タイミング図とは
表記法
ライフライン
状態と状態タイムライン
イベント
汎用値ライフライン
メッセージ
時間に関する制約の表記法
タイミングルーラー
時間制約と時間観測
持統時間制約、持統時間觀測
タイミング図の描き方
12-05 相互作用概要図
概要
相互作用概要図とは
表記法
相互作用概要図の描き方
12-06 この章のまとめ
13章 実践例(ビジネス系システム)
13-01 ビジネス系システム開発の概要
ビジネス系システムの開発プロセス
13-02 ケーススタディ「社内SNS」
ケーススタディ「社内SNS」の仕様
13-03 要求分析
要求分析とは
要求と要件
機能要件と非機能要件
ユースケースモデルとは
ユースケース図の作成方法
イベントフローの作成方法
アクティビティ図の作成方法
要求分析の注意点
ユースケース図だけではなくイベントフローの作成も重視する
ユースケース検討時に実現手段を限定しない
この節で学んだこと
13-04 分析
分析とは
概念モデルとは
概念モデルの作成方法
概念モデル作成の入力情報
概念モデルにおけるクラスと属性の抽出
概念モデルの完成と妥当性の確認
分析モデルとは
分析モデルの作成方法
「分析モデルのクラス図」作成の入力情報
分析クラスの抽出
分析モデルの構成要素
「分析モデルのコミュニケーション図」作成の入力情報
分析クラスのインスタンス間の相互作用の検討
振る舞いの検討結果を構造モデルへ反映
分析の注意点
分析中毒に陥らない
この節で学んだこと
13-05 アーキテクチャ設計
アーキテクチャ設計とは
アーキテクチャとは
アーキテクチャ検討時の入力情報
非機能要求の確認と実現手段の検討
レイヤパターン
DAOパターン
Command パターン(FrontControllerとの組み合わせ)
アーキテクチャ設計の注意点
アーキテクチャを中心として開発を行う
デザインパターンを過度に適用しない
この節で学んだこと
13-06 詳細設計
詳細設計とは
設計モデルとは
設計モデルの作成方法
設計モデル作成の入力情報