受注側を悩ませる非機能要件って何?

~国際規格で非機能要件を攻略!

印刷用ページを表示する

関連タグ

( 2008/6/18 グリニッジ有限会社 金井佳子 )

「要件」にも種類がある!

システムが絡む案件では、要件定義が重要であると言われます。しかし、そもそも「要件」とは何でしょうか?
要件の前にまず、システム発注をしたいと思った「動機」が存在します。「客単価を上げたい」「業務の効率化を図りたい」等、これらが「要求」です。
国際規格 (ISO2382-20) および日本工業規格 (JISX0020) では、「要求とは、システムが満たさなければならない必須条件」と定義しています。

要求の段階では、まだ漠然と「やりたい事」をまとめた、という位置づけです。これらを「システムの機能」として一つ一つ整形した物が「要件」です。
漠然とした「要求」を「要件」としてきちんと定義するのが、要件定義という事になります。最終的に、ここで定義された項目をチェックし、検収という形になりますので、非常に重要な項目です。

実はこの要件の中に、なかなか扱いが難しい・・と受注側が頭を悩ませる種類の物があります。それが「非機能要件」と言われる要件です。まず、要件には次のような種類があります。

1:システムやソフトウェアに求める機能の要件である「機能要件」
2:それ以外の「非機能要件」

この非機能要件が、くせ物です。

非機能要件の重要性

非機能要件とは何でしょうか。どうして重要なのでしょうか。

まず、機能要件とは、「商品が表示出来る事」、「スタッフがデータを印刷出来る事」など、システムの備えるべき機能の事です。
それに対して非機能要件とは、それ以外の要件、具体的にはレスポンスやセキュリティなど、そのシステムを提供するのに必要な条件という事になります。(株)オージス総研 正木氏が書かれた機能外要求と ISO9126では、

機能外要求は、非機能要求と呼ばれることもあり、ソフトウェアの提供する機能が達成すべき性能や制限を表す要求です。
たとえば、インターネットバンキングで「預金者が送金できること」は機能要求、「Web ブラウザで送金ボタンを押して10 秒以内に送金処理を終えること」や、「本人以外が勝手に預金者の口座を使って送金できないこと」は機能外要求です。

実際のソフトウェア開発の現場では、機能要求と比較して機能外要求は識別しにくいということをよく耳にします。

とあります。
この非機能要件、機能要求とは違い、発注者側が使ってみるまで全く気付かない、といった事も多い項目です。また、「当然、やってくれてるんでしょ?」という暗黙の了解の世界でもあります。
例えば、先ほどの「関連商品・売れ筋商品を表示するシステム」の例で言うと、売れ筋商品の表示に30秒かかるとしましょう。これではお客様がブラウザを閉じてしまいかねません。
しかし機能要求では「商品を表示する」ですから、要件定義に基づくテストではOKという事になってしまいます。

「そんなに時間がかかるなんて常識的に考えて使えないじゃないか!」と発注側は思いますが、ハードウェアの性能やコストの面から、これが最高のパフォーマンスだった場合も考えられます。
「○秒以上はダメだなんて言わなかったじゃないですか!」受注側の言い分はこうなってしまいます。

勿論、これらは大袈裟な例であり、受注者側で「想定出来る非機能要件」を経験から拾い上げていくのが現実で、常識的な事まで逐一定義せよ、と言うわけではありません。非機能要件の重要性を理解して欲しい、という意味なのです。
非機能要件は、性能や安定稼働、外部システムとの連携のしやすさなど、そのシステムに求める「品質」に深くかかわる項目です。ですから、非機能要件が増えれば(高いレベルを求めれば)その分、当然コストが上がるという事になります。
必ずしも必要でない要件と、優先する要件を振り分けて、予算も含めたバランスを考える事が大切ですが、これを考えられるのは受注側ではなく、発注者にしか出来ない事です。
受注者にサポートして貰いながら、発注者側がこの非機能要求を洗い出さないと、後々大幅なコストアップを迫られるという事になりかねないのです。

次のページでは、実際にどうやって非機能要件を定義するか考えてみます。

トラックバックURL

コメントをどうぞ

※初回のみ、管理者の承認が必要となります。