ウォーターフォールとアジャイルの問題点
ソフトウェア開発の手法が、従来のウォーターフォールからアジャイルへとシフトしてきている第一の理由は、ウォーターフォールでは時間とコストがかかるからです。まずは、ウォーターフォールの仕組みについて簡単にご説明します。
ウォーターフォールでは、「要求定義→設計→プログラミング→テスト→リリース→運用」という流れで開発を進めていきます。前の工程が全て完了してから次の工程に進み、要求の変更がなく後戻りがないことを前提としています。しかし実際には、ほとんどの場合で後戻りが発生し、それにより納期が遅れたり、最悪の場合プロジェクトが頓挫してしまったりします。
そこで、要求が変化したりすることに柔軟に対応できるよう開発された手法がアジャイルになります。ウォーターフォールの場合、テストで不具合が出た場合、戻りの工数が大きいですが、アジャイルの場合、1つの機能ごとに「設計→プログラミング→テスト」が繰り返されるので、不具合が生じても戻りの工数を最小限に抑えることができます。他方、変化に対応できるよう10人以下の少人数チームで行なうことがメインなため、大規模開発には向かないとされています。
IBMは「アジャイル」で大規模開発を成功へ!
では、大規模開発に向かないとされているアジャイルで、IBMはどのように大規模開発を成功させたのでしょうか。どのようなところを工夫しているのか、ウォーターフォールと比較しながらご説明します。
大規模開発を行なうことになった背景
IBMは複数の企業買収により、社内でさまざまなツールが使われるようになり、ツール間での連携が取りづらくなっていました。また、それぞれの会社で使っていたコードをそのまま使用されていたためコードの共有が困難になっていたため、理想の開発プラットフォームを構築するプロジェクトが発足しました。このプロジェクトは世界各国にある支部も含まれるので、かなり大規模な開発が予想されました。そのため通常であればウォーターフォールの手法を利用しても良いところですが、IBMはアジャイルの手法でプロジェクトを進行させることにしました。
少人数チームを複数作る!
通常、世界規模のプロジェクトをウォーターフォールで行なう際は、1つのチームを分割してそれぞれの国に配属します。そして、各チームの進捗などはすべて文書化して情報共有をはかります。一方、アジャイルでは、10人以下の少人数チームが同じ場所で作業し、問題が起こったら実際に顔を合わせて相談するというスタイルです。そのため、大規模プロジェクトには不向きだと言われています。
そこで、IBMは4~10人の少人数のチームを20個作りました。プロジェクトメンバーは7ヵ国以上、120人以上におよび、「アジャイルプラクティス」(Eclipse-way、Scrum、XP)を利用しました。また、チームはプロセスやワークアイテムなどの「コンポーネントチーム」と全体をマネジメントする「PMCチーム」の2段階で構成しました。コンポーネントチームに属している人たちは世界各国に散らばり、それぞれ「PMCチーム」の人とバディを組むことでコンポーネント間の依存防止をするなどの工夫がされました。
全チーム同じ期間で繰り返しテストを行なう
ウォーターフォールは最初に細かく全ての計画を立て、スケジュール通りに実行していくのに対して、アジャイルは短い期間のスケジュールを立て、開発、テスト、リリースをしていきます。IBMも無駄な詳細は作らず、短い期間(4週間)で、開発、テストを繰り返し行う手法を用いました。世界に分散したチームは、優先順位の高いものから開発、テスト、リリースを繰り返し行なっていましたが、どのチームも4週間という期間は変えず同じリズムで実行していました。全チーム同じリズムでプロジェクトを進めることで、各国にチームが分散していても管理しやすくなります。
コミュニケーションツール、タスクツールを充実させる
アジャイルは要求に変更が起こった時に、すぐに対処できるよう同じ場所でメンバーが作業するのが通常です。しかし、IBMのように世界規模の大きな開発の場合、このチーム間のコミュニケーションが難しくなります。そのため、IBMではチームごとに反復計画を立て、優先順位とワークロードがつくツールを使い、タスクボードでそれぞれの進捗がわかるように管理しました。また、個人単位でもToDo管理のツールで、新しく割り振られた役割、昨日やったこと、今日やること、明日以降にやることが明確にわかるようにしました。これによって、分散していても他のタスクの進捗がすぐにわかるようになりました。
チームコミュニケーションのために、世界各国に散らばっていてもミーティングができるような電話会議システムを構築しました。各チームは毎日電話会議を行い、各自が昨日やったこと、今日やること、課題の共有を図りながらプロジェクトを進めることができ、分散していても通常の「アジャイル」の朝会のように情報共有ができました。
チーム作りのための朝会・朝礼は大変必要なものになっています。「チームづくりのための「朝礼」「夕礼」の重要性」では、チーム作りのためのヒントについて紹介をしています。
IBMがアジャイルで大規模開発の成功を収めた要因は、チームに権限を与え、責任を持たせたこと、プロジェクトの透明性を高めたこと、分散アジャイル開発のインフラ整備を行ったことだと言えるでしょう。
アジャイルで大規模開発を行なうためには
IBMの事例のように、大規模で世界に分散していてもアジャイルの手法でソフトウェア開発の問題を解決することができます。IBMだから成功したと思う人もいるかもしれません。しかし、IBMも既存の開発手法をそのまま取り入れたわけではなく、環境や文化に合わせてさらに変化させて取り入れたことで成功を収めました。会社によって文化や環境が違うのは当然です。それに合わせて既存の手法やツールを変化させて利用することで、企業規模でのアジャイル開発が可能になるのです。
アジャイルとウォーターフォールの違いは、計画の立て方や、テスト、リリースを行うタイミングなどありますが、ウォーターフォールでも一定期間を区切って振り返りを行うなど、アジャイルのメリットを取り入れることもできます。大規模開発だからウォーターフォールと決めつけるのではなく、そのプロジェクトの環境や文化に合うようにそれぞれのメリットをうまく組み合わせることで、プロジェクトを成功に導くことができるでしょう。
「アジャイルで大規模開発を成功に導くためには」のまとめ
ウォーターフォールとアジャイルはプロセスやマネジメントの違いのほか、根本的に全ての機能を作るか、作らないかという根本的な考え方の違いがあります。どちらにもそれぞれ、メリット、デメリットがあります。大規模開発だからアジャイルは向いていないと最初から諦めるのではなく、ウォーターフォールとアジャイルを組み合わせて開発したり、アジャイルを工夫して開発したりすることで、IBMのようにプロジェクトの成功を収めることができます。既存のものをそのままではなく、環境や文化に合わせて、常に変化をさせていくことが成功の鍵になることでしょう。