アジャイル開発は、先進的な手法としてベンチャー企業を中心に取り入れられてきましたが、最近では大手企業でも導入するようになりました。ビジネス要件に柔軟に対応しながら、スピーディーにシステムをアップグレードできるという魅力がありますが、失敗する例も多くあります。アジャイル開発を成功に導くためには、どのような対策を打てばいいのでしょうか。
アジャイル開発は、従来の重い開発プロセスのアンチテーゼとして、1990年代ごろから提唱されるようになりました。
従来型の開発手法として代表的なウォーターフォール開発は、「要件定義→設計→開発→テスト→リリース(運用)」という工程で全体のシステム開発を進める手法です。要件定義の工程が終わってから要件の変更があると、前工程に戻らなければなりません。
それに対してアジャイル開発は、軽量のプロセスを重視します。要件定義からリリース(運用)までの一連の開発プロセスを、数週間の短いサイクル(スプリント)で反復し、重要度の高い部分からリリースしていきます。小さなサイクルを反復するため、要件に変更があった場合に後続のスプリントで吸収できます。また比較的少人数で開発できるため、スピーディーに開発を進められます。
ビジネスを取り巻く環境は、目まぐるしく変わっています。そのためビジネス要件も頻繁に変更されることが多く、手戻りが発生するウォーターフォールのやり方では、なかなかリリースまでたどり着くことができません。そのため、反復しながらスピーディーにリリースするアジャイル開発が注目されるようになりました。
プロジェクトマネジメント協会の「第9回グローバルプロジェクトマネジメント調査 」によると、アジャイルを取り入れている組織は71%に上っており、グローバルではもはや主流といってよい開発手法です。日本でも東京海上ホールディングスがアジャイル開発人材を2023年までに7割増やすことを発表するなど、大手企業でも積極的に取り入れるようになりました。
しかし「アジャイル開発を取り入れてみたが、うまくいかなかった」という声が聞かれるのも事実です。アジャイル開発には、次のような課題があります。
短い期間で設定されたスプリントが時期をずらして実施されるため、チームごとに責任範囲と着手時期が異なります。そのため品質も含めて全体のマネジメントが難しくなるという問題があります。
軽量プロセスを重視するため、ドキュメント作成よりも動くプログラムを優先する傾向にあります。そのため第三者がテストをする場合に、何を正の結果とするのかを判断できなくなることがあります。
アジャイル開発では自分のチームだけでなく、別チームの仕様変更に影響されることもあります。そのため、変更が多くテストの内容が確定できないという問題が発生することがあります。
テストが重大な課題となるのは、スプリントの単位で開発するアジャイル開発のプロセスが、従来の開発プロセスとプロセスのタイミングと品質レベルのコンセプトが異なるためです。従来のように「開発がすべて終わってからテスト」という進め方はできないため、スプリントの進捗状況に合わせて必要なテストを組み込んでいく必要があります。
テストで失敗しないためには、プロジェクト開始の段階からテストの状況を見える化することがポイントとなります。見える化は次の手順で行います。
スプリントバックログ(チームのタスクリスト)とテスト計画に基づき、必要なテストケースをタスク化します。タスクには「基となるバックログID」「テスト対象の機能一覧」「テスト対象のふるまい一覧」「予定工数」「優先度」などの情報を定義しておきます。
タスク化することで、ステークホルダー間でテストの全体像や実行状況を共有できるほか、テストの基本設計・詳細設計までの工数を抑えられます。
タスクは定義された優先度・予定工数に基づき実行します。仕様変更が入った場合は、タスクを修正します。工数が予定より超過するようであれば新規のタスクを追加します。テストの結果、バックログが実現できると判断された場合は、タスクをクローズします。
バッグログに対応するテスト内容、優先度、テスト進捗状況をチーム全体で共有することが大切です。これらの情報を一覧化して常に共有するようにします。
テストを進めるには、テストの見える化の他に大切なことがあります。それはアジャイルテスターの存在です。チームには、通常プロダクトオーナー、スクラムマスター、チームメンバーがいますが、アジャイルテスターは、その間を取り持つハブの役割を担います。アジャイルテスターは、エビデンス管理・トレーサビリティ管理を行い、テスト結果から得られる品質情報を提供します。ユーザー視点と開発視点の両方から開発段階に応じて必要なテストを実行し、仕様変更に柔軟に対応しつつ、確実な検証を行うことで、システム全体の品質を担保します。
アジャイル開発では、仕様変更をどんどん受け入れていくため、早い段階から常にテストし続ける必要があります。テストの見える化をしてプロジェクト全体に共有し、関係者全員で品質を作っていく意識を高めるよう働きかけなければいけません。アジャイルテスターがその役割を担うからこそ、アジャイル開発のデメリットを抑え、メリットを最大化できるのです。
ヴェスでは、第3者検証よりプロジェクトに踏み込んだ「2.5者検証」を提唱し、「アジャイル開発検証サービス」を提供しています。アジャイル開発検証サービスでは、経験豊富なテスト設計者が、アジャイルテスターとしてチームの内部に入ってテストをしていきます。外部の視点だけでなく、ユーザー視点・開発視点からテストの設計・実施を行うほか、テスト方針と開発方針の整合性の確認や、テスト担当者の観点からのリスクの可視化など、全体のマネジメントについても価値を提供します。
アジャイル開発では、変更に強いシステムにするために、テストを自動化するケースが多くなっています。しかしテストコーディングが開発コーディングの量を上回ることもあるなど、軌道に乗せるまでには多くのハードルがあります。ヴェスではテスト自動化についても豊富な経験とノウハウを持っており、「テスト自動化サービス」も併せて提供しています。
アジャイル開発は、チームメンバー全員がプロジェクトを自分事と考え、一体となって進めていく手法です。テストという大きなハードルはありますが、アジャイル開発がもたらすビジネスのインパクトや組織の成長に、魅力を感じている方も多いのではないでしょうか。ヴェスではアジャイル開発の大きなハードルを二人三脚で乗り越えていき、成功に貢献したいと考えています。