内容紹介

本書はソフトウェアに関する諸問題を、「工学」に基づいて解決する方法を実利的に示します。

『継続的デリバリー』で著名なデイビッド・ファーリーの“Modern Software Engineering : Doing What Works to Build Better Software Faster”の日本語版です。

継続的デリバリー(『継続的デリバリー』の共著者)の先駆者で、DevOps、TDD、その他ソフトウェア開発全般についての実践者である著者が、ソフトウェア開発に科学的思考法を応用するとはどういうことなのかを明らかにし、本当にソフトウェア工学と呼べるものを実現するにはどうすればよいかを具体的に示します。
真のソフトウェア工学は、私たちの創造力と、高品質で役立つものを自信を持って作る能力を引き上げます。アイデアを掘り下げ、創造力を伸ばせるようになり、大規模で複雑なシステムを構築できるようになります。
コードは誰でも書けますが、それは私たちの仕事ではありません。ソフトウェア開発はコードを書くことよりも大きな仕事です。私たちの仕事は、問題を解くことであり、そのためには設計に注意の目を光らせ、生み出す解決策の有効性を考えなければなりません。

本書はこれからソフトウェア開発の大海に船を漕ぎ出す人には良い羅針盤となる書籍だと思うし、私のように長年この業界で過ごしてきた人間にとっては、自分の経験を振り返る良いきっかけとなり、自分の考えが変化を受容しているか客観的に見る示唆を与えてくれるものとなることを確信する。
――「解説」より

第1部「ソフトウェア工学とは何か」は、ソフトウェアのコンテキスト(文脈)で工学がどのような意味を持つかを考えます。工学の原則と哲学を論じ、それらをソフトウェアにどのように応用するかを考えます。第1部はソフトウェア開発の技術哲学です。
第2部「学びの最適化」は、小さなステップで前進していけるような仕事の組み立て方を明らかにします。すばらしい前進を果たしているか、単に明日のレガシーシステムを今日作っているに過ぎないかの評価方法を示します。
第3部「複雑さ管理の最適化」は、複雑さ管理で必要とされる原則とテクニックを掘り下げていきます。個々の原則を深く掘り下げ、タイプの違いにかかわらず高品質なソフトウェアを作ろうとするときに個々の原則がどのような意味を持ち、どのように応用できるかを示します。
第4部「ソフトウェア工学を支えるツール」は、学びの機会を最大限に広げるとともに、小さなステップで前進し、システムの成長にともなって増してくる複雑さを管理する私たちの能力を後押しするアイデアやアプローチを説明します。随所に含まれている補足説明は、ソフトウェア工学の歴史と哲学、思考の発展過程についての考察であり、本書で取り上げられているさまざまな概念、考え方がどのようなコンテキストで生まれてきたかを理解する上で役に立つはずです。

【目次】
第1部 ソフトウェア工学とは何か
 第1章 イントロダクション
 第2章 工学とは何か
 第3章 工学的アプローチの基礎
第2部 学びの最適化
 第4章 反復的な作業
 第5章 フィードバック
 第6章 漸進主義
 第7章 経験主義
 第8章 実験主義的であること
第3部 複雑さ管理の最適化
 第9章 モジュラー性
 第10章 凝集度
 第11章 関心の分離
 第12章 情報隠蔽と抽象化
 第13章 カップリングの管理
第4部 ソフトウェア工学を支えるツール
 第14章 工学分野のためのツール
 第15章 現代のソフトウェアエンジニア