Strutsフレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案

Slides:



Advertisements
Similar presentations
1 プリミティブ Web サービスの 入出力データに関する一考察 2005 年 3 月 21 日 松江工業高等専門学校 情報工学科 奈良先端科学技術大学院大学 情報科学研究科 越田高志 電子情報通信学会 2005年総合 大会.
Advertisements

メタモデル記述を用いた成果物間の依存関係追跡手法
ソフトウェア工学特論III 第10回 その他の図 情報通信工学専攻 GM11013 堀江 真史
アルゴリズムとプログラミング (Algorithms and Programming)
JPAを利用した RESTful Webサービスの開発
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
OJT研修 「テスト実施、テスト設計の技術習得」 日時: 8月22日(月)  場所: 本社5階.
エンタープライズアプリケーション II 第10回 / 2006年7月23日
Webを利用した授業支援システムの開発 北海道工業大学 電気電子工学科 H 渋谷 俊彦.
JSFによるWebアプリケーション開発 第6回
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
BPMN(Business Process Modeling Notation)
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
UMLとは           032234 田邊祐司.
入出力データ型に透過な Webサービス動的実行システム 松江工業高等専門学校 情報工学科 越田高志 情報処理学会第68回全国大会
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室
第12回 2007年7月13日 応用Java (Java/XML).
UMLメタモデルの変更に対応した ダイアグラム間整合性検証環境の 自動生成手法
第10回 2007年6月29日 応用Java (Java/XML).
その他の図 Chapter 7.
組込みシステムの外部環境分析のためのUMLプロファイル
第11回 2007年7月6日 応用Java (Java/XML).
暗黙的に型付けされる構造体の Java言語への導入
Webアプリケーションの方向性 データベース論 第13回.
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
SPINを用いたウェブアプリケーションにおける 階層別モデル検査支援方法
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
Jakarta Struts (2) ソフトウェア特論 第11回.
社会シミュレーションのための モデル作成環境
動的データ依存関係解析を用いた Javaプログラムスライス手法
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
UMLモデルを対象とした リファクタリング候補検出の試み
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
Javaによる Webアプリケーション入門 第11回
XML Schema (1) ソフトウェア特論 第3回 /
JSFによるWebアプリケーション開発 第3回
XMLゼミ 3.5 DTD M2 正木 裕一.
3-1.文書と構造 3-2.整形式文書と検証済み文書 兒玉 光太郎
項目間の対応関係を用いた XBRL財務報告書自動変換ツールの試作
JAVAバイトコードにおける データ依存解析手法の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
独習XML ~第1章 XMLの基礎~ 1.1 XML文書の基礎 1.2 XMLとHTML
オープンソースソフトウェアに対する コーディングパターン分析の適用
Jakarta Struts (1) ソフトウェア特論 第10回.
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
プログラム分散化のための アスペクト指向言語
データ中心システム設計方法論“DATARUN” 
ソフトウェア理解支援を目的とした 辞書の作成法
ソフトウェア工学 知能情報学部 新田直也.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
ソフトウェア工学 知能情報学部 新田直也.
知識ベースの試作計画 ●●●研究所 ●●●技術部 稲本□□ 1997年1月.
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
JSFによるWebアプリケーション開発 第7回
Presentation transcript:

Strutsフレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案 大平直宏†,松下誠†,岡野浩三†,楠本真二†, 井上克郎†,山下裕介‡,我妻智之‡ † 大阪大学大学院情報科学研究科 ‡ (株)NTTデータ 発表25分,質疑10分 ソフトウェアを高品質かつ短期間で開発・保守したいという要求が高まる中,Web アプリケーションを効率よく開発するためのフレームワークが登場している. このようなフレームワークを用いた開発では,ソフトウェアを新規に開発するときだけでなく,修正や削除などの保守を行う際にもフレームワークの意図する枠組みに従った設計が維持されていることが保証できなければならない. 本研究ではStruts フレームワークを対象とし,個々の成果物の仕様,およびそれら成果物間の依存関係の仕様となるメタモデルを定義することで,一貫性を保った状態でソフトウェア成果物を管理し,追跡可能性を実現する手法を提案する. 2005/11/29 第150回ソフトウェア工学研究会(SIGSE-150-5)

研究の背景 Webアプリケーションフレームワーク 問題点 ex.)Struts,JSF 画面遷移の管理といった典型的な処理をフレームワークが実装 ソフトウェアの品質向上,開発・保守効率の向上 問題点 フレームワークの意図する仕様に従った成果物の作成が必要 修正や削除が加わった場合にも 明示的な仕様が定められていない成果物の存在 実装成果物にはフレームワークの仕様があるが,設計成果物にはない 成果物間の依存関係(トレース情報)を保存・管理する枠組みが存在しない  設計・実装成果物間の一貫性が保たれない 2005/11/29 第150回ソフトウェア工学研究会(SIGSE-150-5)

研究の目的 Strutsフレームワークにおける画面遷移の設計~実装を対象 追跡可能性を実現する 一貫性管理を実現する 設計・実装間で,互いに関連のある要素の依存関係を追跡可能 (変更影響を追跡可能である) 一貫性管理を実現する 設計・実装間で,お互いが表現する内容に矛盾がない (設計情報が正しく実装に伝わっている)

提案手法の概要 成果物とその依存関係(トレース情報)をMOFメタモデルのもとで統一的に管理 個々の成果物に対してMOFメタモデルを定義 成果物単体の正しさを保証 成果物間のトレース情報に対してMOFメタモデルを定義 成果物間のトレース情報を自動蓄積

2005/11/29 第150回ソフトウェア工学研究会(SIGSE-150-5)

Struts JavaのWebアプリケーションフレームワーク Webアプリケーションの機能を個々のコンポーネントへ分割 処理 各コンポーネントを制御するアクションサーブレット ユーザの入出力画面を表示するJSP/HTMLファイル 入力データを保存するアクションフォームBeans リクエスト処理するアクションクラス アクションサーブレット フレームワークのコアエンジン 各コンポーネントを設定ファイルに基づいて結合 struts-config.xml 2. 入力データの保存 アクションフォームBeans struts-config.xml データ の参照 処理 3. 対応するアクションの実行 4. ステータスの返却 アクションサーブレット アクションクラス 1. リクエスト & 入力データ 5. 次画面の出力

struts-config.xmlの例 <action-mappings> ユーザのリクエストを処理するアクションクラスと画面の遷移に関する設定 <form-beans> ユーザの入力情報を保存するアクションフォームBeansに関する設定

struts-config.xmlの例 <action> リクエスト処理に関する設定 <forward> LogonForm = org.example.LogonForm org.example.LogonAction success failure /SubmitLogon <action> リクエスト処理に関する設定 <forward> アクションクラスの終了ステータスと次画面のマッピング mainMenu.jsp logon.jsp

Strutsにおける成果物 実装:設定ファイルstruts-config.xml 設計:画面遷移図 フレームワークによる明示的な仕様は定められていない struts-config.xmlとして実装できる設計にする必要性 設計もフレームワークによって暗黙的な仕様で制限されている

2005/11/29 第150回ソフトウェア工学研究会(SIGSE-150-5)

メタモデルの重要性 ソフトウェア開発で扱う情報 情報を定められた仕様に従ってモデルとして表現 仕様を形式的に定義(メタモデル)できる必要 要求,設計,実装,依存関係,進捗,etc 情報を定められた仕様に従ってモデルとして表現 仕様が曖昧な場合や明示されない場合が存在   仕様を形式的に定義(メタモデル)できる必要 記述仕様 A B C <<model>> 開発者 対象の情報 モデル化

MOF(Meta Object Facility) オブジェクト指向に基づいてメタモデルを定義するためのOMG標準言語 UMLのクラス図に似た意味論をもつが,表記法はない UMLクラス図を用いて記述されることが多い MOFは同じ性質のメタオブジェクトをMOFクラスとして抽象化 UMLは同じ性質のオブジェクトをUMLクラスとして抽象化 メタオブジェクトは他のオブジェクトの性質を規定するオブジェクト(≒UMLクラス) MOFリポジトリを生成可能 <<meta-model>> X MOF クラス メタモデル設計者 1 0..1 Y モデル化 定義 A:Y B:X C:Y <<model>> 開発者 MOF オブジェクト モデル化 定義 対象の情報

MOFリポジトリ MOFで記述したメタモデルに対して,そのスキーマに従うインスタンスを管理できるリポジトリを生成可能 MOFリポジトリ A B C <<meta-model>> MOFリポジトリ <<meta-model>> A B C 1 * 1 0..1 Generate メタモデル設計者 格納NG 格納OK モデル (インスタンス) 格納OK A1: A B1: B C1: C <<model>> 開発者A <<model>> A1: A B1: B B2: B 開発者B <<model>> A1: A B1: B C1: C 開発者C メタモデル 違反

2005/11/29 第150回ソフトウェア工学研究会(SIGSE-150-5)

struts-config.xmlのMOFメタモデル DTD(Document Type Definition,文書定義型)で定義されている MOFによるXML文書のメタモデル 要素の親子関係をMOFクラスの集約関係として定義  ※ MOFで再定義するのは,全ての成果物をMOFリポジトリの上で統一的に扱うため <!– struts-config.xmlのDTDの一部 --> <!ELEMENT struts-config (…, form-beans?, …, action-mappings?)> … <!ELEMENT form-beans (form-bean*)> <!ELEMENT form-bean (…)> <!ATTLIST form-bean name %BeanName; #REQUIRED> <!ATTLIST form-bean type %ClassName; #IMPLIED>

struts-config.xmlのモデル例 <<meta-model>> <<instance of>> <<model>>

画面遷移図のMOFメタモデル UMLアクティビティのメタモデルをベースに定義 ノード ActivityNode 辺 ActivityEdge 画面DisplayNode アクションActionNode 辺 ActivityEdge リクエストActionEdge 次画面遷移ForwardEdge ガード条件 ValueSpecification TODO:アクティビティ図の詳細メタモデル?

画面遷移図のモデル例 <<meta-model>> <<instance of>>

トレース情報のMOFメタモデル(1/2) 成果物間の依存関係(トレース情報)のメタモデル 依存関係を保持した状態で管理しなければならない要素対を定義 依存元の要素と依存先の要素のn対nの関係 あるトレース情報はより詳細な別のトレース情報と関連をもつ インスタンスであるトレース情報はツールが自動生成することを想定 MOFクラス単位でTraceを張る より詳細な関係はdetail属性を使えるようにしているが,その解釈はツールに依存

トレース情報のMOFメタモデル(2/2) struts-config.xmlの メタモデル要素への参照 画面遷移図の メタモデル要素 への参照

メタモデルに基づく追跡可能性の実現手法 MOFリポジトリの操作による追跡可能性の実現 個々の成果物をMOFリポジトリで管理 画面遷移図のメタモデル struts-config.xmlの メタモデル トレース情報のメタモデル トレース管理 正当性管理 正当性管理 モデリングインターフェース 開発者 開発者

個々の成果物の正当性管理 モデリングインターフェース A B C BX_Trace X CY_Trace Y <<meta-model>> A B C <<meta-model>> <<meta-model>> RefB BX_Trace RefX X RefC CY_Trace RefY Y 画面遷移図-struts-config.xml間の 依存関係のメタモデル(トレースメタモデル) 画面遷移図のメタモデル struts-config.xmlの メタモデル <<model>> B1: B C1: C C2: C 正当性管理 <<model>> X1: X Y1: Y Y2: Y 正当性管理 struts-config.xmlのモデルは必ずしも開発者が作るとは限らない(i.e. 自動生成) →ただ,本研究はその前段階として,成果物間の関係を保存することを目的としている <<model>> B1: B C1: C C2: C <<model>> X1: X Y1: Y Y2: Y モデリングインターフェース 開発者 開発者

トレース情報の蓄積 モデリングインターフェース A B C BX_Trace X CY_Trace Y <<meta-model>> A B C <<meta-model>> <<meta-model>> RefB BX_Trace RefX X RefC CY_Trace RefY Y 画面遷移図-struts-config.xml間の 依存関係のメタモデル(トレースメタモデル) 画面遷移図のメタモデル struts-config.xmlの メタモデル <<model>> B1X1: BX_Trace <<model>> RefB1 RefX1 <<model>> 作成されることが要求 されるが,まだ作られて いない状態 B1: B C1: C X1: X Y1: Y Y2: Y C2: C C1Y1: CY_Trace RefC1 RefY1 C2Y2: CY_Trace RefC2 RefY2 トレース管理 モデリングインターフェース 開発者 開発者

追跡可能性の実現と一貫性の管理(1/2) モデリングインターフェース A B C BX_Trace X CY_Trace Y <<meta-model>> A B C <<meta-model>> <<meta-model>> RefB BX_Trace RefX X RefC CY_Trace RefY Y 画面遷移図-struts-config.xml間の 依存関係のメタモデル(トレースメタモデル) 画面遷移図のメタモデル struts-config.xmlの メタモデル <<model>> B1: B C1: C C2: C <<model>> <<model>> X1: X Y1: Y Y2: Y RefB1 B1X1: BX_Trace RefX1 正当性管理 変更 RefC1 C1Y1: CY_Trace RefY1 正当性管理 要修正 RefC2 C2Y2: CY_Trace RefY2 トレース管理 モデリングインターフェース 開発者 開発者

追跡可能性の実現と一貫性の管理(2/2) モデリングインターフェース A B C BX_Trace X CY_Trace Y <<meta-model>> メタモデル違反 A B C <<meta-model>> <<meta-model>> RefB BX_Trace RefX X 1 0..1 RefC CY_Trace RefY Y 画面遷移図-struts-config.xml間の 依存関係のメタモデル(トレースメタモデル) 画面遷移図のメタモデル struts-config.xmlの メタモデル 削除 <<model>> <<model>> B1X1: BX_Trace C1Y1: CY_Trace RefB1 RefC1 RefX1 RefY1 C2Y2: CY_Trace RefC2 RefY2 <<model>> X1: X Y1: Y Y2: Y B1: B C1: C C2: C 正当性管理 削除 要修正 正当性管理 影響 削除 トレース情報の 削除 トレース管理 モデリングインターフェース 開発者 開発者

2005/11/29 第150回ソフトウェア工学研究会(SIGSE-150-5)

まとめと今後の課題 まとめ 今後の課題 画面遷移図とstruts-config.xml,及びそのトレース情報に対してMOFメタモデルを定義 メタモデルから生成したMOFリポジトリを操作することで,Strutsにおける追跡可能性,一貫性管理を実現する手法を提案 今後の課題 メタモデルの詳細化 プロトタイプツールの実装による評価実験 画面遷移部分だけ 今後詳細化を進める上でのベースとなる 2005/11/29 第150回ソフトウェア工学研究会(SIGSE-150-5)

SIGSE質問,コメント トレーサビリティを確保するということだけなら,わざわざこんなことしなくても自動的に生成してしまったら? QVTを使わなかった(使えなかった)のは?(沢田先生@京大) インスタンス決めうちであるような依存関係は?(沢田先生@京大) 単純なn対nではなくてもう少し何か.すごい数になるよね(沢田先生@京大) 汎用的な手法のようだけど,なぜstrutsを? なぜ設計と実装の間のインスタンスに対して,適切なトレースが作れるの?(岸先生@JAIST) 簡単に言うけど…もうちょっと詳しく(落水先生@JAIST) 次々に入り組んだトレースを保存していって,いざ修正が入った場合に,その影響が及ぶ部分をどうピンポイントに取り出すのか.(落水先生@JAIST)