D-CaseとSysMLによるISO26262準拠デザイン実験

D-Case Driven Development with SysMLの試み
日本アイ・ビー・エム株式会社 グローバル・ビジネス・サービス
豊田 学
目次
1. はじめに
組込みシステム開発における問題
2. 問題を解決する開発手法
D-Case Driven Development with SysML
3. 具体例
ISO26262に準拠した車載システムへの適用
2
はじめに
組込みシステム開発における問題
3
組込みシステム開発における問題
開発の現状 (*1)
 ソースコードをベースとして開発を行っている
 開発スケジュールに間に合わせ、開発コストを削減するため、
上流工程の仕様書が作成されない、または更新されない
課題
上流工程の正確な仕様書がないため、システムがディペンダブルで
あることの証跡が残っていない
要望獲得
システム
システム
要望
要望
要件の実現の可否
要件定義
要件
要件
テスト結果
テスト結果
システム設計
システム検証
テスト結果
テスト結果
設計仕様
設計仕様
証跡が残っていない
4
S/W, H/W 開発
ソースコード
ソースコード
(*1)参考資料: A Development Method Proposal for Embedded Software Based on Model-Based Development,
with Result Feedback through Issue Measurements of Derivational Development, ICEUC2012
解決のアプローチ
~ D-Case Driven Development with SysML手法
D-CaseとSysMLモデルとの一貫した連携により、開発の上流工程
から下流工程に至るまで、ディペンダブルなシステムを実現する
D-Case
1.ディペンダビリティを
満足するシステム
要求を導出する
3.検証結果がディペンダ
ビリティを満足することを
明示する
要望獲得
システム
システム
要望
要望
要件の実現の可否
要件定義
要件
要件
テスト結果
テスト結果
システム設計
システム検証
テスト結果
テスト結果
設計仕様
設計仕様
S/W, H/W 開発
2.システム要求を正確
に反映して設計仕様
を導出する
5
ソースコード
ソースコード
問題を解決する開発手法
D-Case Driven Development with SysML
6
D-Caseによる課題の解決
D-Case Driven Development with SysML手法
1. D-Caseの議論分解によるディペンダビリティを満足する要求の導出
2. D-Case上での設計仕様の関連付けによる正確な設計仕様の策定
3. D-Case上での証跡追加による検証結果の確認
D-Case
SysML
uc [パッケージ] Design [UC_CC]
CC
CC起動
車速の監視
CC停止
<<include>>
目標車速の設定
<<include>>
<<include>>
<<include>>
<<include>>
<<include>>
目標車速の加速
ドライバ
車速制御
<<include>>
<<include>>
目標車速の減速
req[パ
ッ
ケ
ー
ジ
]Design[REQ_CC]
CC動作状況の監視
<<Requirement>>
CC
CC一時休止
<<include>>
ID=REQ_01<<include>>
車
両
は
運
転
者
を
支
援
す
る
走
行
制
御
機
能
を
搭
載
す
る
議論分解
システム
要求
PCS
設計
仕様
<<Requirement>>
CC起
動
(
Cruise)
ID=REQ_02
関連付け
CC緊急停止
<<derive>>
<<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>>
<<derive>>
<<Requirement>>
<<Require<
me<nd
t>e>rive>>
<<Requirement>>
<<Requirement>>
<<Requirement>>
<<Requirement>>
<<Requirement>>
<<Requirement>>
<<Requirement>>
標
車
速
の
減
速
(
Decel) 目
標
車
速
の
加
速
(
Accel
目
標
車
速
の
設
定
(
Set) 目
CC復
帰
CC一
時
休
止
CC停
止
(
Cruise) CC停
止
(
PCS)
加
速
度
の
抑
制
制
御 車
速
の
監
視
ID=REQ_04
ID=REQ_03
ID=REQ_05
ID=REQ_07
ID=REQ_06
ID=REQ_08
ID=REQ_21
アクセル
<<Block>>
<<Block>>
ブレーキ
CCコントローラ
Values
Values
<<derive>>
<<derive>> <<der<i<vdee>r>i<v<ed>e>rive>> <<derive<><>d<e<rdi<ev<redi>ev>rei>v>e>>
<<deriv>>
Values
<<Block>>
車速センサー
電子制御スロットル
<<deValues
rive>>
<<derive>><<d<e<rdievrei>v>e>><<derive>>
<<Requirement>>
<<Requirement>>
<<Requirement>>
<<Requirement>>
powerOFF
speed
breakPower
speed
操
作
の
即
応
性breakPowerTarget
ド
ラ
イ
バ
に
よ
る
運
転
操
作
の
尊
重
連
続
稼
働 ccBtn
加
減
速
性
能
ccPower
accelPowerTarget
操
作
の
容
易
性
<<Block>>
Values
Operations
<<Requirement>>
設
定
情
報
の
保
持
<<Requirement>>
throttleTorque
車
速
制
限
<<Requirement>>
ID=REQ_13
加
速
は
0.35G
未
満
と
す
る
breakPower
breakTorque
ccBtn
<<Block>>
<<Block>>
電子制御ブレーキ
breakTorque
Values
pwr
ブレーキ アクチュエータ
pwr
Operations
Operations
accelPower
speed
powerOFF
<<Block>>
車速のモニター回路
<<allocate>>
<<allocate>>
speed
Operations
<<Block>>
Values
speed
pwr
<<Block>>
車両力学制御
Values
powerOFF
Values
Operations
accelPowerTarget
CC動作状況のモニター回路
CC操作UI
Values
Operations
pwr
pwr
加
速
の
加
速
度
制
限
ID=REQ_17 ID=REQ_18
ID=REQ_15 ID=REQ_16
<<Block>>
<<deriveスロットル
>><<derive>> アクチュエータ
Operations
チ ド
ワ
ン
タ
ッ
標
速
度
と
20km/h 100時
設目
ラ
イ
バ
が
設
定
車
間
以 ド
操 設
定
情
報
を CCの
ラ
イ
バ
に
よ
る
ア
ク
セ
ル
で
CCを
操
作 定
上
の
差
が
あ
る
と 上
す
る
と
、
CC 以
を
50~
、
連
続
稼 作
、
ブ
レ
ー
キ
操
作
、
ス
テ
ア 不
正
に
変
更 速
で
き
る
上 働
は
、
0.080G以
<<Block>>
が
1ms以
内
に き
制
100km/hに
す
るccPower リ
ン
グ
操
作
を
最
優
先
と
す
る し
な
い
車速制御
加
速
度
で
加
減
速
応
答
す
る の
限
す
る
throttleTorque
す
る
Values
breakPowerTarget
ID=REQ_11 ID=REQ_12 ID=REQ_14
検証
結果
Values
Operations
<<Requirement>>
accelPower
<<Requirement>>
ID=REQ_24
作
状
況
の
監
視
CCの
緊
急
停
止 CC動
<<allocate>>
<<Block>>
Operations
Operations
<<Requirement>>
ID=REQ_23
pwr =
Kp ( Vp - Vt )
+ Ki ∫(Vp - Vt ) dt
<<allocate>>
<<Block>>
ID=REQ_22
値 車
す CCの
加
速
度
が
閾
常
を
検
知
す 異
況
動
作
状
速
を
監
視
を
超
え
な
い
制 る
る
と
CCを
緊
急 を
監
視
す
る
御
を
行
う
停
止
す
る
50km/h ≦vt ≦100km/h
Operations
加速の加速度制限:
a < 0.35G
加減速性能:
a > 0.080G
Values
Operations
<<allocate>>
ccBtn
Operations
<<allocate>>
<<allocate>> <<allocate>>
セダンの場合
Cd = 0.44
ワゴンの場合
Cd = 0.50
7
ID=REQ_09
動
中
に
運
転
者 CC起
者 CC起
が CC起
者 CC起
動
中
に
運
転
者
動
中
に
運
転
CC停
止
中
に
運
転
動
中
に
運
転
動
中
に
運
者 CC一
運 CC起
転 CC起
時
休
止
中
に
動
中
に
PCS
「
Set」
ボ
タ
ン
を 「
が
「
Cruise」
ボ
タ が
Decel」
ボ
タ
ン
を が
「
Accel」
ボ
タ が
ブ
レ
ー
キ
を
踏
む 転
者
が
「
Resume」 者
が
「
Cruise」 か
求
ら
停
止
要
す
と
、
現
在
の
速 押
ン
を
押
す
と
、
CCが 押
を
押
す
と
、
設
す
と
、
設
定
値
の
速 ン
定 と
タ
ン
を
押
す
と
、 ボ
タ
ン
を
押
す が
、
CCを
一
時
休
止 ボ
あ
る
と
、
CC
par [パッケージ] Design [PAR_車両ブロック]
度
を
設
定
値
と
し
て 度
起
動
す
る
が
下
が
る
値
の
速
度
が
上
が
る す
一
時
休
止
前
の
設
、
CCを
停
止
る
定 と
す を
停
止
す
る
保
持
す
る
設
定
車る
速の制限
:
で
CCを
再
開
す
る
<<derive>> <<derive>>
証跡追加
スロットル
<<include>>
<<include>>
CC再開
セダンの場合
A = 1.8 m^2
ワゴンの場合
A = 2.0 m^2
セダンの場合
mass = 1700 kg
ワゴンの場合
mass = 2500 kg
<<allocate>> <<allocate>>
<<allocate>>
<<allocate>><<allocate>>
densityOfAir = 1.2 kg/m^3
thrust =
pwr / actualSpeed
drag =
-1/2 * Cd * A
* densityOfAir
* actualSpeed^2
a=
(thrust + drag) / mass
actualSpeed =
∫a dt + v0
D-Caseによる要求の導出
D-Caseの議論分解を通して、ディペンダビリティを満足する
システム要求を過不足なく導出する
ディペンダビリティを阻害するすべての要因を抽出し、
その対策をシステム要求として整理する
D-Caseの議論分解パターン
ディペンダビリティへの脅威の明確化
ディペンダビリティへの脅威の明確化
脅威の発生シーンの明確化
脅威の発生シーンの明確化
原因の明確化
原因の明確化
対策の明確化
対策の明確化
8
D-Caseに基づく正確な設計仕様の策定
D-Case上にシステム要求や設計仕様を関連付けることにより、
システム要求や他の設計仕様と整合した設計仕様を策定する
•ディペンダビリティから導出した要求に含まれる設計情報を抽出し、システム設計を行う
•導出した設計仕様をディペンダビリティに基づく要求と照合し、過不足なきことを確認する
D-Case
SysML
設計情報の抽出
機能・非機能要求
システム構成要求
システムの制約
検証の条件
要求図
要求図
要求
要求
ブロック定義図
ブロック定義図
ブロック
ブロック
パラメトリック図
パラメトリック図
制約ブロック
制約ブロック
モデル・シミュレーション
モデル・シミュレーション
検証条件
検証条件
仕様との対応確認
9
D-Caseでの検証結果の確認
D-Case上での証跡追加により、検証結果と要求や設計仕様との
関連性を明確にする
検証結果をエビデンスとしてゴールに関連付け、関連する要求や
設計仕様との整合性を確認する
D-Case
SysML
モデル・
モデル・
シミュレーション
シミュレーション
検証結果
検証結果
シミュレーション結果
速度(km/h)
120
0.28G
MAX
100
80
60
40
20
0
0
5000
10000
15000
20000
経過時間
(ms)
証跡の追加
10
D-Case Driven Development with SysML の全体像
D-CaseとSysMLモデリングとの連携によるシステム開発
SysML
D-Case
シス
ステ
テム
ム要
要求
求を
を過
過不
不足
足な
なく
く導
導出
出
シ
1.
2.
2. 設計仕様を正確に導出
設計仕様を正確に導出
トップゴールの設定
トップゴールの設定
要望獲得・商品企画
ディペンダビリティへの脅威の明確化
ディペンダビリティへの脅威の明確化
脅威の発生シーンの明確化
脅威の発生シーンの明確化
システムの環境
システムの操作
要件の実現の可否
要件定義
ユースケース図
ユースケース図
ユースケース
原因の明確化
原因の明確化
要求図
要求図
機能・非機能要件
対策の明確化
対策の明確化
システム設計
システムの機能
機能・非機能要求
システムの構成要素
構成要素に課した制約
検証結果による保証
検証結果による保証
11
機能概要と前提要求
機能概要と前提要求
システム検証
モデル・
ブロック定義図
モデル・
ブロック定義図 構成要素
シミュレーション
シミュレーション
内部ブロック図
内部ブロック図 構成要素
検証条件
パラメトリック図
パラメトリック図
制約
検証結果
ステートマシン図
ステートマシン図
S/W, H/W 開発
3.
3. 検証結果と要求や設計仕様との関連性を明確化
検証結果と要求や設計仕様との関連性を明確化
D-Case Driven Development with SysML を
実現する開発環境
D-CaseとSysMLモデリングとの連携によるシステム開発環境
OSLCに準拠したI/F
による連携
OSLC連携アドオン
OSLC連携アドオン
要求管理
D-Case
D-Case Editor
Editor
Import
OSLC (Open Services for Lifecycle Collaboration)
異なるALMツール間でのデータ連携を可能とする仕様を策定
テスト管理
品質管理
Export
タスク管理
構成管理
D-Case
D-Case データ連携
データ連携
SysML
SysML
SW開発環境
SW開発環境
12
SysML
モデル管理
既存の開発環境の連携
具体例
ISO26262に準拠した車載システムへの適用
13
ISO26262に準拠した車載システムへの適用
本手法はISO26262の安全ライフサイクルと対応
ISO26262
D-Case
SysML
トップゴールの設定
トップゴールの設定
3.5
3.5 アイテム定義
アイテム定義
アイテムの定義
アイテムの定義
安全性の観点からトップゴールと前提を設定
ディペンダビリティへの脅威の明確化
ディペンダビリティへの脅威の明確化
安全性を阻害する脅威を大別
3.7
3.7 ハザード分析とリスク評価
ハザード分析とリスク評価
ハザードの識別
ハザードの識別
3.8
3.8 機能安全コンセプト
機能安全コンセプト
機能安全要求に基づく分解
機能安全要求に基づく分解
4.6
4.6 技術安全要求の仕様
技術安全要求の仕様
技術安全要求に基づく分解
技術安全要求に基づく分解
4.7
4.7 システム設計
システム設計
検証結果による保証
検証結果による保証
14
脅威の発生シーンの明確化
脅威の発生シーンの明確化
安全性を阻害するすべてのシーンを明確化
原因の明確化
原因の明確化
対策を立てられる粒度まで原因を深堀り
対策の明確化
対策の明確化
対策ごとにシステム要求を詳細化
検証結果による保証
検証結果による保証
システム要求を満足することを明示
ユースケース図
ユースケース図
システムの利用者と操作の関係の明確化
要求図
要求図
システムの機能・非機能要件を明確化
ブロック定義図
ブロック定義図
システムのアーキテクチャを明確化
パラメトリック図
パラメトリック図
システムの前提と制約を明確化
モデル・シミュレーション
モデル・シミュレーション
検証条件の明確化
実行可能なモデルによるシステム検証
作成したD-Caseの概要
ISO26262関連部分とそれ以外にゴールを分解して詳細化
例. 車載クルーズコントロール(CC)システムの安全性
上位階層
ISO 26262 関連部分
15
ISO 26262以外
の部分
開発フロー ~ アイテムの定義
安全性の観点からトップゴールと前提を設定し、脅威を抽出
D-Case
トップゴールの設定
トップゴールの設定
安全性の観点に基づき
トップゴールと前提を設定
システムが満たすべき性質と
前提を設定
ディペンダビリティへの脅威の明確化
ディペンダビリティへの脅威の明確化
安全性を阻害する
すべての脅威を抽出するため大別
脅威を機能不全、ユーザーのミス、
発生していない脅威に大別し、
トップゴールを分解
16
例. 車載クルーズコントロール(CC)システムの安全性
開発フロー ~ ハザードの識別
安全性を阻害するすべてのシーンを抽出
D-Case
SysML
ユースケース図
ユースケース図 ユースケース
脅威の発生シーンの明確化
脅威の発生シーンの明確化
安全性を阻害する
すべてのシーンの抽出
 脅威を引き起こす操作を明確化
 システムの置かれた環境を明確化
反映
システムの利用者と操作の関係
の明確化
脅威を引き起こす操作を基に
システムのユースケースを更新
CC 起動
ドライバ
モデル・
モデル・
シミュレーション
シミュレーション
検証の条件
検証条件の明確化
17
システムの置かれた環境を基に
検証シナリオの条件を更新
開発フロー ~ 機能安全要求に基づく分解
対策を立案可能な粒度に至るまで原因分析を実施
D-Case
原因の明確化
原因の明確化
対策を立てられる粒度に
至るまで原因を深堀り
各シーンで脅威を引き起こす
原因を分析
対策の明確化
対策の明確化
原因ごとに対策を立案
脅威の原因ごとに対策を
システム要求として整理
18
開発フロー ~ 技術安全要求に基づく分解
対策を基にシステム要求、要件の導出
D-Case
SysML
ユースケース図
ユースケース図
対策の明確化
対策の明確化
システムの利用者と操作の関係
対策ごとにシステム要求を詳細化
 機能要求の明確化
 非機能要求の明確化
 システム構成要求の明確化
 構成要素に課された制約の明確化
ユースケース
機能要求を基にユースケースを更新
反映
目標車速の設定
目標車速の加速
車速の監視
<<include>>
<<include>>
<<include>>
<<include>>
<<include>>
<<include>>
<<include>>
目標車速の減速
車速制御
<<include>>
ドライバ
要求図
要求図
機能・非機能要件
システムの機能・非機能要件を明確化
機能・非機能要求を基に要件を更新
<<Requirement>>
<<Requirement>>
加速度の抑制制御
CC
ID = REQ_21
ID = REQ_01
車両は運転者を支援する走行制御機
能を搭載する
19
<<derive>>
加速度が閾値
を超えない制
御を行う
開発フロー ~ 技術安全要求に基づく分解
D-Caseの記述を基にSysMLモデルを更新
D-Case
SysML
ブロック定義図
ブロック定義図
構成要素
内部ブロック図
内部ブロック図
システムのアーキテクチャを明確化
対策の明確化
対策の明確化
対策ごとにシステム要求を詳細化
 機能要求の明確化
 非機能要求の明確化
 システム構成要求の明確化
 構成要素に課された制約の明確化
反映
システム構成要求を基にブロックを更新
1
<<Block>>
車速のモニター回路
Values
Operations
1
パラメトリック図
制約
パラメトリック図
システムの前提と制約を明確化
ブロックに課された制約を更新
ccPower
breakPowerTarget
<<Block>>
車速制御
throttleTorque
Values
breakPower
accelPowerTarget
20
accelPower
<<allocate>> 加速の加速度制限:
Operations
breakTorque
a < 0.35G
開発フロー ~ 検証結果による保証
システム要求を満足することを明示
SysML
D-Case
検証結果による保証
検証結果による保証
モデル・
モデル・
シミュレーション
シミュレーション
検証結果
システム要求を満足することを明示
検証結果をエビデンスとしてゴールに関連付け
実行可能なモデルによる
システム検証
シミュレーション結果の獲得
速度(km/h)
120
0.28G
MAX
100
80
60
40
20
0
0
5000
10000
15000
20000
経過時間
(ms)
21
検証結果を
証跡として追加
まとめ
D-Case Driven Development 手法を実現
D-Case と SysML 開発環境とのデータ連携を実現
具体例として本手法を車載システム開発に適用
今後の展開
本開発手法の開発現場での実証
22
END OF PACKAGE
23