本BlogやSNS等で告知していた通り、「実践ソフトウェアエンジニアリング(第9版)」 が2021年12月1日に無事出版されました。(ぱちぱちぱち!めでたい!)
本書は日本語翻訳版として、第4版、第6版が存在しておりまして、このうち第6版を所持ししている方も多いのではと思います。「どう変わったの?」と気になる方も多いと思いますので、本記事では国内で翻訳版が発売された第4版・第6版・第9版がどのような変化を遂げているのかを目次レベルで見てみたいと思います。
まずは2000年に国内出版された第4版の目次です。
第1部 製品とプロセス
第1章 製品
第2章 プロセス
第2部 ソフトウェアプロジェクトの管理
第3章 プロジェクト管理の理念
第4章 プロセスとメトリクス
第5章 ソフトウェアプロジェクトの計画立案
第6章 リスク管理
第7章 プロジェクトのスケジューリングと追跡
第8章 ソフトウェアの品質保証
第9章 ソフトフェア構成管理
第3部 ソフトウェア工学の伝統的手法
第10章 システム構想設計
第11章 要求分析の基本概念と原則
第12章 要求分析モデル
第13章 設計の基本概念と原則
第14章 設計の手法
第15章 リアルタイムシステムの設計
第16章 ソフトウェアテスト技術
第17章 ソフトウェアテスト戦略
第18章 技術的なソフトウェアメトリクス
第4部 オブジェクト指向ソフトウェア工学
第19章 オブジェクト指向の基本概念と原則
第20章 オブジェクト指向分析
第21章 オブジェクト指向設計
第22章 オブジェクト指向テスト
第23章 オブジェクト指向システムの技術的メトリクス
第5部 ソフトウェア工学の進んだ話題
第24章 フォーマルメソッド
第25章 クリーンルーム開発
第26章 ソフトウェア再利用
第27章 リエンジニアリング
第28章 クライアント・サーバソフトウェア工学
第29章 CASE:コンピュータ支援ソフトウェア開発
第30章 進むべき道
部の単位としては、「製品とプロセス」「ソフトウェアプロジェクトの管理」「ソフトウェア工学の伝統的手法」「オブジェクト指向ソフトウェア工学」「ソフトウェア工学の進んだ話題」があります。
少し当時の国内の状況を振り返ってみましょう。
2000年当時は第4版に部として設けられるほどすでに工学的実証が完了した「オブジェクト指向」がひとつの大きなトピックとなっており、実際このころ国内においても一大ムーブメントが巻き起こっています。それまでに多く使われていた構造化手法(構造化分析、構造化設計、構造化プログラミング)から、オブジェクト指向へのパラダイム移行はオープン化の波とあいまって開発者の混乱を招きましたが、現場レベルに小さく見るとその一因として「C++」があったと思います。乱暴な説明にはなりますが、要するにCをベースにしてオブジェクト指向っぽい書き方もできる言語ととして開発され、それが国内では組込み系中心に普及してしまったため、オブジェクト指向になりきれないコード実装が多く広がってしまい混乱をもたらしました(オブジェクト指向で実装したといいつつ、構造体を多用していたり、相変わらず中央集権的なメモリ管理がされていたりと、コード作法はもとよりアーキテクチャ設計もめちゃくちゃだった)。一方でオブジェクト指向の言語としてはJAVAが有力でしたがこのときは「遅くて使い物にならない」という意見が多く、大規模JAVA案件に大きな失敗事例がみられるなど(主にガベージコレクト周りのコントロールにおける失敗が多かった記憶)、結局こういったことからもオブジェクト指向への移行は遅々として進まみませんでした。ただしこれを乗り越えた技術者や企業もあり、それらは力強くモノづくりを継続されています。さて、このときにオブジェく指向手法を習得できなかった、現在の50代プログラマはどういう状況でしょうか。身の回りを観察すると「あぁ・・・」という事例を見かけることも多いのではないのかと思います。
進んだ話題としては、フォーマルメソッドやクリーンルーム、ソフトウェア再利用というのが挙げられていますが、「クライアント・サーバ工学」が先進的だったという事実に驚きますね。
第6版(日本語版2005年)
第1章ソフトウェアとトウェアエンジニアリング
第1部 ソフトウェアプロセス
第2章 プロセス
第3章 規範的なプロセスモデル
第4章 アジャイル開発
第2部 ソフトウェアエンジニアリングの実践
第5章 プラクティス -一般的な考え方
第6章 システムエンジニアリング
第7章 要求エンジニアリング
第8章 要求分析モデリング
第9章 設計エンジニアリング
第10章 アーキテクチャ設計
第11章 コンポーネントレベル設計
第12章 ユーザインタフェース設計
第13章 ソフトウェアテスト戦略
第14章 ソフトウェアテスト技術
第15章 成果物に関するソフトウェアメトリクス
第3部 Webエンジニアリングの適用
第16章 Webエンジニアリング
第17章 Webエンジニアリング他のための定式化と計画
第18章 Webアプリケーションのための分析モデリング
第19章 Webアプリケーションの設計モデリング
第20章 Webアプリケーションのテスト
第4部 ソフトウェアプロジェクトの管理
第21章 プロジェクトマネジメントの概念
第22章 プロセスとプロジェクトのメトリクス
第23章 ソフトウェアプロジェクトの見積もり
第24章 ソフトウェアプロジェクトスケジューリング
第25章 リスクマネジメント
第26章 品質マネジメント
第27章 変更管理
第5部 ソフトウェアエンジニアリングの先進トピック
第28章 フォーマルメソッド
第29章 クリーンルーム開発
第30章 コンポーネントベース・ソフトウェアエンジニアリング
第31章 リエンジニアリング
第32章 進むべき道
部の単位としては「ソフトウェアプロセス」「ソフトウェアエンジニアリングの実践」「Webエンジニアリングの適用」「ソフトウェアプロジェクトマネジメントの概念」「ソフトウェアプロジェクトの管理」「ソフトウェアエンジニアリングの先進トピック」があります。
部の単位で目を引くのは「Webエンジニアリング」でしょうか。出版された2005年にはすでにインターネットを使ったビジネスアプリケーションが実用化され当たり前となりつつあるころです。国内においてもWindows98を起点とした爆発的なインターネットブームを覚えている読者も多いのではないかと思います。インターネットの利用は当初はWebページを使った情報発信が主でありましたが、インターネット上に設置されたサーバに対してリクエストし処理結果がクライアントであるブラウザに戻ってくるというようなことがやられるようになりました。あれ、サーバ?クライアント? はい、第4版にて先進的な話題として「クライアント・サーバ」がありましたね。先進的だった技術が、(もちろん他にも理由はあったとはいえ)Webエンジニアリングで活用されることで一気に技術が一般工学化されたと推測できます。結果、第6版にの先進トピックには「クライアント・サーバ」はありません。
そのほか、「アジャイル開発」が登場しています。すでに章として登場していることから、この時海外ではすでに実証済みの工学的技術としてアジャイルは認められていたということですね。そのとき日本はというと…
そのほかや「アーキテクチャ設計」「ユーザインタフェース設計」という章が目を引きますし、用語としてアーキテクチャやプロジェクトマネジメントが利用されていることも工学的に重要な変化といえましょう。
最後に、2021年12月1日に国内出版された第9版です。
第1章ソフトウェアとソフトウェアエンジニアリング
第1部 ソフトウェアプロセス
第2章 プロセス
第3章 アジャイルとプロセス
第4章 推奨のプロセスモデル
第5章 ソフトウェアエンジニアリングの人間的側面
第2部 モデリング
第6章 プラクティスの指針となる原則
第7章 要求エンジニアリング
第8章 要求分析モデリングの推奨手法
第9章 設計の概念
第10章 アーキテクチャ設計の推奨手法
第11章 コンポーネント設計
第12章 ユーザエクスペリエンス設計
第13章 移動体端末におけるソフトウェアの設計
第14章 パターンに基づく設計
第3部 品質とセキュリティ
第15章 品質の概念
第16章 レビューの推奨手法
第17章 ソフトウェア品質保証
第18章 ソフトウェアセキュリティエンジニアリング
第19章 ソフトウェアテスト-コンポーネントレベル
第20章 ソフトウェアテスト-統合レベル
第21章 ソフトウェアテスト-移動体端末と特定ドメインに対するテスト
第22章 ソフトウェア構成マネジメント
第23章 ソフトウェアメトリクスと分析
第4部 ソフトウェアプロジェクトのマネジメント
第24章 プロジェクトマネジメントの概念
第25章 実行可能で役立つソフトウェア計画
第26章 リスクマネジメント
第27章 ソフトウェアサポート戦略
第5部 先進的な話題
第28章 ソフトウエアプロセス改善
第29章 ソフトウェアエンジニアリングの新興トレンド
第30章 おわりに
部の単位としては「ソフトウェアプロセス」「モデリング」「品質とセキュリティ」「ソフトウェアプロジェクトのマネジメント」「先進的な話題」があります。
この第9版において筆者がとても良いと思っているのはこの部構成です。過去の版は正直個別のそのとき目立つトピックを部として並べているという印象だったのですが、第9版はソフトウェア開発の流れにそって体系立ててある印象があり、「教科書として非常にわかりやすい」印象があります。もともと本書は「学生向けの一般教養的教科書」であるから、そういった意味でとても使いやすい、読み解きやすい、学習しやすいと感じています。
さて、この第9版でもっとも押したいのは部の単位として「品質とセキュリティ」が挙げられたことです。そして、実に15章~23章と9章も使って品質とセキュリティについて論じているということです。「皆わかっていたけれど、品質が大切は大切だし、品質にかかわることは工学的技術である」ということが、きちんと示されたわけです。これは強烈なメッセージとして全開発者が注目すべきことであろうと思います。
そのほか、「人間的側面」「モデリング」「ユーザエクスペリエンス」「移動体端末」など新しい話題が目を引きます。二つ目のモデリングはUMLを書くという協議ではなくて、すべてはモデリングであるという整理のされ方が個人的には好感を持っています。
そして先進的な話題ですが、我々日本人としては驚きしかないのですが「ソフトウェアプロセス改善」が挙げられています。これが一体どういうことを述べているのか、それはぜひ本書を入手して確認してみてほしいと思います。
最後に変遷のまとめスライドです。(2021年11月19日のET & Iot 展での講演スライドからの抜粋です)
体系とは常に変わり続けるものです。
他の体系もたくさんありますが、こうやって並べてみることで見えてくることがたくさんあります。第9版はもちろん入手いただきたいですが、(中古がは安い時に)過去の版も入手してみてはいかがかなと思います。
※本記事は実践ソフトウェアエンジニアリング第9版アドベントカレンダーのにも登録しています。他の記事もあわせて読まれると、本書や翻訳プロジェクトについての理解が深まるので、ぜひご参照ください。