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の何号の記事だったか忘れた)。