Loading
|
@IT > 絶対現場主義! 組込み開発のバグを知り尽くした静的解析ツール「PGRelief 2007」 |
|
静的解析ツールは、ソースコードの中にコーディング規約に違反した個所はないか、バグは潜んでいないかを機械的にチェックするテストツールである。コンパイラでは検出できない欠陥のあぶり出し、目視では限界のあるソースレビューの効率化でプログラム品質を高めるのに役立つ。開発(コーディング)段階でできるだけ品質を高め、その後のテスト負荷、開発への手戻りを抑えることで全体の開発効率を高めるという考えは、組込み分野では一般的になっており、静的解析の有効性も広く認知されるようになってきた。
そうした中でも、富士通ソフトウェアテクノロジーズのPGReliefが累計導入600社と高く評価されているのには理由がある。最大の特徴は「多重チェック」だ。同社アプリケーション基盤グループ AP基盤サービス事業部 第一AP基盤サービス部の辻本寛氏はこう話す。 「一般の静的解析ツールはコーディング規約への適合性チェックに注目しているものが多いですが、PGReliefは、富士通が組込み開発で培ってきたバグ検出のノウハウを解析エンジンに搭載しています。そのうえで、SECコーディング作法やMISRA-Cルール(注)への適合性もチェックしますので、2重3重にチェックをかけられます」。
もともと富士通の社内ツールだったPGReliefは、自らの実開発の事例から収集したノウハウによりバグ検出を効率化する狙いで開発された。そのため現在でも、一義的にはバグ検出に力点を置いており、富士通の実開発と連動して解析精度の向上を年々図っている。 コーディング規約の違反をチェックする一般の静的解析ツールでも、規約違反に絡むバグは検出可能だが、逆にいえば、絡まないバグは見つけられない。開発現場の関心は「動くもの」であり、まずは規約遵守よりもバグを減らすことだろう。そこでバグ検出を得意とするPGReliefが評価されるのだ。
もちろん、プログラム品質を総合的に高めるには、コーディング規約の遵守も重要な要素だ。特に組込み分野では、プロセッサ変更に伴うプログラム移植、モジュール再利用が多いが、規約から外れたソースは移植性や保守性、可読性が低い。効率性やセキュリティ上の問題をはらんでいる可能性もある。その点でも、PGReliefは組込み分野で国内標準となりつつあるSECコーディング作法に標準対応、オプションでMISRA-Cルールにも対応している。つまり、バグと規約違反を同時に効率良く検出できるのだ。特に最新版のPGRelief 2007は、SECルール129個のうち114個に対応するなどカバレッジを高めており、総チェック項目数は540に達している。 一般に静的解析ツールは、「チェック項目が多いと使いづらさも増す」といわれる。膨大な問題個所が指摘され、どれが本当に重要な指摘なのか、見極めるのに時間がかかるからだ。その点でもPGReliefは国産ツールらしく、細かな配慮をしている。例えば、ツールバーのボタンをクリックするだけで、指摘メッセージ一覧を信頼性・保守性・移植性など種目別に絞り込み、開発者は注目する種目の指摘を集中処理できる。また、各指摘をクリックすれば、ビューアが立ち上がり、連携エディタで即座に指摘個所のソースを書き換えられるほか、指摘メッセージの詳細表示(ソース例・意味・対処方法など)により、何が問題視されているのか、理解が深まる。
このようにしてソースに潜在している問題を浮き彫りにし、開発と同時並行で品質を作り込めば、後工程の工数は確実に減るだろう。ただ、効果があると分かっていても、開発現場は既存プロセスをなかなか変えられないものだ。特に、ともかく“書き上げる”ことに追われている開発者は、余分な検証プロセスが入るのを嫌う傾向がある。そこでPGReliefは、開発者が利用しやすい仕掛けも用意する。統合開発環境(IDE)との連携である。
PGReliefを単体で使う場合、プロジェクト設定などの初期設定が必要になる。この作業さえ忙しい開発者にとっては煩わしい。ところが、PGReliefとIDEを連携させると、IDE側で設定したプロジェクト情報が流用でき、後はIDE上からPGReliefをコマンド起動(コンパイル後に自動解析する設定も可能)させれば、単体で使うのとほぼ同じ感覚で静的解析が行えるのだ。コンパイラがエラー表示、警告表示した個所の修正はどの開発者も手掛けているので、その延長線上でバグや規約違反の修正も行えるだろう。これなら開発プロセスをほとんど変えずに、静的解析の効果を得られる。 PGReliefと連携するIDEは、当初富士通製プロセッサ向けの「SOFTUNE」に限られていたが、段階的に対応を広げ、現在は、ルネサス テクノロジが自社製品向けに提供する「High-performance Embedded Workshop」、Visual Studioベースの横河ディジタルコンピュータ「microVIEW-STUDIO」にも対応している。さらに横河ディジタルコンピュータからは、英ARM社「RealView Developer Suite」に対応した「PGRelief for ARM RealView」が提供されている。PGReliefは、これら組込み分野で使われる多くのIDEに対応しており、ますます使いやすくなったといえる。
さらにPGRelief 2007では、開発部門と品質保証(QA)部門が連携して運用するパターンを想定し、機能強化を図っている。辻本氏は「いくらPGReliefが使いやすい、IDEと連携可能といっても、『余分な工数はとれない』と導入をためらう現場は多いのです。それならば、現場の実態に即した実践的な運用方法を提案しようと考えました」という。 その運用パターンとは、開発したソースをサーバに集約している開発現場に適したものだ。つまり、サーバ(QA部門)側でPGReliefを使って静的解析を一括して行い、その結果を個々の開発者が検証する方法だ。
これまでも、QA担当者がPGReliefを使い、開発者から送られてきたソースを逐一検証、結果をフィードバックするパターンの運用は多かったが、現場によっては数日、あるいは1週間のタイムラグが発生するため、開発と同時並行で品質を作り込む静的解析のメリットが十分に得られていなかったという。それをサーバ運用にすれば、プロセスの自動化、品質管理の徹底というメリットが得られる。 例えば、開発者が当日の作業分のソースをサーバへアップロードして帰宅。サーバ側で夜間のうちに自動解析し結果を出力する。翌日出勤した開発者は、その解析結果を検証し修正作業を行う、といったプロセスが考えられる。「開発部門からすると、1週間も前に送ったソースの問題点を(QA部門から)指摘されても、その間に開発作業はどんどん進んでいるので対処しにくいものです。それがこの形であればスムーズに運用でき、開発と同時並行で品質を作り込むことができるでしょう」(辻本氏) サーバ運用のもう1つの利点である品質管理の徹底とは、PGReliefでチェックする項目をサーバ側で設定し、静的解析の運用ルールを標準化すること。開発者任せの運用だと、どうしても取り組みに個人差が出てくるが、サーバ運用なら同じ基準を適用できるのだ。その上でPGReliefのレポーティング機能「品質監視オプション」を使うと品質情報が可視化され、マネージャが品質状況を把握しやすい。 品質管理オプションは、開発資産を階層構造で整理した視覚的なビューを持つ。どのソースに「残指摘(バグ)」が多いのか、開発グループ全体で残指摘件数はどのように推移しているのか、といった品質状況が一目瞭然となる。通常、開発者がExcelなどで逐一状況報告し、マネージャがとりまとめ、品質状況を把握しているケースが多いが、PGReliefをサーバ運用すると、そうした作業は大幅に合理化されるだろう。
PGRelief 2007では、サーバ運用のメリットを高める新機能も用意している。その1つが前述したビューア機能。サーバ運用にもかかわらず、クライアント版と同等の使い勝手の良さを開発者へ提供する狙いがある。サーバ側で出力された解析結果をビューアで開くと、クライアント版と同じく指摘メッセージの絞り込み、詳細表示が行え、各指摘に対する処置(未対処・対処済み・対処不要など)のタグ付けも可能である。「ビューアでPGReliefの効果・使いやすさを体験し、その後、修正したソースを自分の手元ですぐに解析したいと開発者が望むようになれば、開発者側でも適宜PGReliefを使用すればよく、これが最も効果的な運用方法です」(辻本氏)という考えなのだ。
また、PGRelief 2007は、サーバ運用において構成管理ツールとの連携も実現した。すなわち、構成管理ツールが提供する取り出しコマンドをPGReliefが内部処理し、構成管理ツールのリポジトリから自動的にソースを取り出して解析する。開発における構成管理の必要性はあらためて説明するまでもないだろうが、解析対象となるソースを自動的に取得する機能は便利だろう。PGRelief 2007と連携可能な構成管理ツールとしては、オープンソースの「CVS」「SubVersion」、マイクロソフト「Visual SourceSafe」などがあり、主だったものをカバーする。 このようにPGRelief 2007は、サーバ運用でより真価をより発揮する静的解析ツール、いい換えるならば、開発現場の実態に即したソリューションといえるだろう。辻本氏は次のように熱い思いを語る。「業界全体での静的解析ツールの導入率は3〜4割といわれ、まだまだ使っていない人がたくさんいます。しかし、開発ボリュームがどんどん大きくなるに従い、問題を次々と先送りする従来のやり方では持たなくなってきています。今後も開発現場の実情に合わせた運用方法を提案していき、開発プロセス全体の改善を図ってゆきたいですね」。 提供:富士通ソフトウェアテクノロジーズ株式会社 企画:アイティメディア 営業局 制作:@IT 編集部 掲載内容有効期限:2007年6月22日 |
|