SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

デブサミ2011セッションレポート(AD)

デブサミ2011レポート
第三者作成ソースコードに埋もれている不具合を暴け!

  • X ポスト
  • このエントリーをはてなブックマークに追加

 現在のソフトウェア開発では、外部発注やオープンソースなど第三者が作成したソースコードを混在して活用する事例が当然となっている。そのような複雑な ソフトウェアのサプライチェーンにおける不具合の検出において、有効利用できるのが、静的解析技術だ。本セッションではAndroid カーネルソースコードなどの解析結果を例にとり、現実に起こりうるコード不具合の実体と、解析ツールの活用法などが紹介された。

  • X ポスト
  • このエントリーをはてなブックマークに追加

 現在のソフトウェア開発では、外部発注やオープンソースなど第三者が作成したソースコードを混在して活用する事例が当然となっている。そのような複雑なソフトウェアのサプライチェーンにおける不具合の検出において、有効利用できるのが、静的解析技術だ。本セッションではAndroidカーネルソースコードなどの解析結果を例にとり、現実に起こりうるコード不具合の実体と、解析ツールの活用法などが紹介された。

コベリティ日本支社 リージョナルセールスマネジャー 西山誠一 氏
コベリティ日本支社 リージョナルセールスマネジャー 西山誠一 氏
アプリケーションズ エンジニアリング マネージャー 高石勇 氏
アプリケーションズ エンジニアリング マネージャー 高石勇 氏

静的解析技術で既存の手法では半年かかる検証を自動化

 ソフトウェアの不具合を見つけ出すためのテストは、単体や結合した状態で動かして行うのが一般的だ。ただ、後工程になればなるほど不具合は見つけにくくなり、修正コストが大きくなる。そこで開発の上流、コーディングの状態で不具合を見つけるために行われる、静的解析がより注目されるようになっている。コベリティの西山誠一氏は、「その背景には、現在のソフトウェア開発における様々な課題がある」と分析する。

 まずITがビジネスを支えている現在、ソフトウェアが年々大規模化し、複雑化していることが挙げられる。経済産業省の調べでは日本のソフト開発の平均的な開発行数2009年では平均22万行で、2010年は45万行。さらに2011年は100万行と予測されている。1日100ページ見ることができたとしても6か月かかる計算だ。テスト負担が大きいことからも開発コストが肥大化し、納期に間に合わないケースも少なくない。

 そこで静的解析ツールでソースコードを調べると、たとえばC/C++の場合では「Nullポインタの間接参照」「ポインタ解放後のメモリ使用」「バッファ・オーバーフローしてしまう問題」「リソース・リーク」「ファイルをオープンして閉じ忘れる」などの不具合を自動的に洗い出すことが可能だ。

 さらにソフトウェア開発を複雑にしている要因として西山氏が挙げるのが、世界的に増えている第三者工期だ。たとえばAndroidなどオープンソースの開発、修正には、全世界の技術者が係わっている。自社開発のソフトウェアでも、協力会社、外注、市販パッケージが複雑に絡み、さらに派生製品がどんどん出荷されているので、どのタイミングで不具合が入り込んだのか、管理するのが非常に難しくなっている。

米国国土安全保障省と共同でオープンソースを評価

 そこで、受け取ったソースコードの品質を客観的に評価する仕組み、手法が求められる時代になっている。2006年にコベリティは、米国国土安全保障省と共同でオープンソースの品質評価サービス「Scanプロジェクト」を立ち上げた。その成果の一つが「2010オープンソース品質評価レポート」であり、対象はAndroid、Linux、Apache、Samba、PHPなど、広く普及している291件のオープンソース・プロジェクトで、6100万行以上のコードを解析している。

 たとえばHTCのサイトで公にされているAndroidカーネルの場合、75万行を解析し、359の不具合を発見した。これは一般的なオープンソースの1000行あたり一個のバグより、かなり優秀な値となっている。そのうち、ハイリスク不具合は88個であり、その後Google、HTCと協力し、修正していく活動が行われている。

 西山氏による解説に続いて高石勇氏が登壇し、Androidカーネルのプロジェクトを対象に、コベリティの静的解析ツール「Coverity Static Analysis」による解析のデモを披露した。実際、数多くの障害が検知されたが、その中から「メモリの破壊」「配列の範囲を超えたデータの書き換え」など、インパクトの高いものを優先して見ていくことができるようになっている。また、テストを自動化し、負荷なく開発プロセスにマッチングさせることが出来るという。一方プロジェクトマネージャー立場から、解析とバグフィックスの状況を、ブラウザを介してモニタリングするなども可能だ。

図:6,100万行以上のコードの解析結果をまとめた品質評価レポート
図:6,100万行以上のコードの解析結果をまとめた品質評価レポート

第三者開発に加え自社開発品質の客観的評価にも活用可能

 以上のようにコベリティの静的解析ツールを使えば、自社、サードパーティ、外注のソースコードを調べ、どこに不具合が多いのかをレポートとして見ることができる。また自社が開発に加わる立場の場合、他社コードと比較した自社品質のベンチマークとして提示できる。レポートではリスク別のバグの数、コンポーネント別のバグ密度などの統計データや、バグの状態を修正対象(未処理)・修正対象(選別済)・誤検知・意図的なバグ・守勢済みに分けて分析する。

 コベリティの未ユーザーがレポートを希望する場合には、無償のトライアルも用意されている。

 その他、これまでに品質評価したオープンソース・プロジェクトについては、レポートがコベリティのサイトで公開されている。今後、対象プロジェクトが拡大されていく予定だ。

お問い合わせ

コベリティ日本支社

東京都新宿区西新宿1-26-2 新宿野村ビル10階

http://www.coverity.com/html_ja/

japan_sales@coverity.com

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
デブサミ2011セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5804 2011/03/14 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング