ソフトウェア開発手法は、過去数十年の間に急速に進化し、重い初期のウォーターフォール型文書から、軽量で反復的なアジャイル手法へと移行しました。長期間にわたり、伝統的な「ユースケース」——オブジェクト指向ソフトウェア工学の柱の一つ——は、現代のアジャイルフレームワークスクラムやカンバンのようなものと相性が悪いと見なされてきました。文書中心的で遅いとよく批判されていました。
登場するUse-Case 2.0。イヴァル・ヤコブソン、イアン・スペンス、ブライアン・カーによって提唱された、この現代的なフレームワークは、古典的なユースケースを軽量でスケーラブルで多用途なものに再設計しています。ユースケースの構造的利点とアジャイル開発の柔軟性の間のギャップを埋めるように設計されています。
Use-Case 2.0は、伝統的な要件定義の限界を克服するために特に開発された、ユースケースアプローチの現代的な進化です。前例となる手法が開発開始前に膨大な詳細を要求する傾向があったのに対し、Use-Case 2.0は必須事項、反復的提供、垂直スライシングに注力しています。
このフレームワークの核となる革新は、ユースケースをより小さく、管理しやすい単位に分割できるという点にあります。これらはユースケーススライスと呼ばれます。これにより、チームはシステムアーキテクチャの「全体像」を維持しつつ、スクラム、SAFe、ディシプリンド・アジャイルと互換性のある、小さなスプリント単位での価値提供が可能になります。
Use-Case 2.0は、プロセスが軽量かつ価値志向のままであることを保証する6つの指針に基づいています:
Use-Case 2.0がアジャイルにどう適合するかを理解するには、そのアーティファクトを理解する必要がある。このフレームワークは、過去の重い文書化を、三つの主要な構成要素に簡素化している。
ユースケースは依然として、アクター(ユーザー)とシステム間の目的指向の相互作用を記述する。しかし、バージョン2.0では、初期段階で完全に詳細化されるわけではない。名前と簡単な説明、そして主要成功シナリオに、代替フローと例外に関する詳細が開発の優先順位がつけられたタイミングで「ちょうどその時」に追加される。
そのユースケーススライスはこのフレームワークにおける最も重要な革新である。スライスとは、価値の完全なフローを構成するユースケースにおける垂直な断面である。これは物語(ストーリー)の一部、関連するテストケース、および実装に必要なコードを含む。
スライシングにより、単一のユースケース(例:「注文処理」)を複数のスプリントに分けて扱うことができる:
各スライスはバックログ項目として機能する。開発見積もりが可能で、テスト可能であり、イテレーション内で納品可能である。
スライスは日々の作業で扱われる一方で、ユースケースモデルは地図として残る。これはすべてのユースケースの集約であり、個々のユーザーストーリーがしばしば欠く文脈とアーキテクチャ的概要を提供する。これにより、チームが何百ものストーリーを完了しても、全体のシステム動作を把握できなくなるという一般的なアジャイルの問題を解決する。
多くのチームはユーザーストーリーとユースケースのどちらを選ぶかに悩む。Use-Case 2.0は、選ばなければならないわけではないと主張する。ユースケースの構造とストーリーの柔軟性を両立させている。
| 側面 | クラシックなユースケース(2.0以前) | ユーザーストーリー | ユースケース2.0 |
|---|---|---|---|
| 初期の努力 | 高い(詳細仕様) | 非常に低い | 低い → 漸進的 |
| 全体像の把握 | はい | しばしば失われる | はい(ユースケースモデル経由) |
| 反復的機能 | 悪い | 優れた | 優れた(スライス経由) |
| トレーサビリティ | 強い | 弱い | 強い(テストへ流れ込む) |
| テストへの注力 | 手動 / 後期段階 | 受入基準 | スライスごとに組み込み(TDD) |
| 最適な環境 | ウォーターフォール/構造的 | シンプルなアジャイルプロジェクト | 複雑/企業向けアジャイル |
この手法を採用するには、標準的なアジャイルスプリントにすっきりと収まる循環的なワークフローを実施する必要がある。
Use-Case 2.0は、単純なユーザーストーリーでは不十分な企業システム、規制産業、または複雑なドメインにおいて特に効果的である。
それはスケーラビリティを提供する。チームが軽量で始められ、必要に応じてのみ形式を追加できる。また、価値中心を確保する。チームが孤立した技術的タスクではなく、エンドツーエンドのユーザー体験を意識するように強制する。最後に、ドキュメントの負債問題を解決する。ユースケースモデルが反復的に更新されるため、ドキュメントはコードとともに進化し、陳腐なアーカイブではなく「生きている」要件セットとして機能する。