Comments
Description
Transcript
D-Case を利用したことによる開発プロセスにおける効果の考察
D-Case を利用したことによる 開発プロセスにおける効果の考察 1/18 目次 1 本ドキュメントの主旨................................................................................................... 4 2 関連研究 ........................................................................................................................ 4 3 2.1 参考文献[1]との比較 .............................................................................................. 4 2.2 参考文献[2]との比較 .............................................................................................. 4 2.3 参考文献[3]との比較 .............................................................................................. 5 2.4 参考文献[4]との比較 .............................................................................................. 5 2.5 参考文献[5]との比較 .............................................................................................. 6 評価計画 ........................................................................................................................ 7 3.1 3.1.1 開発の背景 ...................................................................................................... 7 3.1.2 開発成果物 ...................................................................................................... 7 3.1.3 評価対象の期間 ............................................................................................... 7 3.1.4 評価者 ............................................................................................................. 8 3.2 4 5 評価の対象 ............................................................................................................. 7 評価の手法 ............................................................................................................. 8 評価結果 ........................................................................................................................ 9 4.1 開発成果物の規模................................................................................................... 9 4.2 開発成果物の例 .................................................................................................... 10 4.2.1 D-Case .......................................................................................................... 10 4.2.2 ユースケース図 ............................................................................................. 11 4.2.3 要求図 ........................................................................................................... 11 4.2.4 ブロック定義図(設計モデル) .................................................................... 12 4.2.5 パラメトリック図.......................................................................................... 12 4.2.6 内部ブロック図 ............................................................................................. 13 4.2.7 ブロック定義図(実装モデル) .................................................................... 14 4.2.8 ステートマシン図.......................................................................................... 15 4.2.9 検証シナリオ................................................................................................. 16 4.3 工数の計測結果 .................................................................................................... 16 4.4 工数の比較 ........................................................................................................... 17 考察 ............................................................................................................................. 18 2/18 変更履歴 変更日 変更内容 2014/01/27 作成 3/18 1 本ドキュメントの主旨 本ドキュメントでは、D-Case を利用したことによる開発プロセスにおける効果を考察する。 2 関連研究 Assurance Case、Safety Case あるいは D-Case を UML や SysML などの既存の開発環境 と連携させるいくつかの試みがなされている。参考文献[1]~[5]に対して、本手法との類似 点、本手法の相違点、参考文献の訴求点を整理する。 2.1 参考文献[1]との比較 参考文献[1]: Stefen Wagner et al, A Case Study on Safety Cases in the Automotive Domain: Modules, Patterns, and Models, In Proc. of ISSRE2010 本手法との類似点: Safety case の議論構造パターンを提示している点 本手法の相違点: D-Case の議論構造パターンの提示に加え、ノードの記述スタイルのガイドとテンプレ ートにより、SysML モデルの開発に必要な情報を提供 開発フローをコントロールすることで、D-Case や SysML モデルの作成効率を高める ことも目的にしている点 参考文献の訴求点: 安全性ケースを自動車に搭載されるシステムの機能安全に適用 ASCET SD や Matlab/Simulink などの既存の開発環境のモデルを安全性ケースに利用 2.2 参考文献[2]との比較 参考文献[2]: John Birch, Roger Rivett, Ibrahim Habli, Ben Bradshaw, John Botham, Dave Higham, Peter Jesty, Helen Monkhouse, Robert Palin: Safety Cases and their Role in ISO 26262 Functional Safety Assessment. In the proceedings of the 32nd International Conference on Computer Safety, (SAFECOMP), Toulouse, France, September 2013. 本手法との類似点: Safety case の議論構造パターンを提示している点 4/18 Reliability and Security 本手法の相違点: D-Case の議論構造パターンの提示に加え、ノードの記述スタイルのガイドとテンプレ ートにより、SysML モデルの開発に必要な情報を提供 開発フローをコントロールすることで、D-Case や SysML モデルの作成効率を高める ことも目的にしている点 参考文献の訴求点: Safety case を自動車に搭載されるシステムの機能安全に適用 既存の開発環境の成果物を Safety case に利用 2.3 参考文献[3]との比較 参考文献[3]: Ewen Denney, Ganesh Pai, Ibrahim Habli: Perspectives on software safety case development for unmanned aircraft. DSN 2012: 1-8 本手法との類似点: Safety case の議論構造パターンを提示している点 本手法の相違点: D-Case の議論構造パターンの提示に加え、ノードの記述スタイルのガイドとテンプレ ートにより、SysML モデルの開発に必要な情報を提供 開発フローをコントロールすることで、D-Case や SysML モデルの作成効率を高める ことも目的にしている点 参考文献の訴求点: Safety case を無人航空機のソフトウェア開発の安全性評価に適用 既存の開発環境の成果物を Safety case に利用 2.4 参考文献[4]との比較 参考文献[4]: 名古屋大学山本研究室、産総研 D-Case と SysML/UML 連携の実証実験 http://www.dcase.jp/pdf/yamamoto20130419.pdf 本手法との類似点: D-Case の議論構造パターンを提示している点 5/18 本手法の相違点: D-Case の議論構造パターンの提示に加え、ノードの記述スタイルのガイドとテンプレ ートにより、SysML モデルの開発に必要な情報を提供 開発フローをコントロールすることで、D-Case や SysML モデルの作成効率を高める ことも目的にしている点 参考文献の訴求点: D-Case を SysML/UML による開発環境に適用 SysML/UML で開発したモデルを D-Case に関連付けることによる、D-Case の理解の 向上や SysML/UML モデルの体系的な管理といった効果 2.5 参考文献[5]との比較 参考文献[5]: Patrick J. Graydon, John Knight, Elisabeth A. Strunk, Assurance Based Development of Critical Systems, In Proc. IEEE DSN 2007 本手法との類似点: Assurance case の議論構造パターンを提示している点 本手法の相違点: D-Case の議論構造パターンの提示に加え、ノードの記述スタイルのガイドとテンプレ ートにより、SysML モデルの開発に必要な情報を提供 開発フローをコントロールすることで、D-Case や SysML モデルの作成効率を高める ことも目的にしている点 参考文献の訴求点: 安全性達成のための議論構造パターンの提示 6/18 3 評価計画 3.1 評価の対象 3.1.1 開発の背景 クルーズコントロールシステムの前モデル(以降「前機種」)を約半年前に開発した。クル ーズコントロールシステムの次期モデル(以降「次機種」)では、前機種の仕様を活用して、 次機種を派生開発(差分開発)することを想定している。前機種との変更点は、ISO 26262 準拠のため、機能安全の機能を追加する点である。 本評価の開発対象をクルーズコントロールシステムの次機種とする。 3.1.2 開発成果物 次機種の開発における開発成果物は以下の通りである。 D-Case ユースケース図 要求図 ブロック定義図 パラメトリック図 内部ブロック図 ステートマシン図 検証シナリオ 3.1.3 評価対象の期間 開発期間を以下のように分割し、それぞれの期間に要した工数を計測した。 表 1 評価対象の期間 ID 期間 1 アイテムの定義 2 ハザードの識別 3 4 5 6 内容 前機種の D-Case および SysML モデルを再利用し、アイテム を定義する。 HAZOP, FTA, FMEA によるハザード分析を行う。 機能安全要求に基づく D-Case の大まかな構造を検討し、機能安全要求に基づいて 分解 ゴールを分解する。 ユースケース図と要求 図の更新 技術安全要求に基づく 分解 ユースケース図と要求図を作成する。 技術安全要求に基づいてゴールを分解する。 ブロック定義図とパラメ ブロック定義図、パラメトリック図、内部ブロック図、ステート トリック図の更新 マシン図を作成し、D-Case に関連付ける。 7/18 7 検証結果による保証 8 モデルシミュレーション による検証結果 検証シナリオを D-Case に関連付ける。 検証シナリオを実行する。 3.1.4 評価者 前機種における開発担当者 1 名が次機種の開発も担当した。別の 1 名がレビューを実施し た。 3.2 評価の手法 下記のモデリングガイドとテンプレートをすべて利用する場合と利用しない場合において、 クルーズコントロールシステムの派生開発(差分開発)に伴う工数の比較を行う。 1 対象システムの D-Case モデリングガイド 対象システムの SysML モデリングガイド D-Case テンプレート SysML テンプレート 1 本評価は、D-Case を利用する場合と利用しない場合の比較ではなく、モデリングガイド とテンプレートを利用する場合と利用しない場合の比較である。 8/18 4 評価結果 4.1 開発成果物の規模 次機種の開発における開発成果物の規模は表 2、表 3、表 4の通りである。 表 2 モデルの個数 モデル 個数 D-Case 1 ユースケース図 1 要求図 1 ブロック定義図 2 パラメトリック図 2 内部ブロック図 1 13 ステートマシン図 1 検証シナリオ 表 3 D-Case の規模 ノード 個数 Goal 24 Strategy 10 Context 74 Evidence 14 SolvedBy 47 InContextOf 74 表 4 開発対象の SysML の規模 モデル モデル要素 アクター ユースケース図 3 ユースケース 11 関連 21 サブジェクト 1 D-Case への関連付け 8 機能要件 要求図 個数 13 非機能要件 8 関係 34 D-Case への関連付け 12 9/18 ブロック定義図 (設計モデル) パラメトリック図 ブロック 16 関連 34 D-Case への関連付け 12 制約ブロック 12 コネクタ 25 D-Case への関連付け 4 ブロック 3 コネクタ 4 ブロック定義図 ブロック 16 (実装モデル) 関連 32 状態 100 遷移 113 内部ブロック図 ステートマシン図 検証シナリオ 検証シナリオ 1 システム検証 1 D-Case への関連付け 4.2 12 開発成果物の例 開発成果物の例を以下に示す。なお、モデリングガイドとテンプレートをすべて利用する 場合と利用しない場合で、同じモデルを作成している。ただし、二つの場合において、モ デル要素名の表現の些細な相違や、モデル要素の配置場所の些細な相違はあったが、内容 は同じであるため、同じモデルとみなした。 4.2.1 D-Case 図 4-1 D-Case 10/18 4.2.2 ユースケース図 uc [パッケージ] Design [UC_CC] CC CC 起動 車速の監視 CC 停止 <<include>> 目標車速の設定 <<include>> <<include>> <<include>> <<include>> <<include>> 目標車速の加速 ドライバ 車速制御 <<include>> 目標車速の減速 <<include>> CC 一時休止 <<include>> <<include>> CC 動作状況の監視 スロットル <<include>> <<include>> CC 再開 CC 緊急停止 PCS 図 4-2 ユースケース図 4.2.3 要求図 req [パッ ケー ジ] Design [REQ_CC] <<Requirement>> CC ID = REQ_01 車両は運転者を支援する走行制御機能を搭載する <<derive>> <<derive>> <<Requirement>> <<Requirement>> <<Requirement>> CC起 動( Cruise) 目 標車速 の設 定( Set) 目標 車速 の減 速( Decel) <<derive>> <<derive>> <<derive>> <<Requirement>> <<Requirement>> 目標 車速 の加 速( Accel) CC一 時休 止 <<derive>> <<derive>> <<Requirement>> <<derive>> <<Requirement>> CC復 帰 CC停 止( Cruise) <<derive>> <<derive>> <<Requirement>> CC停止( PCS) <<derive>> <<derive>> <<Requirement>> 加 速度 の抑 制制 御 <<Requirement>> 車速 の監 視 <<Requirement>> CCの緊急 停止 <<Requirement>> CC動作 状況 の監視 ID = REQ_02 ID = REQ_03 ID = REQ_04 ID = REQ_05 ID = REQ_06 ID = REQ_07 ID = REQ_08 ID = REQ_09 ID = REQ_21 ID = REQ_22 ID = REQ_23 ID = REQ_24 CC停止中に運転者 が「Cruise」ボタ ンを押すと、CCが 起動する CC起動中に運転者 が「Set」ボタンを 押すと、現在の速 度を設定値として 保持する CC起動中に運転者が 「Decel」ボタンを 押すと、設定値の速 度が下がる CC起動中に運転者 が「Accel」ボタ ンを押すと、設定 値の速度が上がる CC起動中に運転者 がブレーキを踏む と、CCを一時休止 する CC一時休止中に運 転者が「Resume」 ボタンを押すと、 一時休止前の設定 でCCを再開する CC起動中に運転 者が「Cruise」 ボタンを押す と、CCを停止す る CC起動中にPCS から停止要求 があると、CC を停止する 加速度が閾値 を超えない制 御を行う 車速を監視す る 異常を検知す るとCCを緊急 停止する CCの動作状況 を監視する <<derive>> <<derive>> <<derive>> <<Requirement>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<derive>> <<Requirement>> <<Requirement>> <<Requirement>> <<derive>> <<derive>> <<derive>><<derive>> <<derive>> <<derive>> <<derive>> <<Requirement>> <<Requirement>> <<Requirement>> <<Requirement>> 車速 制限 加 速の 加速 度制 限 操作 の容易 性 操作 の即 応性 ドラ イバに よる 運転 操作 の尊重 設定 情報 の保 持 ID = REQ_11 ID = REQ_12 ID = REQ_14 ID = REQ_15 ID = REQ_16 ID = REQ_17 ID = REQ_18 ID = REQ_13 ワンタッチ でCCを操作 できる ドライバが設 定すると、CC が1ms以内に 応答する 目標速度と20km/h 以上の差があると きは、0.080G以上 の加速度で加減速 する 100時間以 上、連続稼 働する ドライバによるアクセル操 作、ブレーキ操作、ステア リング操作を最優先とする 設定情報を 不正に変更 しない CCの設定車 速を50~ 100km/hに制 限する 加速は0.35G 未満とする 加 減速性 能 連 続稼働 図 4-3 要求図 11/18 4.2.4 ブロック定義図(設計モデル) bdd [パッケージ] Design [BDD_car] <<Block>> 車両 Values Operations 1 1 1 1 1 1 1 1 1 <<Block>> <<Block>> <<Block>> <<Block>> <<Block>> <<Block>> <<Block>> <<Block>> アクセル ブレーキ CCコ ン ト ロ ー ラ PCSコ ン ト ロ ー ラ 前方障害物検知センサー 車速センサー 電子制御スロットル スロットル アクチュエータ CC操 作 UI Values Values Values Values Values Values Values Values Values Operations Operations O perations Operations O perations O perations Operations O perations Operations 1 1 <<Block>> 1 1 1 1 1 <<Block>> <<Block>> 車速制御 電子制御ブレーキ ブレーキ アクチュエータ Values Values Values O perations O perations O perations <<Block>> <<Block>> 車速のモニター回路 Values <<Block>> 車両力学制御 Values Operations Operation 1 <<Block>> CC動 作 状 況 の モ ニ タ ー 回 路 Values Operations 図 4-4 ブロック定義図 4.2.5 パラメトリック図 par [パッケージ] Design [PAR_車両ブロック] pwr = Kp ( Vp - Vt ) + Ki ∫(Vp - Vt ) dt 設定車速の制限: 50km/h ≦ vt ≦ 100km/h <<allocate>> <<allocate>> <<Block>> <<Block>> <<Block>> アクセル ブレーキ CCコ ン ト ロ ー ラ <<Block>> <<Block>> <<Block>> 車速センサー 電子制御スロットル スロットル アクチュエータ Values Values Values Values Values Values Operations Operations Operations Operations accelPower breakPower accelPowerTarget Operations breakPowerTarget powerOFF ccBtn ccPower speed speed throttleTorque Values throttleTorque breakTorque <<Block>> speed speed Operations <<Block>> Values Values ブレーキ アクチュエータ pwr pwr Operations <<allocate>> <<allocate>> Values speed Operations pwr <<Block>> 車両力学制御 Values powerOFF <<Block>> 電子制御ブレーキ breakTorque accelPower CC動 作 状 況 の モ ニ タ ー 回 路 ccBtn Operations accelPowerTarget <<Block>> Operations 車速制御 breakPower 車速のモニター回路 Operations pwr pwr <<Block>> ccPower breakPowerTarget powerOFF <<Block>> CC操 作 UI Values 加速の加速度制限: a < 0.35G Values 加減速性能: a > 0.080G Operations <<allocate>> ccBtn Operations <<allocate>> <<allocate>> <<allocate>> セダンの場合 Cd = 0.44 ワゴンの場合 Cd = 0.50 セダンの場合 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 12/18 thrust = pwr / actualSpeed drag = -1/2 * Cd * A * densityOfAir * actualSpeed^2 a= (thrust + drag) / mass actualSpeed = ∫ a dt + v0 図 4-5 パラメトリック図 4.2.6 内部ブロック図 ibd [Block] 車速のモニター回路 [IBD_車速のモニター回路] 1 speed Attributes <<flow>> Operations speed 1 車速読み取り 車速 車速 1 異常判定 A ttributes 判定結果 判定結果 Operations 図 4-6 内部ブロック図 13/18 異常通知 A ttributes Operations powerOFF <<flow>> powerOFF 4.2.7 ブロック定義図(実装モデル) bdd [パッケージ] Simulation [BDD_CC] <<Block>> 1 <<Block>> Dynamics Driver Values <<Block>> Values acceleration densityAir stream time velocity Car Values 1 Operations area cd mass 1 1 Operations <<Block>> Operations PcsController ~Dynamics calc Dynamics Values Operations 1 1 1 1 1 1 1 1 1 <<Block>> <<Block>> 1 1 <<Block>> <<Block>> <<Block>> AccelPedal BreakPedal CcPanel SpeedSensor ThrottleActuator Values Values Values Values Values accelPosition BreakActuator Values torque breakPosition torque Operations Operations Operations Operations Operations Operations 1 1 1 1 <<Block>> 1 <<Block>> 1 1 <<Block>> 1 1 1 1 1 <<Block>> <<Block>> AccelController BreakController Values Values Ki Kp maxPower power sumDPower targetPower Ki Kp maxPower power sumDPower targetPower Operations Operations ArbitrationController CcController Values isWorking Ki Kp maxPower maxTargetVelocity minTargetVelocity power sumDVelocity targetVelocity targetVelocityIncreme velocity Operations accel decel set valid 図 4-7 ブロック定義図 14/18 1 Values 1 accelPower accelTargetPower accPower breakPower breakTargetPower throttlePower <<Block>> CcMonitor Values Operations Operations 1 <<Block>> SpeedMonitor Values Operations 1 1 1 4.2.8 ステートマシン図 stm [Block] CcController [statechart_0] running tm(1)/ if (this->isWorking) { double diffVelocity = (this->targetVelocity - this->velocity) / 3.6; // [m/s] this->sumDVelocity += diffVelocity; this->power += Kp * diffVelocity + Ki * this->sumDVelocity; if(this->power > this->maxPower) this->power = this->maxPower; if(this->power < -this->maxPower) this->power = -this->maxPower; } else { this->power = 0.0; } cycle1ms init evPowerOFF evAccPowerRequest(this->power) to itsArbitrationController On Off evAccCruiseBtn evAccCruiseBtn Unset evAccBreakPedal Sleeping evAccResumeBtn evAccOFF evAccSetBtn[valid(this->velocity)]/ set(this->velocity); evAccSetBtn/ set(this->velocity); Working evAccSetBtn/ set(this->velocity); evAccAccelBtn/ accel(); evAccDecelBtn/ decel(); sensoring evSpeedChanged/ this->velocity = params->velocity; 図 4-8 ステートマシン図 15/18 evAccAccelBtn/ evAccDecelBtn/ decel(); accel(); 4.2.9 検証シナリオ stm [Block] Driver [statechart_1] init evSimulationEnd to itsDynamics evAccSetBtn to itsCcPanel evSimulationStart to itsDynamics evCarPowerOFF to itsCar tm(10)/ for (int idx = 0; idx < 50/3; ++idx) { itsAccPanel->GEN(evAccAccelBtn); } evCarPowerON to itsCar tm(10000) tm(10) evAccelPedalPressDown(1.0) to itsAccelPedal tm(10) evAccAccelBtn to itsCcPanel tm(5100) evAccelPedalTakeOff to itsAccelPedal tm(1000) evAccCruiseBtn to itsCcPanel 図 4-9 検証シナリオ 4.3 工数の計測結果 開発成果物の作成(レビューも含む)に要した工数は表 5、表 6の通りであった。なお、 アイテムの定義、ハザードの識別はテンプレートに依らないので、共通とした。 表 5 モデリングガイドとテンプレートを使用しない場合の工数 ID 期間 工数 [人時間] レビュー回数 [回] 1 アイテムの定義 4.5 2 2 ハザードの識別 30 6 3 機能安全要求に基づく分解 20 3 11.5 5 3 2 12 3 7 検証結果による保証 1 1 8 モデルシミュレーション による検証結果 1 1 83 23 4 ユースケース図と要求図の更新 5 技術安全要求に基づく分解 6 ブロック定義図とパラメトリック図の更新 合計 表 6 モデリングガイドとテンプレートを使用する場合の工数 ID 期間 工数 [人時間] 1 アイテムの定義 4.5 16/18 レビュー回数 [回] 2 2 ハザードの識別 30 6 6 3 6.5 2 1 1 7.5 2 7 検証結果による保証 1 1 8 モデルシミュレーション による検証結果 1 1 57.5 18 3 機能安全要求に基づく分解 4 ユースケース図と要求図の更新 5 技術安全要求に基づく分解 6 ブロック定義図とパラメトリック図の更新 合計 4.4 工数の比較 期間別の工数の様子を図 4-10に、期間別のレビュー回数の様子を図 4-11に示す。 工数 [人時間] モデリングガイドとテ ンプレート 不使用 31%削減 使用 0 10 20 アイテムの定義 機能安全要求に基づく分解 技術安全要求に基づく分解 検証結果による保証 30 40 50 60 70 80 90 ハザードの識別 ユースケース図と要求図の更新 ブロック定義図とパラメトリック図の更新 モデルシミュレーション による検証結果 図 4-10 期間別の工数 レビュー回数 [回] モデリングガイドとテ ンプレート 不使用 使用 24%削減 0 5 アイテムの定義 機能安全要求に基づく分解 技術安全要求に基づく分解 検証結果による保証 10 15 20 ハザードの識別 ユースケース図と要求図の更新 ブロック定義図とパラメトリック図の更新 モデルシミュレーション による検証結果 図 4-11 期間別のレビュー回数 17/18 25 図 4-10と図 4-11から、モデリングガイドとテンプレートの活用により、工数を約 31%削 減し、レビュー回数を約 24%削減したことが分かる。 機能安全要求に基づく分解、ユースケース図と要求図の更新、技術安全要求に基づく分解、 ブロック定義図とパラメトリック図の更新においては、テンプレートが工数削減に寄与し ている。これはレビュー回数が 13 回から 8 回に減っていることと関係する。 検証結果による保証、モデルシミュレーションによる検証結果においては、もともとあ まり工数がかからなかったので、テンプレートの工数削減の寄与が大きくはなかった。 5 考察 前章で示したように、モデリングガイドとテンプレートをすべて利用する場合は、利用し ない場合と比較して工数を約 31%削減し、レビュー回数を約 24%削減した。工数とレビュ ー回数を削減できた要因は以下の通りである。 D-Case の構造がテンプレートで定義されていることにより、D-Case のストラテジー ノードやゴールノードなどの書き直しが発生しなかった。 SysML 要求図に記載する必要のある機能安全に関する機能要件を D-Case から容易に 導けたことにより、要件定義に要する工数を削減できた。 SysML ブロック定義図に記載する必要のあるブロックを D-Case のコンテキストノー ドから特定できたため、システム設計に要する工数を削減できた。 SysML パラメトリック図に記載する必要のある制約を D-Case のゴールノードから特 定できたため、効率的に制約を洗い出すことができた。 以上の結果から、モデリングガイドとテンプレートには一定の効果があると考える。 18/18