Programming Research社
URL:http://www.programmingresearch.com/
Richard Corden氏 インタビュー
ソフトウェアの品質向上、安全性の確保は、以前からクローズアップされてきた。そうした中、欧州の自動車業界団体「MISRA(Motor Industry Software Reliability Association)」は、車載用ソフトウェアを対象としたガイドライン「MISRA-C」に次いで、2008年6月、C++言語対応の「MISRA-C++」を発表した。そこで、MISRA-C++の適合度評価に対応した静的解析ツール「QAC/QAC++」の開発元であるProgramming Research社のRichard Corden氏に、MISRA-C++のガイドラインの特長や有効性、ツールの特長などについて話を伺った。
より使いやすく、より安全に─各業界で利用広がる「MISRA-C++」
C++言語による組み込み開発の需要増加を受けて誕生した「MISRA-C++」は、ルール項目が全部で228項目あり、そのうちMISRA-Cのルール項目を122項目(全141項目)カバーしている。また、C++の仕様に特化した項目や未定義、不確定、曖昧な動作などに対し、危険な要素を回避する項目などが追加されており、C言語をより機能強化したC++を正しく使うためのガイドラインとなっている。
Programming Research社のRichard Corden氏は、「MISRA-C++は、2つの観点で大きな意味を持ちます。一つは、プログラマが書くC++コードの安全性を増すこと。MISRA-C++を使ってチェックすることにより、安全に、しかも効率アップが図れます。もう一つは、開発者の教育として、なぜ問題が起きたのか、その問題をどうやれば解決できるかがわかります」とMISRA-C++のポイントを解説する。
MISRA-C++は、C++をより使いやすく、より安全に利用するガイドラインとして、1年半が経過したが、今では自動車業界に限らず各業界に普及しつつある。
「当社のツールの販売状況を産業別に調べた結果、自動車以外にも医療や航空宇宙、汎用工業製品、教育など多様な業界に導入されています。この結果が市場全体とマッチするかは別の問題としても、コーディングのガイドラインが認知されつつあるのは間違いないでしょう」と、Richard氏はMISRA-C++の今後の普及に手応えをみせる。
不具合の予防、発見を自動化─品質保証をツールで実現
同社では、MISRA-C++に対応した静的解析ツール「QAC/QAC++」を販売しており、ワールドワイドで約3万以上のライセンスを出荷、1万社以上の顧客に導入されている。日本でも東陽テクニカが販売を行っており、世界の10%近いシェアを獲得している。
「静的解析ツールQAC/QAC++は、マニュアルで実施されていたコード・インスペクションを自動化し、ソフトウェアに潜む問題を非常に早い開発段階で検出するツールです。不具合の発見だけでなく、将来起こる可能性のある問題を未然に防止します。言語のコーディングには、未定義や不確定なものもあり、それらをMISRA-C++というガイドラインを使ってチェックしていきます。また、自動コード・インスペクションは、コーディングの標準化、平準化といった点で、教育にも、将来の品質保証にもつながります。そうしたプロセスを社内に作るソリューションです」と、Richard氏はツールの特長を強調する。
このように、開発コードには、どう振る舞うかあらかじめ理解できないものも含まれているが、コーディングの安全性を高め、プログラマの成熟度を上げる効果がQAC/QAC++導入の大きなポイントになっているという。
日本の普及に向けて研究が本格化─「解説書」の提供を目指す
MISRA-Cは、自動車業界が強力に推進し、各業界に普及しているが、MISRA-C++を今後日本市場でどう普及させていくか、課題も残されている。
たとえば、MISRA-Cは、自動車業界団体のMISRAが母体であるため、人命を扱う観点から機能安全においても、機能安全性規約『IEC61508』、『ISO WD2626』などで、すべてのシステムのリスクに応じて安全尺度(SIL:Safety Integrity LevelやASIL:Automotive Safety Integrity Level)がクラス分けされている。その中には強制的にプログラマのコーディングの適用を求めるなど、厳格な取り決めがあり、そうした安全性への取り組みが各業界に広がった経緯がある。
「その普及に貢献したのが組み込みソフトウェア管理者・技術者育成研究会(SESSAME)です。研究・ワーキンググループの活動を通じ、さらに解説書によって普及が加速しました」(Richard氏)。
MISRA-C++も、研究会やワーキンググループが発足し、現在はSESSAMEなどの協力を得て、解説書の作成が進んでいる。
「MISRA-C自体も最初から認知度が高かったわけではありません。MISRA-C++も参考となる資料の整備が今後の普及の鍵となるでしょう」(Richard氏)。
ソフトウェアの安全性に必要な4つのポイント
MISRA-C++により、ソフトウェアの安全性、品質の向上がますます期待されるが、Richard氏はそのために必要な4つのポイントをあげる。
「1つは、プログラマが書いたコードがどのようにコンパイラに理解されているか、解釈されて、実際にどのようにふるまうか、それを正しく理解することが安全性にとって重要です。2つ目は、自分だけが理解できるコードを書くのではなく、他人が読んでも分かる明確で正しい、曖昧性のないコードを書くことが大切です。3つ目は言語の中には、未規定や未定義の振る舞いなどがあるため、そういったコードを極力使わないこと、そして最後がレビューやチェックが自動化されていることです」。
ソフトウェアの安全性の追求は、企業の信用を高めるだけでなく、品質の劣化から起こる問題などをカバーする重要なポイントとなる。その意味でも、コスト削減が企業の命題である現在、ツールの導入がその近道となるのは間違いない。
MISRA-C++のガイドラインと、それに対応する静的解析ツールが、組み込み業界で普及していくか、今後の動向に注目だ。