メタモデル記述を用いた成果物間の依存関係追跡手法

Slides:



Advertisements
Similar presentations
地図の重ね合わせに伴う 位相関係の矛盾訂正手法 萬上 裕 † 阿部光敏* 高倉弘喜 † 上林彌彦 ‡ 京都大学工学研究科 † 京都大学工学部 * 京都大学情報学研究科 ‡
Advertisements

プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
OWL-Sを用いたWebアプリケーションの検査と生成
システム開発におけるユーザ要求の 明示的表現に関する一検討
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
シーケンス図の生成のための実行履歴圧縮手法
東京工科大学 コンピュータサイエンス 亀田弘之
表計算ソフトで動作するNEMUROの開発
OJT研修 「テスト実施、テスト設計の技術習得」 日時: 8月22日(月)  場所: 本社5階.
3-5 クラス図の関係その3 福本研究室 神田 祐輔.
UMLの概要と オブジェクト指向の 基本概念
BPMN(Business Process Modeling Notation)
CSP記述によるモデル設計と ツールによる検証
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
UMLとは           032234 田邊祐司.
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
UMLメタモデルの変更に対応した ダイアグラム間整合性検証環境の 自動生成手法
第10回 2007年6月29日 応用Java (Java/XML).
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
その他の図 Chapter 7.
組込みシステムの外部環境分析のためのUMLプロファイル
「iQUAVIS」 によるハード・ソフトの 横断的な構想検討
図書館職員のための アプリケーション開発講習会
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
実行時情報に基づく OSカーネルのコンフィグ最小化
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
Javaプログラムの変更を支援する 影響波及解析システム
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
社会シミュレーションのための モデル作成環境
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
ゲーム開発モデルの基礎.
ミドルウェア”TSUNAGI”を 用いたWEBアプリケーションの構築
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
言語XBRLで記述された 財務諸表の分析支援ツールの試作
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Strutsフレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案
JSFによるWebアプリケーション開発 第3回
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
UMLの概要とオブジェクト指向の基本概念
項目間の対応関係を用いた XBRL財務報告書自動変換ツールの試作
JAVAバイトコードにおける データ依存解析手法の提案と実装
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
All Rights Reserved, Copyright © 2004, Kobayashi
設計情報の再利用を目的とした UML図の自動推薦ツール
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
プログラム分散化のための アスペクト指向言語
データ中心システム設計方法論“DATARUN” 
統合開発環境のための プログラミング言語拡張 フレームワーク
ソフトウェア工学 知能情報学部 新田直也.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
ソフトウェア工学 知能情報学部 新田直也.
コードクローン解析に基づく デザインパターン適用候補の検出手法
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
Presentation transcript:

メタモデル記述を用いた成果物間の依存関係追跡手法 井上研究室 博士前期課程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種類の情報を管理する モデル化 モデル化 モデル化 記述仕様 記述仕様 記述仕様 画面の遷移 画面の遷移 システムの構造