モデル駆動開発勉強会 「モデル駆動開発」浅海智晴さん
8/30(土)に開催されたモデル駆動開発勉強会の浅海智晴さんの発表のまとめです。
私が今まで読ませていただいた浅海さんの書籍、記事と同様に、とても分かりやすく、かつ刺激的な内容でした。
浅海さんありがとうございました!
発表資料
■これからの企業システム開発
・販売代理店から購買代理店へ変化していく
・新世代のシステムでは、ほとんどのシステムがWebがプラットフォームになる
・新世代のシステムでは、旧世代のシステムと比べて、他との相互作用が複雑になる(クラウド、アプライアンス)
静的なモデルより動的モデルの比重が高くなる
→今までの開発の手法が通じなくなる
→今までの開発手法とは、画面設計して、データ設計して、プログラミングするという方法である
・これからは、モデルをつくるほうがプログラムをつくるより重要になる
■クラウドアプリケーション考
●プログラミング言語
(1)サービスのマッシュアップ
軽量、テキスト志向、Web志向
→動的型付け言語(JavaScript,Ruby,Python,Groovy,PHP,Scala(?)
(2)フレームワーク、サービス、コンポーネントの開発 コンポーネントの再構成が起こる
静的型つけ、クラスライブラリ、標準API,ミドルウェア、分散、並行/並列、非同期
→Java, C#,Scala
●アーキテクチャ
・サービス指向
いままで、コンポーネントが流行らなかった理由は、テクニカル要因以外
SAAS/PAAS コンポーネントの普及によって、コンポーネントの再利用が自然に行われる
コンポーネントの公開方法がポイントとなる
・分散、並行/並列、非同期
過度の仮想化(性能透過性、障害透過性)は期待しない
・連携方式
Webサービス/REST,分散ストレージ、メッセージキュー
・メッセージ・キューを介する方法が本命であろう
・新しいアプリケーションの作り方
アルゴリズムから自動的に並行処理を切り出し並列・分散処理できる処理系が理想
→関数型言語
■モデリング
・分散、並行/並列、非同期
・コンポーネントベース開発(CBD)
ソフトウェア部品の再利用が本格化
・業務志向
・モデル駆動開発
・並行/並列・分散をプログラミングするのは大変困難
・抽象度の高いモデルから自動生成
■UMLの長所と短所
・長所
唯一の標準オブジェクトモデル記法である
メタ・モデルが厳密に定義されている
グラフィカル言語
・短所
UMLだけでは、完全に記述できない
作業効率は必ずしも高くない
モデル・リポジトリの操作性がよくない
大規模開発に必ずしも適していない
自然言語情報の取り扱いが不十分
→用語集などとUMLとの関連が不十分
■中流モデリング
中流とは、上流開発(ビジネスモデリング、EA、SOA,アーキテクト視点)、下流(プログラミング)の間に存在するフェーズのこと
中流の現状
ビジネス・モデリングを実装に結びつける具体的な手法がすっぽりと抜け落ちている
・開発方法論の問題
画面駆動&データ設計(ER図)
・新しい現実
EA,SOA
クラウド・コンピューティング
業務モデリングをITシステム開発につなげていくところが大事
MDAがうまく行かないとおもう理由
UML
UMLは汎用的すぎる
■今後の取り組み
・Simple Modeling
開発方法論のメタモデルを定義
ドメインモデルをハブとした連携
軸となるのはモデル連携
Excelによるモデル記述
・マインドマップモデリング
■DSL駆動開発の論点
自動生成できる範囲を明確にする
適用対象を絞り込む
開発プロセスを定義する
主力の記述言語にUMLを使用しない
主力の記述言語にグラフィカル言語を使用しない
メタモデルの定義にMOFを使用しない
記述言語はツールからの操作性を重視する
自然言語を定型的に取り扱える
ダイナミック言語はDSL記述に向かないのでは
自動補完をやってくれない
DSL実現の選択肢
Excel
物理構造が表形式の集まりに限定される
Scala
Scalaを採用したDSLを開発中
■まとめ
モデル駆動開発が次世代開発技術の焦点
MDA--優秀な教科書として考えているが、直接実務への適用は困難ではないか
今後の活動
ScalaベースのDSLによるモデル記述
SimpleModeler(Relaxer)による、仕様書、プログラム自動生成
今年の目標:100エントリーまであと37。