フォールトトレラント燃料制御システムの要件の管理 (IBM DOORS)
要件管理インターフェイス (RMI) は、Simulink® オブジェクトと要件ドキュメント間のリンクを作成し、確認するためのツールを提供しています。この例では、モデル オブジェクトを IBM® DOORS® 内に保存された要件にリンクする方法を説明します。詳細については、フォールトトレラント燃料制御システムの要件の管理 (Microsoft Office)を参照してください。
DOORS 用の RMI のセットアップ
DOORS のインストールが RMI との通信用に構成されていることを確認します。MATLAB® を管理者として実行し、rmi('setup')
を実行します。DOORS クライアントのインストールが検出された場合、RMI は必要な API ファイルをインストールするよう促します。これは、DOORS または MATLAB のいずれかを再インストールした後に 1 回だけ行う必要があります。詳細については、Microsoft Office および IBM DOORS との相互作用のための Requirements Toolbox の構成を参照してください。
この例で使用される Simulink モデルと DOORS モジュール
この例のために、slvnvdemo_fuelsys_doorsreq.slx
という名前の、フォールトトレラント燃料制御システムのモデル例が含まれています。以下に示す演習ではこれを使用します。
Simulink モデルを手動で開くか、次のコードを評価します。
open_system('slvnvdemo_fuelsys_doorsreq');
以下の基本的なリンク作成演習では、任意の一時的な DOORS モジュールを使用できます。サロゲート モジュールの同期に関するより高度な演習では、同梱の DemoRMI.dpa
アーカイブを使用できます。
リンクを使用するための要件マネージャーのセットアップ
[アプリ] タブで [要件マネージャー] を開きます。
[要件] タブで [レイアウト]、[要件ブラウザー] が選択されていることを確認します。
[要件ブラウザー] の [表示] ドロップダウン メニューで、
[Links]
を選択します。
この例の操作はすべて [要件] タブ内で行います。ツールストリップ ボタンについて言及する場合、常にこのタブのツールストリップ ボタンを指します。
[外向きリンク] ダイアログを使用したリンク
モデル オブジェクトを DOORS データベース (DOORS オブジェクト) に保存された要件にリンクできます。リンクを作成するとき、DOORS ドキュメントを変更する必要はありません。新規リンクを作成するのに最も実践的な方法は、[外向きリンク] ダイアログを使用することです。この場合、リンク属性のフィールドを手動で入力する必要があります。より簡単な、自動化された方法については、次のサブセクションを参照してください。
Metered Fuel
Scope ブロックに移動します。
rmidemo_callback('locate','slvnvdemo_fuelsys_doorsreq/Metered Fuel');
ブロックを右クリックして、コンテキスト メニューから [要件]、[[外向きリンク] ダイアログを開く...] を選択します。[外向きリンク] ダイアログが開きます。
[新規] をクリックして、新しい要件を作成します。
[ドキュメント タイプ] を
IBM DOORS
に設定します。
[ドキュメント] 入力フィールドに一意のターゲット モジュール ID を指定するか、[参照] ボタンを使用して DOORS データベース内のターゲット モジュールを選択します。
[場所: (タイプ/識別子)] フィールドにターゲット オブジェクト ID を入力するか、[ドキュメント インデックス] タブで選択したモジュール内のターゲット オブジェクトを選択します。
[適用] または [OK] をクリックして、新しい要件リンクを保存します。
同じ Simulink ブロックをもう一度右クリックし、コンテキスト メニューの一番上に新しいリンク ラベルが表示されていることを確認します。
コンテキスト メニュー ショートカットを使用したリンク
より簡単に新しいリンクを作成する方法は、選択内容のリンク ショートカットを使用することです。ブロックを右クリックし、[要件]、[DOORS の選択内容へのリンク] を選択します。
コンテキスト メニュー ショートカットでリンクを作成する場合、手動入力は必要ありません。リンク先ターゲットは、DOORS で現在選択されている内容によって決まり、[説明] フィールドには対応するオブジェクト見出し (見出しがない場合は DOORS オブジェクト テキスト) が設定されます。[説明] はコンテキスト メニューのナビゲーション ショートカットに使用されるため、文字数制限が適用されます。
RMI は、DOORS 要件との双方向リンクをサポートしていますが、ここでは一方向リンクから始めます。モデルの [要件] タブで [リンクの設定]、[リンク オプション] をクリックし、[選択ベースのリンクの作成時] の [双方向リンクのリンク先を変更] をオフにして、双方向リンクを無効にします。
あるいは、以下のコードを評価することができます。
rmipref('BiDirectionalLinking', false);
双方向リンクについては、後で説明します。では、以下をやってみましょう。
DOORS のテスト モジュール内の任意のオブジェクトを選択します。
throttle sensor
ブロックに移動します。
rmidemo_callback('locate','slvnvdemo_fuelsys_doorsreq/throttle sensor');
ブロックを右クリックし、コンテキスト メニューで [要件]、[DOORS の選択内容へのリンク] を選択し、リンクを作成します。
throttle sensor
ブロックをもう一度右クリックし、[要件] コンテキスト メニューの一番上のリンク ラベルを見つけ、リンクが追加されたことを確認します。後から [外向きリンク] ダイアログを使用して、説明ラベルやユーザー タグ キーワードを調整できます。
[外向きリンク] ダイアログを使用した現在の選択内容へのリンク
[外向きリンク] ダイアログ ボックスの [現在の選択を使用] ボタンを使用すると、複合的アプローチを使用できます。
モデル内のブロックを右クリックし、コンテキスト メニューから [要件]、[[外向きリンク] ダイアログを開く...] を選択します。
[新規] ボタンを押し、別のリンク項目を追加します。
[ドキュメント タイプ] ドロップダウン ボックスで [DOORS の項目] を選択します。
DOORS モジュール ウィンドウで、リンクするオブジェクトをクリックします。
[現在の選択を使用] ボタンをクリックすると、現在選択されている DOORS オブジェクトを基に、すべての入力フィールドにデータが自動的に入力されます。
必要に応じて [説明] を調整します。
[OK] または [適用] をクリックして変更を保存します。
[現在の選択を使用] ボタンを使用すると、既存のリンクをリダイレクトすることもできます。
DOORS で必要な新しいターゲット オブジェクトを選択します。
[外向きリンク] ダイアログで、更新する必要のあるリスト項目をクリックします。
[現在の選択を使用] ボタンをクリックして、リンク属性を更新します。
Simulink から DOORS へのリンクの表示と移動
DOORS リンクの強調表示および移動の方法は、他の種類のリンクと同じです。
[要件] タブで [リンクの強調表示] をクリックし、モデル例のすべての要件を強調表示します。以下を評価することでも、リンクを強調表示できます。
rmi('highlightModel', 'slvnvdemo_fuelsys_doorsreq');
DOORS が実行中であり、ログイン済みであることを確認します。
前の節でリンクを新規作成するために使用した、強調表示されたオブジェクトの 1 つを右クリックします。
コンテキスト メニューから [要件] を選択します。作成したリンクのラベルが一番上に表示されているはずです。
リンク ラベルをクリックします。DOORS でテスト モジュールが開き、適切なオブジェクトが選択されます。
この操作は、自分が作成したリンクのみで試すようにしてください。モデルには、まだ動作しない他のリンクが含まれています。これらのリンクについては、以降の節で説明します。
サロゲート モジュールと同期
DOORS 要件モジュールを変更することなく、DOORS で双方向のリンクを可能にするため、サロゲート モジュール ワークフローがサポートされています。ワークフローを以下の図に示します。
サロゲート モジュールと呼ばれる新しい正式な DOORS モジュールが Simulink によって自動生成され、Simulink モデルの DOORS 表現として使用されます。モデル内のすべてのオブジェクトをマッピングするか、DOORS へのリンクをもつオブジェクトのみをマッピングするか、あるいは、ドキュメンテーションに記載された中間のオプションのいずれかを選択できます。
以前の節で述べたように、DOORS 要件に直接リンクを作成できます (図の 3)。また、この例の最後の節で示すように、オプションで、一致する直接リンクを DOORS ドキュメントから Simulink オブジェクトへ作成できます (図の 2)。
さらに、DOORS 内にサロゲート モジュールが存在することで、サロゲート モジュール内の項目と DOORS 内に保存された要件の間にリンクを作成でき (図の 1)、Simulink との相互ナビゲーションがサロゲート項目リンクによって提供されます (図の 4)。
サロゲート モジュール ワークフローには、次のような利点があります。
DOORS 内のドキュメントや Simulink 内のモデルを変更することなく、双方向リンクが可能になります。必要な情報はすべて、サロゲート モジュールおよび対応するリンク モジュールに保存されます。
実行中の Simulink がなくても、DOORS のネイティブ レポート機能を使用することを含め、DOORS 環境でリンクを管理および解析できます。
自動生成されたサロゲート モジュールのスクリーンショットの例を以下に示します。DOORS の階層は元の Simulink モデルの構造を反映しており、DOORS オブジェクトのヘッダーは Simulink オブジェクトの名前と一致することがわかります。
Simulink モデルと DOORS データベースの同期
Simulink モデルで新しい DOORS サロゲート モジュールを作成するには、通常、Simulink モデルの [要件] タブに移動して [共有]、[DOORS と同期] を使用します。
この例においては、既存の DOORS プロジェクトがアーカイブとして提供され、そこに他のモジュールへのリンクをもつサロゲート モジュールが含まれています。この例の対話的機能を試すため、以下に説明するように、プロジェクトを DOORS データベースに復元した後、モデル例を再同期します。このアーカイブは DOORS version 9.1 で作成されたものであり、それ以前のバージョンの DOORS では動作しない可能性があることに注意してください。
DOORS で [ファイル]、[元に戻す] 機能を使用し、現在の作業ディレクトリ内に提供されている DemoRMI.dpa アーカイブを指定します。DemoRMI という名前のプロジェクトが DOORS データベース内に既に存在する場合、DOORS はプロジェクト名に番号を付加します。以下のスクリーンショットに示すように、このプロジェクトにはリンク モジュールが 1 つと、正式なモジュールが 3 つ含まれています。正式なモジュールの 1 つは
slvnvdemo_fuelsys_doorsreq
モデルの DOORS サロゲートで、他の 2 つはフォールトトレラント燃料制御システムの要件の管理 (Microsoft Office)から Microsoft® Word ドキュメントをインポートして作成したモジュール例です。
含まれているモジュールをすべて抽出し、サロゲート モジュールを開きます。
抽出されたモジュールのうち 2 つに、赤色とオレンジ色の三角形のリンク ナビゲーションが付いていることに注目してください。右クリックして、モジュール間を移動します。これらのリンクは、バックアップと復元の手順を経ても保持されています。
DOORS で、抽出されたサロゲート モジュールから対応する Simulink 内のオブジェクトへの移動を試します。
slvnvdemo_fuelsys_doorsreq サロゲート モジュールの 1.11.4.1 fuel rate をクリックします。
モジュール ウィンドウのメイン メニューで、[MATLAB]、[Select Item] をクリックします。適切なサブシステムのブロック線図が開き、対応する入力が強調表示されます。
抽出されたモジュールは、DOORS データベース内で新しい数値 ID をもつため、Simulink オブジェクトからサロゲート モジュールへの移動は機能しません。そのため、すべてのオブジェクトにおいて [DOORS サロゲート項目] リンクから移動しようとすると、エラーになります。DemoRMI プロジェクトの復元が正常に完了した後、slvnvdemo_fuelsys_doorsreq model
のすべてのオブジェクトに対して [DOORS サロゲート項目] リンクを修復するには、サロゲートの復元されたインスタンスで Simulink モデルを再同期します。
モデル ウィンドウで、[要件] タブを選択して [共有]、[DOORS と同期] をクリックし、[DOORS 同期設定] ダイアログ ボックスを開きます。
以下の設定を入力します。[DOORS サロゲート モジュールのパスと名前] 入力フィールドには、復元したプロジェクトの場所に応じて適切な DOORS パスを使用するか、単にそのパスを DOORS の現在のプロジェクトに設定して "./" 表記を使用し、"./slvnvdemo_fuelsys_doorsreq" と入力します。
一番下にある [Simulink モデルの保存] チェック ボックスはオンにしないでください。書き込み可能なコピーを使用しない限り、モデル例に行った変更を保存することはできません。
Simulink により、以前の同期パスについての警告が表示される場合があります。[続行] をクリックして、新しいパスで続行してください。コマンド ウィンドウに次のメッセージが表示される場合があります。「No update needed for the surrogate module」。復元したサロゲート モジュールはそのままで正しいということです。
モデル内の任意のオブジェクトから、サロゲート モジュール内の対応する DOORS オブジェクトへの移動をもう一度試します。Simulink ブロックを右クリックし、コンテキスト メニューで [要件]、[1. "DOORS サロゲート項目"] を選択します。これで、サロゲート モジュール内の対応する DOORS 項目が強調表示されるようになります。
モデル アドバイザーを使用した RMI 整合性チェック
このモデル例には、DOORS ドキュメント、FuelSys Design Description モジュールへの既存リンクがいくつか含まれています。モジュールの復元済みコピーがローカル データベース内で新しい ID をもつため、元の [DOORS サロゲート項目] リンクと同様に、これらのリンクは機能しません。たとえば、モデルの Airflow calculation
サブシステムを右クリックして [要件] コンテキスト メニューから [1.2.1 Mass Airflow estimation] を選択します。エラー メッセージが発生します。以下のコードを評価し、Airflow calculation
ブロックに移動します。
rmidemo_callback('locate',['slvnvdemo_fuelsys_doorsreq/fuel rate controller/' ... 'Airflow calculation']);
これから、モデル アドバイザーで RMI 整合性チェックを使用して、これらのリンクを修復します。
Simulink モデル ウィンドウの [要件] タブで、[一貫性のチェック] をクリックし、モデル アドバイザーのグラフィカル インターフェイスを開きます。
[要件の整合性チェック] の下にある [ドキュメントが欠落している要件リンクを特定] 項目を探し、それをマウスで選択します。
右側のパネルの左上にある [このチェックを実行] ボタンをクリックします。リンク切れをもつブロックのリストが表示されます。リストに含まれる不整合を 1 つずつ修復することも、[モデル アドバイザー] ペインの下部にある [すべて修正] リンクを使用することもできます。ここでは、すべてのリンク切れを、元のモジュールの同一の復元済みコピーにリダイレクトする必要があるとわかっているため、[すべて修正] ショートカットを使用します。
[モデル アドバイザー] ペインの下部にある [すべて修正] リンクをクリックします。DOORS データベース ブラウザーが開きます。
データベース内の復元済み FuelSys Design Description モジュールを見つけ、マウスで選択します。
[OK] をクリックし、DOORS データベース ブラウザーを閉じます。
もう一度 [このチェックを実行] をクリックします。今度はチェックにパスします。
もう一度移動を試します。モデル内の
Airflow calculation
サブシステムを右クリックし、コンテキスト メニューから [要件]、[1.2.1 Mass Airflow estimation] を選択します。これで、含まれるアーカイブから復元された DOORS モジュールの 1 つに含まれる適切なオブジェクトが強調表示されるようになります。
Simulink から DOORS へのリンク情報のコピー
これで Simulink から DOORS への直接リンクが正しくなったので、同期を使用して、DOORS データベースにリンク情報をコピーできます。リンクは、DOORS プロジェクト内に複製され、DOORS のネイティブなナビゲーション、解析、およびレポート ツールを使用できるようになります。サロゲートと他の DOORS モジュール間のこれらのリンクは、モデルの新しいコピーで再利用することもできます。
[共有]、[DOORS と同期] ダイアログを再度開き、以下の設定を行います。復元済みプロジェクトには不一致のリンクが含まれており、後で必要になるため、必ず [DOORS 内での不一致を削除] チェック ボックスはオフにしてください。
下部の [同期] ボタンをクリックします。
数秒経ってから、DOORS でサロゲート モジュールをチェックします。表示されるリンクが増えています。その一部は元の復元済みプロジェクトに存在していたもの (FuelSys Requirements Specification モジュールへのリンク) で、一部は Simulink からコピーしたばかりのもの (FuelSys Design Description モジュールへのリンク) です。
Airflow calculation
サブシステムを見つけます。
rmidemo_callback('locate',['slvnvdemo_fuelsys_doorsreq/fuel rate controller/' ... 'Airflow calculation']);
このブロックのコンテキスト メニューの [要件]、[1. "DOORS サロゲート項目"] を使用して、対応するサロゲート オブジェクトに移動します。
新しい赤色の三角形は、DOORS 内の 1.12.5 Airflow calculation 項目への外向きリンクを示しています。右クリックして、この DOORS リンクに移動すると、FuelSys Design Description モジュールの項目 1.2.1 Mass airflow estimation が開きます。
DOORS から Simulink へのリンク情報のコピー
サロゲート モジュールを介した同期は、DOORS におけるシステム要件の更新を、対応する Simulink 実装要素に伝播するための便利な方法です。このワークフローを説明するために、復元済みプロジェクトには、サロゲート モジュールから、Simulink モデルに存在しない FuelSys Requirements Specifications DOORS モジュールへの DOORS リンクが含まれています。DOORS で、「Simulink モデルと DOORS データベースの同期」節で復元したモジュールへ戻ります。
FuelSys Requirements Specification モジュールから開始し、2.1 Normal Mode of Operation を見つけます。
DOORS リンクを使用してサロゲート モジュールの "1.11.3 fuel" の項目に移動するため、DOORS モジュールの黄色のリンクを右クリックし、コンテキスト メニューから slvnvdemo_fuelsys_doorsreq DOORS モジュールの "1.11.3 fuel" 項目をクリックします。
"1.11.3 fuel" を選択した状態で、サロゲート モジュールのメイン メニューで [MATLAB]、[Select Item] をクリックし、Simulink モデルの対応するソース オブジェクトを見つけます。
見つかった Simulink の
fuel
入力要素を右クリックして、コンテキスト メニューで [要件] をチェックします。1.["DOORS サロゲート項目"] が選択できる唯一のリンクで、ドキュメントにその他のリンクは存在しません。
DOORS から Simulink にリンク情報をコピーするには、[同期中にリンクを更新] を有効にし、[DOORS から Simulink へ] を選択して再同期します。
[共有]、[DOORS と同期] ダイアログを再度開きます。
次の同期オプションを設定します。
今回は、[Simulink 内での不一致を削除] チェック ボックスをオンにしても構いません。前の同期ステップ後、Simulink に不一致のリンクはありません。
新しいリンクが Simulink に追加されたときに変化を確認できるように、一部のブロック線図は強調表示付きで開いたままにしておきます。
[同期] をクリックします。サロゲート モジュール ウィンドウが前面に表示される場合があります。ただし、DOORS に変更はないため、赤色のマーカーは表示されません。
Simulink の
fuel
入力にもう一度移動するか、以下を評価します。
rmidemo_callback('locate','slvnvdemo_fuelsys_doorsreq/engine gas dynamics/fuel');
右クリックし、コンテキスト メニューの [要件のトレーサビリティ] セクションを展開します。[DOORS サロゲート項目] リンクの下に、新しいリンク [->2.1 Normal Mode of Operation] があることがわかります。前に付いている矢印は、この要件が Simulink で作成されたものではなく、DOORS からコピーされたものであることを示しています。
新しいリンクをクリックし、DOORS の対応する要件に移動すると、FuelSys Requirements Specification モジュールの 2.1 Normal Mode of Operation 節が開きます。
ユーザー タグを使用した変更の確認
ここで、ユーザー タグ フィルターを適用して、モデルに行った変更を確認します。元のバージョンのモデル例に存在していたすべての DOORS 要件には、"design" というタグが付けられていました。ここでは、このことを利用して、これらのリンクを選択的に強調表示したり、非表示にしたりします。
fuel rate controller
サブシステムに戻り、[要件] タブで [リンクの強調表示] をクリックします。
rmidemo_callback('open_highlight','slvnvdemo_fuelsys_doorsreq/fuel rate controller');
[要件] タブで [リンクの設定]、[リンク オプション] をクリックし、[要件の設定] ダイアログを開きます。
[フィルター] タブに移動し、以下のように設定します。[要件を強調表示およびレポートする際にキーワードでリンクをフィルター処理] ボックスをオンにし、[次のタグからのリンクを含める] フィールドには
design
を入力します。
ブロック線図で強調表示されたオブジェクトをチェックします。これらは元のモデルに存在していたリンクです。
次に、以下のように [フィルター] 設定を変更し、"design" リンクを除外します。
Simulink モデルをチェックします。先ほど DOORS データベースからコピーしたリンクが強調表示されるようになりました。
Simulink と DOORS でのリンクの削除
同期を使用することで、リンクが削除されたときに整合性を保つこともできます。以下に例を示します。
もう一度
fuel
入力に移動します。
rmidemo_callback('locate','slvnvdemo_fuelsys_doorsreq/engine gas dynamics/fuel');
右クリックして、[要件]、[[外向きリンク] ダイアログを開く...] を選択します。
ダイアログで [->2.1 Normal Mode of Operation] 項目を選択します。
[削除] ボタンをクリックし、リストから項目を削除します。
[OK] をクリックして変更を適用します。
コンテキスト メニューをもう一度チェックして、リンクがなくなったことを確認します。
DOORS にはリンクがまだ存在しており、サロゲート モジュールの 1.11.3 fuel から FuelSys Requirements Specification モジュールの "2.1 Normal Mode of Operation" に接続されていることに注意してください。
削除したリンクを DOORS から除去するには、リンク更新のオプションを [Simulink から DOORS へ] に設定し、[DOORS 内での不一致を削除] チェック ボックスをオンにした状態で同期を再実行します。
[同期] をクリックします。DOORS のリンクがなくなったことを確認します。
同様に、DOORS 内でリンクが削除され、その変更を Simulink に伝播するには、[DOORS から Simulink へ] オプションをオンにし、[Simulink 内での不一致を削除] チェック ボックスをオンにした状態で同期を再実行します。
DOORS から Simulink への直接リンク (オプション)
DOORS で選択内容のリンクを使用するとき、参照オブジェクトを DOORS ドキュメントに自動的に挿入し、サロゲート モジュールを必要とせずに、DOORS から Simulink への直接移動を可能にするよう選択できます。
警告: この RMI 機能を使用すると、DOORS ドキュメントが変更されます。
[要件] タブで [リンクの設定]、[リンク オプション] をクリックし、[要件の設定] ダイアログを開きます。
[双方向リンクのリンク先を変更] チェック ボックスをオンにします。
これで、選択内容のリンクを使用すると、Simulink によってナビゲーション オブジェクトが作成されるようになります。2 つの種類の参照を選択できます。[選択内容のリンク] タブの下部にある [内向きリンクに ActiveX を使用] オプションをオンにした場合、RMI は、Simulink アイコンをもち、リンク先オブジェクト ラベルが DOORS オブジェクト テキストである新しい DOORS オブジェクトを挿入します。[内向きリンクに ActiveX を使用] オプションをオフにした場合、RMI は External Link
ハイパーリンクを挿入します。次の演習では、両方のオプションを試し、最適な方法を見つけてください。
FuelSys Requirements Specification モジュールの "2.2.6 Speed Sensor Failure" を見つけ、選択します。
Simulink モデルで
Speed Estimate
ブロックを見つけます。
rmidemo_callback('locate',['slvnvdemo_fuelsys_doorsreq/fuel rate controller/' ... 'Sensor correction and Fault Redundancy/Speed Estimate']);
そのブロックを右クリックし、[要件]、[DOORS の選択内容へのリンク] を選択します。
新しいオブジェクトが、DOORS 内のターゲット オブジェクトの最初の子として挿入されたことを確認します。
DOORS で、挿入したばかりのナビゲーション オブジェクトをクリックするか、DOORS モジュール ウィンドウのメイン メニューから [MATLAB]、[Select Item] を使用します。
External Link
ハイパーリンクを使用するときは、右クリック コンテキスト メニューで展開されるカスケードの MATLAB ハイパーリンクをたどります。Simulink で適切なブロック線図が開き、リンクされたブロックが強調表示されます。
メモ: ここでは、モデルへの変更の保存を必要としない、DOORS から Simulink モデルへのナビゲーションを有効にしました。このワークフローは、モデルへの変更を避ける必要のあるときに検討してください。
通常、リンク作成後に Simulink モデルを保存する場合、サロゲート同期プロセスの複雑度を避けながら、双方向のナビゲーションが可能です。ただし、Simulink ナビゲーション オブジェクトによって DOORS ドキュメントが煩雑になるという短所があります。
DOORS ドキュメントが意図せずに変更されるのを防ぐため、もう一度 [要件の設定] ダイアログを開き、[選択内容のリンク] タブで [双方向リンクのリンク先を変更] チェック ボックスをオフにします。