索引 / 001 JA
Software Engineering(ソフトウェア工学) cover

コンピュータサイエンス

コンピュータサイエンス

Software Engineering(ソフトウェア工学)

Ian Sommerville

英語原題: Software Engineering

計画駆動型とアジャイル型の両アプローチをバランスよく扱う、ソフトウェア工学の幅広い入門教科書。要求と設計から実装、テスト、進化までソフトウェアシステムの一生を追い、インスリンポンプや患者記録システムなど繰り返し登場する事例研究を通じて、原則を現実的なシステムに結びつける。

前提知識: 少なくとも1つの言語でのプログラミング経験と、単一の演習問題より大きなプログラムを作った経験が多少あること。

難易度レベル
中級
学術レベル
学部
software engineeringsoftware processrequirementssystem designagile教科書

01 / 読書ガイド

読書ガイド

引用

Sommerville, I. (2015). Software Engineering (10th ed.). Pearson.

章の要約

第10版は4つの部にまとめた25章と、用語集、索引からなり、約800ページある。Sommerville 自身のサイトによれば、本書は2015年4月に出版された。第9版からの変更点としては、Scrum に関する新しい内容を加えて全面的に書き直したアジャイルの章、信頼性・安全性・セキュリティについての独立した章、レジリエンス工学、システム工学、システムのシステムに関する新しい章が挙げられている。Pearson は本書を、信頼できるソフトウェアの背後にある実証済みのプロセスと技法を学生に紹介するものとし、広く使われているアジャイル手法と計画駆動型の手法の両方を案内すると述べている。

第1部、第1~3章:序論、ソフトウェアプロセス、アジャイルソフトウェア開発

第1章はプロフェッショナルなソフトウェア開発、ソフトウェア工学の倫理、事例研究を扱う。第2章はプロセスモデルと活動、変化への対処、プロセス改善を扱う。第3章はアジャイル手法と技法、アジャイルのプロジェクト管理、アジャイル手法の規模拡大を扱う。

第1部、第4~5章:要求工学、システムモデリング

第4章は機能要求と非機能要求、そして要求の抽出、仕様化、検証、変更のプロセスを扱う。第5章は文脈モデル、相互作用モデル、構造モデル、振る舞いモデルと、モデル駆動工学を示す。

第1部、第6~7章:アーキテクチャ設計、設計と実装

第6章はアーキテクチャ設計の決定、ビュー、パターン、アプリケーションアーキテクチャを扱う。第7章はUMLを用いたオブジェクト指向設計、デザインパターン、実装上の問題、オープンソース開発を扱う。

第1部、第8~9章:ソフトウェアテスト、ソフトウェアの進化

第8章は開発テスト、テスト駆動開発、リリーステスト、ユーザテストを区別する。第9章は進化のプロセス、レガシーシステム、ソフトウェア保守を扱う。著者は、レガシーシステムが前の版より詳しく扱われていると述べている。

第2部、第10~14章:信頼できるシステム、信頼性工学、安全工学、セキュリティ工学、レジリエンス工学

この部はシステムの信頼性とセキュリティを扱う。第10章は、ディペンダビリティ(高信頼性)の特性、社会技術システム、冗長性と多様性、信頼できるプロセス、形式手法を紹介する。信頼性、安全性、セキュリティはそれぞれ独立した章を持ち、Sommerville によれば、より一般的な講義の中で一つの話題を教えやすくなる。この版で新設された第14章は、サイバーセキュリティ、社会技術的レジリエンス、レジリエントなシステムの設計を扱う。(Pearson のオンライン目次には第14章がないが、著者の目次には含まれている。)

第3部、第15~18章:ソフトウェア再利用、コンポーネントベースのソフトウェア工学、分散ソフトウェア工学、サービス指向ソフトウェア工学

再利用(アプリケーションフレームワークとソフトウェアプロダクトラインを含む)、コンポーネントとその合成、分散システムとクライアントサーバ計算、そしてRESTfulサービスを含むサービス指向アーキテクチャ。

第3部、第19~21章:システム工学、システムのシステム、リアルタイムソフトウェア工学

3章のうち2章はこの版で新設された。システム工学とシステムのシステムである。第21章は、組込みシステムの設計、リアルタイムのアーキテクチャパターン、タイミング解析、リアルタイムOSを扱う。

第4部、第22~25章:プロジェクト管理、プロジェクト計画、品質管理、構成管理

リスク管理、人と協働。価格設定、計画駆動型とアジャイルの計画、見積り、COCOMO。品質、標準、レビュー、測定。そして、バージョン、ビルド、変更、リリースの管理。構成管理の章は、分散バージョン管理に合わせて更新された。

主要概念

第1部:ソフトウェア工学入門

  • ソフトウェアプロセスモデルとアジャイル手法:作業を組織する計画駆動型とアジャイルの方法。
  • 要求工学:機能要求と非機能要求の抽出、仕様化、検証。
  • システムモデリングとアーキテクチャ設計:システムのモデルとビュー、アーキテクチャパターン。
  • テストと進化:開発テスト、リリーステスト、ユーザテスト、レガシーシステムの保守。

第2部:システムの信頼性とセキュリティ

  • ディペンダビリティ、信頼性、安全性、セキュリティ、レジリエンス:1章ずつ扱われる一群の特性。
  • 冗長性と多様性、セーフティケース、安全なシステム設計。

第3~4部:発展的な話題と管理

  • 再利用とコンポーネントベース工学、サービス指向アーキテクチャ。
  • システムのシステム、リアルタイムシステム。
  • リスク管理、見積り、品質管理、バージョン管理。

批判的分析

長所

  • プロセスの伝統間のバランス。 Pearson は、本書がアジャイルと計画駆動型の両方の手法を扱うものと紹介している。アジャイルの章はこの版で書き直され、計画も両方の形(計画駆動型開発とアジャイルの計画)で現れる。
  • 信頼性を焦点の絞られた章の連なりとして扱う。 信頼性、安全性、セキュリティ、レジリエンスがそれぞれ独立した章を持つので、講義はそのうちの一つを取り上げることができる。
  • 本全体に散りばめられた事例研究。 著者は意図的に複数を使っている。デジタル学習環境 iLearn、メンタルヘルス支援システム Mentcare、インスリンポンプ、荒野の気象観測所、エアバス340の飛行制御システム、アリアン5の打ち上げ事故である。
  • 無料の補助資料。 Sommerville のサイトには、各章のスライド、選択された演習問題の解答と小テストを含む教員用ガイド、事例研究の解説、40本を超える動画、サンプル章(第1章、第12章、第20章)、以前の版のウェブ章がある。

短所

  • 深さより広さ。 約800ページに25章を収めるので、ほとんどの話題(リアルタイム、分散、サービス指向ソフトウェア)には3~5節しか割かれず、本書は専門的に掘り下げるのではなく概観する。
  • 以前の内容の一部はウェブにしかない。 プロセス改善とアスペクト指向工学は印刷版から外された。著者は、ウェブ章は最初に公開されて以来更新されておらず、一部は古くなっていると述べている。
  • 2015年時点のスナップショット。 目次と著者の変更点の一覧には、Scrum、RESTfulサービス、分散バージョン管理は挙がっているが、DevOps や継続的デリバリーはないので、現在のデリバリーの実務を扱う講義には補足が必要である。

コースにおける位置づけ

Sommerville の本は、このコースの幅広い概説型の教科書であり、ほかの本は一つの話題をより深く掘り下げる専門的な本である。Ousterhout の A Philosophy of Software Design は、モジュール設計による複雑さの管理を扱う短い本である。Bass、Clements、Kazman の Software Architecture in Practice はアーキテクチャと品質特性を深く扱い、Jackson の Software Abstractions は Alloy による軽量な形式手法を紹介する。Ousterhout は第6章と第7章(アーキテクチャ、設計と実装)から、Bass らは第6章から、Jackson はシステムモデリングの第5章から自然につながる。

Software Engineering at Google は、大きな組織がソフトウェアを長期にわたり維持する方法についての無料のエッセイ集であり、The Pragmatic Programmer は実務の開発者のための習慣と技法を集めたものである。どちらも、第1部の用語にすでに触れ、実践志向の視点を求める読者に向く。

本書の使い方

本書は、ソフトウェア工学の最初の講義を受ける学生、概観を必要とする他分野の大学院生、そして実務者を対象としている。1つの演習より大きなプログラムを作った経験を含め、プログラミングの経験があることが妥当な前提である。

実践的な進め方:

  • 中核: 第1部(第1~9章)を順に。まず試読として、サンプル章の第1章を読む。第2~3章は、1つのプロセスに従うチームプロジェクトと組み合わせる。
  • 関心に応じて選ぶ: 第2部からは第11章(信頼性)、第12章(安全性)、第13章(セキュリティ)、第14章(レジリエンス)。第3部からは、再利用、サービス、リアルタイムの話題。
  • 管理: プロジェクト型の講義には第22~25章、特にプロジェクト計画と構成管理。

繰り返し現れる事例研究についてはメモを取っておくとよい。著者のスライド、動画、教員用ガイドは学習の補助として使える。