マネジメント系

開発手法の選び方 — ウォーターフォールとアジャイル

導入

マンションを建てるときは設計図を全て決めてから工事を始めますが、スマホアプリの開発ではリリース後にも改善を続けることがあります。どちらのやり方が正解というわけではなく、プロジェクトの性質に応じて開発手法を選ぶことが重要なのです。

なぜ重要か

ITパスポート試験のマネジメント系では、ウォーターフォール型とアジャイル型の違いが頻繁に問われます。「変化する要件に対応しやすいのはどちらか」「スクラムはどの開発手法のフレームワークか」といった問題は定番中の定番です。また、受入テスト(UAT)の位置づけについても問われることが多く、開発工程全体を俯瞰する理解が求められます。

実務においても、自社システムの開発依頼や外部ベンダーとの契約の場面で「どの開発手法を採用するか」を理解していることは重要です。要件が固まっていないのにウォーターフォール型で発注してしまうと、途中変更のコストが膨大になるリスクがあります。ビジネス側の担当者としてITプロジェクトに関わるすべての人にとって、開発手法の基礎知識は不可欠な共通教養といえます。

くわしく知ろう

ソフトウェア開発の進め方には大きく分けてウォーターフォール型とアジャイル型の2つが知られています。

ウォーターフォール型は、要件定義→設計→実装→テスト→リリースという工程を順番に進め、前の工程が完了してから次に進む手法です。滝(waterfall)が上から下に流れるイメージです。工程ごとに成果物が明確で進捗管理しやすい反面、途中で要件が変わると手戻りのコストが大きくなる点が特徴です。要件が最初から明確に固まっている大規模システムに向いています。

アジャイル型は、短い期間(スプリントと呼ばれる1〜4週間単位)で設計・実装・テストを繰り返し、少しずつ動くソフトウェアを積み上げていく手法です。変化する要件に柔軟に対応できる点が強みです。代表的な手法としてスクラム(Scrum)があり、スマホアプリやWebサービスの開発でよく採用されています。

また、開発の終盤に実施される受入テスト(UAT: User Acceptance Test)は、利用者が実際に要件を満たしているかを確認するテストで、ウォーターフォール型において特に重要な工程として位置づけられています。なお、個々のモジュールを単体で検証する単体テスト、複数モジュールの連携を確認する結合テストと区別して整理しておくことも大切です。

具体例で理解する

銀行の基幹システムの刷新は、要件が厳格に決まっており変更が許されにくいためウォーターフォール型が採用されることが多いです。一方、スタートアップのスマホアプリ開発では、ユーザーの反応を見ながら機能を追加・変更するアジャイル型が向いています。プロジェクトの要件変更頻度と規模がどちらの手法を選ぶかの判断基準になります。

試験での出題パターン

【パターン1:手法の特徴を問う問題】

「変化する要件に柔軟に対応できる開発手法はどれか」「前の工程が完了してから次に進む手法はどれか」という形で、ウォーターフォール型とアジャイル型の特徴を4択から選ぶ問題が頻出です。「短い反復サイクルで積み上げる」はアジャイル、「工程を順番に進める」はウォーターフォールというキーワードで判断できるようにしておきましょう。

【パターン2:スクラムや受入テストの位置づけを問う問題】

「スクラムはどの開発手法のフレームワークか」「利用者が仕様どおりに動作するかを確認するテストはどれか」という問い方も典型的です。スクラム=アジャイル型のフレームワーク、受入テスト=利用者が実施する最終確認テストという対応関係を覚えておくと得点につながります。

よくある間違い・紛らわしいポイント

【ウォーターフォール型とアジャイル型の優劣の誤解】

ウォーターフォールが「古くて劣る手法」、アジャイルが「優れた最新手法」という誤解は試験でも問われる落とし穴です。どちらが優れているかではなく「プロジェクトの性質によって使い分ける」という視点が正解です。要件が固まっている大規模案件ではウォーターフォールが適しており、頻繁に要件が変わるサービス開発ではアジャイルが有効です。

【スクラムとウォーターフォールの混同】

スクラムは「アジャイル開発のフレームワーク」であり、ウォーターフォール型の手法ではありません。デイリースクラム(毎日の短い進捗確認ミーティング)やスプリントレビュー(成果物の確認)はすべてアジャイル開発の文脈で使われる用語です。「スクラム=アジャイル」という対応関係を確実に押さえておきましょう。

【テスト工程の種類の混同】

単体テスト(個別モジュールの検証)・結合テスト(複数モジュールの連携確認)・受入テスト(利用者による要件確認)は、それぞれ目的と実施者が異なります。受入テストは最終工程で利用者が行うものであり、開発者が行う単体テストや結合テストとは明確に区別して覚えておきましょう。

まとめ・試験ポイント

  • ウォーターフォール=工程を順番に進める。要件変更に弱く、大規模・要件固定案件向き
  • アジャイル=短期間の反復(スプリント)で少しずつ開発する。要件変更に強い
  • スクラム=アジャイル開発の代表的なフレームワーク(ウォーターフォールではない)
  • 受入テスト(UAT)=利用者が要件充足を確認する最終工程
  • 単体テスト→結合テスト→受入テストという工程順序も覚えておくと便利
  • 試験では「変化する要件に対応しやすいのはどちらか」という出題が多い

学習した内容を試験形式で確認しよう。ITパスポート入門試験100問に挑戦できます。

入門試験100問に挑戦する