第3回 MBD(モデルベース開発)プログラミング(プログラマー)経験のある人がモデラーになるために

第3回 MBD【モデルベース開発】解説 コラム
第3回 MBD(モデルベース開発)コラム、今回はプログラミング経験のある人が、円滑にモデラーになれるように、データフローと処理フローの違いを説明します。
この連載コラムでは、Simulink を使った MBD の基礎的な内容を数回に分けてわかりやすくお伝えします。第1回はMBD(モデルベース開発)とは?について、基本的な内容とメリット、注意すべき点を解説。第2回は、モデルベース開発手法4種、MBD導入の影響が大きいアクティビティについて説明しています。
Simulinkモデルとプログラミング言語の違いについて

https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103
プログラマーがモデラーになるには、Simulinkモデルとプログラミング言語の違いを理解するのが近道です。
Simulinkモデルはデータフロー図です。制御工学などを学び、ブロック線図の読み書きに慣れている人は、あまり違和感なくSimulinkモデルを読み書きできるでしょう。
一方、C言語のように多くのプログラミング言語は、データフローではなく、処理フロー(処理の流れ)を記述します。このため、プログラマーがモデラーに転向する際は、モデルがデータフロー図であることに最初は戸惑うかもしれません。
本コンテンツでは、「長さ10の配列である変数aの算術平均値と変数bの和を、変数cに代入する。ただし、変数aの算術平均値が負の場合は、変数cに0を代入する」という簡単な題材を使って、データフローと処理フローの違いを説明します。
C言語プログラム

https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103
C言語をはじめとする多くのプログラミング言語は手続き型であり、順次、分岐、反復という制御構文の組み合わせで実装していきます。この結果、プログラムには、「処理の流れ」が記述されます。
左側のプログラムと同じ処理をフローチャートで表したものが右側の図です。処理を箱の中に記載し、制御構文を矢印や判断を表すひし形で表現します。
Eureka Boxは厚生労働省が実施している助成金、人材開発支援助成金の適用対象となります。
Simulinkモデル

https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103
さきほどのC言語プログラムと同じ処理を行うSimulinkモデルは、このようになります。
Simulinkモデルはデータフローを記述します。データフローを表す図ではデータフロー図がよく使われますが、データフロー図での「プロセス」がSimulinkモデルのブロックに、データフローが信号線に相当します。
データを表す信号線でブロック間が結線されるため、処理の入出力や、データの更新、参照箇所が明確になります。
比較

https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103
C言語やフローチャートと、Simulinkモデルを比較してみましょう。
フローチャートとSimulinkモデルはいずれも有向グラフですが、矢印線の意味するものが異なります。フローチャートの矢印線は、どちらの処理に進むかを表す処理フローです。一方、Simulinkモデルの矢印線は、データフロー、つまりデータの流れを表しています。混同しないように注意してください。
また、処理の順序については、C言語の場合、プログラムの制御構文で指定した順序で処理が実行されます。一方、Simulinkモデルはデータフローしか記述せず、実行順序は表現していません。処理順序、つまりSimulinkモデルのブロックの実行順序は、モデルのコンパイル時にデータの入出力関係などからSimulinkが自動的に決定します。分岐や反復については、該当するブロックを使って表現します。
MBD(モデルベース開発)を実際に学んでみる
MBDの技術を実際に学んでみたいという方に、まずは無料でお試しいただけるオンライン学習プラットフォームをご提供しております。
業務が多忙なエンジニアでも、スキマ時間で効率的に実践的な学習が出来るEureka Boxは、エンジニアの現場の声から生まれたツールです。
ソフトウェア開発を改善するための開発技術を“知り・学び”“実践する”
超実践的オンライン学習プラットフォーム
Eureka Box(ユーリカボックス)
MBD(モデルベース開発)を正しく理解した上で適用し、最大限の効果を得られるようスキルアップしたい方にもEureka Boxでの学習はお勧めで、無料会員登録だけでも以下の特典が受けられます。
- 各連載コラムの全容、未公開コラムも一気にまとめて読める(一部動画解説付!)
- USDM(要求記述)、MBD(モデルベース開発)、システムズエンジニアリング、AWS Greengrass(新世代エッジエンジニアのための技術講座)など、ソフトウェア開発に関わる知識がギュッと凝縮、困った時のお助けアイテムとしても長期で活用出来る
- ソフトウェア開発に関わる無料お試しコンテンツも充実
まとめ

https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103
同じ処理内容を、モデルとプログラムで比較することで、両者の共通点と差異を感じられたでしょうか。一概にどちらがいいとは言えませんが、デジタル信号処理に限定すれば、Simulinkモデルの方が、人間の思考に近く「やりたいこと」を表現しており、C言語やフローチャートの方が、厳密に記載されていて機械にやさしいように思えます。
補足ですが、先ほどのSimulinkモデルからコードを生成すると、最初に紹介したC言語のプログラムとほぼ同じコードが生成されます。また、SimulinkにStateflowを組み合わせると、Simulink上でもフローチャートのモデリングができるようになります。
コンサルティングサービスのご案内
システム・ソフトウェア開発の問題を解決するエクスモーションのコンサルティング。
エクスモーションのコンサルタントは、日本を代表する自動車メーカーや、医療機メーカー等の支援を数多く手掛け、実績を作ってきました。そのノウハウを持って開発現場の皆さまと一緒に手を動かし、状況に合った最適解を導き出すので、ご利用いただいた企業様より大変ご好評をいただいております。