静的解析(静的コード解析)とは

静的コード解析の必要性、概要、手法などをご紹介

静的解析の概要

ソフトウェアの品質を解析する手法は、大きく二つに分類することができます。
1つ目は動的解析、そしてもう一つは静的解析です。動的解析とはソフトウェアを実際に動かしてみて、その動作を確認する方法です。
これに対して静的解析は、実際に動作させることなく、ソースコードそのものからソフトウェアの動作や構造を解析する手法です。

ソフトウェアの品質検証活動としては、開発工程の後半で行われる「ソフトウェアテスト」がよく知られています。ソフトウェアテストは前述の動的解析に当たり、通常は完成したソフトウェアを実際に動かしながら、設計通りに作られているか、誤動作などが発生しないかを検証していきます。

ソフトウェアテストはそれ自体重要な工程の一つですが、品質検証のすべてをテスト工程に委ねるのは好ましいやり方ではありません。というのも、ソフトウェアテストが実施されるのは一般に開発工程の終盤近くなってからであり、この時点で初めて大量のバグが検出された場合、開発スケジュールに重大な影響を与えかねないからです。
また、工程が進んでからのソースコード修正には思わぬバグを作り込むリスクが多分にあり、特に組み込みソフトウェアのようにソフトウェア品質要件の厳しいプロジェクトにおいては、致命的な事態を招きかねません。

これに対して静的解析は、開発途中のソースコードに対しても実施することが可能です。
開発者がソースコードを書くタイミングでリアルタイムに静的解析を行い、不適切なコードやコーディング標準に違反する記述などを取り除くなどしてソースコードの品質改善を行っておけば、後半のテスト工程における負荷を大幅に削減することができます。

静的解析と動的解析をうまく組み合わせて品質を作り込んでいくことが、良質なソフトウェアを効率よく開発する秘訣だと言えるでしょう。

静的コード解析の利用シーン

静的コード解析はあらゆるソフトウェア開発に導入可能ですが、特に、自動車製造業や航空、軍事、医療といった、ミッションクリティカルな組み込みソフトウェアの開発において広く採用されています。
自動車や飛行機、あるいは軍事衛星の制御といった人命に関わるようなソフトウェアには、一般的な業務ソフトウェア等に比べて高い品質が求められます。ソフトウェアに潜む小さなバグが、取り返しのつかない重大な事態を引き起こす恐れがあるためです。

こうしたソフトウェアの開発時にはMISRAやCERT-Cに代表される数百以上のコーディング規約を順守する必要があり、これも静的コード解析が求められる理由の1つとなっています。

静的コード解析の対象範囲

静的コード解析では、以下のような要素について解析を行います。

  • コーディング標準の順守状況
    MISRAやCERT-Cといったコーディング標準への準拠状況を検証し、非対応箇所を特定します。
  • 不具合が潜む可能性のあるコードの検出
    メモリーやリソースのリーク、無限ループ、脆弱性のあるコードや不適切なリソース管理といった、動作異常を発生させる可能性のあるコードを検出します。
  • 品質指標(メトリクス)の計測
    ソースコードの行数(LOC:Line of Code)や 複雑度(Complexity)、結合度(Couplings)といった品質指標を集計します。
  • セキュリティ脆弱性の検出
    インジェクションやクロスサイトスクリプティングなど、脆弱性のあるソースコードを検出します。

静的コード解析ツールが解決する課題

静的コード解析を導入する最大のメリットは、ソフトウェアに潜むバグやセキュリティ上の脆弱性などをプロジェクトの早期段階において検出し、対応することができるという点です。これによりプロジェクトのスケジュール遅延を防ぐとともに、ソフトウェア品質が向上し、ひいてはプロジェクト全体のコスト削減にも繋げることが可能となります。

静的コード解析は手動で行うことも可能ですが、専用のツールを用いることで、より効率的かつ効果的に静的コード解析を適用することができます。

静的コード解析ツール「Klocwork(クロックワーク)」

Klocworkは、世界中のミッションクリティカルなソフトウェア開発プロジェクトで広い採用実績を持つ静的コード解析ツールです。Visual StudioやEclipseといったメジャーな開発環境に統合して利用できるため、非常に手軽にご導入いただけます。

Klocworkの導入により、ソフトウェア開発プロジェクトにおける以下のような課題を解決することが可能です。

  • 開発フェーズの最後に解析と修正を行う
  • 修正による" 手戻り" が発生するため、修正されないまま放置されたり、修正コストが高くついたりする
  • MISRAやCERT-Cルールは100以上のチェック項目
  • ツールの活用が進まない
  • 開発スピードの低下、改善されない品質、低いROI
  • 手戻りを最小化し、開発スピードを低下させない
  • 統合レベルではいつもプログラミングエラー・規約違反フリー

× 閉じる

ソフトウェア開発、静的コード解析に関するお役立ち資料をご用意しています

ダウンロードはこちら