MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上...

32
copyright , 2007 Be PROUD 1 MDA (Model Driven Architecture) モデル駆動型開発手法 20051210佐藤 治夫

Transcript of MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上...

Page 1: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 1

MDA(Model Driven Architecture)モデル駆動型開発手法

2005年12月10日佐藤 治夫

Page 2: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 2

アウトライン

1.  はじめに~MDAとは2.  システム開発プロジェクトの現状3.  Model Driven Architecture4.  MDAのインパクト

Page 3: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 3

アウトライン

1.  はじめに~MDAとは2.  システム開発プロジェクトの現状3.  Model Driven Architecture4.  MDAのインパクト

Page 4: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 4

1. はじめに~MDAとは

MDAとは(Model Driven Architecture)

モデルを中心として駆動する

自動化技術を活用した開発手法のこと

モデル主にUMLで作成 etc…

①開発するシステムをツールを使用してモデルで表現(モデリング)

②モデルをもとにソースコード等を自動生成

開発者 ソースコード実行コード

Page 5: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 5

アウトライン

 はじめに~MDAとは システム開発プロジェクトの現状

 Model Driven Architecture MDAのインパクト

Page 6: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 6

2. システム開発プロジェクトの現状

ビジネスの成功とITシステムの深い関わり

→ITシステムに対して期待・要求が高まっている

1. 多種多様・複雑な機能の実現2. 短納期かつ高品質3. 高い稼働率4. セキュリティの確保5. 変更への柔軟・迅速な対応

Page 7: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 7

2. システム開発プロジェクトの現状

要求の高まりの結果何が起こっているか

1. 低いプロジェクトの成功率(Quality:品質、Cost:予算、Delivery:納期)が達成されていない

2. 要求実現のためSEは過酷な労働残業、土日出勤は日常茶飯事

3. QCD未達成のためユーザーからの評価が低くなりがち

Page 8: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 8

2. システム開発プロジェクトの現状

理由

1. 開発プロセスが乱立し、模索状態RUP、アジャイル、ウォーターフォール etc…

2. 次々と出現する実装技術Java, C#, Struts , JSF, Spring , Seasar2 , Hibernate , i-Batis , Ajax etc…

3. 依然として手動・目視が中心のテスト

Page 9: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 9

2. システム開発プロジェクトの現状

この幸せとはいえない現状を打開するには?

一つの解

自動化技術を活用した

開発プロセスの確立が鍵

→MDAの導入

Page 10: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 10

アウトライン

1.  はじめに~MDAとは2.  システム開発プロジェクトの現状3.  Model Driven Architecture4.  MDAのインパクト

Page 11: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 11

3. Model Driven Archtecture

MDAの基本概念≪MDA≫≪開発プロセス≫

仕様書

設計書

ユーザーの視点からシステムを表現=実装技術に依存しない

作り手の視点からシステムを表現=実装技術 依存

変換ルール

変換ルール

自動変換

自動変換

仕様分析

設計

実装/テスト

PIM (Platform Independent Model)

PSM (Platform Specific Model)

ソースコード等

要求分析 ※実装技術、プラットフォームとはプログラミング言語・DBなどのこと

〔成果物〕

(注)仕様書=PIMではない

Page 12: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 12

3. Model Driven Archtecture

モデル変換の具体例≪成果物の例≫

PIM

C# Java・Struts+Spring+Hibernate のクラス図・ER図

・Javaソースコード・JSPファイル・設定ファイル・SQLファイル・ビルドファイル

PHP

・ユースケース図・ドメインモデル(クラス図)・画面遷移図(アクティビティ図)

分析レベルのモデル(実装技術非依存)

PSM PSM PSM

ソース ソース ソース

Page 13: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 13

3. Model Driven Archtecture

仕様→設計の手法の特徴

1. 実装技術ごとに一定の設計パターンが存在する(プログラミング言語・フレームワークごと)

2. 設計技術はパターン化することができる。

※パターン化した例

・ エンタープライズ・アプリケーション・アーキテクチャ・パターン

・ デザインパターン

・ J2EEパターン

要求分析

仕様分析

設計

実装/テスト

Page 14: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 14

3. Model Driven Archtecture

設計→実装の手法の特徴

要求分析

設計書の内容をソースとして実装する。→パターン化できる。

①クラス図→クラスのソースコード

②ER図→SQL DDL文③アクティビティ図→画面遷移設定ファイル

(struts-config.xml、faces-config.xml)

仕様分析

設計

実装/テスト

Page 15: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 15

3. Model Driven Archtecture

パターン化から自動化へ

1.分析→設計

2.設計→実装

  パターン化することが可能

その作業は自動化できる

Page 16: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 16

3. Model Driven Archtecture

分析(PIM)→設計(PSM) 変換例

1.連番フィールドの付与

2.多対多モデル

3.フレームワークへのマッピング

Page 17: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 17

3. Model Driven Archtecture

例1連番フィールドの付与

≪PIM≫商品を一意に識別できる商品コード

≪PSM≫変換

レコードを一意に識別できる連番IDを付与

Page 18: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 18

3. Model Driven Archtecture

例2多対多モデル関係テーブルを用いて多対多のデータを格納

≪PSM≫変換

関係テーブル 多対11対多

≪PIM≫

Page 19: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 19

3. Model Driven Archtecture

例3 フレームワークへのマッピング

≪プレゼンテーション層≫ ≪サービス層≫≪DAO層≫換

≪PIM≫変

≪PSM≫

Struts Spring Hibernate

Page 20: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 20

3. Model Driven Archtecture

MDAの効果1. モデルを中心として、分析・設計・実装がマッピングしているので、開発サ

イクルを統一した手法で進めることができる。

2. パターン化できる作業の自動化により品質・生産性の向上が期待できる。

PIM (Platform Independent Model)分析

自動変換変換ルール

PSM (Platform Specific Model)設計

変換ルール自動変換

実装 ソースコード等

Page 21: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 21

3. Model Driven Archtecture

MDAに関連するOMG標準OMG(Object Management Group)がモデリングのための標準を策定

1. UML2.0→MDA対応のため仕様を厳密に定義しなおした。

2. MOF(Meta Object Facility)→モデリング言語を定義するためのメタモデルを定義した仕様

3. XMI(XML Metadata Interchange)→メタモデルをXMLで表現するための仕様

4. QVT(Query View Transformations)→モデル変換定義の標準仕様

Page 22: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 22

MDAにおけるOMG標準の位置づけ

3. Model Driven Archtecture

PIM (Platform Independent Model)モデリング言語(UML2.0など)on MOF

PSM (Platform Specific Model)

ソースコード等

自動変換 変換ルール

QVTXMI

モデリング言語(UML2.0など)on MOF

自動変換

QVT変換ルールXMI

Page 23: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 23

3. Model Driven Archtecture

MDA対応ツール1. Borland Toghether(Borland社)2. Rational Rose(IBM社)3. AndroMDA(オープンソース)

http://www.andromda.org/

4. Optimal J(コンピュウェア社)5. Eclipse

EMF(Eclipse Modeling Framework) , UML2 , GMT(Generative Model Transformer)

     etc….

Page 24: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 24

(参考)AndroMDAの記事

1. Java World 『実践!モデルドリブン開発~AndroMDAで試す近未来のJava開発』2005年5月~12月連載

2. CodeZine『AndroMDAでMDAの世界を体験する(コード生成編・コード分析編)』http://codezine.jp/a/article.aspx?aid=132http://codezine.jp/a/article.aspx?aid=133 

Page 25: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 25

PIM PSM

仕様検討者・モデラー

ソース

テストコード

拡張ソースコード

変換ルール 変換ルール

入力/出力インターフェースが決まっているので、テストコードも自動生成できる

プログラマ

拡張テストコードテスト担当者

自動テスト(ボトムアップの自動化)

テストコードの実装

2つの自動化による高品質開発

自動生成できない部分をコーディング(拡張ポイントに対して)<受け入れテスト>

<外部開発組織><開発発注側>

変換ルール定義者

~MDA活用の展望

ソース・テストコード自動生成(トップダウンの自動化)

3. Model Driven Archtecture

Page 26: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 26

3. Model Driven Archtecture

MDAのこれから課題

1. なにをもってPIMとするかモデリング手法・方法論の確立

2. MDAツールの充実3. 開発プロセスとの統合4. いかに計測し効果を高めていくか

Page 27: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 27

アウトライン

1.  はじめに~MDAとは2.  システム開発プロジェクトの現状3.  Model Driven Architecture4.  MDAのインパクト

Page 28: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 28

4. MDAのインパクト

開発プロジェクトへのインパクト1. 仕様・設計・実装がマッピングしているので、開発サイクル全体を統一した手法で進めることができる。

2. 高品質の成果物・生産性向上→自動化技術のメリットを享受

3. 保守性の向上仕様→設計→実装のトレーサビリティー→モデルは、コードと乖離していない生きたドキュメントとなる

4. モデルによるシステムの「見える化」図表現による直感的な認識共有→関係者間の認識のずれが早期に解消→プロジェクトリスクが低減

Page 29: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 29

4. MDAのインパクト

経営層へのインパクト

1. 株主への説明責任ソフトウェアのリスクをいかに管理しているかが問われる

2. コーポレートガバナンス(企業統治)への活用コーポレートガバナンス=企業の経営を監視する仕組み→ソフトウェアライフサイクルを企業として監視する仕組みが必要となる。(開発・運用・技術・セキュリティ)

3. モデルの資産化

Page 30: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 30

4. MDAのインパクト

モデルの資産化PIMを保守していけば再構築プロジェクトの際もモデルを再利用できる。(資産としてのモデル)

PIM

実装技術に比べて変化が少ない

(時間軸)PSM PSM PSM

Java1.4 Java5 新しい言語

・実装技術は移り変わりが早い。・ベンダーのサポート切れ

Page 31: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 31

4. MDAのインパクト

エンジニアへのインパクト

1. 自動化技術のメリットを享受→生産性・品質の向上→バグ・トラブルの減少→残業・土日勤務の減少

2. 仕様→設計のマッピングを意識することによるエンジニア力の向上

3. 開発プロセス全体を意識した開発

Page 32: MDA (Model Driven Architecture) · →自動化技術のメリットを享受 3. 保守性の向上 仕様→設計→実装のトレーサビリティー →モデルは、コードと乖離していない生きたドキュメントとなる

copyright , 2007 Be PROUD 32

MDA(Model Driven Architecture)

自動化技術を活用した開発プロセスの確立が鍵

END