Simulinkモデルの品質劣化を防ぐ品質改善手法(リファクタリング)
MATLAB/Simulinkモデルを使った開発では、制御ロジックの再利用率が高くバリエーションが多い製品の場合、ひとつのモデルを維持修正しながら開発が行われることが多くなります。しかし、このような開発が繰り返されると、徐々にMATLAB/Simulinkモデルの品質が劣化していき、開発に悪影響を及ぼすようになります。これを防ぐには、MATLAB/Simulinkモデルの品質を改善する活動を継続的に行うことが重要になってきます。
では、どうすればMATLAB/Simulinkモデルの品質を改善することができるのでしょうか?
品質の改善を行うには、まず、MATLAB/Simulinkモデルに混入した問題点を発見すること、そしてその問題に適切な対策を行うことが必要です。
ここでは、具体的に二つの改善手法をご紹介します。一つはメトリクスを用いることで品質を改善する方法、もう一つはモデルのクローンを検出することで品質を改善する方法です。
現状はモデルの品質に問題がない場合でも、メトリクスの測定やクローンの検出を定期的に行うことで、品質が劣化した時にすぐに気付くことができ、開発に悪影響を及ぼす前に対策することができます。
まずはMATLAB/Simulinkモデルの品質の現状を知るために、メトリクスの測定とクローンの検出を実践することをお勧めします。
1、メトリクスによる品質改善
メトリクスとは、対象のものを様々な視点から定量的に計測した情報のことで、MATLAB / Simulinkモデルからも得ることができます。メトリクスにはMATLAB / Simulinkモデルの様々な特性が表れるため、これを評価することでモデルに問題があるかどうかを検討することができます。
ここでは、メトリクスを用いて品質を改善する方法のイメージをつかんでいただくために、二つの例を示しながら解説していきます。
例1)ブロック数から規模が適切でないサブシステムを検出して改善
この例では、サブシステムに含まれるブロック数を調べることで、規模の適切さを評価します。
サブシステムの規模が大きすぎる場合、そこには多くの処理が詰め込まれており、理解や修正がしにくくなっていることが考えられます。
図1のMATLAB / Simulinkモデルの各サブシステムに対し、ブロック数を計測した結果を示したのが図2です。
このデータを見ると、Cというサブシステムのブロック数が他と比べて多い、つまり、規模が大きく、多くの処理を行っている可能性があることが分かります。
そこで、Cの内部処理がどうなっているか確認してみます(図3)。このモデルを解析すると、ある数式を計算する"計算処理A"、別の数式を計算する"計算処理B"、条件によってそれらの計算結果のどちらを採用するかを判定する"判定処理"という三つの処理を行っていることが分かりました。三つの処理が詰め込まれた結果、ブロック数が多くなっていたわけです。
サブシステムCの問題点が分かったので、それを改善してみましょう。この例では複数の処理がひとつのサブシステムに詰め込まれていることが問題なので、これらの処理を別のサブシステムとして分離します(図4)。
この改善によって各サブシステムの規模が適切になりました。そして、それぞれが単一の処理だけを行うようになり(凝集度が向上)、そのサブシステムで何の処理をしているかが明確になりました。
例2)経路複雑度から処理が複雑なサブシステムを検出して改善
この例では、サブシステムの経路複雑度からそのサブシステムの処理の複雑さを評価します。経路複雑度とはSwitchブロックやIfブロックの数、Multiport Switchブロックの入力数といった分岐の数を元に計測されるメトリクスで、分岐が多くなると処理が実行されるパスが多くなることから、処理の複雑さを測る指標として用いられます。
サブシステムの処理が複雑だと、その処理の内容が理解できなかったり、修正するにもどこから手をつけてよいか分からなかったりと、そのモデルを保守することがとても難しくなります。
ここで、あるMATLAB / Simulinkモデルの各サブシステムの経路複雑度を計測した結果を見てみましょう(図5)。
そこで、Jの内部処理を見てみます(図6)。
Multiport SwitchブロックやSwitchブロックが多く、どのような条件でどのような判定を行っているか分かりにくくなっています。
このように分岐が多く複雑な処理を改善するには、ある分岐のまとまりごとにサブシステムに分離することが効果的です。
Jの場合、Multiport Switchブロックへの入力となっている部分をそれぞれサブシステムにしてみます。その結果、図7のようなモデルとなり、このサブシステムの処理の複雑さを軽減することができました。
このようにサブシステムの処理の複雑さを下げると、分かりやすさが向上するだけでなく、動作の検証がしやすくなるというメリットがあります。
二つの例で示したように、メトリクスを用いることでMATLAB / Simulinkモデルの問題点を発見することが容易になり、改善を効率的に行えるようになります。
2、クローン検出による品質改善
MATLAB / Simulinkモデルにおけるクローンとは、コピー&ペーストなどにより他の箇所にも同じブロックを組み合わせた同一の処理が存在することを言います。コピー&ペーストすることで開発効率が向上するように考えがちですが、モデルに不具合があった場合に、コピーしたモデルを全て修正しなければならず作業量が増大しますし、修正漏れの危険性もあります。そのためクローン化されたモデルを早期に発見して対策を行う必要があるわけです。
クローン化されたモデルを改善する例として、あるサブシステムK(図8)とサブシステムL(図9)の内部処理を見てみます。
これらのモデルをよく見てみると、破線で囲った部分はブロックが同じ組み合わせで結ばれており、同じ処理を行っていることが分かります。この部分がクローンです。
クローンの部分は入力信号とConstantブロックの値以外は同じですので、それらを入力に持つサブシステムを作成し、そこにこの処理を移動させてみましょう(図10)。このサブシステムを例えばライブラリブロックとして定義し、KとLでそのブロックを利用するように変更すれば(図11)、仮にその処理を変更する場合でもライブラリを修正するだけで済みます。
このように、モデルのクローンを発見し、共通処理をライブラリ化することができればモデルの保守性が向上しますし、ライブラリが充実していくことで開発効率の向上も期待できます。また、ライブラリが様々なところで利用されることでその信頼性も向上します。しかし、全てのクローンを目視で見つけることは困難です。ツールを用いて自動的にクローンを検出することが現実的です。
以上のような手法を用いることでMATLAB / Simulinkモデルを改善することができます。また、現状ではモデルの品質に問題がない場合でも、メトリクスの測定やクローンの検出を定期的に行うことで、品質が劣化した時にすぐに気付くことができ、開発に悪影響を及ぼす前に対策することができます。
まずはMATLAB / Simulinkモデルの品質の現状を知るために、メトリクスの測定とクローンの検出を実践することをお勧めします。
コンサルタント
【専門分野】
自動車、MBDモデルベース開発、機能安全対応支援
エクスモーションが提供するMBD関連サービス
MBDモデルベース開発における品質開発のアウトソーシング
量産用の開発では品質が担保されたモデルを開発しなくてはなりません。しかし、新たな機能開発で多忙な中、品質確保のために時間や労力を割くことは困難です。エクスモーションは、得意とする品質開発のための専門技術を使って、お客さまに代わりモデルの品質を確保します。
Matlab/Simulinkモデルのシミュレーション検証
MATLAB/Simulink やカバレッジ測定ツールなどと連携する自動化ツールを導入し、効果的なシミュレーション検証をより効率的に低コストで実施するお手伝いをします。
Matlab/Simulinkモデルのリファクタリング支援
保守性が下がったMATLAB/Simulink モデルにおける品質上の問題点を明らかにし、品質改善を目的としたリファクタリング(設計改善)の計画作成と実施、評価までを一括して請け負います。
HILS活用支援
運用プロセスや自動テストシステムの構築など、 HILSを効果的かつ継続的に利用できる仕組みを考え、「使える」HILSの環境づくりをご支援を致します。
車載開発 関連コラム
「派生開発」を続けながら、自動車の機能安全規格「ISO26262」に対応する時のポイント
MBD関連ソリューション
MBD開発支援
MBD関連セミナー
Matlab/SimulinkによるMBDモデルベース開発実践トレーニング
保守性が下がったMATLAB/Simulink モデルにおける品質上の問題点を明らかにし、品質改善を目的としたリファクタリング(設計改善)の計画作成と実施、評価までを一括して請け負います。
こちらからお願いします