体系学習
ソフトウェア開発の流れ
要求から要件定義、設計、実装、テスト、運用・保守までを、ウォーターフォールやアジャイルと結び付けて理解する。
対象資格:ITパスポート / 基本情報技術者試験
目安時間:20分
このページで理解できること
- 要求から運用保守までの流れを説明できる
- ウォーターフォールとアジャイルを区別できる
- 代表的なテストレベルを区別できる
- 運用・保守の必要性を説明できる
- FEではテスト技法やCIまで理解する
ITパスポート:開発工程、代表的な開発モデル、テスト、運用・保守の基本的な役割を流れで理解する。
基本情報技術者試験:ITパスポート範囲に加え、テスト技法、アジャイル実践、CIやDevOpsなどをより技術的に理解する。
ソフトウェア開発は、いきなりプログラムを書く作業ではありません。目的や要求を整理し、設計し、実装し、テストし、運用・保守する一連の活動です。このページでは、開発工程と代表的な開発モデルを一本の流れとして整理します。
まずは開発全体の流れ
代表的な開発活動を大きく並べると次のようになります。
要求を整理する
利用者や事業が何を必要としているかを明確にします。
要件を定義する
システムが満たすべき機能・性能・制約などを具体化します。
設計する
システム全体やソフトウェア内部の構造、データ、画面、処理などを設計します。
実装する
設計に基づいてプログラムを作成します。
テストする
単体・結合・システム・受入などの観点から、要求を満たすか確認します。
運用・保守する
本番利用後の監視、障害対応、修正、改善を行います。
1. 要求・要件・設計を分けて考える
『何が欲しいか』と『どう作るか』を段階的に具体化します。
要求分析では、利用者や業務が抱える課題や必要としていることを整理します。そこから、システムが満たすべき機能や品質、制約などを要件として定義します。
設計では、決められた要件をどのような構造や処理で実現するかを具体化します。外部設計・内部設計などの呼び方は開発方法によって異なることがありますが、利用者から見える仕様と内部構造を段階的に具体化する点が重要です。
要件が曖昧なまま実装へ進むと、完成後に『欲しかったものと違う』という手戻りが起きやすくなります。
| 段階 | 中心となる問い |
|---|---|
| 要求 | 利用者・業務は何を必要としているか |
| 要件定義 | システムは何を満たす必要があるか |
| 設計 | その要件をどう実現するか |
| 実装 | 設計をどうコードとして作るか |
2. ウォーターフォールとアジャイルは進め方が違う
どちらも目的は価値あるシステムを作ることですが、計画とフィードバックの取り込み方が異なります。
ウォーターフォール型では、要求・設計・実装・テストなどを段階的に進め、前工程の成果物を次工程へ引き継ぐ考え方が中心です。大規模で変更管理が重要な開発などで用いられます。
アジャイル開発では、短い期間で計画・設計・実装・テストを繰り返し、利用者や関係者からのフィードバックを取り込みながら価値を段階的に提供します。
『ウォーターフォールは必ず悪い』『アジャイルなら設計しない』という理解は誤りです。プロジェクトの性質、規制、変更頻度、チーム構成などに応じて適切な進め方を選びます。
| 観点 | ウォーターフォール | アジャイル |
|---|---|---|
| 進め方 | 工程を段階的に進める | 短い反復を繰り返す |
| 変更への対応 | 正式な変更管理を重視 | 反復ごとに変更を取り込みやすい |
| フィードバック | 工程やレビュー単位で得る | 短い周期で継続的に得る |
3. テストは「どの範囲を確認するか」で分ける
小さな単位からシステム全体、利用者視点へ広げます。
単体テストは、関数やモジュールなど比較的小さな単位が期待どおり動くか確認します。
結合テストは、複数のモジュールやサブシステムを組み合わせたときのインタフェースや連携を確認します。
システムテストはシステム全体が要求された機能・性能などを満たすか確認し、受入テストでは利用者・発注者側の観点から業務上の要求を満たすか確認します。
| テスト | 主に確認する範囲 |
|---|---|
| 単体テスト | 部品・モジュール |
| 結合テスト | 部品同士の連携 |
| システムテスト | システム全体 |
| 受入テスト | 利用者・業務要求を満たすか |
4. リリース後も開発は終わらない
運用・保守では安定稼働と継続的な改善を行います。
本番稼働後は、監視、障害対応、バックアップ、問い合わせ対応などの運用が必要です。
保守では、不具合修正だけでなく、環境変化への対応や機能改善なども行います。変更によって既存機能を壊していないかを確認する回帰テストも重要です。
変更履歴やソースコードを適切に管理するため、バージョン管理システムなどを利用します。
ITパスポートではここまでを確実に
- 要求・要件定義・設計・実装・テスト・運用保守の流れを説明できる
- ウォーターフォールとアジャイルの進め方の違いを説明できる
- 単体・結合・システム・受入テストの違いを説明できる
- リリース後にも運用・保守が必要な理由を理解している
FE深掘り
5. FEではテスト技法まで理解する
テストケースをどのように選ぶかまで踏み込みます。
ブラックボックステストでは、内部構造ではなく入力と出力の仕様に着目します。代表的な考え方に同値分割や境界値分析があります。
ホワイトボックステストでは、プログラム内部の制御構造に着目し、命令や分岐などがどの程度実行されたかを考えます。
テストではすべての入力を試すことが現実的でないため、欠陥を見つけやすいテストケースを体系的に選ぶことが重要です。
| 技法 | 着目するもの | 代表例 |
|---|---|---|
| ブラックボックス | 仕様上の入力と出力 | 同値分割、境界値分析 |
| ホワイトボックス | 内部の制御構造 | 命令網羅、分岐網羅など |
FE深掘り
6. FEではアジャイル開発の実践要素も整理する
短い反復だけでなく、役割や継続的改善も重要です。
スクラムでは、プロダクトバックログに必要な作業を整理し、短いスプリント単位で開発を進めます。スプリントレビューでは成果を確認し、レトロスペクティブでは開発プロセス自体を振り返ります。
継続的インテグレーション(CI)は、変更を頻繁に統合し、自動ビルドやテストなどで問題を早期に検出する考え方です。
DevOpsは、開発と運用が協力し、開発から運用までの流れを継続的に改善して迅速かつ安定した価値提供を目指す考え方です。
基本情報ではここまでつなげる
- 開発工程ごとの目的と成果を説明できる
- ウォーターフォールとアジャイルを状況に応じて区別できる
- 単体・結合・システム・受入テストを区別できる
- ブラックボックス・ホワイトボックステストの考え方を説明できる
- スクラム、CI、DevOpsの基本的な役割を説明できる
最後に一本の流れへ戻す
- 要求を理解する
- 要件として明確にする
- 実現方法を設計する
- 実装する
- 段階的にテストする
- 本番運用し、保守・改善を続ける
開発手法やテスト用語を個別に暗記するより、『今は何を決め、何を確認している段階か』を軸に整理すると、問題文から工程を判断しやすくなります。