•  

コラム

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

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

MBD
  • LINEで送る
  • このエントリーをはてなブックマークに追加
第3回 MBD(モデルベース開発)プログラミング(プログラマー)経験のある人がモデラーになるために

第3回 MBD【モデルベース開発】解説 コラム

第3回 MBD(モデルベース開発)コラム、今回はプログラミング経験のある人が、円滑にモデラーになれるように、データフローと処理フローの違いを説明します。

この連載コラムでは、Simulink を使った MBD の基礎的な内容を数回に分けてわかりやすくお伝えします。第1回はMBD(モデルベース開発)とは?について、基本的な内容とメリット、注意すべき点を解説。第2回は、モデルベース開発手法4種、MBD導入の影響が大きいアクティビティについて説明しています。



Simulinkモデルとプログラミング言語の違いについて

Simulinkモデルとプログラミング言語の違い
※引用 Eureka Box(ユーリカボックス)はじめてのMBD プログラマーがモデラーになるために
https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103

プログラマーがモデラーになるには、Simulinkモデルとプログラミング言語の違いを理解するのが近道です。

Simulinkモデルはデータフロー図です。制御工学などを学び、ブロック線図の読み書きに慣れている人は、あまり違和感なくSimulinkモデルを読み書きできるでしょう。

一方、C言語のように多くのプログラミング言語は、データフローではなく、処理フロー(処理の流れ)を記述します。このため、プログラマーがモデラーに転向する際は、モデルがデータフロー図であることに最初は戸惑うかもしれません。

本コンテンツでは、「長さ10の配列である変数aの算術平均値と変数bの和を、変数cに代入する。ただし、変数aの算術平均値が負の場合は、変数cに0を代入する」という簡単な題材を使って、データフローと処理フローの違いを説明します。



C言語プログラム

C言語プログラム
※引用 Eureka Box(ユーリカボックス)はじめてのMBD プログラマーがモデラーになるために
https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103

C言語をはじめとする多くのプログラミング言語は手続き型であり、順次、分岐、反復という制御構文の組み合わせで実装していきます。この結果、プログラムには、「処理の流れ」が記述されます。

左側のプログラムと同じ処理をフローチャートで表したものが右側の図です。処理を箱の中に記載し、制御構文を矢印や判断を表すひし形で表現します。



ご不明点・ご相談ごとがあれば
お気軽にご連絡ください

ソフトウエア開発オンライン学習Eureka Box

Eureka Boxは厚生労働省が実施している助成金、人材開発支援助成金の適用対象となります。

詳細はこちら
人材開発支援助成金


Simulinkモデル

Simulinkモデル
※引用 Eureka Box(ユーリカボックス)はじめてのMBD プログラマーがモデラーになるために
https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103

さきほどのC言語プログラムと同じ処理を行うSimulinkモデルは、このようになります。

Simulinkモデルはデータフローを記述します。データフローを表す図ではデータフロー図がよく使われますが、データフロー図での「プロセス」がSimulinkモデルのブロックに、データフローが信号線に相当します。

データを表す信号線でブロック間が結線されるため、処理の入出力や、データの更新、参照箇所が明確になります。



比較

C言語やフローチャートと、Simulinkモデルの比較
※引用 Eureka Box(ユーリカボックス)はじめてのMBD プログラマーがモデラーになるために
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(ユーリカボックス)
超実践的オンライン学習プラットフォームlink



MBD(モデルベース開発)を正しく理解した上で適用し、最大限の効果を得られるようスキルアップしたい方にもEureka Boxでの学習はお勧めで、無料会員登録だけでも以下の特典が受けられます。

Eureka Box会員登録特典(無料)
  1. 各連載コラムの全容、未公開コラムも一気にまとめて読める(一部動画解説付!)
  2. USDM(要求記述)、MBD(モデルベース開発)、システムズエンジニアリング、AWS Greengrass(新世代エッジエンジニアのための技術講座)など、ソフトウェア開発に関わる知識がギュッと凝縮、困った時のお助けアイテムとしても長期で活用出来る
  3. ソフトウェア開発に関わる無料お試しコンテンツも充実


まとめ

MBDモデルベース開発3のまとめ
※引用 Eureka Box(ユーリカボックス)はじめてのMBD プログラマーがモデラーになるために
https://member.eureka-box.com/products/10/categories/2150049210/posts/2157525103

同じ処理内容を、モデルとプログラムで比較することで、両者の共通点と差異を感じられたでしょうか。一概にどちらがいいとは言えませんが、デジタル信号処理に限定すれば、Simulinkモデルの方が、人間の思考に近く「やりたいこと」を表現しており、C言語やフローチャートの方が、厳密に記載されていて機械にやさしいように思えます。

補足ですが、先ほどのSimulinkモデルからコードを生成すると、最初に紹介したC言語のプログラムとほぼ同じコードが生成されます。また、SimulinkにStateflowを組み合わせると、Simulink上でもフローチャートのモデリングができるようになります。

株式会社エクスモーション シニアコンサルタント 三輪 有史

執筆者プロフィール

株式会社エクスモーション シニアコンサルタント

三輪 有史

 

専門分野:

自動車、MBDモデルベース開発、機能安全対応支援



診断・現場支援・人材育成をトータルで

コンサルティングサービスのご案内

システム・ソフトウェア開発の問題を解決するエクスモーションのコンサルティング。

エクスモーションのコンサルタントは、日本を代表する自動車メーカーや、医療機メーカー等の支援を数多く手掛け、実績を作ってきました。そのノウハウを持って開発現場の皆さまと一緒に手を動かし、状況に合った最適解を導き出すので、ご利用いただいた企業様より大変ご好評をいただいております。

モデルベース開発(MBD)支援のコンサルティングなら


関連コラム

  • LINEで送る
  • このエントリーをはてなブックマークに追加

技術別コラム一覧

要求の定義と仕様化(USDM)

ROS

システムズエンジニアリング

クラウド技術
(AWS Greengrass)

Docker

モデルベース開発(MBD)

派生開発(XDDP)

SPL

用語集