前回は,モデル化で要求を明確にするようになった,1990年代の「動機→モデル化→頭脳→C言語表現→機械語の時代」における,コンピュータと組み込みソフトウエアの関係について述べた。今回は,その先の「動機→モデル化→機械語の時代」について見てみる。(連載の目次はこちら

 21世紀になると,汎用コンピュータとソフトウエアの世界では,プログラミング言語の改良,コンポーネント化による大規模ソフトウエアの再利用,ネットワーク上での分散処理など新しい技術が次々と登場した。

 一方,1990年代のCASEツール利用の時代に,仕様モデルと最終プログラムの実体の乖離,時間制約表現の不足といった組み込みソフトウエア開発の問題がいろいろと明らかになっていた。これらの問題を解決する前に災難はやって来た。つまり大規模組み込みソフトウエア開発の時代が始まってしまい,問題が顕著になったのである。筆者が現在も使用している携帯電話機は,その時代の製品であるが,ユーザーのデータを破壊するという致命的なバグが分かっている。品質を誇った日本の通信システムは大きな問題に直面した。

 このころには,ソフトウエア開発組織の開発プロセスの改善指針といえるCMM(capability maturity model)の影響も大きくて,技術の側面よりも管理の側面が重視された。つまり,規模は大きいが確実に動作する機器を,変換の技術そのものを進化・発展させるよりも従来の方法を変えずに開発することに注目が集まった。そして,プロセス改善やさまざまなガイドライン制定,教育の実施,レビューとMISRA-C(C言語によるソフトウエア開発のガイドライン)に基づく静的テストによる品質向上,構成管理などの間接技術が適用され成果を上げた。

 変換技術としては,組み込みJavaなども登場したが,利用業種は限定されていて今のところ一部の機器への搭載にとどまっている。

 一方,組み込みシステムの開発要求は増大し続けている。既に自動車産業は,本社とエンジニアリング拠点付近だけでは,技術者の採用難からソフトウエア開発の継続が難しいと判断しているようだ。このために,日本国内に新たな開発拠点を設ける段階に入っている。当面は人手の増加で賄うことになるのだろうが,並行して生産性の向上を狙わないことには,将来立ち行かなくなることは明白である。

 この突破口には,幾つかの候補がある。それは,UMLとメタモデルに基づくMDD(model driven development)の推進,数理的手法(形式的手法)を利用したプログラムの検証・生成,組み込み応用分野の個別ソリューションの展開である注5)。これらは,相互に排他的なものではないし,一つですべての問題を解決できるものでもない。よって,産業分野,企業の事情に応じて上手に組み合わせることが実を得る条件になりそうである。以下にその概略を示す。

注5)MDDと類似の手法に,Microsoft社のDSL(domain specific language)がある