問題の背景:
複雑な要件はしばしば高い抽象レベルで定義されるか、複数の隠れた条件や例外を含んでいます。このような要件を分解して明確にしないと、クライアント、開発者、テスターの間で誤解が生じる可能性があります。
問題:
あいまいな、または十分に分解されていない要件は、チームが自ら詳細を "考え出す "ことにつながります。その結果、ビジネスの価値が実現されなかったり、歪められたりし、その修正がはるかに難しく、コストがかさむことになります。
解決策:
システムアナリストは、分解技術(ユースケースダイアグラム、アクティビティダイアグラム、INVESTに基づくユーザーストーリー、イベントストーミング、分解ツリー)を用いて要件を詳細に分析します。基本的なシナリオ(基本/代替/例外フロー)を形成し、意思決定テーブルや移行マトリックスを構築し、最終的にはクライアントと共同でエッジケースの具体例を通じて各「ノード」を検証します。分解後、アナリストはすべての部分を集約し、統合ポイントを分析し、一貫性を確保します。
主要な特徴:
ユーザーストーリーのテキスト説明だけで十分ですか?
いいえ、ユーザーストーリーだけでは不十分です。シーケンスダイアグラム、エッジケースの例、UIのモックアップ、複雑なビジネスロジックのための意思決定テーブルが必要です。
分解は自動的に要件間の矛盾を排除しますか?
いいえ、分解は矛盾する要件の統合、定期的なレビューミーティング、および依存関係の分析を伴う必要があります。
分解を開発者やテスターにのみ任せることはできますか?
いいえ、アナリストは詳細化の完全性に責任を持ちます。他の役割に任せると、多様な解釈や不一致が生じます。
ネガティブなケース:
ビジネスクライアントが「システムは各クライアントのために個別に割引を計算しなければならない」と書きました。厳格な割引スキームの実装が開発に進みました。テスト中に、隠れたパラメータが10以上あることがわかりましたが、これは正式化の段階で明らかにされませんでした。
利点:
欠点:
ポジティブなケース:
アナリストはイベントストーミングのワークショップを実施し、計算のためのすべてのパラメータと条件を特定しました。意思決定テーブルとシーケンスダイアグラムを構築し、エッジケースの具体例をビジネスと合意しました。要件は明確で検証可能になり、エラーは開発開始前に発見されました。
利点:
欠点: