メタモデル記述を用いた成果物間の依存関係追跡手法 井上研究室 博士前期課程2年 大平 直宏 2006/02/20 修士論文発表会
モデル駆動型開発 モデル駆動型開発(MDD:Model Driven Development) 全工程を通してモデル※1 をソフトウェア開発の中心とする新しい開発手法 モデルの自動変換,検証,実行といった高度なプログラム処理による効率化 開発者の手の介入を減らすことによる設計漏れ防止,高品質化 ※1 “モデル” = オブジェクト指向分析・設計に基づいて対象の情報を抽象化 したもの.自然言語で記述されていた仕様書や設計書はUML を用いてモデルとして記述されることが多い <struts-config> <data-sources></data-sources> <form-beans> <form-bean name="BeginForm" type="struts.BeginForm" /> モデル化 モデル化 顧客の要求 画面の遷移 システムの構造 要件定義 設計 実装
問題点 モデル駆動型の開発手法を実現するにあたって モデル駆動型の開発手法を実現するにあたって モデル駆動型の開発手法を実現するにあたって 成果物であるモデルをいかに管理するのか モデル間の依存関係をいかに管理するのか モデルは他のモデルとの関係の中で作られる 依存関係にあるモデル群を一貫した状態で管理しなければならない モデル駆動型の開発手法を実現するにあたって 成果物であるモデルをいかに管理するのか 成果物の仕様は所属組織,開発方法論,フレームワークなどで異なる モデルが仕様を満たしていることを検証する方法がない モデル駆動型の開発手法を実現するにあたって 成果物であるモデルをいかに管理するのか モデル間の依存関係をいかに管理するのか モデルとその間の依存関係を追跡可能な状態で統一的かつ厳密に管理できる枠組みが必要 依存関係 開発者 詳細化 詳細化 モデルを作成するにあたり盛り込まなければならない情報,盛り込んではいけない情報,の仕様 v.s. 実際に開発者が作成したモデル とのギャップ.仕様を形式的に定義して検証可能な状態でモデルを管理したい. 仕様と モデルの ギャップ モデル化 モデル化 記述仕様 記述仕様 記述仕様 システムの構造 顧客の要求 画面の遷移
研究内容と位置づけ モデル駆動型による効率的なソフトウェア開発の実現 モデルの 検証 モデルの 実行 モデリングツール の統合 モデルの自動変換 モデルの 検証 モデルとその依存関係を統一的に管理する 枠組みの提案 (メタモデルを扱う技術としてMOFに着目) Strutsフレームワークの画面遷移設計に適用 実現に向けて様々な研究が行われる中で,その基盤技術となる 2006/02/20 修士論文発表会
目次 MOF概要 提案手法 支援システム メタモデルを用いた成果物の管理 メタモデルを用いた依存関係の管理 Strutsの画面遷移設計へ適用 依存関係の定義 依存情報の蓄積 支援システム Strutsの画面遷移設計へ適用 成果物と依存関係を統一的に管理する枠組みの提案 2006/02/20 修士論文発表会
MOF(Meta Object Facility) オブジェクト指向設計にもとづいてメタモデルを定義するためのOMG標準言語 UMLは同じ性質のオブジェクトをUMLクラスとして抽象化 MOFは同じ性質のメタオブジェクトをMOFクラスとして抽象化 メタオブジェクトは他のオブジェクトの性質を規定するオブジェクト(≒UMLクラス) MOFリポジトリを生成可能 MOFクラス (メタモデル) モデル化 MOF オブジェクト UMLクラス (モデル) UMLは対象の情報をクラス図やステートマシン図としてモデル化 MOFはクラス図やステートマシン図に相当する言語自体をモデル化 i.e. メタモデルとして定めたMOFクラスのインスタンスであるMOFオブジェクトがUMLのクラス相当 MOFクラスによって使用可能な言語を縛ってしまう モデル化 対象の 情報 2006/02/20 修士論文発表会
MOFリポジトリ MOFで記述したメタモデルに対して,そのスキーマに従うインスタンスを管理できるリポジトリを生成可能 MOFリポジトリ <<meta-model>> A B C 1 * 1 0..1 Generate メタモデル設計者 MOFクラス群 格納NG 格納OK モデル (インスタンス) 格納OK A1: A B1: B C1: C <<model>> 開発者A MOFのクラスからなるメタモデルを定義することで <<model>> A1: A B1: B B2: B 開発者B <<model>> A1: A B1: B C1: C 開発者C メタモデル 違反 MOFオブジェクト群 2006/02/20 修士論文発表会
目次 MOF概要 提案手法 支援システム メタモデルを用いた成果物の管理 メタモデルを用いた依存関係の管理 Strutsの画面遷移設計へ適用 依存関係の定義 依存情報の蓄積 支援システム Strutsの画面遷移設計へ適用 成果物と依存関係を統一的に管理する枠組みの提案 2006/02/20 修士論文発表会
成果物の管理(1/2) 仕様とモデルのギャップが問題 成果物の仕様をメタモデルとして形式的に定義する 開発者にメタモデルのインスタンスとしてモデルを作成させる 成果物のメタモデル(MOFクラス) メタモデル設計者 リポジトリ生成 instanceof 開発者 開発者 モデル(MOF オブジェクト) 仕様と モデルの ギャップ モデル化 モデル化 モデル化 記述仕様 記述仕様 記述仕様 画面の遷移 画面の遷移 システムの構造
成果物の管理(2/2) 成果物の仕様をメタモデルとして定義 開発者が作成したモデルをMOFリポジトリで管理 モデルがメタモデルを満たすか(妥当性)を検証 必須(不要)属性 必須(不要)関連 空文字,null値 オブジェクト参照 etc モデルの厳密な管理が可能に 成果物のメタモデル(MOFクラス) メタモデル設計者 instanceof メタモデルと モデルの 比較 モデル(MOF オブジェクト) 開発者 モデル化 記述仕様 画面の遷移 2006/02/20 修士論文発表会
依存関係の管理 ? ? モデル間の依存関係の管理が問題 依存情報 依存関係定義 開発者が実際に作成したモデル間の関係 依存情報を作成すべきモデル間の定義 成果物のメタモデル(MOFクラス) メタモデル設計者 instanceof 開発者 依存関係 開発者 依存関係定義 or 依存情報 記述仕様 モデル化 ? 依存情報 記述仕様 モデル化 ? 依存関係を管理するためには2種類の情報を管理する モデル化 モデル化 モデル化 記述仕様 画面の遷移 記述仕様 記述仕様 画面の遷移 システムの構造
依存関係定義 入力要素 出力要素 入力と出力の対応関係 依存元の成果物 依存先の成果物 instanceof source target 成果物のメタモデル(MOFクラス) 成果物のメタモデル(MOFクラス) instanceof source target モデル(MOF オブジェクト) モデル(MOF オブジェクト) 一方の成果物の 入力となるいくつかのMOFクラスを何らかの基準で選択し, 何らかの規則で変換すると, 出力となるいくつかのMOFクラスに対応付けられる モデル化 入力要素 出力要素 入力と出力の対応関係 モデル化 記述仕様 モデル化 依存関係の定義 記述仕様 記述仕様 システムの構造 画面の遷移
依存情報の蓄積 実際の入力要素 実際の出力要素 依存関係定義への参照 依存元の成果物 依存関係 定義 依存先の成果物 依存情報 成果物のメタモデル(MOFクラス) 成果物のメタモデル(MOFクラス) instanceof 定義の参照 モデル(MOF オブジェクト) モデル(MOF オブジェクト) target source モデル化 実際の入力要素 実際の出力要素 依存関係定義への参照 モデル化 モデル化 記述仕様 記述仕様 記述仕様 システムの構造 画面の遷移 依存情報
目次 MOF概要 提案手法 支援システム メタモデルを用いた成果物の管理 メタモデルを用いた依存関係の管理 Strutsの画面遷移設計へ適用 依存関係の定義 依存情報の蓄積 支援システム Strutsの画面遷移設計へ適用 成果物と依存関係を統一的に管理する枠組みの提案 2006/02/20 修士論文発表会
Strutsを用いた画面遷移設計への適用 設計成果物“画面遷移図”の管理 実装成果物“struts-config.xml”の管理 依存関係の管理 モデリング支援システムの試作 画面遷移図 struts-config.xml 設計 実装
Enterprise Architect(モデリングツール) 支援システムの試作(1/2) UMLモデリングツールEnterpriseArchitectのアドイン リポジトリの生成にはmediniを使用 開発言語:C# LOC: 約7,000行(リポジトリ,リポジトリとの結合インタフェースを除く) struts-config.xml 画面遷移図 Enterprise Architect(モデリングツール) 開発者 制御部 成果物管理部 依存関係管理部 依存情報 蓄積 依存関係 定義 2006/02/20 修士論文発表会
支援システムの試作(2/2) メタモデル違反の検出 要求される依存オブジェクトの作成を強要 開発者はMOFオブジェクトを 依存情報の蓄積・更新 画面遷移図からstruts-config.xmlへの部分的な自動生成 依存する他のオブジェクトへの変更影響 開発者はMOFオブジェクトを 使ってモデリングを行う 成果物のメタモデル違反や 依存情報の不足・依存関係の 矛盾をフィードバック メタモデルに基づいて作成可能な MOFオブジェクトのみを使用できる
まとめ モデル駆動型ソフトウェア開発の基盤技術を目指して 適用事例として 今後の課題 成果物とその依存関係をMOFメタモデル・MOFリポジトリのもとで統一的に管理する新しい枠組みを提案 適用事例として Strutsの画面遷移設計に対して適用 実際に動作するシステムとして実現可能であることを確認 今後の課題 追加の評価実験(効率や規模) モデル変換などのさらに進んだ技術との統合 2006/02/20 修士論文発表会
おわり 2006/02/20 修士論文発表会
質疑 モデルと仕様とのギャップが,メタモデルと仕様とのギャップにすり替わっただけでは?(藤本先生) 言ってることは正しい ただ,何も制限がない仕様-モデルよりも,いくらかでも制限されている仕様-メタモデルの方が断然いい メタモデルを使うのは手間は増えても,チェックをするのが簡単になるからということ?(藤本先生) はい UMLじゃあダメだけど,MOFならいいという「簡単な」例はないの?ダメな具体例が思いつかないようなら聞いてても納得できない(萩原先生) 書こうとしているものがそもそも違うような… UMLクラスとMOFクラスでは目的が違うし,MOFの話は当然抽象的になる 2006/02/20 修士論文発表会
依存関係 2006/02/20 修士論文発表会
依存関係定義のためのメタモデル 成果物のメタモデル中で定義されたMOFクラス間のn対nの一方向依存関係 依存元となる要素群の選択方法や依存先となる要素群の選択方法,自動化可能な場合の変換規則などはルールとして記述する 定義したモデルは依存情報蓄積時に参照される <<instanceof>> 実装依存の問題,少なくとも情報としてもっておく 2006/02/20 修士論文発表会
依存情報蓄積のためのメタモデル 依存関係定義を参照し,実際に依存情報を蓄積 RefMofObjectは実際に作成されたMOFオブジェクトを参照 Traceはその定義であるTraceDefを参照 <<instanceof>> 2006/02/20 修士論文発表会
Struts 2006/02/20 修士論文発表会
Strutsを用いた画面遷移設計への適用 画面遷移図 struts-config.xml 依存関係 定義 依存情報 instanceof モデリングインターフェース 開発者 開発者 2006/02/20 修士論文発表会
(参考)画面遷移図のメタモデル・モデル例 <<meta-model>> <<instance of>> <<model>> 2006/02/20 修士論文発表会
(参考)struts-config.xmlのメタモデル・モデル例 <<meta-model>> <<instance of>> <<model>> 2006/02/20 修士論文発表会
(参考)画面遷移図,struts-config.xml間の依存関係定義 画面遷移図のメタモデル要素への参照 struts-config.xmlの メタモデル要素への参照 2006/02/20 修士論文発表会
Strutsを用いた画面遷移設計への適用 画面遷移図 struts-config.xml 依存関係 定義 依存情報 Strutsの画面遷移設計に適用 設計成果物“画面遷移図”の管理 実装成果物“struts-config.xml”の管理 依存関係の管理 モデリング支援システムの実装 instanceof 依存関係 定義 struts-config.xml のメタモデル 画面遷移図のメタモデル メタモデルからリポジトリを生成 モデリングインターフェース 画面遷移図 struts-config.xml 開発者 開発者 設計 実装 2006/02/20 修士論文発表会
没 2006/02/20 修士論文発表会
モデルの更新 MOFオブジェクトの追加,修正,削除 属性の追加,修正,削除 関連の追加,修正,削除 オブジェクト自身の更新(追加) 自身の更新+関連のあるオブジェクトの更新(修正) 関連のあるオブジェクトの更新(削除) 属性の追加,修正,削除 属性をもつMOFオブジェクトの更新 関連の追加,修正,削除 両端のMOFオブジェクトの更新 いずれの場合もオブジェクトの更新に帰着される 2006/02/20 修士論文発表会
提案手法の概要 <<instanceof>> target source MOF Source Metamodel Target Metamodel メタモデル設計者 メタモデル設計者 <<instanceof>> TraceDef Metamodel TraceDef Model source target Target Model <<instanceof>> 開発者 Source Model <<instanceof>> 開発者 メタモデル設計者 Trace Metamodel Trace Model source target definition 2006/02/20 修士論文発表会
成果物の管理(1/2) 仕様とモデルのギャップが問題 成果物の仕様をメタモデルとして形式的に定める 開発者にメタモデルのインスタンスとしてモデルを作成させる 成果物のメタモデル(MOFクラス) メタモデル設計者 リポジトリ生成 instanceof 開発者 依存関係 開発者 モデル(MOF オブジェクト) 仕様と モデルの ギャップ モデル化 モデル化 モデル化 記述仕様 記述仕様 記述仕様 画面の遷移 画面の遷移 システムの構造
依存関係の管理 ? ? 依存関係の管理が問題 依存情報 依存関係の定義 開発者が実際に作成した成果物間の関係 開発者が作成する成果物の仕様間の関係 成果物のメタモデル(MOFクラス) メタモデル設計者 instanceof 開発者 依存関係 開発者 依存関係の定義 記述仕様 モデル化 ? 依存情報 記述仕様 モデル化 ? 仕様と モデルの ギャップ 依存関係を管理するためには2種類の情報を管理する モデル化 モデル化 モデル化 記述仕様 記述仕様 記述仕様 画面の遷移 画面の遷移 システムの構造