2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Simulinkモデルの複雑度を管理してメンテ性アップ

Posted at

Simulinkでモデルの複雑度を計測することができることをご存じでしょうか。

複雑度とは

複雑度とは 名前の通り、対象のモデルがどのくらい複雑なのかを数字で表します。Simulinkでは循環的複雑度という指標が用いられます。イメージとしては処理の分岐数≒複雑度。複雑なモデルほど可読性が低く、モデルを修正する際にバグが混入しやすくなってしまいます。

 下図はMathWorks社が提唱している複雑度とバグ混入率の関係表です。
複雑度が75以上の場合、何か変更を加えるとほぼ確実にバグが入ってしまうことになります。バグの混入を防ぐために、複雑度30未満を意識してモデルを作成しましょう。

image-13.png
(https://jp.mathworks.com/discovery/cyclomatic-complexity.html)

例として下図のようなSwitchブロックが2つの単純なモデルの複雑度は2になります。
image-15.png
下図のような3通りの出力パターンがあるMultiportSwitchの場合の複雑度は3になります。
image-14.png

複雑度の計測方法

R2019bの場合
複雑度を計測したい階層で右クリック→メトリクスダッシュボードをクリック
image-16.png

メトリクスダッシュボードウィンドウが開くので、すべてのメトリクスボタンをクリック。クリックすると解析が始まります。image-17.png

解析が完了するとモデルの複雑度解析結果が更新されます。image-19.png

解析が完了するとモデルの複雑度解析結果が更新されます。
image-20.png

複雑度の低減方法

モデルの複雑を低減するには、適切な粒度でモデルをサブシステム化することが有効です。(1つのサブシステムに処理を書き込みすぎない)

まとめ

このページでは複雑度の概要と計測方法、そして複雑度の低減方法を紹介しました。複雑なモデルはメンテナンス性が低くなってしまいます。メンテナンスしやすい(=ほかの人も見やすい)モデルを作るために意識的に複雑度の低いモデルを作成しましょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?