1. HOME
  2. コラム
  3. コラム
  4. Simulinkモデルの品質劣化を防ぐ品質改善手法(リファクタリング)

Simulinkモデルの品質劣化を防ぐ品質改善手法(リファクタリング)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
Simulinkモデルの品質劣化を防ぐ品質改善手法(リファクタリング)

MATLAB/Simulinkモデルを使った開発では、制御ロジックの再利用率が高くバリエーションが多い製品の場合、ひとつのモデルを維持修正しながら開発が行われることが多くなります。しかし、このような開発が繰り返されると、徐々にMATLAB/Simulinkモデルの品質が劣化していき、開発に悪影響を及ぼすようになります。これを防ぐには、MATLAB/Simulinkモデルの品質を改善する活動を継続的に行うことが重要になってきます。

では、どうすればMATLAB/Simulinkモデルの品質を改善することができるのでしょうか?

品質の改善を行うには、まず、MATLAB/Simulinkモデルに混入した問題点を発見すること、そしてその問題に適切な対策を行うことが必要です。

ここでは、具体的に二つの改善手法をご紹介します。一つはメトリクスを用いることで品質を改善する方法、もう一つはモデルのクローンを検出することで品質を改善する方法です。

現状はモデルの品質に問題がない場合でも、メトリクスの測定やクローンの検出を定期的に行うことで、品質が劣化した時にすぐに気付くことができ、開発に悪影響を及ぼす前に対策することができます。

まずはMATLAB/Simulinkモデルの品質の現状を知るために、メトリクスの測定とクローンの検出を実践することをお勧めします。

1、メトリクスによる品質改善

メトリクスとは、対象のものを様々な視点から定量的に計測した情報のことで、MATLAB / Simulinkモデルからも得ることができます。メトリクスにはMATLAB / Simulinkモデルの様々な特性が表れるため、これを評価することでモデルに問題があるかどうかを検討することができます。

ここでは、メトリクスを用いて品質を改善する方法のイメージをつかんでいただくために、二つの例を示しながら解説していきます。

例1)ブロック数から規模が適切でないサブシステムを検出して改善

この例では、サブシステムに含まれるブロック数を調べることで、規模の適切さを評価します。

サブシステムの規模が大きすぎる場合、そこには多くの処理が詰め込まれており、理解や修正がしにくくなっていることが考えられます。

図1のMATLAB / Simulinkモデルの各サブシステムに対し、ブロック数を計測した結果を示したのが図2です。

車載開発~MATLAB / Simulinkモデルの品質改善手法(リファクタリング)1:メトリクスによる品質改善例1)ブロック数から規模が適切でないサブシステムを検出して改善|図1:評価対象のSimulinkモデル、図2:サブシステムごとのブロック数

このデータを見ると、Cというサブシステムのブロック数が他と比べて多い、つまり、規模が大きく、多くの処理を行っている可能性があることが分かります。

そこで、Cの内部処理がどうなっているか確認してみます(図3)。このモデルを解析すると、ある数式を計算する"計算処理A"、別の数式を計算する"計算処理B"、条件によってそれらの計算結果のどちらを採用するかを判定する"判定処理"という三つの処理を行っていることが分かりました。三つの処理が詰め込まれた結果、ブロック数が多くなっていたわけです。

サブシステムCの問題点が分かったので、それを改善してみましょう。この例では複数の処理がひとつのサブシステムに詰め込まれていることが問題なので、これらの処理を別のサブシステムとして分離します(図4)。

車載開発~MATLAB / Simulinkモデルの品質改善手法(リファクタリング)1:メトリクスによる品質改善例1)ブロック数から規模が適切でないサブシステムを検出して改善|図3:Cの内部処理のモデル
車載開発~MATLAB / Simulinkモデルの品質改善手法(リファクタリング)1:メトリクスによる品質改善例1)ブロック数から規模が適切でないサブシステムを検出して改善|図4:改善後のモデル

この改善によって各サブシステムの規模が適切になりました。そして、それぞれが単一の処理だけを行うようになり(凝集度が向上)、そのサブシステムで何の処理をしているかが明確になりました。

例2)経路複雑度から処理が複雑なサブシステムを検出して改善

この例では、サブシステムの経路複雑度からそのサブシステムの処理の複雑さを評価します。経路複雑度とはSwitchブロックやIfブロックの数、Multiport Switchブロックの入力数といった分岐の数を元に計測されるメトリクスで、分岐が多くなると処理が実行されるパスが多くなることから、処理の複雑さを測る指標として用いられます。

サブシステムの処理が複雑だと、その処理の内容が理解できなかったり、修正するにもどこから手をつけてよいか分からなかったりと、そのモデルを保守することがとても難しくなります。

ここで、あるMATLAB / Simulinkモデルの各サブシステムの経路複雑度を計測した結果を見てみましょう(図5)。

このデータを見るとJというサブシステムの経路複雑度が高い値を示していることが分かります。

そこで、Jの内部処理を見てみます(図6)。

車載開発~MATLAB / Simulinkモデルの品質改善手法(リファクタリング)1:メトリクスによる品質改善例2)経路複雑度から処理が複雑なサブシステムを検出して改善|図6:Jの内部処理のモデル
車載開発~MATLAB / Simulinkモデルの品質改善手法(リファクタリング)1:メトリクスによる品質改善例2)経路複雑度から処理が複雑なサブシステムを検出して改善|図5:サブシステムごとの経路複雑度

Multiport SwitchブロックやSwitchブロックが多く、どのような条件でどのような判定を行っているか分かりにくくなっています。

このように分岐が多く複雑な処理を改善するには、ある分岐のまとまりごとにサブシステムに分離することが効果的です。

車載開発~MATLAB / Simulinkモデルの品質改善手法(リファクタリング)1:メトリクスによる品質改善例2)経路複雑度から処理が複雑なサブシステムを検出して改善|図7:改善後のJのモデル

Jの場合、Multiport Switchブロックへの入力となっている部分をそれぞれサブシステムにしてみます。その結果、図7のようなモデルとなり、このサブシステムの処理の複雑さを軽減することができました。

このようにサブシステムの処理の複雑さを下げると、分かりやすさが向上するだけでなく、動作の検証がしやすくなるというメリットがあります。

二つの例で示したように、メトリクスを用いることでMATLAB / Simulinkモデルの問題点を発見することが容易になり、改善を効率的に行えるようになります。

2、クローン検出による品質改善

MATLAB / Simulinkモデルにおけるクローンとは、コピー&ペーストなどにより他の箇所にも同じブロックを組み合わせた同一の処理が存在することを言います。コピー&ペーストすることで開発効率が向上するように考えがちですが、モデルに不具合があった場合に、コピーしたモデルを全て修正しなければならず作業量が増大しますし、修正漏れの危険性もあります。そのためクローン化されたモデルを早期に発見して対策を行う必要があるわけです。

クローン化されたモデルを改善する例として、あるサブシステムK(図8)とサブシステムL(図9)の内部処理を見てみます。

車載開発~Simulinkモデルの品質改善手法(リファクタリング):クローン検出による品質改善|図8:Kの内部処理のモデル、図9:Lの内部処理のモデル

これらのモデルをよく見てみると、破線で囲った部分はブロックが同じ組み合わせで結ばれており、同じ処理を行っていることが分かります。この部分がクローンです。

クローンの部分は入力信号とConstantブロックの値以外は同じですので、それらを入力に持つサブシステムを作成し、そこにこの処理を移動させてみましょう(図10)。このサブシステムを例えばライブラリブロックとして定義し、KとLでそのブロックを利用するように変更すれば(図11)、仮にその処理を変更する場合でもライブラリを修正するだけで済みます。

車載開発~MATLAB / Simulinkモデルの品質改善手法(リファクタリング):クローン検出による品質改善|図10:共通処理をライブラリ化、図11:ライブラリを使うようにKを変更(Lも同様)

このように、モデルのクローンを発見し、共通処理をライブラリ化することができればモデルの保守性が向上しますし、ライブラリが充実していくことで開発効率の向上も期待できます。また、ライブラリが様々なところで利用されることでその信頼性も向上します。しかし、全てのクローンを目視で見つけることは困難です。ツールを用いて自動的にクローンを検出することが現実的です。

以上のような手法を用いることでMATLAB / Simulinkモデルを改善することができます。また、現状ではモデルの品質に問題がない場合でも、メトリクスの測定やクローンの検出を定期的に行うことで、品質が劣化した時にすぐに気付くことができ、開発に悪影響を及ぼす前に対策することができます。

まずはMATLAB / Simulinkモデルの品質の現状を知るために、メトリクスの測定とクローンの検出を実践することをお勧めします。

サービスに関するご相談は
こちらからお願いします
  • LINEで送る
  • このエントリーをはてなブックマークに追加