2 組込みソフト
 エッジ系派生開発 
+ 特殊技術?

絞り込んだ観点から

graph_name Pd 製品  プロダクト特性  Eg  エッジ系仕事  Pd->Eg It  情報系仕事  Pd->It Org  組織形態 チーム  プロダクト  S  チーム 小規模  Org->S M  プロジェクト 中規模  Org->M L  大規模プロジェクト  Org->L Eg->Org It->Org

  • ◎ エッジ系;デバイス制御の組込みソフト
    • 例 エンジン,エアバッグ,エアコン
  • 情報系:情報をハンドリングするソフト
    • 例 ETC,ナビ,ADAS

車載組込ソフト:レガシー部分

  • 組込みソフトにも種類があって
  • 歴史的なエッジ系
    • デバイス制御が中心で
    • デバイス自身の特性変化は小
    • エンジン,エアコン,ワイパー
  • このレガシー分野に着目
    • 組込み開発文化なので理解を!

異なる特性と構造

組込みシステム Vs. 一般的なITとの差異

graph_name PC 組込みシステム  周期タスク   イベントタスク  単一メモリー空間 シングルタスク RTOS 個別ECU + I/O EB  ITシステム  スレッド スレッド プロセス(POSIX) 仮想空間  マルチタスク   ミドルソフト  OS win Mac Linux マルチコアHW PC->EB

このスライドの目的

  • 組込みソフト/エッジ系:特殊な構造
    • 派生開発の課題その発生源
  • 特殊性の理解.
  • 特殊性とは: ハードリアルタイム.
    • そのための制御構造
    • タスクの制約
  • 課題:派生開発の品質確保

2.1 違いの理解

  • 現代のソフトウェア工学
    • 汎用OS配下で有効な技術
    • 組込み開発では「活用できない」
      • 制限が多い,真逆もある
  • 異質の本質を理解しないと
    • 軽薄なトレンドで大やけど!!

目的の差

  • 組込みシステムの目的
    • 制御対象(エンジンやエアバッグ)
    • 対象製品の制御に特化した確実な処理
  • 汎用システムの目的
    • 資源を合理的に使う
    • マルチ環境,マルチ処理
    • PCからクラウドまで(互換も)

特性とは何の差?

  • ハードリアルタイム処理
    • 制御の処理は,マイクロ秒単位で
    • 確定処理(変動しない
  • 図の単位はミリ秒,上から順に
  1. jitter: タスクが立ち上がるまでの変動
      タスクの時間変動もjitter と呼ぶことがある
  2. Task:周期タスクの処理時間.
      この区間内に複数のタスクが実行される
  • 余裕時間:打ち切り時間までの余裕
      この時間でイベントタスクが実行される
      40%程度が必要とされる

制約条件

  • ハードリアルタイム制御
    • トリッキーな制御構造:その理解
    • 動作時間の関係で依存する
      • データやタスクの依存関係ではない
  • 制御対象からの応答依存
    • エンジンなど制御対象の反応
    • 異常時を含め多様な応答

2.2 派生開発の品質確保

graph_name a1  開発活動・規範  a2  レビュー  テスト  a1->a2 a3  正しい活動結果  a2->a3 A3  システム特性   維持 a2->A3 A1  派生の影響  A1->a2

  • 伝統的/経験的手順や規範がある
  • 派生による影響防止が中心
  • 新規機能追加には使えない!!

派生開発の範囲

  • 一般的な用語:派生開発
    • AI君に聞くと広い意味
  • 車載組込みソフトの派生開発
    • T社 変更点管理のソフト版
    • 顧客先:OEM 生産部門(開発部門外)
  • 目的:現行部品のカイゼン
    • 車種などへの「すり合わせ」

派生開発の前提

  • 製品特性(信頼性,安全性,挙動)
    • デグレードが無いこと
  • そのため,徹底したレビュー
    • 派生がコア部分に影響しない設計
    • 実装のミスの防止
  • レビューが中心
    • 理由:テストが困難

派生開発:テスト

graph LR

R[顧客<br>要件]
I[マイコン<br>情報]
M[BSW他<br>現成果物]
O[顧客への<br>成果物]
P1([派生要求<br>設計])
P2([派生<br>設計])
P3([派生<br>実装])
P4([派生<br>テスト])
P5([マイコン<br>分析])
C1([要求<br>レビュー])
C2([設計<br>レビュー])
C3([実装<br>レビュー])
C4([テスト<br>レビュー])


I --> P5 --> P2
P1 -.- C1
P2 -.- C2 
P3 -.- C3
P4 -.- C4
R --> P1 --> P2 --> P3 --> P4 --> O

M -.->|調査| P1
M -.->|流用| P2
M -.->|流用| P3
M -.->|流用| P4

  • テキスト4章にまとめている
  • 次に要点を説明
  • 項目番号はテキストの番号
  • 項目で検討するのは相互影響の確認
    • テスト/レビューの要件は?

(4.1) 処理の単位:タスク

  • 修正したコードがどのタスクに?
  • タスクの生成は,初期化時に
  • 実行キューに登録される
  • 単体テストとは?

(4.2) タスクの実行方式:周期タスク

  • タスクの種類
    • 高優先度周期タスク
    • 低優先度周期タスク
    • イベントタスク
  • 派生:種類の確定
  • 周期タスク:周期テスト

次は,