ソフトウェア要求仕様の完全性と非曖昧性のあいだ

SRS(ソフトウェア要求仕様)の品質特性には完全性と非曖昧性というものがあります。例えば↓参照。

完全性はCompletenessで、要求がすべて書かれているか、です。不正な入力を受けた際のふるまいなどもここに該当します。

非曖昧性とはUnambiguityで、要求が一意に解釈できるか、です。

二つの特性で結構違うことを言っているように思えますが、具体的な例を見ていくと、これってどっちだっけ?という事例がたまに出てきます。例えば、

Aの場合Bであること

という要求があり、この要求の裏を取ると

Aではない場合Bではないこと

となります。この命題が真であるか、を論理的に考えると、「真とは限らない」になります。小学校か中学校で学んだやつですね。ただ、これが具体例を伴うと意外と真に見えてきたりします。

電源ボタンを押すと、電源が入ること

裏は、

電源ボタンを押さない場合、電源が入らないこと

です。これは真に見えますよね。「要求」という性質上、Aである場合(に限って)Bであること、という補足を頭の中でして読んでしまうからだと思われます。

さて、話を戻して要求仕様の品質特性の話ですが、上記例で行くと、

電源ボタンを押すと、電源が入ること

という要求があったときに、電源ボタンを押さないでも電源が入ってしまう、という設計をしたとします。もしその振る舞いが要求側の期待と外れていたとしたら、要求仕様において、完全性の不備があったのか非曖昧性の不備があったのかどちらになるでしょうか。

おそらく答えは「完全性の不備でもあるし、非曖昧性の不備でもある」だと思います。

これはソフトウェアの品質特性にも言えますが、一つの要件が複数の品質特性に関連することが普通にあり得ます。要求仕様書の品質を測るときに、一つの課題に対してこれは完全性だ、と言い切るのが難しいケースもある、というお話でした。

この記事が気に入ったらサポートをしてみませんか?