システム管理論 I / 第 12 回

アジャイル開発

小さく回す ── 変化を前提にした作り方

この回のねらい

アジャイル開発とは

アジャイル(agile)とは「素早い」「機敏な」という意味です。

アジャイル開発とは、 「計画 ⇒ 設計 ⇒ 実現 ⇒ テスト」の小さなプロセスを繰り返す開発のしかたです。 この 1 回の繰り返しをイテレーション(反復)と呼びます。

ねらいは、仕様変更に強くすること、 そして製品の価値を最大限にすることです。

背景

以前の開発手法に比べると、アジャイルはまだ発展途上の考え方です。 万能薬ではありませんが、変化が前提の領域では有効です。

ウォーターフォールとの違い

ウォーターフォールアジャイル
前提要求は先に決められる要求はやってみないと分からない・変わる
進め方全工程を 1 回通す小さな一周を何度も回す
成果の出方最後にまとめて出る毎回、動くものが出る
変更への態度変更はコスト。凍結して守る変更は歓迎。価値を上げる機会
向く場面要求が固まっている。前例がある。大人数要求が動く。新しい領域。小さめのチーム

優劣ではなく、前提の違いです。 要求が本当に固まっているなら、ウォーターフォールのほうが管理しやすい。 要求が動くのに凍結しようとすると破綻します。 どちらを選ぶかは、その案件で要求がどれだけ安定しているかで決まります。 第3回のスパイラルモデルは、両者の中間にあたる考え方でした。

3 つの真実

アジャイルは、次の 3 つを認めるところから始まります。

  1. プロジェクトの開始時にすべての要求を集めることはできない。
  2. 集めた要求は必ず変わる。
  3. やるべきことは、いつも与えられた時間と資源より多い。

この 3 つを認めないまま計画を立てると、 計画は「守れない約束」になります。認めたうえで、 優先順位をつけて、価値の高いものから作るのがアジャイルの構えです。

アジャイルチーム

特徴中身
自己組織的誰が何をやるかを、チーム自身が決める
職能横断設計・実装・テストを分断せず、チームで完結させる
顧客が近い要求を出す人が、いつでも聞ける場所にいる
小さい意思疎通の経路が増えすぎない大きさに保つ

インセプションデッキ

プロジェクトを始めるときに、チーム全員で答えを出しておく問いの一式です。 「何を作るか」だけでなく、「何を作らないか」「なぜやるのか」「何を諦めるか」を先に言葉にします。

代表的な問い:

最後の問いが重要です。 第6回で見たとおり、設計とはトレードオフを決める仕事でした。 プロジェクト全体についても同じことが言えます。 全部は手に入りません。何を諦めるかを先に決めておくと、 後で慌てて決めなくて済みます。

バーンダウンチャート

残っている作業量を縦軸、時間を横軸にとったグラフです。 線が右下がりに 0 へ向かっていれば順調、寝ていれば遅れています。

バーンダウンチャートを動かすスライダを動かす

バーンダウンチャートの値打ち。 第2回で「ソフトウェアは目に見えないので進捗が測れない」と述べました。 このグラフは、残作業という 1 本の線で進捗を見えるようにする道具です。 実績の傾きからいつ終わるかが読めるので、 「間に合いません」と言うのが遅れにくくなります。

この授業のまとめ

12 回を通して、システム開発の全工程を見てきました。 共通していたのは次の 3 点です。

  1. ソフトウェアは見えない。だから図に描き、文書にし、数字で測る工夫がある (UML、仕様書、結合度・強度、網羅率、バーンダウンチャート)。
  2. 誤りは早く見つけるほど安い。だから上流を丁寧にやり、 試作品を作り、小さく回す(要求分析、プロトタイプ、スパイラル、アジャイル)。
  3. 全部は手に入らない。だから何を優先し、何を諦めるかを決める (良い設計=バランスのとれた最善解、インセプションデッキ)。
← 第11回 付録 2進数 →