Ivar Jacobson 著
Harold “Bud” Lawson 著
Pan-Wei Ng 著
Paul E. McMahon 著
Michael Goedicke 著
角 征典 翻訳
鷲崎 弘宜 監修
【本書の内容】
本書は
Ivar Jacobson, Harold "Bud" Lawson, Pan-Wei Ng, Paul E. McMahon, Michael Goedicke,
"The Essentials of Modern Software Engineering: Free the Practices from the Method Prison!",
ACM Books, 2019
の邦訳です。
ソフトウェアエンジニアリングの歴史は抽象化レベルの上昇である。このことは、プログラミング言語でも、ツールでも、フレームワークでも、ソフトウェア中心のシステムとやり取りをする方法においても見られる。それから、我々がこうしたシステムを構築する方法についてもそうだ。これがソフトウェアエンジニアリングの手法の世界である。
-Grady Booch(本書より抜粋)
本書は現代において複雑に進化し続けるソフトウェアとその開発に関する特定の手法を
教授・示唆・喧伝するものでは*ありません*。
そうではなく、どのような時代にあっても、どのような用途であっても、どのような利用環境であっても、
優れたソフトウェアをもたらす作業方法の作成方法
を提供することを意図して執筆されています。
「ソフトウェアエンジニアリング」というジャンルが生まれたときから連綿と続く、
その根幹を成してきた教程とは異なる、まさにモダン(現代的)なスタイルの、
「ソフトウェアエンジニアリング」を提示してくれます。
現代における(そして未来における)ソフトウェアエンジニアリングの基礎を習得、
あるいはソフトウェアエンジニアリングを「再発見」することで、
今後もより優れたソフトウェアを生み出す視座を得られることでしょう。
本書はIvar Jacobson, Harold "Bud" Lawson, Pan-Wei Ng, Paul E. McMahon, Michael Goedicke著『The Essentials of Modern Software Engineering: Free the Practices from the Method Prison!』(ACM Books, 2019)の邦訳版です。
さまざまなテクノロジーによって紡ぎ出される“ソフトウェア”。その“開発”に焦点を合わせ、「ソフトウェア開発」とは何なのか・どういうことなのかを、開発時の各種フェーズとそれぞれの視点から詳らかにする21世紀型ソフトウェア開発読本です。
第I部 ソフトウェアエンジニアリングの本質
第1章 プログラミングからソフトウェアエンジニアリングへ
1.1 プログラミングから始める
1.2 プログラミングはソフトウェアエンジニアリングではない
1.3 インターンから業界へ
1.4 ソフトウェアエンジニアリングのプロになる旅
できるようになったこと
第2章 ソフトウェアエンジニアリングの手法とプラクティス
2.1 ソフトウェアエンジニアリングの課題
2.2 ソフトウェアエンジニアリングの手法とプラクティスの台頭
2.3 SEMATイニシアティブ
2.4 OMG標準となったEssence
できるようになったこと
第3章 Essenceの概要
3.1 アイデア
3.2 手法はプラクティスの合成
3.3 共通基盤の存在
3.4 本質的なことにフォーカスする
3.5 魅力的なユーザー体験の提供
できるようになったこと
第4章 ソフトウェアエンジニアリングの重要な要素を特定する
4.1 基本に戻る
4.2 ソフトウェアエンジニアリングは顧客に価値を提供する
4.3 ソフトウェアエンジニアリングはソリューションで価値を提供する
4.4 ソフトウェアエンジニアリングは活動
できるようになったこと
第5章 ソフトウェアエンジニアリングの言語
5.1 シンプルなプラクティスの例
5.2 使うべきもの
5.3 コンピテンシー
5.4 やるべきこと
5.5 エッセンシャル化したプラクティス
できるようになったこと
第6章 ソフトウェアエンジニアリングのカーネル
6.1 Essenceカーネルでまとめる
6.2 必要不可欠な使うべきもの:アルファ
6.3 必要不可欠なやるべきこと:アクティビティスペース
6.4 必要不可欠な能力:コンピテンシー
6.5 必要不可欠な要素の配置:パターン
できるようになったこと
第7章 理論のふりかえり
7.1 ソフトウェアエンジニアリングの理論はどこにあるのか
7.2 理論の使用
7.3 Essenceはソフトウェアエンジニアリングの汎用記述的理論
7.4 ソフトウェアエンジニアリングの汎用予測的理論に向けて
7.5 理論的基礎によって成長する
できるようになったこと
第I部のまとめ
推奨する参考文献
第8章 Essenceを小さく適用する―シリアスゲームをやってみよう
8.1 進捗ポーカー
8.2 状態を追え
8.3 目的へGo
8.4 チェックポイントを設定せよ
8.5 ふりかえり
できるようになったこと
第II部 Essenceを使ったソフトウェア開発
第9章 Essenceで開発を始める
9.1 Essenceのレンズを通して見た状況を理解する
9.2 開発のスコープとチェックポイントに合意する
9.3 監視すべき最も重要なものに合意する
できるようになったこと
第10章 Essenceを使った開発
10.1 Essenceを使った計画
10.2 Essenceを使った実行と評価
10.3 チームの作業方法をEssenceを使って適応させる
10.4 カーネルが作業方法の適応に役立つ方法
できるようになったこと
第11章 開発の旅
11.1 旅を可視化する
11.2 進捗と健全性を確保する
11.3 異変に対処する
できるようになったこと
第12章 Essenceカーネルのふりかえり
12.1 カーネルの妥当性
12.2 カーネルを効果的に適用する
できるようになったこと
第II部のまとめ
第III部 プラクティスを使った小規模開発
第13章 プラクティスを使って開発を始める
13.1 Essenceのレンズを通して見た状況を理解する
13.2 開発のスコープとチェックポイントに合意する
13.3 導入するプラクティスに合意する
13.4 監視すべき最も重要なものに合意する
13.5 旅の概要
できるようになったこと
第14章 スクラムを利用する
14.1 スクラムの説明
14.2 プラクティスによるソフトウェアエンジニアリングのアプローチの明確化とモジュール化
14.3 Essenceで[スクラム]を明示的にする
14.4 [スクラムライト]におけるアルファ
14.5 [スクラムライト]におけるワークプロダクト
14.6 [スクラムライト]における役割
14.7 [スクラムライト]の開始
14.8 [スクラムライト]の実施
14.9 スクラムとEssenceのふりかえり
できるようになったこと
第15章 ユーザーストーリーライトを利用する
15.1 ユーザーストーリーの説明
15.2 Essenceで[ユーザーストーリーライト]を明示的にする
15.3 [ユーザーストーリーライト]におけるアルファ
15.4 [ユーザーストーリーライト]におけるワークプロダクト
15.5 [ユーザーストーリーライト]の開始
15.6 [ユーザーストーリーライト]の実施
15.7 [ユーザーストーリーライト]プラクティスに対するカーネルの価値
できるようになったこと
第16章 ユースケースライトを利用する
16.1 ユースケースの説明
16.2 Essenceで[ユースケースライト]を明示的にする
16.3 [ユースケースライト]におけるアルファ
16.4 [ユースケースライト]におけるワークプロダクト
16.5 [ユースケースライト]でチームが直面している問題を解決する
16.6 ユースケースとユースケーススライスを利用する
16.7 ユースケースのチームのインパクトを可視化する
16.8 ユースケーススライスの進捗と健全性
16.9 ユーザーストーリーとユースケースの違い
できるようになったこと
第17章 マイクロサービスを利用する
17.1 [マイクロサービス]の説明
17.2 Essenceで[マイクロサービス]を明示的にする
17.3 [マイクロサービスライト]
17.4 [マイクロサービスライト]におけるアルファ
17.5 [マイクロサービスライト]におけるワークプロダクト
17.6 [マイクロサービスライト]におけるアクティビティ
17.7 [マイクロサービスライト]のチームに対するインパクトの可視化
17.8 マイクロサービスの開発の進捗と健全性
できるようになったこと
第18章 プラクティスを合成する
18.1 合成とは何か
18.2 エッセンシャル化されたプラクティスの使用を検討する
18.3 エッセンシャル化によるプラクティスの強化
できるようになったこと
推薦する参考文献
第IV部 大規模で複雑な開発
第19章 スケールの意味
19.1 旅の続き
19.2 スケールの3つの領域
できるようになったこと
第20章 プラクティスのエッセンシャル化
20.1 プラクティスの源泉
20.2 モノリシックな手法と断片化されたプラクティス
20.3 プラクティスのエッセンシャル化
20.4 再利用可能なプラクティスアーキテクチャの確立
できるようになったこと
第21章 大規模で複雑な開発にスケールアップ
21.1 大規模手法
21.2 大規模開発
21.3 大規模開発の開始
21.4 大規模開発の実行
21.5 大規模開発におけるEssenceの価値
できるようになったこと
第22章 さまざまな種類の開発
22.1 プラクティスアーキテクチャからメソッドアーキテクチャへ
22.2 組織におけるプラクティスライブラリの構築
22.3 リーチアウトするときに文化を無視しない
できるようになったこと
第23章 そして未来へ
23.1 プラクティスと手法でアジャイルになる
23.2 チーム全体で手法を所有する
23.3 手法の使用にフォーカスする
23.4 チームの手法を進化させる
できるようになったこと
推薦する参考文献
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
monotony さん
2020-08-22
ようやく一周したけど。読むだけでは駄目だな。
yoshi1987 さん
2020-08-27
Essence言語によって様々な方法の価値・意味を考えていく モダンな方法を取り入れることが目的になりがちだが、言語化することでそのものの価値を考え、議論できるようになるのは意義が大きそう ただ、自分にはまだまだレベルが高かった Essenceを使うのはなかなか難しそう