要件定義というのは、システムが行わなければならない何かや、その質を明確に定義したものを指します。
この定義が曖昧だったり抜けがあると、そのシステムは機能不足で使えなかったり、使い心地の悪いものになります。
上の説明じゃピンってこないですよね...
んでは、普段使っている「椅子」を例にして、要件を簡単に書き出してみると
という感じになります。
この要件の出し方にはコツがあって、以下の3つの分類で要件を見つけていけば、ほぼ問題なく要件を書き出すことができます。
それじゃ、各項目の説明をします。
この機能要件は、システムが行わなければならないことを指していて、システムに対して期待されている問題解決のための行動や振る舞いを書いたものです。
さっきの椅子の例でいえば、「人が座って休むことができること」がそれにあたります。
この機能要件としてピックアップすべき要素は、以下の3点になります。
この非機能要件は、システムが持たなければならない属性のことを指していて、システムを使いやすいとか信頼性が高いといった性質または質を書いたものです。
またさっきの椅子の例でいえば、「座り心地がいいこと」や「ぶつかってもけがをしないこと」がそれにあたります。
この非機能要件の中にもいくつかパターンがあります。
今までの経験から、実はこの非機能要件が、一般的にCOTSといわれているものを組み合わせてシステムを開発するときの大きな弊害になると考えています。機能のカスタマイズについては方針が明確になっているのに比べ、この非機能要件を満たすためのカスタマイズについてはほとんど考慮されたいないし、あまり考えられていないCOTSが多いと思っています。また複数の会社の製品を組み合わせると、さらに難しくなるんですよね :-(
このシステム制約は、言葉の通りシステムに課せられた制限事項のことを指していて、システムはこの制約の範囲で構築する必要がある。
この制約というのがくせ者で、開発中心でやってきた人にはなかなかピンとこない部分だと思います。
で、またまたさっきの椅子の例でいえば、「お年寄りが楽に座ることができる」や「1万円ぐらいで買えること」がそれにあたります。
これだけじゃわかりにくいと思いますので、システム制約に必要な要素を書いてみます。
まだ書きかけ