アジャイルな開発/西田 則夫

 ソフトウェア開発手法の王道としてよく知られているものにウォーターフォールモデルがあります。開発手法とは、手順、ノウハウ、定義のことを意味しますが、これは、「要求定義」、「設計」、「実装」、「テスト」、「運用」のような開発工程に分け、前工程のアウトプットが後工程のインプットになるような成果物を作成します。
 大型汎用機の時代から、オープンシステム、そしてWeb系システムまでこの手法により大半のシステムが開発されてきました。この手法のメリットは、工程を明確にしていることで計画策定や進捗管理を行う上でのプロジェクト管理のしやすさや各工程の工数の見積もりやリソースの配分が実施しやすい点があげられます。製造業の生産工場の工程が流れていくイメージをシステム開発に置き換えて管理していくには都合のよい手法といえます。
 ただ、この枯れた手法にも弱点があります。それは、原則的に次工程を飛び越えて先に進んだり、一度終了した工程に戻ることはできないため、初期の要求定義において要件をもれなく定義しておかないといけません。そうでないと、途中で要件変更がはいると各工程をやり直す作業を実施しないといけなくなり、工数や納期に影響を与えることになります。
 そうなるとユーザは想定で定義した要件が目に見えるのはテスト工程にはいった頃になり、どうしても想定した要求と乖離が発生してしまいます。また、納期間近ということもあり、大幅な変更は無理となってしまいます。
 ここで、ウォーターフォールモデルに変わるものとして、アジャイル開発の手法が注目を集めています。アジャイル(agile) は「機敏な、すばやい」という意味で、ソフトウェアの開発において、より素早い開発を重視する方法の総称です。
 この手法の特徴としては、開発プロジェクトの期間を短期間(タイムボックス)に区切り、この間に開発工程を一通り行って、部分的に機能を完成させます。そしてこの期間で動くソフトウェアを開発する作業を繰り返し、段階的にシステムを完成させます。このような開発スタイルは反復型(イテレーション)開発と呼ばれています。これは、開発期間の早い段階からユーザが動くソフトウェアを確認できることです。これにより、要求の変更がある場合は、各タイムボックスごとに計画時にユーザによる優先順位づけを調整した上で次の作業が計画されることになります。

 次にウォーターフォールモデルとアジャイル開発の相違点について述べたいと思います。
1.ドキュメントより動くソフトウェア
 ウォーターフォールモデルは各工程で作成されたドキュメントの確認と承認をもって次工程に進みますが、アジャイルはユーザとのコミュニケーションを密にして目標とするソフトウェアを完成させることを優先します。
 ドキュメントに書かれた文書によってユーザの要件が満たされているかを判断するのではなく、動くソフトウェアを見せることで、要求がどのように実現されるのかを判断し、評価をしやすくします。
2.ビジネス要件の変化を取り込む
 ウォーターフォールモデルでは、動くソフトウェアが作成されるまでは、ある一定期間が必要であり、その間に発生したビジネス要件の変化を反映することは難しくなります。アジャイルであれば、その変化を取り込みやすくなります。
3.プロジェクト管理はフレキシブル
 ウォーターフォールモデルでは計画を立案しそれに基づいて進捗管理を実施し計画を守ることにプロジェクト管理者は注力します。アジャイルの場合は、タイムボックスの中で要件定義からテストまで行うため、各イテレーションでの課題などを次の計画で再考し、状況にあわせた管理を行います。

 このようにアジャイル開発には、ウォーターフォールモデルにはない利点はありますが、次の点については注意が必要です。
1.予定工数の増加
 ウォーターフォールモデルであれば、要件がきまれば、以降の工数は一括契約により増加することは少ないですが、アジャイルの場合は、ユーザと開発者が協同で実施するため、工数が膨らんだ場合の負担についての契約を再考する必要があります。
2.オールマイティな開発要員のアサイン
 ウォーターフォールモデルは工程により要員の技術スキルが明確で、役割分担に応じた要員のアサインが可能ですが、アジャイルの場合、短期間でユーザの要件を動くソフトウェアにしないといけないため、一人で設計から実装、テストまでできるオールマイティな要員が必要になります。
3.要件変更の優先付け
 変更をすべて受け付けていくと整合性のとれないシステムができる可能性があり、優先順位、緊急性などを計画時に考慮して実装にとりかかる必要があります。

現在、ITベンダーの私のまわりでは、アジャイル開発で構築したシステムはあまり見かけませんが、ウォーターフォールモデルのなかにアジャイルの要素をとりいれて顧客要件を確実に実現することができないか検討しています。
ただ、プロジェクト管理を行う者として、アジャイル開発でのQCDの管理はどうすればいいのかが悩みどころです。


■執筆者プロフィール
西田 則夫(Nishida Norio)
情報処理プロジェクトマネジャー、ITコーディネータ
マネジメントの経験を顧客満足の向上に役立てたいと思います。
Norio.Nishida@csk.com