この章で学ぶこと
開発技術は 6〜8 問程度出題。プロセス名、テスト種別、アジャイル関連用語が頻出。
学習ゴール
この章を読み終えた時点で、以下ができるようになっていることを目指します。
- ウォータフォール・アジャイル・スパイラルの開発モデルの違いを判別できる
- テスト種別(単体・結合・システム・受入)を使いこなせる
- レビュー技法(ウォークスルー・インスペクション等)を判別できる
- オブジェクト指向の基本概念(クラス・継承・カプセル化・ポリモーフィズム)を使いこなせる
- DevOps・CI/CD などモダン開発手法を判別できる
1. システム開発プロセス
1.1 開発の全体フロー
システム開発は基本的に 「要件定義 → 設計 → 実装 → テスト → 導入 → 運用」 の順で進みます。テストは「単体 → 結合 → システム → 受入」と段階的に範囲を広げていきます。
| 設計フェーズ(左) | 対応するテストフェーズ(右) |
| ① 要件定義 | ⑧ 受入テスト |
| ② 外部設計 | ⑦ システムテスト |
| ③ 内部設計 | ⑥ 結合テスト |
| ④ プログラミング | ⑤ 単体テスト |
V 字モデル: 左の設計フェーズと右のテストフェーズが対応関係になっており、「どの設計段階で考えた要件・仕様を、どのテスト段階で検証するか」が一目で分かる。
- 要件定義 — 何を作るかの合意
- システム設計 — 外部設計(UI 設計)→ 内部設計(構造設計)
- プログラミング — 実装
- テスト — 単体 → 結合 → システム → 受入
- 導入 — 本番稼働
- 運用・保守 — 継続的な改善
覚え方: 要 → 外 → 内 → プ → 単 → 結 → シ → 受(要件 → 外部設計 → 内部設計 → プログラミング → 単体テスト → 結合テスト → システムテスト → 受入テスト)。V 字の両翼を上から下へ降りて、また上に登るイメージ。
1.2 要件定義
| 区分 | 内容 |
|---|
| 機能要件 | システムが提供する機能(何をする) |
| 非機能要件 | 品質特性(性能、可用性、セキュリティ、保守性、移植性) |
1.3 設計フェーズ
| 段階 | 別名 | 主な成果物 |
|---|
| 外部設計 | 基本設計 | 画面設計、帳票設計、インタフェース仕様 |
| 内部設計 | 詳細設計 | プログラム分割、データ構造 |
| プログラム設計 | — | モジュール仕様、処理ロジック |
2. プログラミングとレビュー
2.1 コーディング関連用語
- ソースコード — プログラムの人間可読形式
- コンパイル — ソースを機械語に変換
- インタプリタ — 逐次解釈実行
- デバッグ — バグを見つけて修正する作業
- リファクタリング — 動作を変えず内部構造を改善
2.2 レビューの種類
| レビュー方式 | 特徴 |
|---|
| ウォークスルー | 作成者が説明しながら進める |
| インスペクション | 第三者が厳格にチェック |
| ペアプログラミング | 2 人で 1 台の PC を使い協働 |
| コードレビュー | 成果物の相互チェック |
3. テスト
3.1 テストの段階
| 段階 | 対象 | 実施者 |
|---|
| **[[単体テスト | たんたいてすと]]** | 個々のモジュール |
| **[[結合テスト | けつごうテスト]]** | モジュール間連携 |
| システムテスト | システム全体 | 開発チーム |
| **[[運用テスト | うんようテスト]]** | 本番環境での動作 |
| **[[受入テスト | うけいれテスト]]** | 検収 |
3.2 テスト手法
| 手法 | 特徴 |
|---|
| ホワイトボックステスト | 内部構造を考慮。分岐・経路網羅 |
| ブラックボックステスト | 入出力のみで確認。同値分割・境界値分析 |
| **[[回帰テスト | かいきテスト]](リグレッション)** |
| 負荷テスト | 想定最大負荷での動作確認 |
| ストレステスト | 限界を超える負荷での動作確認 |
| ユーザビリティテスト | 使いやすさの評価 |
ホワイトボックステスト
内部構造(コード・分岐)を見て設計
例:
if (x > 0):
処理 A
else:
処理 B
return result
命令網羅・分岐網羅・条件網羅
主に開発者が実施
ブラックボックステスト
入出力だけを確認
入力 → 【? 中身は見ない】 → 出力
同値分割・境界値分析
仕様書だけでテスト設計
頻出引っかけ: ホワイトボックスは「コード(白く見える)」を見て分岐網羅率を測る。ブラックボックスは「仕様書(中身は黒く見えない)」だけ見て入出力をテストする。境界値分析(0/1 や 99/100 のような境目)と**同値分割**(同じ扱いになる入力値群を 1 つにまとめる)はブラックボックスの代表手法。
3.3 テストのカバレッジ
- 命令網羅(C0) — すべての命令を 1 回以上実行
- 分岐網羅(C1) — すべての分岐を 1 回以上通過
- 条件網羅(C2) — すべての条件の真偽を網羅
4. 開発モデル
4.1 代表的な開発モデル
代表的な 2 大モデル「ウォーターフォール」と「アジャイル」は対照的なアプローチ。要件の確定度合いと変化の頻度で使い分けます。
ウォーターフォール
上流 → 下流の一方通行
- 要件定義
- 設計
- 実装
- テスト
⚠ 後戻りしにくい
向き: 要件が明確・大規模・公共系。完成は最後。
アジャイル(スクラム)
短期反復で動くソフトを積み上げる
- スプリント 1(2-4 週間): 計画 → 実装 → テスト → 動くソフトを納品
- スプリント 2: フィードバック反映 + 次の機能追加
- … 継続的に反復 …
- スプリント n: 完成(途中要件変更 OK)
向き: 変化が激しい・要件流動
| モデル | 特徴 | 適用場面 |
|---|
| ウォーターフォール | 上流から下流へ順番に。後戻りしない | 要件が明確・大規模システム |
| プロトタイピング | 試作モデルで要件を具体化 | 要件が曖昧 |
| スパイラルモデル | 反復しながら機能を追加 | 規模が大きく段階的開発が必要 |
| アジャイル | 短期間の反復で小さな機能を積み上げる | 変化が激しい・要件が流動的 |
| DevOps | 開発と運用を一体化して高速化 | Web サービス・クラウド |
頻出引っかけ: ウォーターフォールとアジャイルは「どちらが優れている」ではなく「どちらが適しているか」。要件が固い大規模公共系はウォーターフォールが適し、要件が変わりやすい Web サービスはアジャイルが向く。
4.2 アジャイル開発の主要手法
| 手法 | 特徴 |
|---|
| XP(エクストリーム・プログラミング) | ペアプログラミング、テスト駆動開発、リファクタリング |
| スクラム | スプリント(2-4 週間)でインクリメントを作る。スプリントレビュー、デイリースクラム |
| カンバン | 進捗を見える化して流す |
| TDD(テスト駆動開発) | テストを先に書いてからコードを書く |
| CI/CD | 継続的インテグレーション/デリバリ |
4.3 アジャイル関連用語
- スプリント — 2-4 週間の短期開発サイクル
- プロダクトバックログ — 実装すべき要求一覧
- ベロシティ — チームが 1 スプリントで消化できる作業量
- イテレーション — 反復開発の 1 サイクル
5. ソフトウェア開発管理技術
5.1 構成管理
- ソフトウェア構成管理(SCM) — ソースコード・ドキュメントのバージョン管理
- Git — 代表的な**分散バージョン管理システム**(Linux カーネル開発から生まれ、現在のデファクトスタンダード)
- トランク(main / master ブランチ) — 主開発ライン
- ブランチ — 派生ライン(機能開発・バグ修正単位で作る)
- マージ — 変更の統合
- プルリクエスト(Pull Request) — 変更をレビューしてもらう仕組み
頻出引っかけ: Git は「分散型バージョン管理」(各開発者がローカルに完全な履歴を持つ)。一方、SVN(Subversion)は「集中型」(中央サーバが履歴を持つ)。同じバージョン管理でも仕組みが違う。
5.2 ユーザエクスペリエンス(UX)設計
- UX(User Experience) — 利用時の体験全体
- UI(User Interface) — 使う人と接する部分
- ユーザビリティ — 使いやすさの度合い
- ペルソナ — 典型的ユーザ像
- カスタマージャーニー — 利用者が接する全体プロセス
- ユーザビリティテスト — 実ユーザが使って評価
5.3 知的財産関連(開発現場)
- ソースコードの著作権 — 作成者に自動発生
- 職務著作 — 業務で作成したものは法人が著作者となることがある
- OSS ライセンス — 章 10 参照(MIT/GPL等)
- 特許権 vs 著作権 — アイデアは特許、表現は著作権
📋 章末まとめ
最重要ポイント 10 連発
- 開発プロセスの順序 — 要件 → 設計 → 実装 → テスト → 導入 → 運用
- 機能要件 vs 非機能要件 — 何をする vs どう動くか
- ホワイトボックス vs ブラックボックス — 内部構造あり vs 入出力のみ
- 単体 → 結合 → システム → 受入 のテスト 4 段階
- 回帰テスト — 修正後の副作用チェック
- アジャイルの核心 — 短期反復・動くソフトウェア優先
- スクラムの 3 要素 — プロダクトバックログ・スプリント・ベロシティ
- XP と TDD — ペアプロ・テスト駆動
- CI/CD — 継続的インテグレーション/デリバリ
- リファクタリング — 動作を変えない内部改善
出題傾向のコツ
- 開発プロセスの順序を問う問題が頻出
- テスト種別は「誰が・何を対象に・いつ実施」の 3 点で整理
- アジャイルは「変化への適応・反復・短サイクル」がキーワード