IPA 組込み開発・安全設計 — 頻出論点と過去問

頻出論点

1. この分野は何か

組込み機器の開発では、パソコンの上で書いたプログラムを、別の基板に載ったCPUの上で動かして確かめます。ソフトウェアの道具と信号を測る機器を使い分けることに加え、製品ごとの作り直しを減らす共通化や、部品が壊れていなくても起きる事故への備えを設計の段階から考えることが、一般の業務システムの開発と違う点です。

2. 実際の出題のされ方

開発に使う道具は、ソフトウェアをまとめた統合環境から、実機の信号を見る測定器まで、役割の違うものがそろっています。応用情報技術者の午前には、統合開発環境(IDE)の説明を選ぶ問題があり、同じ問題が高度試験の午前Iにも出ています。

実機に近い道具の正誤と半導体の分業は、エンベデッドシステムスペシャリストの午前IIの出題範囲です。デバッグ用の機器や測定器の説明のうち正しいものを選ぶ問題と、組込み向けのLinuxを作り上げる枠組みの名前を選ぶ問題があります。自社で設計したLSIの製造をどこに頼むかを選ぶ問題は、システムアーキテクトの午前IIにも出ています。

製品群での再利用と安全の作り込みでは、具体的な開発の場面が設定されます。ソフトウェアプロダクトライン開発について適切な記述を選ぶ問題がエンベデッドシステムスペシャリストに、プラットフォーム開発を使う利点を選ぶ問題がデータベーススペシャリストにあります。状態遷移の問題は、イベントの列を表や図に当てはめ、表の空欄に入る状態名や、決まった終わりの状態に行き着く順序を答えさせる形で、エンベデッドシステムスペシャリストに出ました。同じ区分には、メモリ安全性を考えた事例や、構成要素どうしの思わぬ相互作用に着目する安全性解析の手法を選ぶ問題もあります。

3. 学習のポイント

組込み開発で使う道具と、半導体の設計と製造に関わる会社は、何をどこで作り、だれが何を受け持つかがそれぞれ決まっています。

  • Yocto Project: 載せる機器に合わせて必要な部品だけを選び、自前のLinuxを組み立てるための仕組みと道具をそろえたオープンソースの取り組みです。
  • 設計と製造の分業: 半導体では、工場を持たずに設計に専念する会社と、他社の設計図を受け取って製造だけを請け負う会社が分かれています。後者をファウンドリーと呼びます。

製品群の作り方と安全の作り込みは、何を先に決め、どこで危険を見つけるかで押さえます。

  • ソフトウェアプロダクトライン開発: 機種の多い組込み製品で、どの機種に何を載せるかの計画を先に立て、使い回す部品をあらかじめ整えておき、機種ごとの違いはその組合せと追加部分で作ります。
  • 状態遷移表と状態遷移図: 表は、状態とイベントのすべての組に次の状態を1マスずつ書く形、図は、移り変わる組だけを矢印で示す形です。
  • STAMP/STPA: 事故を、部品の故障の連鎖ではなく、要素どうしの指示や制御のやり取りがうまく働かなくなった結果として捉える考え方(STAMP)と、それを使って危ない状態とその原因を洗い出す解析の手順(STPA)です。壊れた部品が無くても起きる事故を対象にできます。

4. 間違えやすいところ

デバッグ用の道具の説明を選ぶ問題では、ICEについて、ターゲット側のROMに常駐させたプログラムを通してホストから操るとする誤答肢がありました。ROMに常駐するプログラムを使うのはROMモニタの方式で、ICEはCPUの代わりにつないで、動作を外から観測し制御する装置です。

IDEの説明を選ぶ問題では、試作したプログラムを動かすための、ターゲットのCPUを載せた基板を挙げた誤答肢がありました。評価ボードは、作ったプログラムを実際に走らせて確かめるための、実行環境の側の機器です。

ソフトウェアのメモリ安全性を考えた事例を選ぶ問題では、ヒープやスタックの必要量を前もって見積もって空きを確保しておくとする誤答肢がありました。必要な量を見積もるのは、メモリが足りなくなることへの備えです。

プラットフォーム開発の利点を選ぶ問題では、複数の機器に同じ不具合が出たら共通の基盤は調べなくてよいとする誤答肢がありました。共通の基盤こそ、すべての機器で同じように使われているので、同じ不具合の原因の候補になります。

組込み開発・安全設計の理解度チェック

組込み開発・安全設計の過去問一覧

組込み開発・安全設計の用語

組込み・IoTのほかの論点

センサー・アクチュエーター・マイコン制御30問 IoT システム・通信36問