非機能要求を洗い出せたら,次はそれらを精査し,整理・分析することが欠かせない。具体的には、優先度を見極めるほか,「要求同士の矛盾」「要求に入り込む主観」「コスト/実現方法とのバランスの欠如」といった点を排除する必要がある。順番に見ていこう。

 「ユーザーはすべての要求に高い優先度を付けるもの。それを鵜呑みにすると要求はどんどん膨らむ」(電通国際情報サービスの下山氏)。非機能要求を洗い出せたら,次はそれらを精査し,整理・分析することが欠かせない。

 下山氏は要求が膨らむことを防ぐために,非機能要求の優先度を慎重に見極めている。そこで使っているテクニックは,オープン質問とクローズ質問の使い分けである。最初に「性能が要求される機能は?」と自由な回答を求める(オープン質問)。次に「今挙げたなかで特に性能を求める機能は?」と優先度が高い要求を絞り込む(クローズ質問)。こうすると,すべてを高い優先度としていたユーザーから,適切な優先度を聞き出せるという。

 優先度を見極めるほか,整理・分析では「要求同士の矛盾」「要求に入り込む主観」「コスト/実現方法とのバランスの欠如」といった点を排除する必要がある。順番に見ていこう。

矛盾だらけの非機能要求

 セキュリティと運用性など,要求同士に相関関係があるのも非機能要求の特徴だ。日本IBMの榊原彰氏(アプリケーション・イノベーション・サービス EA&テクノロジー グローバル&ジャパン・リード IBMディスティングイッシュト・エンジニア,技術理事)は「相関関係によって要求の矛盾が生じやすい」と説明する。そのため非機能要求同士の関連を可視化して,その矛盾を取り除くことが重要だという。

図4●非機能要求は互いに関係しているので関連を可視化する
図4●非機能要求は互いに関係しているので関連を可視化する
セキュリティと運用性など,非機能要求同士が互いに相関関係にある項目は多い。日本IBMの榊原彰氏は,各要求項目をモデル化し,関連を明確にした上で矛盾を取り除くことを推奨している
[画像のクリックで拡大表示]

 例えば,セキュリティを重視して暗号化や認証の導入を考慮したとしよう(図4)。すると,バックアップ/リカバリ時には暗号化が前提条件となり,運用性を損なう可能性がある。認証に対する監視の負担も増す。さらに,セキュリティと運用性のバランスを考えていると,今度はスループットや応答時間など性能に影響を及ぼすことが判明するケースがある。もし高い性能が要求されていれば,セキュリティと運用性の要求を見直さざるを得ない。

 「もともと非機能要求には,モデル図を使って矛盾を精査する仕組みがない」と榊原氏。そのため簡単な図でもかまわないので,要求の関連を可視化することが必須だと説明する。

 ただし,時間を経過しないと明らかにならない要求もある。その場合でも「どの要求が明らかになっていないのか,いつになったら明らかになるのかを図に示して関係者間で共有することが大事」(榊原氏)だという。