"オブジェクト指向、原則、コンセプト"のソフトウェアの品質について。
はじめに
この記事は、単純にオブジェクト指向、原則、コンセプトをまとめただけです。
ソフトウェアの品質について
オブジェクト指向の目標は、品質のソフトウェアを生産することである。
ソフトウェアの品質は、いくつか性質があり、大きく2つに分けられる。外的品質と内的品質だ。
外的品質
外的品質とは、ユーザが認識できる品質のことである。それ以外は、内的品質である。ソフトウェアの最終的に求められるのは、外的品質である。
外的品質の要因について
正確さ
ソフトウェアは恒に正しく、動作することである。つまり、仕様で定義された通りに、プログラムが仕事をこなすことである。
頑丈さ(ロバストネス)
ソフトウェアが異常に対応することである。
これは、仕様に書かれていない条件に対しての振舞いである。もし、異常な状態があらかじめ分かるのであれば、仕様に含まれ、「正確さ」を意味するのかもしれない。
拡張性
ソフトウェアは仕様の追加や変更に柔軟に適応しやすいことである。
再利用性
ソフトウェアは、似たようなパターンに対して、別個に解決するのではなく、再利用すべきだ。
互換性
他のソフトウェア要素との組合せやすさである。
効率性
ソフトウェアは効率的でないといけない。
この項が特に面白い内容であったので、簡単にまとめる。
効率性に対して、2つの人間がいる
- プログラマーの中には、速度に固執し、最適化に過剰な労力を費やす人。
- 一方、「速くする前に、正しいものを」「来年、性能の良いコンピュータが出るのだ!」と、速度を軽視する人。
これに対して
- 正しくなければ、細かい効率はあまり意味が無い。
- 拡張性や、再利用性などの他の品質とのバランスが大事
- 「プログラムを実行するためにメモリを喜んで購入する人はいない」
- 「性能に無関心でいるためには、それなりの覚悟が必要である。」
と述べてあった。
可搬性
さまざまなプラットフォームに移植しやすさである
つかいやすさ
言うまでもないだろう。
機能性
ソフトウェアの適用できる、サービスの範囲の広さである。
適時性
ユーザが必要とするときに、ソフトウェアがあるべき。
品質にはトレードオフがある
品質には対立する条件がある。
あとは読め