のた犬のうまい猫めし

どら猫が作る、のた犬のための飯、略称、どら飯について語りつつ、各種技術、経済系セミナーに参加した報告、OSSいじってみた等のネタを入れていきます。更新情報はtwitterの@nota_inuにて。

第0回 モデルベースソフトウェア 開発コミュニティキックオフ「モデルベースソフトウェア開発の分析・設計」株式会社テクノロジックアート 長瀬嘉秀氏

 アジャイルプログラミングはコードベース。プログラミング言語を見ると仕様がわかる。プログラミング言語仕様書。一度UMLがはやりモデルベースになり、アジャイルになりコードベースになったが、またモデルベースが注目されている。
 従来型のウォータフォールに対してアジャイル。それに伴いテスト、モデル、ドメイン駆動開発への流れ。
 
要件から、インタフェース、トランザクション、プログラムコード、データベースができてくるが、ダイレクトにコードか。その前にモデルがあるのでは、が重要。
モデル:UMLのモデルだけがモデルではない。幅広く、Enterprise,Business,Object,Process,Data,Stateモデル。
たとえばビジネスプロセスで業務を整理。アクティビティ図で業務を整理。(ロール別。)ユースケースではなく業務フローが先。
その次に概念モデル、データモデル。オブジェクトモデル。(クラス図。)Javaコードで書かれるより構造は読みやすい。
ビジネスの仕組みとして、ビジネスルール、ビジネスエンティティ、など。
アジャイル開発ではアジリティとして迅速なモデルの作成、要件の吸い上げを短期間で。パターンの活用を多くやっていく。パターンは、Design,Analisys,Datamodel,Process,Idiomなど。マーチンファウラーの「アナリシスパターン」本がおすすめ。例えば、組織はPartyパターン。そしてパターンを組み合わせる。


MDAのブレークダウンサンプル】

 

開発手順としては、システム分析、システム設計、コード生成。MDAツール(iUML)で。ユースケースを通して機能を考える。ドメインによる分割(システムの境界を識別するためにシステムをドメインに分割する)。ドメイン:UI、アプリケーション、OSなど。ドメイン間の相互作用はシーケンス図。ドメイン内のクラス図作成。相互作用を定義(シーケンス図で)。ステートチャート図を作成してアクションを記述。(アクション言語で。)クラス図に操作を追加し、オペレーションを記述。(小機能をマージし、クラス図にオペレーションを記述。シーケンス図から操作を拾ってくる。)
システム設計では、MDAマッピングに対応するため、ドメイン間の仲介を行うブリッジを定義。Executable UMLの方法。
設計情報はアーキタイプとして。そうするとJavaコードの生成ができる。モデルに設計情報をうまく入れていく。(モデル内にコードを記載。)
実際のシステムでは、オブジェクト粒度調整が必要。大きすてもコードにならない。

 

 


## ……モデルにコードをきちんと書くことでかなりの部分のコード生成が自動でできるのね……。ただ文法理解の手間はありそうだけど。