/note/tech

見える化する要求仕様 〜 EARS(Easy Approach to Requirements Syntax)を活用したシステム要求の書き方 〜

要約:

■ 1. 概要

  • Automotive SPICE 4.0 に関するコラムとして、EARSを活用した要求文の書き方を解説
  • 明確で一貫性のある要求仕様の記述はシステム開発において極めて重要
  • 要求の記述が曖昧で解釈の余地が大きい場合、後の開発フェーズで認識のズレや仕様変更が生じ、コスト・工数の増加につながる
  • EARS(Easy Approach to Requirements Syntax)は要求をシンプルかつ明確に記述するための構文テンプレートであり、解釈のブレを防ぐことができる

■ 2. EARSの基本構造

  • Ubiquitous(一般的な要求):
    • 常に適用される要求に使用
    • 形式: 「The [システム] shall [動作]」
    • 例: 「システムは、車両の衝突が検知された場合、適切なエアバッグを30ミリ秒以内に展開しなければならない」
  • Event-driven(イベント駆動要求):
    • あるイベントが発生した場合に適用される要求に使用
    • 形式: 「When [イベント], the [システム] shall [動作]」
    • 例: 「正面衝突を検知した場合、システムは30ミリ秒以内にフロントエアバッグを展開しなければならない」
  • State-driven(状態駆動要求):
    • システムが特定の状態にある場合に適用される要求に使用
    • 形式: 「While [状態], the [システム] shall [動作]」
    • 例: 「車両が走行中である間、システムは衝突を検知するために衝撃センサーを監視しなければならない」
  • Optional(オプション要求):
    • 追加機能やオプションの機能に関する要求に使用
    • 形式: 「Where [条件], the [システム] shall [動作]」
    • 例: 「車両が助手席用エアバッグを搭載している場合、システムは助手席の占有センサーを監視しなければならない」
  • Unwanted Behavior(望ましくない動作の要求):
    • 望ましくない状況を回避するための要求に使用
    • 形式: 「If [条件], the [システム] shall not [動作]」
    • 例: 「助手席に乗員がいない場合、システムは助手席エアバッグを展開してはならない」
  • Complex(複雑な要求):
    • 複数の条件やイベントを組み合わせて記述する要求に使用
    • 形式: 「When [イベント], if [条件], then the [システム] shall [動作]」
    • 例: 「正面衝突が検知され、かつ助手席が占有されている場合、システムは助手席のエアバッグを展開しなければならない」

■ 3. 適用時の注意点

  • EARSの形式に従うだけでは必ずしも適切な仕様にはならず、要求の内容そのものが不適切な場合は意図しない動作を引き起こす可能性がある
  • 問題のある要求の例:
    • 「車両が静止している間、システムはエアバッグを展開してはならない」という仕様は、停車中に衝突された場合でもエアバッグが展開しない危険性がある
  • 改善された要求の例:
    • 「車両が静止中かつ衝突の加速度が1.0 G未満の場合、システムはエアバッグを展開してはならない」と記述することで、誤展開を防ぎながら必要な場合に展開可能な仕様となる
  • 要求の意図を明確にし、条件を具体的に記述することが重要

■ 4. 活用時の留意点

  • 簡潔かつ明確に: 余計な修飾を避け、短く分かりやすい表現を心がける
  • 一貫性の確保: SHALL(〜しなければならない)の使い方を統一し、主語を明確にする
  • 必要十分な情報を含める: 曖昧な表現を避け、要求に不足がないようにする
  • トレーサビリティを意識: システム仕様や上位要件との整合性を確保する

■ 5. まとめ

  • EARSはシンプルな構文によって要求の曖昧さを排除し、仕様の誤解や抜け漏れを防ぐのに有効な手法
  • 形式に従うだけでは不十分であり、意図や条件を明確に記述することが重要
  • 特に安全性が求められるシステムでは、適切な要求仕様が欠かせない