
組込みシステムは、複雑化・高機能化の一途をたどっています。そのため、組込みソフトウェア開発の現場も人数が増え、オフショアを利用するようになるなど、かつての少数精鋭とは異なるプロジェクト体制を取るようになりました。システムの開発から、デバッグ、インテグレーション、検証テストまで。企業は、複雑化する開発プロセスを効率化するという困難な課題に直面しています。ニーズは、個々の開発作業を見直すのではなく、開発をプロセスとしてとらえ、プロセス全体を効率化すること。「Wind River Simics」が、その答えです。

組込みシステムは、電子制御を必要とするすべての製品に用いられています。身近なテレビ、カメラ、プリンタはもとより、いまや「動くITデバイス」と呼ばれるようになった自動車、産業用では半導体制御装置やロボット、医療用機器、ネットワーク機器/サーバなど、すべてに組込みシステムが搭載されています。
これらの製品が付加価値としてアピールする機能の多くは、組込みシステムによって実現されています。そして、こうした機器が多機能化するということは、組込みシステムが高度化・複雑化することを意味します。
かつては、ターゲットボードごとに専門知識やスキルのあるエンジニアが個別部分を開発し、優秀な専任者が作り込んだ部品を統合する手法がとられてきました。しかし現在、ボードを局所的に最適化できても複数のボードから構成されるシステム全体を最適化することはできなくなりました。従来のやり方では、総合テスト(システム全体を組み上げてから行う全体チェック)段階で予期せぬ不具合が生じるケースが多く、原因の特定と解消に膨大な時間がかかることになってしまったのです。
オフショアも進みました。中国やインドに支社を構えたり、現地業者に外注したりして、主にテスト工程を任せる企業が増えたのです。確かに国内でやるより人的なコストは安くつくのですが、問題を迅速かつ正確に共有できないという問題を抱えることになりました。
整理しましょう。複雑化・大規模化した組込みソフトウェア開発では、システムのデバッグ、インテグレーション、検証テストに莫大な時間とそれに伴うコストがかかり、それを経営課題と認識している企業も増えています。しかし、これまではそれを解決するソリューションがありませんでした。
そこで、ウインドリバーはこれらの課題を抜本的に解決する製品として、Wind River Simics(以下、Simics)の提供を開始しました。すでに、日本でも先進的なユーザが採用を始め、効果を実感しています。これから、組込みソフトウェア開発を最適化するSimicsの概要や具体的な機能、Simicsを活用するメリットについて見ていきましょう。
Simicsは、さまざまなターゲットを持つ大規模組込みシステム開発に最適な、フルシステムシミュレータです。ターゲットを仮想プラットフォーム上に再現し、実ターゲットと同じバイナリコードを実行し、システムの動作を確認することが可能です。すべてのプロジェクトメンバーが、全く同じ仮想プラットフォームを利用できるため、必要な情報を迅速に共有でき、工数や手戻りはなくなります。一般のシミュレータは単一のボードの動きを確かめるために利用しますが、システム全体をシミュレートできるのがSimicsと位置づければわかりやすいでしょう。

システム全体をシミュレートできるため、Simicsは総合テスト段階のデバッグに絶大な威力を発揮します。その代表的なデバッグ機能である「逆実行」は、最大の魅力です。逆実行をひとことで言えば、時間軸をさかのぼってステップごとにシステムの動作確認を可能にする機能です。不具合が発生すると、逆実行を行うことで、過去のある時点で起きた問題を再現し、問題のあった部分を容易に特定できます。
一般に、不具合が起きるとエンジニアはもう一度同じプロセスを実行し、プログラムの中にログ出力コードを埋め込むなどして、問題の特定に当たります。その作業にかかる時間こそ、デバッグ時間の大半を占めているのです。中には、エラーが起きたのと同じコードを実行しても、二度とエラーが起こらないこともあります。多くの場合、プロジェクトで「再現待ち」というステータスで共有されるのですが、開発期間は決まっています。永遠に再現しなければ、バグがどこにあるのかわからないまま、製品が出荷されてしまいます。逆実行を使えば、こうした悩みは解消します。コードを実行し直す必要はありません。すでに実行したコードを、逆実行で精査すれば解決します。再現待ちもなくなります。逆実行でコードを実行した流れをさかのぼれば、エラーが起きた場所を明快に特定できるためです。

Simicsは、物理的に離れた開発チーム間のコラボレーションも促進します。そのために便利なのが、デバッグ機能の「チェックポイント」です。これは、仮想プラットフォーム上に再現したシステム全体の状態を、あるタイミングでファイルとして保存する機能です。
グローバルで行う分散開発を考えてみましょう。一般の開発では、システムを拠点ごとに組み立てています。このため、たとえば日本のチームがシステムの不具合を発見したケースを共有しようとしても、それぞれが別のシステムを使っているために、うまく意思疎通ができないことが起こります。これは、言語や文化の違いが原因なのではなく、使っているシステムが全く同じであると確証を持って言えないことが原因です。型番は全く同じでも、周りで実行しているテストの状況などで、結果が変わってくる可能性もあるためです。Simicsは仮想環境を提供するため、全く同じシステムをすべてのプロジェクトメンバーがグローバルで使用しています。このため、チェックポイントを使ってシステムの実行状態を保存したファイルを共有して海外のプロジェクトメンバーと共有すれば、全く同じ環境で同じ現象を体感することができるのです。
Simicsは、物理的なハードウェアを使って実行することが難しいシナリオテストや異常系試験を実施するための「故障注入」の機能も備えています。これは、ハードウェアの不具合によるソフトウェア障害のテストを実施できず、回帰テストや負荷テストに時間的・物理的な制約のある開発現場で有効です。これまで物理的にハードウェアを破壊しないとシステム障害を再現できなかったテストも仮想的に行えるため、コストを大幅に削減できます。具体的には、「データ転送を遅延させる」「メモリエラーを発生させる」「サブシステムを停止させる」「コアのクロックを変更する」などの故障状態をシミュレートすることが可能。これにより、機能安全などの要件を満たせます。
また、Simicsはアーキテクチャ設計段階において実行可能な仕様を検討するためのツールとしても活用できます。Simicsでは、デバイスやターゲットボードなどのハードウェアをPC上で忠実に再現しながら、「OSを何にするか」「シングルコアにするか、デュアルコアにするか」「SMPにするのかAMPにするのか」、「メモリ規模をどうするか」などを検討し、最適なアーキテクチャを選択できます。
検討段階でのシミュレーションが可能になるため、組込みソフトウェアエンジニアが、ハードウェアの設計段階からプロジェクトにコミットできるようになります。ハードウェアエンジニアとソフトウェアエンジニアが交流し、お互いの意見を出し合って優れた製品開発につながることが期待できます。
Simicsはこれまでにないアプローチで、組込みシステム開発をドラスティックに効率化できるツールと言うことができます。Simicsを利用すれば、組込みソフトウェア開発期間を大幅に短縮でき、テストの品質は上がります。再現待ちの不具合はなくなり、同じ期間で実行できるテストの数を増やすことができるでしょう。組込みシステムは、よりよい製品を作り上げるためのコアとして、ますますその存在感を高めています。Simicsによって最適化された開発プロセスは、製品力の向上でライバルとの競争に勝つための切り札になってくれるはずです。
製品情報、デモ等はこちら