システムとモデリング

modelica, Julia, Design Structure Matrix, SysML, 他モデリング全般について。

カレーの作り方をSysMLでモデリングする(構造図)

こんにちは!Otepipiです。

モデリング能力を向上させるため、何か身近なものをモデリングしてきたいと考えています。今回はSysMLを使ってカレーの調理工程をモデリングしてみたいと思います。

レシピはハウス食品のWEBサイトにあったものを使用します。

housefoods.jp

 

材料(4人分)

材料 分量
ハウス こくまろカレー<中辛>140g 1/2箱 70g
鶏肉(もも)   150g
玉ねぎ   中1個
じゃがいも   中1個
にんじん   中1/2本
サラダ油   大さじ1
  600ml

 

作り方

  1. 鶏肉、じゃがいも、玉ねぎ、にんじんは一口大に切る。
  2. 厚手の鍋にサラダ油を熱し、(1)の鶏肉、じゃがいも、玉ねぎ、にんじんをよく炒める。
  3. 水を加え、沸騰したらあくを取り、弱火~中火で材料が柔らかくなるまで約15分煮込む。
  4. いったん火を止め、ルウを割り入れて溶かし、再び弱火でとろみがつくまで約10分煮込む。

 

 

構造図(BDD)

レシピの構成をブロック定義図で書き下したのが下記になります。

f:id:Otepipi:20180128160906p:plain

このブロックには食材しかありませんが、調理器具・食器・ガスや電気などのユーティリティーも本来であれば必要かもしれません(これはモデルの"粒度"の問題だと思いますが)。今回、各食材の量の指定が「~g」や「~個」、「大さじ~」など複数の表現に渡っていたのがモデリングの観点からすれば分かり辛い部分でした。この場合、例えば個数は『多重度』で指定することも可能ですが「~g」と言った表現は多重度で支持することが難しいと感じたため、多重度の使用はやめ、values で指定することにしています。

 

次回は振る舞いの表現になります。SysMLでは振る舞いの表現図としてアクティビティ図、シーケンス図、状態機械図の3つの図が用意されています。今回のような料理システムでは食材というオブジェクトがアクティビティに応じて変化していきますので、オブジェクトフローを扱うことができるアクティビティー図が適切だと思います。なので次回はアクティビティー図を用いた料理の振る舞いの様子をモデリングしていきたいと思います。