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

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

このページではSimulinkモデルの複雑度を下げ、メンテナンス性を上げる方法について解説します。

複雑度とは

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

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

https://jp.mathworks.com/discovery/cyclomatic-complexity.html

例として下図のようなSwitchブロックが2つの単純なモデルの複雑度は2になります。

下図のような3通りの出力パターンがあるMultiportSwitchの場合の複雑度は3になります。

複雑度の計測方法

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

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

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

色がついている箇所(上図では緑色部分)をクリックすると、複雑度の詳細表示画面に遷移します。

複雑度の低減方法

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

まとめ

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

タイトルとURLをコピーしました