ソフトウェア品質向上の取り組みを議論する際に、まずはソフトウェア品質の作り込み構造を正しく理解しておくことが必要と思います。
ソフトウェア検証の世界では、「検証で品質を担保したい」という話が出てきます。ですが、ソフトウェアの品質を検証だけで向上させるには限界があり、ソフトウェア開発全体の構造を理解した上で検証の役割を明確にする必要があります。大雑把に言うと、V字モデルの左側のプロセスで品質を作り込み(バグも埋め込み)、V字モデルの右側のプロセスで品質を確認します(バグも検出します)。この構造を認識することと、「ソフトウェアはすべての動作をテストすることは現実的には不可能」であることを考えれば、検証(V字モデルの右側)だけで品質を担保することが困難であることは明確です。
そもそも「品質を担保する」とはどういうことでしょうか?正しい言葉の使い方はあるにせよ、ソフトウェア開発の中で「品質を担保する」と出てくれば、「ユーザが使っている中でバグが出ないことを保証する」ということと同義で使われていることがほとんどと思います。この意味を考えれば、「ユーザが使っている中でバグが出ないことを保証する」ことを検証だけで実現するのは不可能であることがわかると思います。
ソフトウェア品質を向上させるためには、上記の品質の作り込み構造から、以下の2つのアプローチがあります。
- ソフトウェア開発(V字の左側)からのアプローチ
- ソフトウェア検証(V字の右側)からのアプローチ
ソフトウェア開発からのアプローチとは、そもそもソフトウェアを作る段階からバグが出ないような仕組みを作ろうというアプローチです。具体的には形式手法やモデルベース開発などがあります。
ソフトウェア検証からのアプローチとは、ソフトウェアを作るのは人間なので間違うことを前提として、作ったものを確認する視点から品質を上げようとするアプローチです。具体的には検証手法、検証ツールやW字モデルなどがあります。
本サイト(株式会社ソフトウェア品質のサイト)では、上記2つのアプローチを分けた上で、両アプローチ共に対象として議論する場にしたいと思います。