あなたはしません。
ソフトウェアの品質を客観的に測定することは非常に困難です。解決策がないほど難しい。この答えでは、解決策があるのかどうかという質問に手を出すことは控えていますが、解決策を定義するのが本当に難しいのはなぜかを指摘するだけです。
現状による推論
Kilian Fothが指摘したように、「良い」ソフトウェアのための簡単な手段があれば、私たち全員がそれを使用し、誰もがそれを要求するでしょう。
マネージャが特定のメトリックを実施することを決定したプロジェクトがあります。時にはそれが機能し、時には機能しなかった。重要な相関関係は認識していません。特に重要なシステムソフトウェア(飛行機、車など)には、SWの品質を「確保」するための多くのメトリック要件があります。これらの要件が実際に高品質をもたらすことを示す研究はありません。反対。
カウンターインテリジェンスによる推論
また、Kilianによって既に示唆されており、より一般的には、「メトリックはすべて再生可能であり、再生されます」と表現されています。
メトリックを再生するとはどういう意味ですか?開発者にとっては楽しいゲームです。メトリック値が本当に見栄えがよく、本当にくだらないことをしていることを確認できます。
LOCごとに欠陥を測定するとします。どうやってプレイするの?簡単-コードを追加するだけです!100行を超える操作を行わない愚かなコードを作成すると、突然LOCあたりの欠陥が少なくなります。何よりも、実際にソフトウェア品質をそのように低下させた。
ツールの欠点が悪用され、定義が最大限に拡張され、完全に新しい方法が発明されました。基本的に、開発者は本当に頭がいい人であり、あなたのチームにたった1人の開発者がいるのであれば、評価指標をプレイするのは楽しいでしょう。
これは、メトリックが常に悪いと言うことではありませんが、これらのメトリックに対するチームの態度は重要です。特に、これは、下請け業者とサードパーティベンダーの関係ではうまく機能しないことを意味します。
誤ったターゲティングによる推論
測定したいのはソフトウェアの品質です。測定するのは、1つ以上のメトリックです。
あなたが測定するものとそれがあなたに伝えると信じるものの間にはギャップがあります。このギャップは非常に大きなものです。
それは私たちの周りのあらゆる種類のビジネスで常に起こります。KPI(主要業績評価指標)に基づく決定を見たことがありますか?それはちょうど同じ問題です-あなたは会社がうまくやってほしいが、あなたは何か他のものを測定します。
定量化可能性による推論
メトリックを測定できます。これが私たちがそれらに対処する唯一の理由です。ただし、ソフトウェアの品質は、これらの測定可能なエンティティをはるかに超えており、定量化するのが非常に難しいことが多くあります。ソースコードはどの程度読みやすいのですか。デザインはどの程度拡張可能ですか?新しいチームメンバーが参加するのはどれくらい難しいですか?などなど
メトリックだけでソフトウェアの品質を判断し、定量化できない品質の部分に目をつぶると、確かにうまくいきません。
編集:
概要
上記はすべて、メトリックに基づいてソフトウェアが良いか悪いかを客観的に判断することについてです。つまり、メトリックを適用すべきかどうか、いつ適用すべきかについては何も言っていません。
実際、これは一方向の意味合いです。悪いメトリックは悪いコードを意味します。単方向とは、悪いコードが悪いメトリックを保証するものではなく、良いメトリックが良いコードを保証するものでもないことを意味します。一方、これ自体は、この意味を念頭に置いて、ソフトウェアを判断するためにメトリックを適用できることを意味します。
ソフトウェアAを測定すると、メトリックが非常に悪くなります。そうすれば、コードの品質が悪いことを確信できます。ソフトウェアBを測定し、メトリックが大丈夫な場合、コード品質についてはまったく手がかりがありません。「コードが良い=>メトリクスが良い」だけの場合でも、「メトリクスが良い=コードが良い」という考えにだまされないでください。
本質的に、メトリックを使用して品質の問題を検出できますが、品質自体は検出できません。