ようこそ。睡眠不足なプログラマのチラ裏です。

ソフトウェアの品質要因 その1「正確さ」


正確さ(correctness)

■定義:正確さ(correctness)
「正確さ」とは、仕様によって定義されているとおりに仕事を実行するソフトウェア製品の能力である。

「正確さ」は、外的品質要因の中で最も重視されるべきものである。*1

つまり、システムがすべきことを正確に行わなければ、いくら実行速度がはやかろうと、
ユーザインタフェイスが優れてようと、それ以外のすべての性質が優れていようと無意味ということです。
そのソフトウェアが正しく動作するという「正確さ」を失っていては、
他の要素についてどんなに素晴らしいソフトウェアだとしても、品質が低いと言わざるを得ない。
高い品質のシステムを目指す場合、まず「正確さ」を第一に考える必要がある。


ただ、システムにおいて「正確さ」を実現するということは、「言うは易し、行うは難し。」です。
通常、システムとは非常に多くの範囲のさまざまな要素で構成されているので、
すべての要素や属性を単一の事柄として捉えて保証することは、不可能に近いというのが現実。
そのため多層的なアプローチ、つまり下層レベル前提条件依存の保証が必要となってくる。



多層的なアプローチを考えるとき、より下層の要素が正しいという前提の下、
個々の層が正しいことを保証することではじめて、システムの正確性というものが見えてくる。
なぜなら、ハードウェアが正確に動作するからといって、オペレーティングシステムが正確に動くことは保証されないし、
使用しているライブラリ(Framework)が正確だからといって、アプリケーションシステムが正確であることは保証されない。
当たり前のことはであるが、それぞれ別々の領域で正確性が保証されていなければ意味がない。
つまり、階層ごとに「関心の分離」をして、個々の段階にある問題に対してそれぞれに向き合うことではじめて、
ソフトウェア品質における「正確さ」の向上が期待できる。


「正確さのカプセル化」とでも言ったら、もしかしたら分かりやすいのかもしれない。

*1:俗に言う、「動けばいい(実装がどうなっていたとしても)」という思想は、この意味においては間違ってはいない。かと言って正しくもない。「動けばいい」という思想は、外的品質要因のみしか見えていなく、内的品質要因を完全に無視した思想である。