II-24-4. 組み込みシステム開発における各種の管理

ハードウェアやソフトウェア個別の品質特性や開発における品質維持など組み込みシステムの品質管理や、特許・ライセンス・機密情報などの管理、開発したシステムの変更管理など、組み込みシステム開発で必要となる各種の管理について説明する。

【学習の要点】

* 組み込みシステムには非常に高い品質が求められる。これを担保するための最も重要な仕組みがテストである。

* 自社の特許を技術ライセンスと提供するビジネスも盛んに行われている。

* 機器の高性能化に伴い、開発規模の拡大よる複数人による開発、または継続的な開発と改良、品質保証のためには、ハードウェア、ソフトウェア共に、構成管理をおこなうことが必要である。

図II-24-4. 組み込みにおけるテストと構成管理

 

【解説】

1) 品質管理

* 組み込みシステムは、一度稼働させた製品は止まることなく数年または数十年に渡って誤動作なく稼働するという、非常に高い品質が求められている。そのために、必要な品質管理が大変重要である。品質管理においては、最も重要なのはテストである。

* ハードウェアにおいては、設計段階において行われる検証と、製造段階で行われるテストに分けられる。

- 設計時検証:例えばSoCにおいて設計が期待通りに行われているかどうかをチェックするためには、シミュレーションによる検証、エミュレーションによる検証、形式的な検証などが必要である。

- 製造時テスト:ハードウェア設計が成功したとしても、製造過程で欠陥があると正常にハードウェアが動作しない。この製造不良を発見するものがテストである。製造過程におけるテストは、時間の関係上、クリティカルな入出力値をみるものとなるのが通常である。

* ソフトウェアの品質基準は大きく分けてベリフィケーションとバリデーションという二つの考え方がある。ベリフィケーションはソフトウェアプロセスにおいて、各工程が上の工程の品質基準をみたしているかどうかを問題にし、バリデーションはソフトウェアプロセスにおいて生成されるプロダクトが最終的に顧客要求を満たしているかどうかを問題にする。

* ソフトウェアのテストにおいては、ソフトウェアプロセスの段階ごとに以下のテスト種類に分けることができる。

- 単体テスト・結合テスト:前者は関数やモジュール一つごとのテストであり、後者は関数やモジュールを呼び出して行われるテストである。しばしば、スタブやドライバというモックオブジェクトを利用して、テストを行うことが多い。

- 機能テスト:すべての機能について網羅的に入力値、出力値の組合せが正常かどうかを検証するテスト。

- システムテスト:システムに負荷をかけたり、動作環境や設定を意図的に変更したり、異常な状況という特殊環境を設定して行われる、品質のロバスト性を検証するテスト。

- 回帰テスト:ソフトウェアの変更に伴い、コードの先祖返りやデグレードを起こさないように行われるテスト。

2) 特許・ライセンス・機密情報などの管理

* 競争優位性の保護から機密情報の管理が重要なことは言うまでもない。

* 特許を取得しその技術をライセンス提供するビジネスも盛んである。二社間でそれぞれの技術を交換するクロスライセンスもよく行われている。

3) 構成管理

* ハードウェア・ソフトウェアに関わらず、なんらかのソースコードを複数人で開発する場合や、継続的な上位バージョンの開発には、ソースコードの版管理が重要になる。また、開発に利用するハードウェア要素や構成、ソフトウェア構成などのバージョン、製品仕様等を管理することも必要である。これらを構成管理と言い、ハードウェア要素、ソフトウェア要素の変更に対して、整合性を保つようにコントロールし、常に変更を追跡しなければならない。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。