本書は、『組込みソフトウェア開発のための構造化モデリング』に続く、SESSAMEワーキンググループ 2による書籍の第2弾です。
我々は、日常生活において、毎日、いつでも、どこでも、組込みシステムと接しています。安心して生活できる社会のためには、不具合がなく普通に使える、誰でも簡単に使えるという「品質」が組込みソフトウェアに求められます。また、組込みシステムのデジタル化、ネットワーク化、セキュリティなどへの対応が進み、ソフトウェアの規模と複雑さが拡大してきています。このような環境下で、多くの組込みエンジニアは、良いものづくりを目指して日夜頑張っているのではないでしょうか。本書では、その組込みエンジニアに「もっと楽に、もっと早く」ものづくりができる思考ツールを紹介しています。それが「オブジェクト指向モデリング」です。
オブジェクト指向モデリングという思考ツールは、可能性を秘めた1つの道具です。たとえば、モデル化すれば上流工程で品質を作り込むことができる、全体を俯瞰すれば戦略的な再利用が可能になる、という可能性を提供します。
ただし、これを使えばすべて解決できるという万能薬ではありません。思考ツールという道具を使い、効果を獲得するためには、「道具を選ぶ、正しく使う、錆びさせない、仲間を見つける、進化させる」ということが必要です。
(本書「序文」より抜粋)
Chapter 1 はじめに
1-1 本書について
1-1-1 本書の適用範囲
1-1-2 オブジェクト指向で大規模化かつ短納期化に対処する
1-1-3 モデリング中心
1-1-4 具体的な事例
1-2 本書の活用方法
1-2-1 本書の読み進め方
1-3 モデリングツールの活用
1-3-1 ユースケース図
1-3-2 イベントリスト
1-3-3 クラス図
1-3-4 コミュニケーション図
1-3-5 状態遷移図
1-3-6 状態遷移表
1-3-7 シーケンス図
1-3-8 パッケージ図
1-4 大規模な組込みソフトウェア開発
1-4-1 大規模組込みソフトウェアの特徴
1-4-2 ソフトウェア開発工程とモデリング
1-4-3 モデリングの効用
Chapter 2 課題説明
2-1 話題沸騰ポット(GOMA-1015)
Chapter 3 失敗事例
3-1 失敗パターン 1:クラス抽出の失敗
3-1-1 機能分割モデル
3-1-2 もの依存モデル
3-2 失敗パターン 2:抽出度選定の失敗
3-2-1 過度な詳細モデル
3-2-2 過度な抽象モデル
3-3 失敗パターン 3:時間経過によるモデル劣化
3-3-1 クラス過多モデル
3-3-2 くもの巣モデル
3-4 まとめ
3-4-1 6つの失敗モデル
3-4-2 15個の危険な兆候
Chapter 4 要求モデリング
4-1 要求モデリングで何をするのか
4-1-1 要求モデリングとは
4-1-2 要求モデリングのプロセスとアウトプット
4-2 機能要件を考察する
4-2-1 ユースケースモデルとは
4-2-2 ユースケース図の表記法
4-2-3 ユースケース記述の表記法
4-2-4 ユースケースモデルの作成
4-2-5 イベントリストを併用する
4-2-6 コンテキストダイアグラムを併用する
4-3 非機能要件を考察する
4-3-1 非機能要件リストを作成する
4-3-2 タイミング仕様書を作成する
4-3-3 データディクショナリを作成する
4-4 まとめ
4-5 復習
Chapter 5 分析モデリング
5-1 分析モデリングで何をするのか
5-1-1 分析モデリングとは
5-1-2 分析モデリングのプロセスをアウトプット
5-2 システムのスコープを決める
5-2-1 コンテキストダイアグラムを作成する
5-3 静解析する
5-3-1 オブジェクト/クラス/インスタンスとは
5-3-2 クラス候補を抽出する
5-3-3 キー抽象となるクラス候補を選定する
5-3-4 モデル化の指針を決定する
5-3-5 クラスと属性を決める
5-3-6 クラスどうしの関連を決める
5-3-7 ロール名/多重度/関連記述を作成する
5-3-8 その他のクラス抽出法
5-3-9 名詞句抽出法の例
5-3-10 図解抽出法の例
5-3-11 静解析のまとめ
5-4 動解析する
5-4-1 責務分担のコミュニケーション図を作成する
5-4-2 クラスごとの状態遷移図
5-4-3 クラスの状態遷移表を作成する
5-4-4 役割分担を確認する
5-4-5 動解析のまとめ
5-5 クラスごとの責務仕様を決める
5-5-1 クラス図を詳細化する
5-5-2 クラスへの操作の追加による一慣性の確認
5-6 モデル検証を行う
5-6-1 シナリオによる動作の確認
5-7 まとめ
5-8 復習
Chapter 6 設計モデリング
6-1 設計モデリングで何をするのか
6-1-1 設計モデリングとは
6-1-2 設計モデリングのプロセスとアウトプット
6-1-3 構造設計以後のコード中心プロセスの例
6-2 分析モデルを設計モデルへ変換する
6-2-1 コンパイル可能なモデルへ変換する
6-2-2 生成関係を検討する
6-3 タスク構造を設計する
6-3-1 イベント分析を行う
6-3-2 制御スレッド分析を行う
6-3-3 インスタンス生成関係を見直す
6-3-4 クラス構造を見直す
6-3-5 通信方法を決定する
6-4 パッケージを設計する
6-4-1 パッケージ図を作成する
6-4-2 機種ごとにパッケージ分割する
6-5 メモリ構造の設計を行う
6-5-1 メモリマップを理解する
6-5-2 ヒープの使い方
6-5-3 メモリ構造設計のまとめ
6-6 クラスの詳細設計を行う
6-6-1 シーケンス図を作成する
6-6-2 クラス仕様書を作成する
6-7 システム全体の設計
6-7-1 ドメインを分析する
6-7-2 システムを分割する
6-8 まとめ
6-9 復習
Chapter 7 プログラミング
7-1 プログラミングで何をするのか
7-1-1 プログラミングとは
7-1-2 プログラミングのプロセスとアウトプット
7-2 クラスをプログラミングする
7-2-1 コンポーネントを形成する
7-2-2 ヘッダファイルとソースファイルを作る
7-3 インスタンスの生成と消滅
7-3-1 ライフタイムとスコープ
7-3-2 newによるインスタンス生成とdetelteによるインスタンス消去
7-3-3 ファクトリによるインスタンス生成
7-3-4 実装時のメモリ節約
7-4 メソッドを実装する
7-4-1 状態遷移を実装する
7-4-2 メッセージ送信を実装する
7-5 オブジェクト指向言語の仕組みと注意事項
7-5-1 クラスとインスタンスの仕組み
7-5-2 生成と消滅の仕組み
7-5-3 メモリ管理の仕組み
7-6 まとめ
7-7 復習
Chapter 8 設計品質
8-1 複雑さへの対処
8-1-1 分割と階層(トップダウン)
8-1-2 抽象化
8-1-3 俯瞰
8-1-4 図解
8-1-5 対話
8-2 オブジェクト指向設計の特徴
8-2-1 カプセル化
8-2-2 詳細隠蔽
8-2-3 クラスとインスタンス
8-2-4 メッセージ通信
8-2-5 状態保持
8-2-6 継承
8-2-7 ポリモーフィズム
8-3 設計の品質
8-3-1 クラスの品質
8-3-2 クラス間の品質
8-3-3 システム形状(静的側面)
8-3-4 システム形状(動的側面)
8-4 失敗事例の検証
8-4-1 機能分解
8-4-2 もの依存
8-4-3 過度な詳細
8-4-4 過度な抽象
8-4-5 クラス過多
8-4-6 くもの巣
8-5 まとめ
Chapter 9 レビュー
9-1 レビューとテスト
9-1-1 レビューとテストの違い
9-2 レビューとは
9-2-1 レビューの対象物
9-2-2 なぜレビューするのか
9-3 レビュー技法
9-4 インスペクション
9-4-1 インスペクションの概要
9-4-2 インスペクションの入力
9-4-3 インスペクションの処理
9-4-4 インスペクションの出力
9-5 インスペクションの実際
9-5-1 対象物
9-5-2 タイミング
9-5-3 観点
9-6 インスペクションの実施ツール
9-6-1 課題ログ
9-6-2 実施報告書
9-6-3 チェックリストの事例
9-7 まとめ
Appendix A 定石・格言一覧
A-1 定石
A-2 格言
Appendix B 用語辞書
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1刷 | 080 521 コンテキストダイアグラムを作成する 下から4行目 |
2刷 | 未 |
|
2007.07.24 | ||||||||||||||||
1刷 | 084 ⑤仕様 上から5行目 |
2刷 | 未 |
|
2007.07.24 | ||||||||||||||||
1刷 | 095 表5.5 上から3段目 |
2刷 | 未 |
|
2007.07.24 | ||||||||||||||||
1刷 | 111 下から2行目 |
2刷 | 未 |
|
2007.07.24 | ||||||||||||||||
1刷 | 120 下から1行目 |
3刷 | 未 |
|
2008.01.21 |
Tanaka Akihiro さん
2008-01-20
手順が解説されているため分かりやすいが、オブジェクト指向を知っていないと難しいかも。
明るいくよくよ人 さん
2015-10-27
沸騰ポットを例に、オブジェクト指向モデリングの手順を上流から下流まで解説している。ノウハウがたくさん詰まっているのだが、なぜ・・そこに注目したの・・という説明が少ないので、初学者にはつらいかな。でも、実際の設計に近い立場の人が書いているので、とても実践的です。
silk-silk さん
言語実装のところはあまり参考にならなかったかも。