モダン・ソフトウェアエンジニアリング
https://m.media-amazon.com/images/I/61pYeR8bpEL.jpg
『モダン・ソフトウェアエンジニアリング』 という書籍名ではあるが、ソフトウェアエンジニアリング全体というよりは、主に開発におけるプラクティスの言語化を扱っている
nobuoka.icon 書籍名はちょっと誇張が過ぎると思う
とはいえ、プラクティスや手法について言語化するとか、そういう思想は非常に良いと思うので、学ぶことはあった
内容メモ
1 部 ソフトウェアエンジニアリングの本質
1 章 プログラミングからソフトウェアエンジニアリングへ
2 章 ソフトウェアエンジニアリングの手法とプラクティス
手法とは、ソフトウェアを開発・維持するときに必要となるすべてのことに対してアドバイスを提供するもの 世の中には無数の手法が存在するが、それらは小さなプラクティスの合成にすぎない
プラクティスは再利用可能
手法に関してパラダイムシフトが起こると過去との断絶が起こる
プラクティスについても再利用がなされず車輪の再発明が多い
各チームや組織が独自の手法を構築するための基盤となるソフトウェアエンジニアリングの共通基盤 (カーネル) の構築を目指す
3 章 Essence の概要
4 章 ソフトウェアエンジニアリングの重要な要素を特定する
5 章 ソフトウェアエンジニアリングの言語
1. 要素を特定する
2. 要素間の関連と各要素の概要を下書きする
3. 詳細を追記していく
6 章 ソフトウェアエンジニアリングのカーネル
7 章 理論のふりかえり
合意された統一的な理論はない
2 部 Essence を使ったソフトウェア開発
9 章 Essence で開発を始める
どういうチェックポイント? そのチェックポイントで検査するアルファはどれか? 通過条件となるアルファの状態は? 10 章 Essence を使った開発
11 章 開発の旅
12 章 Essence カーネルのふりかえり
各アルファは各領域の理論に基づく
アルファは個別のものだが、独立していない (同じ開発プロセスを異なる視点で見ている) ので、ウェーブ上に進む
3 部 プラクティスを使った小規模開発
13 章 プラクティスを使って開発を進める
プラクティスを適用すると、具体的な監視項目 (どのアルファ・サブアルファを監視するか?) が明確になる
14 章 スクラムを利用する
15 章 ユーザーストーリーライトを利用する
16 章 ユースケースライトを利用する
17 章 マイクロサービスを利用する
18 章 プラクティスを合成する
4 部 大規模で複雑な開発
19 章 スケールの意味
20 章 プラクティスのエッセンシャル化
21 章 大規模で複雑な開発にスケールアップ
ここでの大規模は 30 人以上が関与する開発 (30 人に強い意味があるわけではない)
成功の秘訣は、サブシステムとチームの依存関係を減らすこと
22 章
23 章 そして未来へ
付録 A ソフトウェアとソフトウェアエンジニアリングの歴史