効率的な組み込みシステム設計とソフトウェア開発

組み込みシステムと組み込みソフトウェアは、今や何万種類という製品に搭載されています。組み込みシステムがなければ、これらの製品は正しく動作しません。The Qt CompanyではQtの専門知識と技術を活用し、パワフルな組み込みシステム開発に最適な設計プロセスを構築したのでご紹介します。

本稿のトピック:

組み込みシステムの設計プロセスとは?


組み込みシステムの設計プロセスとは、ある製品に組み込む小型コンピュータシステムの要件をメーカーが定めるプロセスのことです。要件を決定後、そのシステムを構築する最良のアプローチを決定し、正しく動作するかどうかをテストします。

組み込みシステムでは、ハードウェアとソフトウェアが連動します。現在、組み込みシステムはシンプルなものから複雑なものまで数百万という製品に搭載されており、たとえば携帯電話の充電器には、充電が完了したことを携帯電話に通知する組み込みシステムが内蔵されています。最近では自動車も、数十種類もの組み込みシステムを搭載しています。

組み込みシステム・設計プロセス

効果的な組み込みシステム・設計プロセスに欠かすことのできないステップをリストにまとめました。まずは、基本的なニーズを理解するところから始めます。続けて具体的な要件を検討し、OS(オペレーティングシステム)を選び、プロトタイプ作り、組み込み製品作りへと進みます。

組み込みシステム・設計プロセスの基本ステップ

 

1.製品のコンセプトと目的を検討する

組み込み製品のニーズとは、「最終製品にメーカーや顧客が求める動作」と考えることができます。エンジニアはこのニーズを基に、組み込み製品が具体的にどのように動作するか、どのようなメリットをもたらすか、といったブレインストーミングを行います。メーカーや顧客に販売する際の、組み込み製品の価格も重要な検討材料です。

2.全体的な要件を検討する

エンジニアが、意図した通りの動作を製品が行うために必要な要件を決定します。たとえば、「必要な機能」「サイズ、重量、コスト制限」といった点を検討し、製品に搭載するハードウェアも決定します。

3.技術仕様書を作成する

エンジニアが、製品の技術仕様書を作成します。技術仕様書には、製品の機能、環境条件、製造要件などを記載します。

4.製品にユーザーディスプレイが必要かどうかを決定する

組み込み製品によっては、操作方法をユーザーに伝える手段としてシンプルなディスプレイが必要になります。エンジニアは製品の仕様を決定する際に、製品にユーザーディスプレイを付けるかどうかを検討します。また必要に応じ、グラフィカルユーザーインターフェース(GUI)の設計も行います。

5.プロトタイプを作る

この段階まで進んだら、ベーシックなプロトタイプを作ってハードウェアの動作評価を行い、必要なコンポーネントの決定や、コンポーネント同士の連動性について検討します。

6.システムアーキテクチャを設計する

この段階では、エンジニアが製品の基盤となる全体的なアーキテクチャを設計します。たとえば以下のような点を検討します。

  • システムへの電源供給方法
  • 製品のインターネット接続方法
  • OSを組み込むかどうか

7.OS(オペレーティングシステム)を選ぶ
エンジニアが、製品にリアルタイムOSが必要かどうかを決定します。つまり、時間の制約に合わせて(超高速で)入力を処理できるシステムが必要かどうかを検討します。そのようなシステムを求めるなら、製品にとってベストなリアルタイムOSを選ぶことになります。そうでないなら、ベストな非リアルタイムOSを選択します。(組み込み製品用のOSの選び方の詳細を参照してください。)

OS Comparison

 
8.プロセッサと周辺機器を選ぶ
エンジニアが、製品にベストなマイクロプロセッサまたはマイクロコントローラのほか、コンバータやドライバといった必要な周辺機器を選びます。

9.開発プラットフォームを選ぶ

製品の開発プラットフォームを選択するときは、エンジニアはプログラム言語と開発ツールも選択する必要があります。

Language Comparison

10.最終的なプロトタイプを作る

システムアーキテクチャの設計後、エンジニアが最終的なプロトタイプを作る場合もあります。このプロセスを経ることで、アーキテクチャ設計が最終製品で正しく動作するかどうかを確認できます。

11.アプリケーションのコードを書き、最適化、デバッグ、テストを行う

ようやく、エンジニアが組み込み製品のコードを書く段階です。続けてエンジニアは、コードのテストとデバッグを行います。(この段階の詳細は、本稿の「組み込みソフトウェアの開発プロセス」を参照してください。)

12.ホストシステムでソフトウェアを検証する

エンジニアがエミュレータを使い、システムでソフトウェアコードが正しく動作するかどうかを検証します。

13.ターゲットシステムでソフトウェアを検証する

エミュレータでソフトウェアが正しく動作することが確認できたら、ターゲットシステム(製品を組み込む自動車や冷蔵庫など)で正しく動作するかどうかを検証します。

14.継続的な保守とアップデートを行う

製品が正しく動作しても、設計プロセスは終了ではありません。メーカーとエンジニアは製品がどのように動作しているかを継続的にモニタリングし、適宜調整を加え、問題解決のアップデートを行います。

組み込み製品の構築について詳しく学ぶ:The Qt Companyのガイドをダウンロードする。

組み込みシステム設計のプロジェクト管理

組み込みシステム設計のプロジェクトに携わるチームは、アジャイル開発を好む傾向があり、より伝統的なウォーターフォールなどのプロジェクト管理アプローチはあまり使いません。アジャイル開発なら、チームメンバーはシステムやソフトウェアの開発プロセスを進めながら、継続的な調整と改善を実行することが可能です。

システム設計のプロセスを監督し、製品開発スケジュールに沿って確実に作業を進捗させるのはプロジェクトマネジャーの仕事です。組み込み製品の多くは、ターゲットシステムの開発に合わせ、厳しいスケジュールに従って完成させなければなりません。

組み込みソフトウェアの開発プロセスとは?

組み込みソフトウェアの開発プロセスは、組み込みシステムの設計プロセスと同様です。エンジニアはまず要件を定め、設計から妥当性確認の各ステップを踏んでいきます。

組み込みソフトウェアの開発プロセス

  1.  顧客から仕様を受け取る
  2. システムの要件を検討する
  3. システム設計を検討する
  4. ソフトウェアの要件を検討する
  5. ソフトウェア設計の基本要素を決める
  6. ソフトウェア設計の重要要素を決める
  7. 検証/妥当性確認プロセスの計画を立てる
  8. 検証と妥当性確認を行う
  9. 試験前審査を行う
  10. 生産前審査を行う
  11. 機能的構成監査を行う
  12. 物理的構成監査を行う
  13. ソフトウェアの生産開始を承認する
  14. 生産試験システムをリリースする
  15. 製品をローンチする
  16. フル生産を開始する

組み込みソフトウェア開発ライフサイクル

組み込みソフトウェア開発ライフサイクルは、すべてのソフトウェアの開発ライフサイクルと同様で、プランニング、要件の把握、開発、テストといったフェーズで構成されます。

組み込みソフトウェア開発ライフサイクルの主なフェーズ:

  • 要件の確認
  • プランニング
  • 設計
  • プロトタイピング
  • 開発
  • テスト
  • デプロイメント
  • 運用と保守
  • 修正/改善
  • 保守

The Embedded Software Development Life Cycle

 

組み込みソフトウェア開発ライフサイクルのプレゼンテーション用パワーポイントをダウンロードする。

組み込み製品開発ライフサイクル

エンジニアは、組み込み製品開発のライフサイクルを理解した上で、組み込み製品とシステムを効率的に構築/開発しなければなりません。ライフサイクルに従ってプロセスを進めることで、製品の高品質を維持し、不具合などを最小限に抑え、投資利益率(ROI)を最大化することができます。

The Embedded Product Development Life Cycle

組み込み製品開発ライフサイクルの主なフェーズ:

 

  • ニーズの把握:新製品やリエンジニアリング、既存製品のアップデートの場合に必要なステップです。
  • コンセプトの策定:エンジニアが費用対効果分析を行い、プロジェクト管理やリスク管理、その他のプランニングステップに着手します。
  • 分析:エンジニアが製品のビジネスニーズを分析し、製品の開発要件を決定します。
  • 設計:エンジニアが予備的な設計文書を作成し、製品と設計の全体的なアーキテクチャを決定します。
  • 開発とテスト:エンジニアがハードウェアとソフトウェアで構成される製品を作り、製品テストを行って動作を確認し、正しく動作するように適宜変更を加えます。
  • デプロイメント:製品メーカーが組み込み製品をリリースします。
  • サポート:メーカーとエンジニアが、継続的に製品サポートを行います。製品が正しく動作しているかをモニタリングし、必要に応じて直ちに修正を加えます。
  • アップグレード:メーカーとエンジニアが、より高性能な製品の新バージョンの開発を継続的に行います。
  • 販売終了:メーカーが、陳腐化した製品の販売を終了します。技術の進化やユーザーのニーズの変化に伴って必要になるステップです。

組み込みソフトウェア開発ライフサイクルのプレゼンテーション用パワーポイントをダウンロードする。

開発フレームワークは、組み込みシステム/ソフトウェアの開発を合理化します

組み込みシステム/ソフトウェア開発の改善方法を探しているエンジニアの皆様には、開発フレームワークの導入を検討することをお勧めします。開発フレームワークはプロセスを合理化して、最終製品をより短期間で完成させ、より大きなROIを生むことを可能にします。

 フォレスター・リサーチ社の最近の調査では、組み込みソフトウェア開発フレームワークがROIを2倍以上に改善することが明らかになっています。開発フレームワークの導入を検討している方は、IoTや組み込みシステムの開発に最適なテクノロジーを選ぶためのQtのガイドをぜひお読みください。

Qtは、組み込みシステム開発プロセスの効率と効果を改善します

IoTや組み込み製品の開発に取り掛かる際、情報過多に悩まされる方は少なくありません。この悩みを解決するために、私たちは最もよく利用されているテクノロジーのリストを作成しました。リスト作成に当たっては、どの評価基準が最も重要かをよく見極めた上で、比較しやすいカテゴリーに分類して個々の製品の評価を行いました。この「レシピ」が、皆さんの次の製品作りの労力とリスクの軽減につながれば幸いです。

Qtを使って組み込みシステムを開発し、ROIを改善するための詳細をこちらでご確認ください。

また、商用ライセンスのトライアルやオープンソースを利用したい方は、ぜひQtの無料トライアルを開始してみてください!また、Qtについてご質問あり場合は、お気軽にお問い合わせください。