2007-07-21

組込みシステムの安全性向上の勧め

深夜のファミレスで、SQuBoKの原稿を泣きながら書いている。テーマは安全性だ。僕が安全性について書くなんて僭越極まりないので、参考文献としてIPA/SECの「組込みシステムの安全性向上の勧め」(以下「勧め」)と、Design Wave誌の2006年12月号(特集1が「組込みシステムの信頼性と安全性を高める」である)を持ってきている。

前者はイマイチな出来である。無料で配っていると思っていたら、この薄さと内容で税別571円だそうで。ちょっとボリすぎだ。DW誌が税込1,320円なのだが、この12月号の特集1の半分の内容も無い。税金で運営しているのだから、PDFで配ればいいじゃないか。何というか、お役所的だと思う。一方後者は、よく出来た特集だ。安全性に興味がある方はぜひご一読を。

さてこの「勧め」だが、どうも内容がチグハグだ。要するに、機能安全をソフトウェアに適用するという知的作業をほとんどやっていない人達が、機能安全を宣伝するために書いた書籍になっている。まぁ機能安全部会のメンバを見れば仕方がないとも思うのだが。もう少し何とかならんものかね。

例えば「近年の組込みソフトウェアは、非常に規模が大きく、複雑に進化して」いるから、いろいろな機能は「大局的に見るとあたかも『ランダムに実行される』という形に限りなく近くなって」いるため、故障は「限りなく『ランダム故障』に近い」とか書いてある。規模が大きく複雑になっても、ユーザが良く使う操作とあまり使わない操作はある程度予想できる。またバグは偏在する。だとするならば、絶対にランダム故障になどならない。そう扱う方が機能安全のフレームワークからすれば扱いやすいのかもしれないが、手段と目的を履き違えている。

また機能安全を実現する実装技術の章では、再利用とコーディング作法が書いてある。しかし再利用は別に機能安全を実現する手法ではないし、「勧め」にもその辺の関係は書いてない。コーディング作法は言語仕様などに起因する人間の間違えやすさを防ぐようルール化したものだから、機能安全の実現ではなくて、本質安全の実現だ。機能安全的開発プロセスではあるが、そういう意味で書いてないだろうし。SECの成果の宣伝をしたいのは分かるが、正直、他に書くべきことは一杯あるだろうに、と思う。

さて「勧め」にはテストの説明も書かれているのだが、この説明が古くさい。今どきテストの設計と実施を分けずに、まとめて「開発の後半で適切なテストを実行して、システムの動作上の問題点を早めに洗い出しておくことはきわめて重要」と書いてしまうなど化石的だ。気の利いたテストの専門家ならWモデルの重要性くらい説明すると思うのだが。

もっとおかしいのが、テストと対比させる形で「検証技術」という概念を提示し、その中にレビューやインスペクションを入れている点だ。何でも、レビューやそんな対比をして何になるのか。気の利いたテストの専門家は、テストもレビューも似たような活動であり、いずれにせよ上流から品質をおさえるのが重要だと思っているのにね。変なの。

もっとおかしいのは、形式検証だ。テストもレビューもインスペクションも、メリットとデメリットが述べられている。それは当然だ。どんな技術もメリットとデメリットがあるのだから。しかし形式検証はメリットしか述べられておらず、しかもテストは膨大になるが形式検証では大丈夫、というようなトーンで書いてある。ちょっと待って欲しい。モデル検査が悩んでいるのは、状態爆発問題であろう。これって、テストが膨大になるのとどう違うのか?テストは項目数が爆発しないように様々な仮定を置いたり割り切りを行って間引きや剪定を行うが、モデル検査だって様々な工夫をして状態爆発を防いでいる(らしい)。同じじゃないか。こんな欺瞞的で現場を知らない書き方になっているのは、日本では機能安全の推進者の一部が、形式検証の推進者だからだろう。誰が何を書いてもいいが、技術的にフェアな、もっと言えば現場のエンジニアをミスリードしない書き方をして欲しい。

安全性や機能安全は、消費者にとって、そして日本の産業にとって非常に大事な概念である。ソフトウェア産業にとっても、極めて重要な概念になっていくだろう。だからこそ、ハゲタカの喰い物にされてほしくないと思う。この冊子が書かれてから1年近く経つので、この部会の内部ではもっとまともな議論ができているであろうことを祈りたい。

0 件のコメント: