マネジメント系ソフトウェア開発管理技術出題頻度 ★★★

ウォーターフォールとアジャイル

システム開発の進め方「ウォーターフォールモデル」と「アジャイル開発」の違いを、家づくりと料理の例えで図解。スクラムやXPの用語、プロトタイピング、スパイラルモデルもまとめて押さえます。

この単元の用語:ウォーターフォールモデル / アジャイル / スクラム / スプリント / XP / ペアプログラミング / テスト駆動開発 / プロトタイピング / スパイラルモデル

システムって、どういう順番で作るんですか?

代表的な進め方が2つあるよ。計画どおりに一気に作る「ウォーターフォール」と、少しずつ作って直していく「アジャイル」だ。

ウォーターフォールモデル ― 家を建てるように作る

ウォーターフォール(waterfall)は「滝」という意味です。水が上から下へ流れ落ちるように、工程を上から順番に進めていきます。

要件定義 設計 プログラミング テスト 運用・保守 上の工程が終わって から次へ進む (原則、後戻りしない)
滝の水が流れ落ちるように、工程を順に進める

家づくりと同じです。設計図を完成させてから基礎を作り、柱を立て、屋根をのせます。柱を立てたあとで「やっぱり間取りを変えたい」となると、大きな手戻りが発生します。

良いところ苦手なところ
全体の計画・進み具合が管理しやすい途中の仕様変更に弱い
大規模なシステムに向いている完成するまで利用者が実物を見られない

アジャイル開発 ― 味見しながら料理するように作る

アジャイル(agile)は「素早い・機敏な」という意味です。短い期間で「動くもの」を作り、利用者に見てもらって改善することを繰り返します。

1回目 ログイン機能 2回目 +検索機能 3回目 +お気に入り 計画 → 作る → 見てもらう → 改善… を短い期間で繰り返す 毎回「動くもの」ができ、少しずつ機能が増えていく

カレーを作るとき、少し煮込んでは味見をして「もう少し辛く」「塩を足そう」と調整しますよね。最後に一度だけ味見するより、失敗が少なくなります。アジャイルはこの「こまめな味見」をシステム開発でやるイメージです。

アジャイルのほうが良さそうに見えますけど…。

変化の多いアプリやWebサービスには向いているね。でも、全体のスケジュールや費用が見えにくいという弱点もある。どちらが優れているというより、向き不向きなんだ。

アジャイルの代表的な手法① スクラム

スクラムはラグビーのスクラムが語源で、チームで協力して進めることを重視します。

用語意味
スプリント1〜4週間程度の短い開発期間。これを繰り返す
デイリースクラム毎日行う15分程度の短い打合せ
プロダクトオーナー何を作るか(優先順位)を決める人
スクラムマスタースクラムがうまく回るよう支援する人
プロダクトバックログ作りたい機能を優先順位順に並べたリスト

アジャイルの代表的な手法② XP(エクストリームプログラミング)

XPは、プログラマ向けの具体的な実践方法(プラクティス)をまとめたものです。

  • ペアプログラミング:2人1組で1台のPCを使い、1人が書き、もう1人がチェックする
  • テスト駆動開発(TDD):先にテストを書き、そのテストに合格するようにプログラムを書く
  • リファクタリング:外から見た動作は変えずに、プログラムの中身をわかりやすく整理する
  • 継続的インテグレーション(CI):作ったプログラムを頻繁に統合・テストする

ペア → 2人で、テスト駆動 → テストが先、リファクタリング → 動きは変えずに整理。この3つは特によく出る。

そのほかの開発モデル

モデル特徴
プロトタイピングモデル開発の初期に試作品(プロトタイプ)を作って利用者に確認してもらい、認識のズレを防ぐ
スパイラルモデルシステムをいくつかの部分に分け、部分ごとに設計〜テストを繰り返して完成に近づける
DevOps開発(Development)と運用(Operations)が協力し、素早くリリースを続ける
  • ウォーターフォール = 工程を順に進める・後戻りしない前提・大規模向き
  • アジャイル = 短い期間で動くものを作り改善を繰り返す・変化に強い
  • プロトタイピング = 最初に「試作品」を見せる
  • スパイラル = 部分ごとに「繰り返し」て完成させる

確認クイズ

選択肢をタップすると、すぐに正解と解説が表示されます。

Q1アジャイル開発の特徴として、最も適切なものはどれか。

Q2スクラムにおいて、開発を区切る1〜4週間程度の短い期間を何というか。

Q3XP(エクストリームプログラミング)のプラクティスのうち、「2人1組で1台のコンピュータを使い、1人がコードを書き、もう1人がそれを確認しながら開発する」ものはどれか。