---
# System prepended metadata

title: '読書会: ソフトウェア工学の基礎 2004'
tags: [読書会]

---

# 読書会: ソフトウェア工学の基礎 2004

[WYRD読書会](https://hackmd.io/@wyrd/BDC)の第6回です.

<img src="https://www.iwanami.co.jp//images/book/264787.jpg" width="100"/>

- 課題本: [ソフトウェア工学の基礎 2004](http://ttamai.sakura.ne.jp/indexj.html)
  - ソフトウェア工学
  - 2003年 09月 11日 (平成15年)
  - PDFは上記のリンクから **著書/訳書(和文)** > **玉井哲雄：ソフトウェア工学の基礎， 岩波書店，2004** を辿ればダウンロードできます

## 進め方
- 希望者を募る
  - 参加者または参加希望者は[DBC]を確認
- 週１、２回、各１時間実施
  - 基本的に毎週月曜日、木曜日のお昼の12時
- 時間になったら読書会を開始
- 全員読んでる前提で話を進める
- その会の参加者で持ち回りで読み進める
- ヘッドラインや、トピックを１回は読む
- ディスカッションをする
  - 担当者の疑問や提案等
- ファシリテーター
  ファシリテーターが不参加の場合は、次のファシリテーターが繰り上がりで担当します. 担当は2人づつ前半後半に分けてファシリテートします.
  | No  | Name     | Count |
  | --- |:-------- | -----:|
  | 1   | miyagaki |     6 |
  | 2   | satoruk  |     4 |
  | 3   | kando    |     5 |
  | 4   | koyoshi  |     5 |
  | 5   | toyoda   |     6 |
  | 6   | pon-chan |     4 |
  | 7   | UMA      |     6 |

## スケジュール
予定なので状況によって調整されます.

| Schedule            | Chapter | Subject                        |
|:------------------- | -------:|:------------------------------ |
| 02/08               |  第1 章 | ソフトウェアとソフトウェア工学 |
| 02/15, 02/18        |  第2 章 | ソフトウェアプロセス           |
| 02/22               |  第3 章 | 開発計画と要求分析             |
| 02/25, 03/01        |  第4 章 | モデル化技法とUML              |
|                     |  第5 章 | データの流れモデル             |
| 03/04               |  第6 章 | 制御の流れモデル               |
| 03/08               |  第7 章 | 協調モデル                     |
| 03/11, 03/18        |  第8 章 | 状態遷移モデル                 |
| 03/18, 03/22        |  第9 章 | オブジェクト指向モデル         |
| 03/22, 03/25        | 第10 章 | 形式手法                       |
| 03/25, 03/29, 04/05 | 第11 章 | 設計技法                       |
| 04/__               | 第12 章 | 検証技術                       |
| 04/__               | 第13 章 | ソフトウェアの保守・発展       |

## 目次

<details>
<summary> 第1章 ソフトウェアとソフトウェア工学 </summary>

| Chapter | Subject                              | Page | Read At    |
|:------- |:------------------------------------ | ----:|:---------- |
| 1.1     | ソフトウェアとは                     |    5 | 2021/02/08 |
| 1.2     | ソフトウェア工学とは                 |    5 |            |
| 1.3     | ソフトウェア工学の歴史               |    7 |            |
| 1.4     | ソフトウェア工学の範囲               |    8 |            |
| 1.5     | ソフトウェア工学の工学としての成熟度 |    8 |            |

</details>
<details>
<summary> 第2章 ソフトウェアプロセス </summary>

| Chapter | Subject                          | Page | Read At    |
|:------- |:-------------------------------- | ----:|:---------- |
| 2.1     | ライフサイクルモデル             |   11 | 2021/02/15 |
| 2.2     | 落水型モデル                     |   11 |            |
| 2.3     | 落水型に代わる開発モデル         |   12 |            |
| 2.4     | ソフトウェアプロセスの評価       |   14 |            |
| 2.5     | ソフトウェアプロセスの観察と改善 |   15 |            |
| 2.6     | プロセスプログラミング           |   18 | 2021/02/18 |

</details>
<details>
<summary> 第3章 開発計画と要求分析 </summary>

| Chapter | Subject                                  | Page | Read At    |
|:------- |:---------------------------------------- | ----:|:---------- |
| 3.1     | 何を作るか                               |   21 |            |
| 3.2     | システム化計画                           |   21 |            |
| 3.2.1   | 実際的な開発標準工程における初期フェーズ |   21 |            |
| 3.2.2   | コスト見積り                             |   23 |            |
| 3.3     | 要求分析                                 |   24 | 2021/02/22 |
| 3.3.1   | 要求工学                                 |   24 |            |
| 3.3.2   | 要求分析の考え方                         |   25 |            |
| 3.3.3   | 要求の種類                               |   26 |            |
| 3.4     | 仕様                                     |   27 |            |
| 3.4.1   | 仕様と要求の関係                         |   27 |            |
| 3.4.2   | 何を仕様として表すか                     |   28 |            |
| 3.4.3   | 仕様を誰が書き誰が使うか                 |   28 |            |
| 3.4.4   | よい仕様の条件                           |   29 |            |

</details>
<details>
<summary> 第4章 モデル化技法とUML </summary>

| Chapter | Subject                        | Page | Read At    |
|:------- |:------------------------------ | ----:|:---------- |
| 4.1     | モデルとは何か                 |   30 |            |
| 4.2     | ソフトウェアにおけるモデル     |   30 | 2021/02/25 |
| 4.2.1   | モデルという語の使われ方       |   30 |            |
| 4.2.2   | モデルと抽象化                 |   31 |            |
| 4.3     | グラフによるモデル化           |   32 |            |
| 4.3.1   | さまざまなモデルのグラフ表現   |   32 |            |
| 4.3.2   | グラフ表現によるモデル化の特徴 |   32 |            |
| 4.3.3   | グラフとモデル上の物理量       |   33 |            |
| 4.3.4   | グラフ理論の初歩概念の応用     |   34 |            |
| 4.3.5   | グラフの弱点と対策             |   34 |            |
| 4.4     | UML 記法                       |   35 |            |
| 4.4.1   | 経緯                           |   35 |            |
| 4.4.2   | UML の概要                     |   36 |            |
| 4.5     | 共通例題                       |   36 |            |
| 4.5.1   | 酒屋問題                       |   37 |            |
| 4.5.2   | 自動販売機問題                 |   38 | 2021/03/01 |

</details>
<details>
<summary> 第5章 データの流れモデル </summary>

| Chapter | Subject                  | Page | Read At |
|:------- |:------------------------ | ----:|:------- |
| 5.1     | データの流れ図           |   39 |         |
| 5.2     | 階層化                   |   40 |         |
| 5.3     | Demarco による構造化分析 |   41 |         |
| 5.4     | データの流れ図の記述方法 |   42 |         |
| 5.5     | モデルの検証             |   44 |         |

</details>
<details>
<summary> 第6章 制御の流れモデル </summary>

| Chapter | Subject        | Page | Read At    |
|:------- |:-------------- | ----:|:---------- |
| 6.1     | フローチャート |   46 | 2021/03/04 |
| 6.2     | 動作図         |   47 |            |
| 6.3     | 動作図の使い道 |   49 |            |

</details>
<details>
<summary> 第7章 協調モデル </summary>

| Chapter | Subject                     | Page | Read At    |
|:------- |:--------------------------- | ----:|:---------- |
| 7.1     | 系列図                      |   50 |            |
| 7.1.1   | 系列図の基本構造            |   50 |            |
| 7.1.2   | 並行プロセスの表現          |   51 |            |
| 7.2     | 協調図                      |   51 |            |
| 7.3     | Jackson システム開発法(JSD) |   53 |            |
| 7.3.1   | JSD モデルの基本構造        |   53 |            |
| 7.3.2   | 開発手順                    |   54 |            |
| 7.3.3   | 実体行動ステップ            |   54 |            |
| 7.3.4   | 実体構造ステップ            |   55 |            |
| 7.3.5   | 初期モデルステップ          |   55 | 2021/03/08 |
| 7.3.6   | 機能ステップ                |   56 |            |
| 7.3.7   | システムタイミングステップ  |   57 |            |
| 7.3.8   | 実装ステップ                |   57 |            |
| 7.3.9   | 酒屋問題                    |   58 |            |
| 7.3.10  | 自動販売機問題              |   60 |            |

</details>
<details open>
<summary> 第8章 状態遷移モデル </summary>

| Chapter | Subject                                              | Page | Read At    |
|:------- |:---------------------------------------------------- | ----:|:---------- |
| 8.1     | 状態遷移モデルの基本的な性質                         |   62 |            |
| 8.1.1   | グラフとしての特徴                                   |   62 |            |
| 8.1.2   | 具体例                                               |   63 |            |
| 8.2     | 状態遷移モデルの拡張                                 |   64 |            |
| 8.2.1   | 出力事象                                             |   64 |            |
| 8.2.2   | 遷移条件                                             |   64 |            |
| 8.2.3   | 並行システム                                         |   65 |            |
| 8.2.4   | 状態の階層化                                         |   65 |            |
| 8.3     | Statecharts                                          |   65 | 2021/03/11 |
| 8.3.1   | Statecharts の基本的特徴                             |   65 |            |
| 8.3.2   | 「アラームつき腕時計」の例題によるStatecharts の詳細 |   66 |            |
| 8.4     | 自動販売機問題                                       |   73 | 2021/03/11 |
| 8.5     | 状態遷移モデルの系譜                                 |   73 | 2021/03/18 |
| 8.5.1   | オートマトンの系譜                                   |   73 |            |
| 8.5.2   | 探索問題の系譜                                       |   75 |            |


</details>
<details open>
<summary> 第9章 オブジェクト指向モデル </summary>

| Chapter | Subject                              | Page | Read At |
|:------- |:------------------------------------ | ----:|:------- |
| 9.1     | オブジェクト指向技術の歴史           |   77 |         |
| 9.2     | オブジェクト指向モデルの基本概念     |   78 |         |
| 9.3     | オブジェクト指向開発方法論           |   79 |         |
| 9.4     | オブジェクト指向モデルの構築プロセス |   79 |         |
| 9.4.1   | ユースケースの記述                   |   79 |         |
| 9.4.2   | クラスの同定                         |   81 | 2021/03/22        |
| 9.4.3   | クラス図の作成                       |   81 |         |
| 9.4.4   | 協調関係の記述                       |   82 |         |
| 9.4.5   | 状態遷移図の作成                     |   82 |         |
| 9.4.6   | パッケージ化                         |   82 |         |
| 9.5     | 酒屋問題                             |   82 |         |
| 9.5.1   | ユースケースの作成                   |   83 |         |
| 9.5.2   | クラスの同定とクラス図               |   84 |         |
| 9.5.3   | 系列図と状態遷移図                   |   84 |         |

</details>
<details open>
<summary> 第10章 形式手法 </summary>

| Chapter | Subject                                 | Page | Read At    |
|:------- |:--------------------------------------- | ----:|:---------- |
| 10.1    | 形式的抽象化の方法                      |   86 |            |
| 10.2    | 形式的なソフトウェア開発技法            |   86 |            |
| 10.3    | 機能の形式化                            |   87 |            |
| 10.3.1  | 入力条件/出力条件に注目した機能の抽象化 |   87 |            |
| 10.3.2  | 関数として機能を捉える方法              |   88 |            |
| 10.4    | データの形式化                          |   88 | 2021/03/25 |
| 10.4.1  | 抽象データ型                            |   88 |            |
| 10.4.2  | 代数的仕様記述                          |   89 |            |
| 10.5    | 形式仕様記述言語Z                       |   89 |            |
| 10.5.1  | Spivey の例題                           |   90 |            |
| 10.5.2  | Z による酒屋問題の記述                  |   91 |            |
| 10.5.3  | Z における型                            |   91 |            |
| 10.5.4  | スキーマ                                |   92 |            |
| 10.5.5  | 汎用構成子                              |   93 |            |
| 10.5.6  | 抽象機械                                |   97 |            |
| 10.5.7  | 仕様の完成                              |  100 |            |

</details>
<details open>
<summary> 第11章 設計技法 </summary>

| Chapter | Subject                      | Page | Read At    |
|:------- |:---------------------------- | ----:|:---------- |
| 11.1    | アーキテクチャ               |  103 |            |
| 11.1.1  | アーキテクチャとは           |  103 |            |
| 11.1.2  | アーキテクチャの役割         |  103 | 2021/03/29 |
| 11.1.3  | 建築様式(Architecture Style) |  104 |            |
| 11.1.4  | アーキテクチャに関連する概念 |  105 |            |
| 11.1.5  | 酒屋問題のアーキテクチャ     |  106 |            |
| 11.2    | アルゴリズムの設計           |  108 |            |
| 11.2.1  | 不変条件                     |  110 |            |
| 11.2.2  | 最大公約数                   |  111 |            |
| 11.2.3  | 探索                         |  112 | 2021/04/05 |

</details>
<details>
<summary open> 第12章 検証技術 </summary>

| Chapter | Subject                                                                  | Page | Read At    |
|:------- |:------------------------------------------------------------------------ | ----:|:---------- |
| 12.1    | 検証の基本概念                                                           |  116 |            |
| 12.1.1  | 用語                                                                     |  116 |            |
| 12.1.2  | 要求と検証                                                               |  116 |            |
| 12.1.3  | さまざまな検証技術                                                       |  117 |            |
| 12.2    | プログラムの検証技術                                                     |  117 |            |
| 12.2.1  | テストの基本的な性質                                                     |  117 |            |
| 12.2.2  | テストケースの選定                                                       |  119 | 2021/04/08 |
| 12.2.3  | テスト環境と結果の評価                                                   |  126 |            |
| 12.2.4  | テストのプロセス                                                         |  126 |            |
| 12.2.5  | 信頼性モデル                                                             |  126 |            |
| 12.2.6  | テスト重視の開発プロセス                                                 |  128 |            |
| 12.2.7  | 対故障性                                                                 |  128 |            |
| 12.2.8  | 正当性の証明                                                             |  130 |            |
| 12.3    | 仕様の検証技術                                                           |  131 |            |
| 12.3.1  | 見直し（レビュー），査閲（インスペクション），徒歩検査（ウォークスルー） |  131 |            |
| 12.3.2  | モデル検査                                                               |  131 |            |

</details>
<details open>
<summary> 第13章 ソフトウェアの保守・発展 </summary>

| Chapter | Subject                      | Page | Read At |
|:------- |:---------------------------- | ----:|:------- |
| 13.1    | ソフトウェア発展の基本的特徴 |  137 |         |
| 13.2    | ソフトウェア発展のモデル     |  137 |         |
| 13.2.1  | システムの進化モデル         |  137 |         |
| 13.2.2  | オブジェクトの進化モデル     |  138 |         |
| 13.3    | ソフトウェア発展と保守       |  143 |         |
| 13.3.1  | ソフトウェアの保守の特性     |  143 |         |
| 13.3.2  | 保守作業の大きさ             |  144 |         |
| 13.3.3  | 保守のプロセス               |  144 |         |
| 13.3.4  | 保守の分類                   |  144 | 2021/04/22 |
| 13.3.5  | 保守の体制                   |  145 |         |
| 13.3.6  | 保守の技術とツール           |  145 |         |
| 13.3.7  | 保守の戦略                   |  147 |         |
| 13.4    | 再利用                       |  147 |         |
| 13.4.1  | 再利用のための技術           |  147 |         |
| 13.4.2  | 再利用を進めるための体制     |  149 |         |
| 13.5    | 再構築                       |  149 |         |
| 13.5.1  | 再構築と逆構築の関係         |  149 |         |
| 13.5.2  | 再構築ツールRefine           |  149 |         |

</details>

###### tags: `読書会`
