第1章 ソフトウェア工学とは
1.1 ソフトウェアと工学
1.2 ソフトウェア工学誕生の歴史的背景
1.3 ソフトウェア工学の歴史的歩み
1.4 ソフトウェア工学の概要
1.5 銀の弾丸は存在するか
第1章の問題
第2章 ソフトウェア開発プロセス
2.1 ソフトウェア開発プロセスモデル
2.2 ウォータフォールモデル
2.3 反復型開発モデル
2.4 アジャイルソフトウェア開発
2.5 DevOps
2.6 ソフトウェア開発の本質とは
第2章の問題
第3章 代表的なソフトウェア開発手法
3.1 プログラミング言語と開発手法の関係
3.2 構造化開発手法
3.3 オブジェクト指向開発手法
3.4 アスペクト指向開発手法
第3章の問題
第4章 ソフトウェアモデリングとUML
4.1 モデリングと抽象化
4.2 統一モデリング言語UML
第4章の問題
第5章 要求獲得
5.1 ソフトウェア開発の難しさ
5.2 ソフトウェア開発の始まりとしての要求獲得
5.3 要求工学
5.4 要求の抽出
5.5 要求の仕様化
5.6 ゴール指向要求工学
5.7 共創の時代の要求工学
第5章の問題
第6章 ソフトウェア分析
6.1 オブジェクト指向による分析
6.2 構造モデリング
6.3 振舞いモデリング
6.4 モデルの洗練
第6章の問題
第7章 ソフトウェア設計と実装
7.1 ソフトウェアアーキテクチャ
7.2 設計モデルの洗練
7.3 UMLモデルからのプログラム実装
7.4 モデル駆動開発
7.5 ソフトウェア再利用
第7章の問題
第8章 ソフトウェアテスト
8.1 効果的なテストとは
8.2 要求仕様テスト
8.3 ブラックボックステストとホワイトボックステスト
8.4 開発プロセスから見たソフトウェアテスト
8.5 効果的なテスト仕様の作成
8.6 テスト駆動開発とテストの自動化
8.7 テストオラクルとテスト不能プログラム
8.8 機械学習ソフトウェアのテスト
第8章の問題
第9章 形式手法
9.1 形式手法とは
9.2 フロイド-ホーア論理によるプログラム検証
9.3 契約による設計と自動検証
9.4 形式手法の導入
第9章の問題
第10章 ソフトウェア保守
10.1 ソフトウェアの寿命と保守
10.2 ソフトウェア保守の分類
10.3 保守を支援する手法と技術
10.4 保守からソフトウェア発展へ
第10章の問題
第11章 ソフトウェア品質
11.1 ソフトウェア開発における品質の重要性
11.2 プロダクト品質
11.3 プロセス品質
11.4 ソフトウェアレビュー
11.5 ソフトウェアメトリクス
11.6 ソフトウェアリポジトリマイニング
第11章の問題
第12章 開発管理と開発環境
12.1 プロジェクトマネジメント
12.2 ソフトウェア開発環境
第12章の問題
第13章 これからのソフトウェア工学
13.1 ソフトウェア工学の成熟度
13.2 ソフトウェア工学の将来
13.3 ソフトウェア工学研究のあり方
第13章の問題
章末問題のヒント
参考図書
索引
1.1 ソフトウェアと工学
1.2 ソフトウェア工学誕生の歴史的背景
1.3 ソフトウェア工学の歴史的歩み
1.4 ソフトウェア工学の概要
1.5 銀の弾丸は存在するか
第1章の問題
第2章 ソフトウェア開発プロセス
2.1 ソフトウェア開発プロセスモデル
2.2 ウォータフォールモデル
2.3 反復型開発モデル
2.4 アジャイルソフトウェア開発
2.5 DevOps
2.6 ソフトウェア開発の本質とは
第2章の問題
第3章 代表的なソフトウェア開発手法
3.1 プログラミング言語と開発手法の関係
3.2 構造化開発手法
3.3 オブジェクト指向開発手法
3.4 アスペクト指向開発手法
第3章の問題
第4章 ソフトウェアモデリングとUML
4.1 モデリングと抽象化
4.2 統一モデリング言語UML
第4章の問題
第5章 要求獲得
5.1 ソフトウェア開発の難しさ
5.2 ソフトウェア開発の始まりとしての要求獲得
5.3 要求工学
5.4 要求の抽出
5.5 要求の仕様化
5.6 ゴール指向要求工学
5.7 共創の時代の要求工学
第5章の問題
第6章 ソフトウェア分析
6.1 オブジェクト指向による分析
6.2 構造モデリング
6.3 振舞いモデリング
6.4 モデルの洗練
第6章の問題
第7章 ソフトウェア設計と実装
7.1 ソフトウェアアーキテクチャ
7.2 設計モデルの洗練
7.3 UMLモデルからのプログラム実装
7.4 モデル駆動開発
7.5 ソフトウェア再利用
第7章の問題
第8章 ソフトウェアテスト
8.1 効果的なテストとは
8.2 要求仕様テスト
8.3 ブラックボックステストとホワイトボックステスト
8.4 開発プロセスから見たソフトウェアテスト
8.5 効果的なテスト仕様の作成
8.6 テスト駆動開発とテストの自動化
8.7 テストオラクルとテスト不能プログラム
8.8 機械学習ソフトウェアのテスト
第8章の問題
第9章 形式手法
9.1 形式手法とは
9.2 フロイド-ホーア論理によるプログラム検証
9.3 契約による設計と自動検証
9.4 形式手法の導入
第9章の問題
第10章 ソフトウェア保守
10.1 ソフトウェアの寿命と保守
10.2 ソフトウェア保守の分類
10.3 保守を支援する手法と技術
10.4 保守からソフトウェア発展へ
第10章の問題
第11章 ソフトウェア品質
11.1 ソフトウェア開発における品質の重要性
11.2 プロダクト品質
11.3 プロセス品質
11.4 ソフトウェアレビュー
11.5 ソフトウェアメトリクス
11.6 ソフトウェアリポジトリマイニング
第11章の問題
第12章 開発管理と開発環境
12.1 プロジェクトマネジメント
12.2 ソフトウェア開発環境
第12章の問題
第13章 これからのソフトウェア工学
13.1 ソフトウェア工学の成熟度
13.2 ソフトウェア工学の将来
13.3 ソフトウェア工学研究のあり方
第13章の問題
章末問題のヒント
参考図書
索引