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

 ソフトウェア開発手法の王道としてよく知られているものにウォーターフォー

ルモデルがあります。開発手法とは、手順、ノウハウ、定義のことを意味します

が、これは、「要求定義」、「設計」、「実装」、「テスト」、「運用」のよう

な開発工程に分け、前工程のアウトプットが後工程のインプットになるような成

果物を作成します。

 大型汎用機の時代から、オープンシステム、そしてWeb系システムまでこの

手法により大半のシステムが開発されてきました。この手法のメリットは、工程

を明確にしていることで計画策定や進捗管理を行う上でのプロジェクト管理のし

やすさや各工程の工数の見積もりやリソースの配分が実施しやすい点があげられ

ます。製造業の生産工場の工程が流れていくイメージをシステム開発に置き換え

て管理していくには都合のよい手法といえます。

 ただ、この枯れた手法にも弱点があります。それは、原則的に次工程を飛び越

えて先に進んだり、一度終了した工程に戻ることはできないため、初期の要求定

義において要件をもれなく定義しておかないといけません。そうでないと、途中

で要件変更がはいると各工程をやり直す作業を実施しないといけなくなり、工数

や納期に影響を与えることになります。

 そうなるとユーザは想定で定義した要件が目に見えるのはテスト工程にはいっ

た頃になり、どうしても想定した要求と乖離が発生してしまいます。また、納期

間近ということもあり、大幅な変更は無理となってしまいます。

 ここで、ウォーターフォールモデルに変わるものとして、アジャイル開発の手

法が注目を集めています。アジャイル(agile) は「機敏な、すばやい」という

意味で、ソフトウェアの開発において、より素早い開発を重視する方法の総称で

す。

 この手法の特徴としては、開発プロジェクトの期間を短期間(タイムボックス)

に区切り、この間に開発工程を一通り行って、部分的に機能を完成させます。そ

してこの期間で動くソフトウェアを開発する作業を繰り返し、段階的にシステム

を完成させます。このような開発スタイルは反復型(イテレーション)開発と呼

ばれています。これは、開発期間の早い段階からユーザが動くソフトウェアを確

認できることです。これにより、要求の変更がある場合は、各タイムボックスご

とに計画時にユーザによる優先順位づけを調整した上で次の作業が計画されるこ

とになります。

 

 次にウォーターフォールモデルとアジャイル開発の相違点について述べたいと

思います。

1.ドキュメントより動くソフトウェア

 ウォーターフォールモデルは各工程で作成されたドキュメントの確認と承認を

もって次工程に進みますが、アジャイルはユーザとのコミュニケーションを密に

して目標とするソフトウェアを完成させることを優先します。

 ドキュメントに書かれた文書によってユーザの要件が満たされているかを判断

するのではなく、動くソフトウェアを見せることで、要求がどのように実現され

るのかを判断し、評価をしやすくします。

2.ビジネス要件の変化を取り込む

 ウォーターフォールモデルでは、動くソフトウェアが作成されるまでは、ある

一定期間が必要であり、その間に発生したビジネス要件の変化を反映することは

難しくなります。アジャイルであれば、その変化を取り込みやすくなります。

3.プロジェクト管理はフレキシブル

 ウォーターフォールモデルでは計画を立案しそれに基づいて進捗管理を実施し

計画を守ることにプロジェクト管理者は注力します。アジャイルの場合は、タイ

ムボックスの中で要件定義からテストまで行うため、各イテレーションでの課題

などを次の計画で再考し、状況にあわせた管理を行います。

 

 このようにアジャイル開発には、ウォーターフォールモデルにはない利点はあ

りますが、次の点については注意が必要です。

1.予定工数の増加

 ウォーターフォールモデルであれば、要件がきまれば、以降の工数は一括契約

により増加することは少ないですが、アジャイルの場合は、ユーザと開発者が協

同で実施するため、工数が膨らんだ場合の負担についての契約を再考する必要が

あります。

2.オールマイティな開発要員のアサイン

 ウォーターフォールモデルは工程により要員の技術スキルが明確で、役割分担

に応じた要員のアサインが可能ですが、アジャイルの場合、短期間でユーザの要

件を動くソフトウェアにしないといけないため、一人で設計から実装、テストま

でできるオールマイティな要員が必要になります。

3.要件変更の優先付け

 変更をすべて受け付けていくと整合性のとれないシステムができる可能性があ

り、優先順位、緊急性などを計画時に考慮して実装にとりかかる必要があります。

 

現在、ITベンダーの私のまわりでは、アジャイル開発で構築したシステムはあ

まり見かけませんが、ウォーターフォールモデルのなかにアジャイルの要素をと

りいれて顧客要件を確実に実現することができないか検討しています。

ただ、プロジェクト管理を行う者として、アジャイル開発でのQCDの管理はど

うすればいいのかが悩みどころです。

 

■執筆者プロフィール

西田 則夫(Nishida Norio)

情報処理プロジェクトマネジャー、ITコーディネータ

マネジメントの経験を顧客満足の向上に役立てたいと思います。

Norio.Nishida@csk.com