アジャイル開発を支援する
アジャイル開発の課題(1)
アジャイル開発の浸透度は、日本の企業においてはまだ低いようです。ですが、米国ではかなり多くの企業がアジャイル開発を採用し始めています。
米国のあるソフトウエア会社が独自にアンケート調査した結果によると、回答者の70%近くがアジャイルを導入していると回答しています。また、回答者の多数が、アジャイル開発に関して、生産性、品質、ユーザーの満足度、システム・コストの面で好意的な評価をしています。
確かにアジャイル開発は、うまく取り入れれば、リリース納期を短縮し、品質を向上し、プロジェクト・コストを低減させることができるでしょう。しかし同時に、アジャイル開発の導入には、数々の課題もあるのです。
一番大きな問題は、アジャイルは組織の在り方に変化を求める、という点です。
現在のIT組織は、従来のサイロ的なアプローチに基づいて構成されています。人手の足りない組織では、複数のプロジェクト・スケジュールを並べて、「この時期にはこちらのプロジェクトのヤマは越えているはずだから、あちらのプロジェクトに開発者を回そう」などというリソース配置も行っています。
このような組織で、一部のプロジェクトだけをアジャイルに変えることは、ほかのプロジェクトに大きな影響を及ぼす可能性があります。アジャイルを導入するのであれば、組織全体がアジャイルに合わせなければいけません。
アジャイル開発の課題(2)
動的な要件とテスト
実装する要件をきちんと確定してから設計に入る従来のアプローチと異なり、アジャイルではサイクルごとに要件が選択されます。また、サイクルごとに機能するソフトウエアを作らなければいけませんので、時にはサイクルをまたがって要件を実現するケースも出てきます。
このため、テスト計画にも変更が求められます。XPでは、まずテストを作成し、そのテスト条件を満たすようなプログラムを作成します。このやり方はテスト駆動開発と呼ばれますが、短いイタレーションの中でテスト駆動開発を進めるためには、マニュアル(手動)のテストでは到底時間が足りません。このため、テストの自動化は必須です。
要件とテストの優先付け
各サイクルで実装される要件は、その優先度と見積もり工数によって決定されます。このため、アジャイルでは、これまで以上に明確で標準化された要件の優先付けが重要になります。
コントロールと可視化
アジャイル開発チームのメンバーは、お互いに協力しながら柔軟に複数の役割を果たしていきます。このような体制では、ややもすると、全体や個々の進ちょくが見えにくく、コントロールができなくなります。
このため、品質に限定しても、要件を満たすテストがどれくらい行われているのか、予定に対してどれくらいテストが完了しているのか、不具合が順調に減ってきているのかなどを可視化して管理する必要があります。
チームの分散化
メンバー間の協調に依存するアジャイル開発では、メンバーが物理的に極めて近い空間で作業することを勧めます。前述のソフトウエア会社の調査でも、メンバーが同じ部屋で作業した場合には80%以上のプロジェクトが成功したのに対して、遠隔地にいた場合の成功率は60%弱にとどまっています。
しかし、オフショアやアウト・ソーシングが流行となっている現在、企業アプリケーションの開発プロジェクトを、このような環境で進めることは不可能です。このため、遠隔地であっても同じ部屋で作業しているのと同じように情報の共有や協調が図れる、何らかの方法が必要になります。