OSSの品質を見極め、製品の完全性を向上する「Coverity 5.3」
では、同社が提供する静的解析ツールは、競合製品と比べてどういった優位性があるのだろうか。ハレム氏に聞くと、「私たちは、継続的に技術革新を図り続けています。まず大きな違いは、高精度の解析技術です。深刻な不具合をピンポイントで検出しますし、誤検出率も業界で一番低いです。次に、不具合やバグがビジネスにどう影響を及ぼすかの洞察も、コード間の相互関係を理解して解析を行うことができるのも競合他社製品との大きな違いです。例えば、複数のバージョンでコードが共通だったり、複数の製品間で共通のコードがあったりする場合に、あるコードでバグがあると、それによって製品のどこに影響が及ぶのかを開発者に伝えることができます」と説明した。
Coverityの解析ツールでは、Scan Projectや1,000以上の顧客をサポートしてきた経験を踏まえ、バグの程度を高リスク、中リスク、低リスクといった形で分類して開発者に示すことができるため、開発者は修正の優先順位をつけることができる。また、解析ツール自体が開発環境に統合化できるというメリットもあるという。これまで80の異なる開発環境をサポートし、最新バージョンであるCoverity 5.3では、Androidプラットフォームの開発環境も新たにサポートできるようになった。他にも、Visual Studio 2010/.NET 4のサポート、Androidアプリ開発のサポート、Javaの解析機能の拡充なども行われている(開発言語はC、C++、Java、C#の4つに対応)。
続けてハレム氏は、最新バージョンの特長として、品質を可視化できるオープンソース品質評価レポート(Coverity Software Integrity Report)の出力機能を挙げ、「この機能により、開発者は、コードの品質をスナップショット的にただちに見ることができ、またコードにまつわるリスクがどこにあるのか、それを見極めることができます。例えば、サードパーティから入手できるコードが、自分たちの製品に組込むに値する品質を満たしているかどうかを見極めることができます。また、バグ密度などに関して特定のコードが業界の標準より下回っているか、上回っているかといったベンチマーキングツールとして使うこともできます」と解説した。
オープンソース品質評価レポートをAndroidカーネル(2.6.32「Froyo」)に対して適用した結果は「2010年度オープンソース品質評価レポート」にも記されている。このレポートでは、Android固有のソースコードのバグ密度が、基になったLinuxカーネル・コンポーネントと比較して2倍であったとしている。Androidカーネルのバグ密度は、業界平均値(1,000行あたり1つのバグ)よりも低いことが判明したが、解析対象となった端末「HTC Droid Incredible」では359件のバグが検出され、そのうち高リスクなものは88件であった。このことから、高リスクなバグを伴ったAndroid端末が出荷されている可能性が少なからずある。
ハレム氏はまず「Androidカーネルの解析過程で驚いたのは、Googleやデバイスメーカーだけでなく、多くの人々が貢献していることです。非常に数多くの半導体メーカーやOSF(オープンソースファウンデーション)が貢献しているのです」と説明した。
また、「Androidは、Linuxと比較して特異的な問題・不具合が高いことも分かりました。これは2006年度のScan Project発足時より、Linux開発者が弊社製品の解析結果をもとにバグを検出、修正してきた経緯を考慮すると当然です。一方、今回Androidで検出されたバグは、Linuxと同様に静的解析で検出可能で、恐らく開発者が開発早期段階で検出、修正したいであろうバグとも言えると思います」と見解を述べている。
Androidプラットフォームにおいても他のOSSと同様に、責任の所在を明確にしにくいため、品質の可視性が重要であるという主張だ。
なお、Androidの解析結果は、GoogleとHTCに対して情報提供を行った60日後に詳細な結果を公表し、再テストしたレポートも発表する予定だ。
最後に、今回の発表の総括として、デバイスメーカーなど、ソフトウェア開発社向けのメッセージをいただいた。
「最終製品の品質やユーザーのブランドに対する評判は、自社で開発したコードだけでなく、複数の調達元から納品されたコードの品質にも依存します。私たちの製品を使うことで、さまざまなコードの品質をしっかり検証できるメリットを知っていただきたいです」
なお、オープンソース品質評価レポートと同様の分析を、自社製品に対して行える試用の申し込みもコベリティ社のWebページから受け付けている。