Microsoft Researchは、ソフトウェアエンジニアリングの神話を検証するための実証的研究の成果を要約したものを公表した。Nachi Nagappan氏によって行われたこの作業は、ソフトウェアエンジニアリングにおける一般的なプラクティスが、品質に対して実際に与えている影響を調査したものだ。分析によって明らかになったのは以下の通り。
- テストにおいてコードカバレッジが増えることと、リリース後に必要となる修正数が減ることとの間に必然的な関係はない。その他多くの要素が影響するからだ。
- TDDは品質を向上させるが、時間もかかる(pdf):「研究チームが明らかにしたのは、TDDを行うチームはTDDを行わないチームに比べ、欠陥密度にして60から90%優れているということでした。また、プロジェクトを完了させるのに15から35%多く時間がかかっていたことも分かりました。」
- アサーションとコード検証はバグを減らす。さらに言えば、「コードベース上でアサーションを生産的に使えるソフトウェアエンジニアは、良く訓練された熟練者であることが多く、このことが結果に影響しています。」
- 組織構造は品質に対して重大な影響を与える:「組織的なメトリクスはコードと結びつけられることはありませんが、ソフトウェアの欠陥傾向を適合率("precision")と再現率("recall")で見た時、85%の正確さで予想することができるのです。」
- チームが分散されていることは、品質に対して無視できない影響を与える。
これらの研究成果は、現在Microsoftの開発グループによって利用されている。そこにはWindows Vista SP2のような主要プロジェクトに対して行われる、リスク分析やバグ選別による支援も含まれている。