前回は「何を作るか」の工程を扱いました。今回は「どう進めるか」という、開発の進め方そのものの話です。「アジャイルが今どきで正解」というイメージを持っている人は少なくありませんが、実はそう単純ではありません。
アジャイル開発って、最近の流行りなんでしょ? もうそれが正解で、ウォーターフォールは時代遅れってことよね
その理解、半分は合ってるけど半分は危ない
え、なんで。新しい方がいいに決まってるじゃない
向き不向きがあるんだよ、これ。今日はそこを整理しよう
ウォーターフォールモデルは、第12回でやった要件定義→設計→プログラミング→テストという工程を、上流から下流へ、後戻りしない前提で順番に進めていく方式
一直線に進むのね
そう。計画が立てやすく、進捗管理もしやすい。ただし、途中で要件が変わると手戻りが大きい。だから、要件が最初からはっきり決まっている大規模なプロジェクトに向いてる
じゃあ、途中で気が変わりやすいプロジェクトには向かないのね
そのとおり。それに対してスパイラルモデルは、設計→開発→評価という小さいサイクルを繰り返しながら、少しずつシステムを完成に近づけていく方式。1回のサイクルごとに、試作品を評価して次に活かせる
繰り返しながら精度を上げていくのね
その"繰り返す"という発想をさらに徹底したのがアジャイル開発。短い期間(数週間程度)のサイクルを繰り返しながら、動くソフトウェアを少しずつ届けていく。変化の速いプロジェクト、要件が最初から固まりきっていないプロジェクトに向いてる
じゃあ、要件がガッチリ決まってるならウォーターフォール、変化しそうならアジャイル、ってことね
うん、それが『向き不向きがある』の意味

アジャイルの代表的な手法がスクラム。スプリントと呼ばれる短い期間(1〜4週間程度)を1サイクルとして、その中で計画・開発・レビューを回す
スプリントって短距離走みたいな名前ね
うん、まさにそのイメージ。毎日短時間で状況共有するデイリースクラム、スプリントの最後に成果を確認するスプリントレビュー、進め方自体を振り返るレトロスペクティブ、こういう定例イベントを繰り返す
振り返りまでセットになってるのね
もう1つの代表手法がXP(エクストリーム・プログラミング)。ペアプログラミング(2人で1つのコードを書く)、テスト駆動開発(先にテストを書いてから実装する)など、開発の"やり方"そのものを工夫する実践がまとまってる
見積りって、どうやるの? アジャイルって、そもそも要件が変わるんでしょ
そこで使われるのがプランニングポーカー。チームメンバーがそれぞれ、作業の規模感をカードで一斉に出し合って、認識のズレをすり合わせながら見積もる手法。厳密な数値というより、相対的な規模感を揃えるのが目的
感覚のすり合わせなのね


1つ目は、さっきの『アジャイル=いつも正解』という思い込み。試験でも、プロジェクトの特性に応じてモデルを選ぶ、という前提で出題される
2つ目は?
スクラムの用語の役割の混同。プロダクトオーナー(何を作るか、優先順位を決める役割)とスクラムマスター(チームがスムーズに進められるよう支援する役割)は、名前が似てるけど役割が全然違う
そこ、絶対ごっちゃにしそう……
アジャイルが万能ってわけじゃないのね、意外だった
うん。次は、実際にプロジェクトを進めるときのマネジメントの話。『炎上プロジェクト』って言葉、聞いたことある?
……あるある、うちのサークルの学園祭準備がまさにそれだったわ
著者が作った無料の過去問アプリ「ITパスポート学習」の「ソフトウェア開発管理技術」で、そのまま手を動かして確認できます。間隔反復法(SRS)が「忘れかけた瞬間」に自動で再出題してくれるので、読みっぱなしでは終わりません。