組み込みシステムと組み込みソフトウェアは、今や何万種類という製品に搭載されています。組み込みシステムがなければ、これらの製品は正しく動作しません。The Qt CompanyではQtの専門知識と技術を活用し、パワフルな組み込みシステム開発に最適な設計プロセスを構築したのでご紹介します。
本稿のトピック:
組み込みシステムの設計プロセスとは、ある製品に組み込む小型コンピュータシステムの要件をメーカーが定めるプロセスのことです。要件を決定後、そのシステムを構築する最良のアプローチを決定し、正しく動作するかどうかをテストします。
組み込みシステムでは、ハードウェアとソフトウェアが連動します。現在、組み込みシステムはシンプルなものから複雑なものまで数百万という製品に搭載されており、たとえば携帯電話の充電器には、充電が完了したことを携帯電話に通知する組み込みシステムが内蔵されています。最近では自動車も、数十種類もの組み込みシステムを搭載しています。
効果的な組み込みシステム・設計プロセスに欠かすことのできないステップをリストにまとめました。まずは、基本的なニーズを理解するところから始めます。続けて具体的な要件を検討し、OS(オペレーティングシステム)を選び、プロトタイプ作り、組み込み製品作りへと進みます。
1.製品のコンセプトと目的を検討する
組み込み製品のニーズとは、「最終製品にメーカーや顧客が求める動作」と考えることができます。エンジニアはこのニーズを基に、組み込み製品が具体的にどのように動作するか、どのようなメリットをもたらすか、といったブレインストーミングを行います。メーカーや顧客に販売する際の、組み込み製品の価格も重要な検討材料です。
2.全体的な要件を検討するエンジニアが、意図した通りの動作を製品が行うために必要な要件を決定します。たとえば、「必要な機能」「サイズ、重量、コスト制限」といった点を検討し、製品に搭載するハードウェアも決定します。
3.技術仕様書を作成するエンジニアが、製品の技術仕様書を作成します。技術仕様書には、製品の機能、環境条件、製造要件などを記載します。
4.製品にユーザーディスプレイが必要かどうかを決定する組み込み製品によっては、操作方法をユーザーに伝える手段としてシンプルなディスプレイが必要になります。エンジニアは製品の仕様を決定する際に、製品にユーザーディスプレイを付けるかどうかを検討します。また必要に応じ、グラフィカルユーザーインターフェース(GUI)の設計も行います。
5.プロトタイプを作るこの段階まで進んだら、ベーシックなプロトタイプを作ってハードウェアの動作評価を行い、必要なコンポーネントの決定や、コンポーネント同士の連動性について検討します。
6.システムアーキテクチャを設計するこの段階では、エンジニアが製品の基盤となる全体的なアーキテクチャを設計します。たとえば以下のような点を検討します。
7.OS(オペレーティングシステム)を選ぶ
エンジニアが、製品にリアルタイムOSが必要かどうかを決定します。つまり、時間の制約に合わせて(超高速で)入力を処理できるシステムが必要かどうかを検討します。そのようなシステムを求めるなら、製品にとってベストなリアルタイムOSを選ぶことになります。そうでないなら、ベストな非リアルタイムOSを選択します。(組み込み製品用のOSの選び方の詳細を参照してください。)
8.プロセッサと周辺機器を選ぶ
エンジニアが、製品にベストなマイクロプロセッサまたはマイクロコントローラのほか、コンバータやドライバといった必要な周辺機器を選びます。
製品の開発プラットフォームを選択するときは、エンジニアはプログラム言語と開発ツールも選択する必要があります。
システムアーキテクチャの設計後、エンジニアが最終的なプロトタイプを作る場合もあります。このプロセスを経ることで、アーキテクチャ設計が最終製品で正しく動作するかどうかを確認できます。
11.アプリケーションのコードを書き、最適化、デバッグ、テストを行うようやく、エンジニアが組み込み製品のコードを書く段階です。続けてエンジニアは、コードのテストとデバッグを行います。(この段階の詳細は、本稿の「組み込みソフトウェアの開発プロセス」を参照してください。)
12.ホストシステムでソフトウェアを検証するエンジニアがエミュレータを使い、システムでソフトウェアコードが正しく動作するかどうかを検証します。
13.ターゲットシステムでソフトウェアを検証するエミュレータでソフトウェアが正しく動作することが確認できたら、ターゲットシステム(製品を組み込む自動車や冷蔵庫など)で正しく動作するかどうかを検証します。
14.継続的な保守とアップデートを行う製品が正しく動作しても、設計プロセスは終了ではありません。メーカーとエンジニアは製品がどのように動作しているかを継続的にモニタリングし、適宜調整を加え、問題解決のアップデートを行います。
組み込み製品の構築について詳しく学ぶ:The Qt Companyのガイドをダウンロードする。
組み込みシステム設計のプロジェクトに携わるチームは、アジャイル開発を好む傾向があり、より伝統的なウォーターフォールなどのプロジェクト管理アプローチはあまり使いません。アジャイル開発なら、チームメンバーはシステムやソフトウェアの開発プロセスを進めながら、継続的な調整と改善を実行することが可能です。
システム設計のプロセスを監督し、製品開発スケジュールに沿って確実に作業を進捗させるのはプロジェクトマネジャーの仕事です。組み込み製品の多くは、ターゲットシステムの開発に合わせ、厳しいスケジュールに従って完成させなければなりません。
組み込みソフトウェアの開発プロセスは、組み込みシステムの設計プロセスと同様です。エンジニアはまず要件を定め、設計から妥当性確認の各ステップを踏んでいきます。
組み込みソフトウェア開発ライフサイクルは、すべてのソフトウェアの開発ライフサイクルと同様で、プランニング、要件の把握、開発、テストといったフェーズで構成されます。
組み込みソフトウェア開発ライフサイクルのプレゼンテーション用パワーポイントをダウンロードする。
エンジニアは、組み込み製品開発のライフサイクルを理解した上で、組み込み製品とシステムを効率的に構築/開発しなければなりません。ライフサイクルに従ってプロセスを進めることで、製品の高品質を維持し、不具合などを最小限に抑え、投資利益率(ROI)を最大化することができます。
組み込みソフトウェア開発ライフサイクルのプレゼンテーション用パワーポイントをダウンロードする。
組み込みシステム/ソフトウェア開発の改善方法を探しているエンジニアの皆様には、開発フレームワークの導入を検討することをお勧めします。開発フレームワークはプロセスを合理化して、最終製品をより短期間で完成させ、より大きなROIを生むことを可能にします。
フォレスター・リサーチ社の最近の調査では、組み込みソフトウェア開発フレームワークがROIを2倍以上に改善することが明らかになっています。開発フレームワークの導入を検討している方は、IoTや組み込みシステムの開発に最適なテクノロジーを選ぶためのQtのガイドをぜひお読みください。
IoTや組み込み製品の開発に取り掛かる際、情報過多に悩まされる方は少なくありません。この悩みを解決するために、私たちは最もよく利用されているテクノロジーのリストを作成しました。リスト作成に当たっては、どの評価基準が最も重要かをよく見極めた上で、比較しやすいカテゴリーに分類して個々の製品の評価を行いました。この「レシピ」が、皆さんの次の製品作りの労力とリスクの軽減につながれば幸いです。
Qtを使って組み込みシステムを開発し、ROIを改善するための詳細をこちらでご確認ください。
また、商用ライセンスのトライアルやオープンソースを利用したい方は、ぜひQtの無料トライアルを開始してみてください!また、Qtについてご質問あり場合は、お気軽にお問い合わせください。