生産性を高める静的解析ツール「Axivion Suite」とは
Axivion Suiteはソフトウェア劣化を防ぐための静的解析ツールだ。静的解析とはソースコードを実行せずに解析する技術であり、動的テストとは異なり、部分的にしか実行できないコードや、呼び出し元が存在しないライブラリも解析できる。
静的解析にはさまざまな手法が存在する。抽象解釈は、ソースコードをモデル化し、その構造を理解するために用いられ、アーキテクチャの解析に役立つ。テイント解析(Taint Analysis)は、セキュリティ関連の解析で、特定の位置で変更されたデータを検出する。字句解析では、ソースコードをトークンに分解して解析する。データフロー解析では、ソースコード内のデータの流れを、実行せずにモデリングする。
静的解析ツール利用のメリットは、バグの早期発見だ。また、コーディング規約の適用によりコード品質を改善できる。機能安全性が求められるプロジェクトでは、MISRAなどの規約に準拠したコンプライアンスに配慮した検証も可能だ。さらに、脆弱性検出、メトリクスの測定・ドキュメント化、コードレビューの自動化など、多岐にわたる利用方法がある。ツールによる検証の効率化をすることによって、人間はより高度な判断が求められる部分に集中できる。
一方で静的解析は簡単ではなく、解析の複雑さ、処理の重さによる速度の遅さ、検出量の多さ、誤検出の存在、ツールのライセンス費用が高いなど、いくつかの課題がある。
これらの課題に対する対策としては、継続的インテグレーションシステムでの継続的な実行、差分解析による効率的なエラー修正、ローカル実行や単一ファイル解析による部分的な解析が考えられる。誤検出に関しては、速度と精度のトレードオフが避けられないが、適切なバランスを見つけることが重要である。
費用に関しては、導入コストと維持コストだけでなく、プロジェクトの全体コストを考慮することが重要である。インディ氏は、プロジェクトの初期開発コストは全体の開発コストの約20%を占めるとし、全体コストの約40%は既存ソフトウェアの理解に費やされているという統計を示した。そして、その4分の1は生産性の向上によって削減できるとした。
インディ氏は「出荷後のエラー改修コストが一番高いです。なるべく早くアーキテクチャの解析の段階で、対策をした方が安く済みます。解析ツールの導入費用とうまくバランスをとることができます」と説明した。
続いてインディ氏はAxivion Suiteの説明を行った。Axivion Suiteは、バージョン管理システムに格納されたソースコードに対し、継続的インテグレーションシステムと連携して動作する。開発者は統合開発環境(IDE)を利用しながら参照できる。WebインターフェースやレポーティングAPIも備えているので、アーキテクトを含むチームメンバーは全体の設計を見ながら開発者とコミュニケーションできる。
アーキテクチャ検証、クローン検出・管理、コーディング規約遵守、メトリクス監視、循環依存性解析、デッドコード検出など、主なソフトウェア劣化の要因に対処可能だ。
Axivion Suiteのダッシュボードでは、検証実行のたびに検出量の変化を追跡し、さまざまな種類の検出結果を可視化する。検出された問題の詳細や、ソースコード内での具体的な問題発生箇所、追加・削除された要素の情報も得られる。
ソースコードの詳細は図を用いても確認可能であり、循環依存性のような問題を視覚的に捉えられるようになっている。複雑さの指標も示し、アーキテクチャのモデリングツールでは正しい構造と違反を示すことができる。
インディ氏は最後に「皆様の製品開発に生じている複雑さや、問題点の解決を弊社が支援できると考えています」とコメントした。