can't go to sleep

組み込み開発の多くをRubyで自動化することに興味があります

SysMLとソフトウェアエンジニアリング

 SysMLを使うと何が改善されるのかを、以下で書いてみます。

 

会社のおっさん達は良く、以下のようなことを言います。

・・・完全に破綻してます。

 

まず、SPLをしたいならソフトウェアのモデリングは必須であり、そのためにオブジェクト指向的考え方は必須となります(オブジェクト指向言語とか実装ではなく、オブジェクト指向設計の話)。

また、ソースコード自動生成の目的は「楽してソースコードを書くこと」ではなく、「設計と違いの無い実行体を作成すること」です。なので、ソースコードは自動で出てくるけど、漏れが無いように綿密にモデリングする必要があるのです(ExecutableUMLしかり、Matlab/Simulinkしかり)。

 

つまり、いずれにせよソフトを作るときにはもっと「別のところ」に脳みそを使えよ、という話なわけです(この件については、後ほど書く予定です)。

 

で、SysMLです。

SysMLってのは、アーキテクチャ設計に便利なツールで、ざっくり言うとUMLをシステムアーキテクチャ設計にも拡張しよう、というもののようです(ADL)。

その対象範囲ですが、オージス総研は、SysMLはシステム設計だけとしています。

http://www.ogis-ri.co.jp/event/docs/f-01e-00000288_SysML.pdf

一方テクノロジックアートは、SysMLはソフトウェア詳細設計の前までですよ、としています。

http://www.umlcert.org/news/pdf/100128_sysml_03.pdf

更に豆蔵は、テストにも使えるよ、みたいな書き方をしています。(インプットがSysMLならテストケースもSysMLに対応するのが当たり前なので、間違っていないのですが)

http://labo.mamezou.com/special/sp_018/sp_018_001.html

おそらく、全員同じことを言っていて、オージス総研の立場からすると、ソフトウェアのアーキテクチャ設計はUMLを使いましょう、という意見のような気がします。ただ、SysMLでそのままソフトウェアのアーキテクチャ設計までやれないことは無い気もするので、どちらでも良いと思います。

そもそも、ソフトウェアのアーキテクチャ設計をちゃんとUMLでやってる人は、そのままUML使えるよ、そのインプットがSysMLで明確になるよ、という感じでしょうか。

じゃあ実際にこれからSysMLを使用すると、ソフト屋さんの仕事はどう変わるのか?という話を、半分想像だけれと書いてみます。

SysMLはADLなので、ソフト設計へのインプットが変わります。つまり、UMLで設計するべき箇所と、Matlabでモデリングするべき箇所の分離が明確になります。

これはなかなか重要で、システム要求からのトレーサビリティがわかりやすくなるわけです。

 

ということで、長々とSysMLについて書きましたが、SysMLを使うと何が改善されるのか。それは、ソフトウェアのアーキテクチャ設計へのインプットが明確になる、というものだと、現段階の私は考えています。

いずれにせよ、これからのソフトウェア開発はモデリングがキーワードとして存在するわけで、いかに優れたモデリングが出来るか、というところに注力する必要があるかと思われます。

 

ちなみにデンソーは、以前の日経エレクトロニクスソースコード自動生成の話をしてた。あとで調べてみると、どうやらADLとしてmetaEdit+を使ってるっぽい。

http://www.fuji-setsu.co.jp/files/ADL_MetaEdit2010.pdf

(NEの何号の記事だったか忘れた)。