MDA ?

実は私はソフトウェアちっくな仕事をしています。

最近までは、例の熱いコーヒーか南の島を連想させる言語*1を使っ、がりがりとプログラムを書いていたのですが、8月から始まった今の仕事ではとうとう手馴れた言語や開発環境を離れて、これってシミュレーション用のツールだと思うけど Matlab を使って仕事をすることになりました。

Simulink ってブロック図を書いてシミュレーションを行うものとか、Simulink と一緒に状態遷移図書いて、シミュレーションを組む Stateflow とかいうものをお勉強中です。Matlab には C 言語とのリンクを取ったり、専用の M 言語とかいうスクリプト言語もあるそうなのだが、せっかく図的にシステムが組めるならとことんそこに拘ってみようと色々とやっている訳ですが。・・・・

わからん。・・・・・・ <(;_;)>

何がわからないかって、今までブロック図とか殆ど扱った事の無い人間に 「Simulink によって制御ブロック図から制御用ソフトウェアを自動的に生成できるから、開発作業の効率化がはかれるはずだ」とか言われても、その「制御ブロック図」を書いたことの無い人間なんです。私は・・・・・・・・・・

こういうのって最近は MDA*2 とか言うらしく、これからのプログラム開発の一つ大きな流れらしい。MDA なんて名前を付けるとかっこよく聞こえる物であるが、モデルだってプログラムと同じなんだから、同一の機能を実現する上でそれなりの自由度があるし、モデルが下手れだったら結局あとで苦労するだけだと思うし、なんか堂々めぐりだと思う。

幸い状態遷移図なら書いたこと有るので Stateflow を使って色々やってみようと思うのですが、どうもしっくり来ない。遷移や状態を表す記号の中に簡単な式やプログラムを埋め込んでみたり、スコープを決めて変数を定義できたりと、色々便利に作ってあるのは分かるのだが、状態遷移モデルの中にプログラムや変数定義が分散している状況って、プログラムだけでシステムを組んでいる時よりも保守性の面でかえって性質が悪いような気がする。まるで以前 Web システムの開発で JSP*3 みたいな HTML に Java のソースを埋め込んでコーディングを行う仕組みを使う場合、けっこう気をつけないと画面のデザインとプログラムの挙動が固く結びつくのでソースの保守性がた落ちでひどい目にあった見たいな感じ。

元々状態遷移図を書くってのはシステムの設計段階での話なんだけど、その過程で実装を意識したような手順を踏まないといけないのはどうもしっくり来ない。すぐ動かせるが故に、却って頭の中でよく反芻しながら構成を考える事がなおざりになる可能性もある。結局、手書きか手馴れたお絵かきツールで状態遷移図を書いて、それを清書する形で Stateflow を使うと言う形になりそうな気がする。やはりなれない環境では苦労する物である。ただ安直に MDA という言葉に乗っかって、その手をツールを使い、モデルから直に実装に入るようなシステム開発って融通を利かせようとしたとたん、なんか落とし穴に入っていきそうな気がする。

うーん、図を書いてシステムを組むのに慣れるまでしばらく苦労が続きそうだ・・・・・

*1:Java のことです。

*2:Model driven Architecture の略だそうです。

*3: Java Server Page の略