Cコードをモデルへ移行する際の注意点


モデルベース開発が流行ってきて、
Cコード→Simulinkに変換するケースが増えてきていますが、
あまり効果的でないプロジェクトをたまに見かけます


あまり良くないパターンとしては、
とりあえず、Cコードに近い記述ができるState flow(フローチャート)に変換する方法です

まずは動くモデルを作成したくて、簡単なやり方でトライしたい気持ちは分かりますが、
例えば、この方法だと規模が大きくなるにつれ、ロジック全体の理解や変更作業が難しくなるため
モデルベース開発のメリットが薄れていきます

※モデル化する目的がシミュレーションなら、CコードをS-Function化する方法を推奨します

そもそも、モデル化する目的やメリットは何でしょうか?

モデル化するメリットは複数ありますが、一つはソフトウェアの抽象化です

この抽象化によって
ソフトウェア設計の簡素化、再利用やメンテナンス性が格段にあがり、
大規模なソフトウェア開発に対応する品質を得ることができます

歴史を振り返るとソフトウェア言語は下記のように抽象化が進んでおり、
各ソフトウェア言語の特徴を活かして開発が進んでおります。
 アセンブラ → C言語 → モデル(Simulink)

裏を返すと、例えば、アセンブラ風のCコードを書かないはずですし、
C言語風のSimulinkモデルを作成しないと思います

抽象化を実現するためには、Simulinkモデルの適切なモデリングが必要になるため、
モデルを作成するために、その特徴を把握しておきましょう

まとめ

弊社では、とりあえず動かしたいからといって、
すぐにモデルを作成し始めることは推奨しておりません

特に「動かすこと」にフォーカスしたモデルは、開発中盤から終盤での不具合が収まりません

安易にモデル化せずに、モデリングの特徴および目的をよく整理してから
モデル作成に着手しましょう