GTM-MML4VXJ
Skip to main content

English

Japan

  1. ホーム >
  2. 商品一覧 >
  3. PGRelief C/C++ >
  4. 導入事例>
  5. プログラムミスの早期発見で品質向上に取り組む:PGRelief導入事例

PGRelief C/C++ 導入事例

新しいアイデアとテクノロジーでイメージングの未来を創造 富士フイルム ソフトウエア株式会社
 

プログラムミスの早期発見で品質向上に取り組む

ソフトウェア開発においては、いかにコーディング段階での品質を向上させ、テスト段階からの手戻りを少なくするかが重要なポイントとなる。そこで注目されているのが、静的解析ツールの導入による開発の効率化だ。現在、全社的な品質向上に取り組んでいる富士フイルム ソフトウエア株式会社に、静的解析ツールの活用方法を伺ってみた。

1. 静的解析ツールを導入した狙い


御社では、昨年より品質保証部門の主導により、静的解析ツール(注1)を導入されたそうですが、その狙いはなんでしょうか。


木村さん写真1

木村:

ソフトウェア会社としての競争力を維持するには、何より基礎技術を磐石にする必要があります。そこで注目したのが「静的解析ツールの導入」と「コーディング規約の整備」です。プリミティブな作業をツールに任せることで、エンジニアがより創造的な作業に従事できるのでは、という狙いもありました。

東:

ソフトウェア開発で重要なのは、プログラムを作り出す「実装」の工程ですが、個人スキルに依存する部分が多く、品質的なバラツキを生むことが少なくありませんでした。実装段階で十分な確認が行われていなければ、品質確保が後工程にずれ込んでしまいかねません。そのため静的解析だけでも出荷前に3重のチェック体制を敷き、自分達もお客様にも安心して頂ける品質管理を実現しています。

開発の現場では、2年前から静的解析ツールを導入した経緯がありますが、「ツールライセンスの不足」や「指摘メッセージ内容が不親切」「指摘数が膨大で処理しきれない」などの理由により、必ずしも効率的な運用を行えていなかったという現状があります。今回改めて環境を整え、「指摘メッセージの内容が親切で分かりやすい」ツールで統一することで、実施率の低下や運用負担といった問題を解決することができたと考えています。

実施タイミングの早さが負担とミスを防ぐカギ
静的解析実施タイミングと利用感の相関図
山口さん写真1

東:

また、静的解析の実施タイミングは早いほど効果が高く、エンジニアにとっても負担も少なくなります(上図参照)。静的解析ツールの導入により、工数が増えることをエンジニアが敬遠するのではないかという危惧もあったのですが、コードレビュー(プログラムを机上検証する人為的作業)前であれば、むしろ負担を軽減する効果が確認されています。テストケースとなったプロジェクトでは、以下のような報告も上がっています。

  • コーディング効率が、キロステップ(注2)あたり約2時間短縮できた。
  • コードレビュー前に静的解析ツールを利用することで、コードレビューにおける問題点の指摘率が30%軽減された。
  • プロジェクト全体において、潜在的なバグを5000件以上消し込むことができた。
  • 全テスト段階における問題点の指摘数を22.8%削減できた。

単にプログラミングの品質が上がっただけでなく、生産性も向上しているといえます。

コードレビューの前に、ツールに指摘されるような単純なコーディングミスは潰しておくことで、コードレビューでは本質的なアルゴリズムの確認に集中出来ます。このことは、開発者が静的解析ツールの効果を実感する一番のポイントです。

また、既存のコードを流用する箇所が多いプログラムでは、コード修正による影響範囲の見極めが難しい場合がありますが、静的解析ツールを利用すれば、より簡単に予測が可能となります。コードレビューによる品質保証は、実行を担当するエンジニアの力量にも左右されるため、100%確実とはいえません。そのため、同一パターンなら全て網羅的に検出してくれる静的解析も併用して実装工程の品質保証体系に組み入れることは、品質を保証するという点で、とても有効であると言えます。

2. 導入と運用を成功させるために重要なこと


静的解析ツールの導入と運用を成功させるうえでは、何が重要だとお考えですか?


全社的にエンジニアの技術の底上げにも
木村さん写真2

木村:

開発現場では「自分たちのために導入する」という意識が強かったため、品質保証部としては学習機会を作ったり、基本的なルールを設定したくらいですね。具体的なガイドラインの作成や運用実験に関しては、現場のワーキンググループが率先して実行しました。結果的にそれが、彼ら自身の満足度を向上させることにつながったのだと思います。

なお実際の運用にあたっては、あらかじめコーディング規約(プログラミングの作法やルール)を決めておくことが必須ではないでしょうか。現在、今期中の完成を目指してワーキンググループ内で検討を進めている段階です。

東:

運用ルールの整備は、きわめて重要なポイントですね。静的解析ツールを利用すれば、コーディング規約に沿った指摘が可能になりますから、規約の遵守がより確実となり、書いた本人にしか分からないような汎用性のないコードを排除できるということです。

静的解析ツールの実行結果に関する情報を共有することで、社内の技術コミュニケーションが活性化したという意見もあります。コーディング規約を守ることでエンジニアのスキルアップも期待できます。また、開発の管理者にとっては、プロジェクトの問題点を把握することが容易になるという側面もありますので、将来的にはオフショア開発の品質保証に静的解析ツールを活用することも検討しています。

3. 静的解析ツールに、「PGRelief (ピージーリリーフ)」を選択した理由


今回、静的解析ツール「PGRelief(ピージーリリーフ)」を導入するにあたって、採用基準として重視したのはどういう点ですか?


さらなる品質向上のための枠組み作りを
山口さん写真2

東:

最大のポイントは、指摘された内容が理解し易いように追求された詳細な説明・解説にあります。C言語には規格上あいまいな部分が多く、コンパイラによってプログラムの動きが違うケースもあります。「PGRelief」はこういった細かな部分までカバーしていますし、単にツールとして指摘するだけでなく、プログラマの教育に活用される事も強く意識されているツールだと評価しています。

弊社ではエンジニアには出来る限り不要な作業をさせないで、本質的な業務に迷い無く集中して貰う事で効率化を図っています。フローティングライセンス(インストール数に制限がなく、サーバで同時使用数を制限する方式)にすれば、エンジニアが少ないライセンスを使いまわすためにライセンスのインストール/アンインストールを繰返すといった無駄な作業が不要ですし、全社的に導入することで複数のプロジェクトで併用するメリットが出てきます。開発の波にあまり左右されない効率的なツールの稼働が行えます。

なお、弊社ではコマンドラインから実行できる機能を利用して、IDE(統合開発環境)から直接実行できるようにしています。そのため、インターフェースを呼び出すことなく解析結果を参照できますから、余計な手間がかかりません。導入にあたっては、小規模なグループ単位で簡単なセミナーを開催しましたが、エンジニアからの評判も良好ですね。

4. さらなる品質向上のため、検討していること


今後、さらなる品質向上のために検討されていることはございますか?


木村さんと山口さん写真

木村:

どういった製品に搭載するシステムを開発し、どれだけ複雑なプログラムモジュールを採用しているのかによっても、検証作業に求められるクオリティは異なるはず。今後は、実際に静的解析ツールを運用して得た複雑度などのメトリクスデータを、コード見直しの閾値にするのみならず、テスト工程におけるポイントを突く検証強化などにも活用していきたい。

また、C言語以外のコーディングルールの整備や更なるツールの整備を進めて、全社の多くのプロジェクトでコーディング規約と静的解析を組み合わせた品質保証を行うことを推進し、プログラミングの技術力向上を図りたい。

開発には大きく分けて「設計」「実装」「検証」の3段階がありますが、静的解析ツールはあくまで実装段階の品質を確保する為のツールです。今後は設計や検証のプロセスにおいても、品質を高めるための枠組み作りも必要だと考えています。


【注釈】

  • (注1) 静的解析ツール:ソースコードを解析し、コーディング規約に違反した箇所や、文法的な誤りを検出するツールのこと。実際にプログラムを動作させてテストし、バグを検出する「動的解析ツール」と組み合わせて利用するケースが多い
  • (注2) ステップ:プログラムの規模を示す数値のこと。キロステップとは、1,000ステップを指す

富士フイルム ソフトウエア株式会社様 プロフィール

会社受付デジカメの組込みソフトからミニラボ用機材の制御ソフト、画像処理アプリケーションまで。富士フイルム株式会社のグループ企業として、さまざまな開発実績を誇る。2010年にはメディカル開発において、プロセス改善の評価モデルである CMMI (Capability Maturity Model Integration) のレベル4を達成。

関連リンク

まずはお気軽にご相談・お問い合わせください

本事例中に記載の肩書きや数値、固有名詞等は掲載日(2011年8月)現在のものであり、このページの閲覧時には変更されている可能性があることをご了承ください。

本ページは、導入事例パンフレット(お客様へのインタビュー形式)をWeb化したものです。
導入事例パンフレットをご希望の方は、資料請求フォームよりお申し込みください。