struts...

28
2005/11/29 第150第第第第第第第第第第第第 SIGSE-150-5 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Struts 第第第第第第第第第第第第第第第第第第第 第第第第第第第第第第第第第 第第第第 第第第 第第第第 第第第第 第第第第 第第第第 第第第第 † 第第第第第第第第第第第第第第 第第 () NTT 第第第

Upload: ince

Post on 11-Jan-2016

62 views

Category:

Documents


0 download

DESCRIPTION

Struts フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案. 大平直宏 † ,松下誠 † ,岡野浩三 † ,楠本真二 † , 井上克郎 † ,山下裕介 ‡ ,我妻智之 ‡ † 大阪大学大学院情報科学研究科 ‡ (株) NTT データ. 研究の背景. Web アプリケーションフレームワーク ex. ) Struts , JSF 画面遷移の管理といった典型的な処理をフレームワークが実装 ソフトウェアの品質向上,開発・保守効率の向上 問題点 フレームワークの意図する仕様に従った成果物の作成が必要 修正や削除が加わった場合にも - PowerPoint PPT Presentation

TRANSCRIPT

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

2005/11/29 150 SIGSE-150-5第 回ソフトウェア工学研究会( )Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

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

手法の提案

大平直宏†,松下誠†,岡野浩三†,楠本真二†,

井上克郎†,山下裕介‡,我妻智之‡

† 大阪大学大学院情報科学研究科‡ (株) NTT データ

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

2005/11/29 150 SIGSE-150-5第 回ソフトウェア工学研究会( )2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

研究の背景 Web アプリケーションフレームワーク

ex. ) Struts , JSF 画面遷移の管理といった典型的な処理をフレームワークが実

装 ソフトウェアの品質向上,開発・保守効率の向上

問題点 フレームワークの意図する仕様に従った成果物の作成が必要

修正や削除が加わった場合にも 明示的な仕様が定められていない成果物の存在

実装成果物にはフレームワークの仕様があるが,設計成果物にはない

成果物間の依存関係(トレース情報)を保存・管理する枠組みが存在しない

 設計・実装成果物間の一貫性が保たれない

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

3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

/Logoff

LogonForm

welcom.jsp logon.jsp

mainMenu.jsp

/SubmitLogon

/Logon

success

failure

success

org.example.LogonActionorg.example.LogonAction

org.example.LogoffActionorg.example.LogoffAction

org.example.LogonFormorg.example.LogonForm

スタート画面 ログイン画面

認証済み画面

設計 実装

画面遷移図 struts-config.xml

研究の目的Struts フレームワークにおける画面遷移の設計~実装を対象 追跡可能性を実現する

設計・実装間で,互いに関連のある要素の依存関係を追跡可能(変更影響を追跡可能である)

一貫性管理を実現する 設計・実装間で,お互いが表現する内容に矛盾がない

(設計情報が正しく実装に伝わっている)

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

4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

/Logoff

LogonForm

welcom.jsp logon.jsp

mainMenu.jsp

/SubmitLogon

/Logon

success

failure

success

org.example.LogonActionorg.example.LogonAction

org.example.LogoffActionorg.example.LogoffAction

org.example.LogonFormorg.example.LogonForm

スタート画面 ログイン画面

認証済み画面

設計 実装

画面遷移図 struts-config.xml

提案手法の概要

Asub_X_Trace: Trace

+ detail: String

B_XY_Trace: Trace

+ detail: StringB : RefElement

+ ref: = "DisplayNode"

A : RefElement

+ ref: = "ForwardEdge"

D : RefElement

+ ref: = "ActionFormBean"

C : RefElement

+ ref: = "ActionNode"

Y : RefElement

+ ref: = "Action"

X : RefElement

+ ref: = "Forward"

Z : RefElement

+ ref: = "FormBean"

DisplayNode.impl_file → Action.forwardDisplayNode.impl_file → Forward.path

C_Y_Trace: Trace

+ detail: StringActionNode.path → Action.pathActionNode.impl_class → Action.type

D_YZ_Trace: Trace

+ detail: StringActionFormBean.name → FormBean.nameActionFormBean.name → Action.nameActionFormBean.impl_class → FormBean.typeActionFormBean.scope → Action.scope

A_X_Trace: Trace

+ detail: String

ValueSpecification.body → Forward.name

Asub : RefElement

+ ref: = "ValueSpecification"

StrutsConfig

FormBeans

FormBean

+ name: BeanName+ type: ClassName [0..1]

ActionMappings

Action

+ path: RequestPath+ type: ClassName [0..1]+ name: BeanName [0..1]+ forward: RequestPath [0..1]+ scope: RequestScope

Forward

+ name: String+ path: RequestPath [0..1]

0..1

0..*

0..*

1

0..*

1

0..*1

0..* 1ActivityNode

(from BasicActivities)

DisplayNode

+ impl_file: JspName

ActionFormBean

+ name: String+ impl_class: ClassName+ scope: String

DisplayDef

ForwardEdge

constraints{+source is ActionNode}

ActivityEdge (from BasicActivities)

ValueSpecification (from BasicActivities)

ActionNode

+ path: String+ impl_class: ClassName

ActionEdge

constraints{+source is DisplayNode}{+target is ActionNode}

1+guard

1

+source

*

+outgoing1

+target

*

+incomming

+form-bean

+action

成果物とその依存関係(トレース情報)を MOF メタモデルのもとで統一的に管理

1. 個々の成果物に対して MOF メタモデルを定義 成果物単体の正しさを保証

2. 成果物間のトレース情報に対して MOF メタモデルを定義 成果物間のトレース情報を自動蓄積

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

2005/11/29 150 SIGSE-150-5第 回ソフトウェア工学研究会( )5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

研究の背景と目的 Struts とは メタモデルと MOF 提案手法

Struts の成果物とトレース情報に対するメタモデル定義 メタモデルに基づく追跡可能性の実現手法

まとめと今後の課題

発表の流れ

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

6

Struts Java の Web アプリケーション

フレームワーク Web アプリケーションの機能

を個々のコンポーネントへ分割 各コンポーネントを制御するアク

ションサーブレット ユーザの入出力画面を表示する JS

P/HTML ファイル 入力データを保存するアクション

フォーム Beans リクエスト処理するアクションク

ラス アクションサーブレット

フレームワークのコアエンジン 各コンポーネントを設定ファイル

に基づいて結合 struts-config.xml

クライアント

サーバ

1. リクエスト & 入力データ

5. 次画面の出力

アクションサーブレット

struts-config.xml

アクションクラス

アクションフォーム Beans

2. 入力データの保存

3. 対応するアクションの実行

データ の参照

4. ステータスの返却

ログインログイン

Cancel

●●●●●

OK

アカウント

●●●●●●●●パスワード

認証

認証済み認証済み

==========================================================================

Inbox

Outbox

UserA

処理

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

クライアント

サーバ

7

1. リクエスト & 入力データ

5. 次画面の出力

アクションサーブレット

struts-config.xml

アクションクラス

アクションフォーム Beans

2. 入力データの保存

3. 対応するアクションの実行

データ の参照

4. ステータスの返却

ログインログイン

Cancel

●●●●●

OK

アカウント

●●●●●●●●パスワード

認証

認証済み認証済み

==========================================================================

Inbox

Outbox

UserA

struts-config.xml の例<action-mappings>ユーザのリクエストを処理するアクションクラスと画面の遷移に関する設定

<action-mappings>ユーザのリクエストを処理するアクションクラスと画面の遷移に関する設定

<form-beans>ユーザの入力情報を保存するアクションフォーム Beans に関する設定

<form-beans>ユーザの入力情報を保存するアクションフォーム Beans に関する設定

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

クライアント

サーバ

8

1. リクエスト & 入力データ

5. 次画面の出力

アクションサーブレット

struts-config.xml

アクションクラス

アクションフォーム Beans

2. 入力データの保存

3. 対応するアクションの実行

データ の参照

4. ステータスの返却

ログインログイン

Cancel

●●●●●

OK

アカウント

●●●●●●●●パスワード

認証

認証済み認証済み

==========================================================================

Inbox

Outbox

UserA

struts-config.xml の例

<action>リクエスト処理に関する設定<forward>アクションクラスの終了ステータスと次画面のマッピング

<action>リクエスト処理に関する設定<forward>アクションクラスの終了ステータスと次画面のマッピング

/SubmitLogon

mainMenu.jsp

ログインログイン

Cancel

●●●●●

OK

アカウント

●●●●●●●●パスワード

認証

LogonForm= org.example.LogonForm

org.example.LogonAction

success

logon.jsp

failure

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

9Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

Struts における成果物

/Logoff

LogonForm

welcom.jsp logon.jsp

mainMenu.jsp

/SubmitLogon

/Logon

success

failure

success

org.example.LogonActionorg.example.LogonAction

org.example.LogoffActionorg.example.LogoffAction

org.example.LogonFormorg.example.LogonForm

スタート画面 ログイン画面

認証済み画面

設計もフレームワークによって暗黙的な仕様で制限されている

設計もフレームワークによって暗黙的な仕様で制限されている

実装:設定ファイル struts-config.xml 設計:画面遷移図

フレームワークによる明示的な仕様は定められていないstruts-config.xml として実装できる設計にする必要性

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

2005/11/29 150 SIGSE-150-5第 回ソフトウェア工学研究会( )10Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

研究の背景と目的 Struts とは メタモデルと MOF 提案手法

Struts の成果物とトレース情報に対するメタモデル定義 メタモデルに基づく追跡可能性の実現手法

まとめと今後の課題

発表の流れ

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

11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

メタモデルの重要性 ソフトウェア開発で扱う情報

要求,設計,実装,依存関係,進捗, etc 情報を定められた仕様に従ってモデルとして表現

仕様が曖昧な場合や明示されない場合が存在

  仕様を形式的に定義(メタモデル)できる必要

A B

C

<<model>>

開発者

記述仕様

対象の情報

モデル化

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

12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

MOF ( Meta Object Facility ) オブジェクト指向に基づいてメタ

モデルを定義するための OMG 標準言語

UML のクラス図に似た意味論をもつが,表記法はない UML クラス図を用いて記述されること

が多い MOF は同じ性質のメタオブジェク

トを MOF クラスとして抽象化 UML は同じ性質のオブジェクトを

UML クラスとして抽象化 メタオブジェクトは他のオブジェクト

の性質を規定するオブジェクト(≒ UML クラス)

MOF リポジトリを生成可能

A:Y B:X

C:Y

<<model>>

開発者

対象の情報

モデル化定義

モデル化定義

<<meta-model>>

メタモデル設計者

X

Y

1

0..1

MOFクラス

MOFオブジェクト

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

13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

MOF リポジトリ MOF で記述したメタモデルに対して,そのスキーマに従うインスタンスを管理できるリポジトリを生成可能

MOF リポジトリ

<<meta-model>>メタモデル

メタモデル設計者

A B

C

<<meta-model>>

A1: A B1: B

C1: C

<<model>>

開発者 A

<<model>>

A1: A B1: B

B2: B

開発者 B

<<model>>

A1: A B1: B

C1: C

開発者 C

格納 NG格納 OK格納 OKモデル

(インスタンス)

Generate

A B

C

1 * 1

0..1

メタモデル違反

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

2005/11/29 150 SIGSE-150-5第 回ソフトウェア工学研究会( )14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

研究の背景と目的 Struts とは メタモデルと MOF 提案手法

Struts の成果物とトレース情報に対するメタモデル定義 メタモデルに基づく追跡可能性の実現手法

まとめと今後の課題

発表の流れ

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

15

struts-config.xml の MOF メタモデル

XML文書のメタモデル DTD ( Document Type Definition ,文書定義型)で定義されている

MOF による XML文書のメタモデル 要素の親子関係を MOF クラスの集約関係として定義

 ※ MOF で再定義するのは,全ての成果物を MOF リポジトリの上で統一的に扱うため

StrutsConfig

FormBeans

FormBean

+ name: BeanName+ type: ClassName [0..1]

ActionMappings

Action

+ path: RequestPath+ type: ClassName [0..1]+ name: BeanName [0..1]+ forward: RequestPath [0..1]+ scope: RequestScope

Forward

+ name: String+ path: RequestPath [0..1]

0..1

0..*

0..*

1

0..*

1

0..*1

0..* 1

<!– 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>…

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

16

struts-config.xml のモデル例StrutsConfig

FormBeans

FormBean

+ name: BeanName+ type: ClassName [0..1]

ActionMappings

Action

+ path: RequestPath+ type: ClassName [0..1]+ name: BeanName [0..1]+ forward: RequestPath [0..1]+ scope: RequestScope

Forward

+ name: String+ path: RequestPath [0..1]

0..1

0..*

0..*

1

0..*

1

0..*1

0..* 1

<<instance of>>

: Action

+ path: = "/SubmitLogon"+ type: = + name: = "LogonForm"+ scope: = "request"

: Forward

+ name: = "success"+ path: = "mainMenu.jsp"

: Forward

+ name: = "failure"+ path: = "logon.jsp"

: FormBean

+ name: = "LogonForm"+ type: =

: StrutsConfig

: FormBeans : ActionMappings

"org.example.LogonAction""org.example.LogonForm"

<<meta-model>>

<<model>>

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

17

/Logoff

LogonForm

welcom.jsp logon.jsp

mainMenu.jsp

/SubmitLogon

/Logon

success

failure

success

org.example.LogonActionorg.example.LogonAction

org.example.LogoffActionorg.example.LogoffAction

org.example.LogonFormorg.example.LogonForm

スタート画面 ログイン画面

認証済み画面

画面遷移図の MOF メタモデル

ActivityNode (from BasicActivities)

DisplayNode

+ impl_file: JspName

ActionFormBean

+ name: String+ impl_class: ClassName+ scope: String

DisplayDef

ForwardEdge

constraints{+source is ActionNode}

ActivityEdge (from BasicActivities)

ValueSpecification (from BasicActivities)

ActionNode

+ path: String+ impl_class: ClassName

ActionEdge

constraints{+source is DisplayNode}{+target is ActionNode}

1+guard

1

+source

*

+outgoing1

+target

*

+incomming

+form-bean

+action

UML アクティビティのメタモデルをベースに定義 ノード ActivityNode

画面 DisplayNode アクション ActionNode

辺 ActivityEdge リクエスト ActionEdge 次画面遷移 ForwardEdge

ガード条件 ValueSpecification

ActivityNode (from BasicActivities)

DisplayNode

+ impl_file: JspName

ActionFormBean

+ name: String+ impl_class: ClassName+ scope: String

DisplayDef

ForwardEdge

constraints{+source is ActionNode}

ActivityEdge (from BasicActivities)

ValueSpecification (from BasicActivities)

ActionNode

+ path: String+ impl_class: ClassName

ActionEdge

constraints{+source is DisplayNode}{+target is ActionNode}

1+guard

1

+source

*

+outgoing1

+target

*

+incomming

+form-bean

+action

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

18

画面遷移図のモデル例

: DisplayNode

+ impl_file: = "logon.jsp"

: DisplayNode

+ impl_file: = "mainMenu.jsp"

: ActionNode

+ path: = "/SubmitLogon"+ impl_class: =

: ActionEdge

: ForwardEdge

: ForwardEdge

: ActionFormBean

+ name: = "LogonForm"+ impl_class: = + scope: = "request"

: ValueSpecification

+ body: = "[success]"

: ValueSpecification

+ body: = "[failure]"

"org.example.LogonForm"

"org.example.LogonAction"

+source

+target

+source

+target

+source +target

ActivityNode (from BasicActivities)

DisplayNode

+ impl_file: JspName

ActionFormBean

+ name: String+ impl_class: ClassName+ scope: String

DisplayDef

ForwardEdge

constraints{+source is ActionNode}

ActivityEdge (from BasicActivities)

ValueSpecification (from BasicActivities)

ActionNode

+ path: String+ impl_class: ClassName

ActionEdge

constraints{+source is DisplayNode}{+target is ActionNode}

1+guard

1

+source

*

+outgoing1

+target

*

+incomming

+form-bean

+action

/Logoff

LogonForm

welcom.jsp logon.jsp

mainMenu.jsp

/SubmitLogon

/Logon

success

failure

success

org.example.LogonActionorg.example.LogonAction

org.example.LogoffActionorg.example.LogoffAction

org.example.LogonFormorg.example.LogonForm

スタート画面 ログイン画面

認証済み画面

<<instance of>>

<<meta-model>>

<<model>>

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

19Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

トレース情報の MOF メタモデル( 1/2 )

成果物間の依存関係(トレース情報)のメタモデル 依存関係を保持した状態で管理しなければならない要素対を定義 依存元の要素と依存先の要素の n 対 n の関係 あるトレース情報はより詳細な別のトレース情報と関連をもつ インスタンスであるトレース情報はツールが自動生成することを想定

ActivityNode (from BasicActivities)

DisplayNode

+ impl_file: JspName

ActionFormBean

+ name: String+ impl_class: ClassName+ scope: String

DisplayDef

ForwardEdge

constraints{+source is ActionNode}

ActivityEdge (from BasicActivities)

ValueSpecification (from BasicActivities)

ActionNode

+ path: String+ impl_class: ClassName

ActionEdge

constraints{+source is DisplayNode}{+target is ActionNode}

1+guard

1

+source

*

+outgoing1

+target

*

+incomming

+form-bean

+action

StrutsConfig

FormBeans

FormBean

+ name: BeanName+ type: ClassName [0..1]

ActionMappings

Action

+ path: RequestPath+ type: ClassName [0..1]+ name: BeanName [0..1]+ forward: RequestPath [0..1]+ scope: RequestScope

Forward

+ name: String+ path: RequestPath [0..1]

0..1

0..*

0..*

1

0..*

1

0..*1

0..* 1

Asub_X_Trace: Trace

+ detail: String

B_XY_Trace: Trace

+ detail: StringB : RefElement

+ ref: = "DisplayNode"

A : RefElement

+ ref: = "ForwardEdge"

D : RefElement

+ ref: = "ActionFormBean"

C : RefElement

+ ref: = "ActionNode"

Y : RefElement

+ ref: = "Action"

X : RefElement

+ ref: = "Forward"

Z : RefElement

+ ref: = "FormBean"

DisplayNode.impl_file → Action.forwardDisplayNode.impl_file → Forward.path

C_Y_Trace: Trace

+ detail: StringActionNode.path → Action.pathActionNode.impl_class → Action.type

D_YZ_Trace: Trace

+ detail: StringActionFormBean.name → FormBean.nameActionFormBean.name → Action.nameActionFormBean.impl_class → FormBean.typeActionFormBean.scope → Action.scope

A_X_Trace: Trace

+ detail: String

ValueSpecification.body → Forward.name

Asub : RefElement

+ ref: = "ValueSpecification"

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

20Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

トレース情報の MOF メタモデル( 2/2 )

Asub_X_Trace: Trace

+ detail: String

B_XY_Trace: Trace

+ detail: StringB : RefElement

+ ref: = "DisplayNode"

A : RefElement

+ ref: = "ForwardEdge"

D : RefElement

+ ref: = "ActionFormBean"

C : RefElement

+ ref: = "ActionNode"

Y : RefElement

+ ref: = "Action"

X : RefElement

+ ref: = "Forward"

Z : RefElement

+ ref: = "FormBean"

DisplayNode.impl_file → Action.forwardDisplayNode.impl_file → Forward.path

C_Y_Trace: Trace

+ detail: StringActionNode.path → Action.pathActionNode.impl_class → Action.type

D_YZ_Trace: Trace

+ detail: StringActionFormBean.name → FormBean.nameActionFormBean.name → Action.nameActionFormBean.impl_class → FormBean.typeActionFormBean.scope → Action.scope

A_X_Trace: Trace

+ detail: String

ValueSpecification.body → Forward.name

Asub : RefElement

+ ref: = "ValueSpecification"

画面遷移図のメタモデル要素への参照

struts-config.xml のメタモデル要素への参照

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

21

メタモデルに基づく追跡可能性の実現手法

MOF リポジトリの操作による追跡可能性の実現1. 個々の成果物を MOF リポジトリで管理2. トレース情報を MOF リポジトリに自動蓄積

モデリングインターフェース

正当性管理 正当性管理トレース管理

開発者 開発者

画面遷移図のメタモデル struts-config.xml のメタモデルトレース情報のメタモデル

Asub_X_Trace: Trace

+ detail: String

B_XY_Trace: Trace

+ detail: StringB : RefElement

+ ref: = "DisplayNode"

A : RefElement

+ ref: = "ForwardEdge"

D : RefElement

+ ref: = "ActionFormBean"

C : RefElement

+ ref: = "ActionNode"

Y : RefElement

+ ref: = "Action"

X : RefElement

+ ref: = "Forward"

Z : RefElement

+ ref: = "FormBean"

DisplayNode.impl_file → Action.forwardDisplayNode.impl_file → Forward.path

C_Y_Trace: Trace

+ detail: StringActionNode.path → Action.pathActionNode.impl_class → Action.type

D_YZ_Trace: Trace

+ detail: StringActionFormBean.name → FormBean.nameActionFormBean.name → Action.nameActionFormBean.impl_class → FormBean.typeActionFormBean.scope → Action.scope

A_X_Trace: Trace

+ detail: String

ValueSpecification.body → Forward.name

Asub : RefElement

+ ref: = "ValueSpecification"

StrutsConfig

FormBeans

FormBean

+ name: BeanName+ type: ClassName [0..1]

ActionMappings

Action

+ path: RequestPath+ type: ClassName [0..1]+ name: BeanName [0..1]+ forward: RequestPath [0..1]+ scope: RequestScope

Forward

+ name: String+ path: RequestPath [0..1]

0..1

0..*

0..*

1

0..*

1

0..*1

0..* 1

ActivityNode (from BasicActivities)

DisplayNode

+ impl_file: JspName

ActionFormBean

+ name: String+ impl_class: ClassName+ scope: String

DisplayDef

ForwardEdge

constraints{+source is ActionNode}

ActivityEdge (from BasicActivities)

ValueSpecification (from BasicActivities)

ActionNode

+ path: String+ impl_class: ClassName

ActionEdge

constraints{+source is DisplayNode}{+target is ActionNode}

1+guard

1

+source

*

+outgoing1

+target

*

+incomming

+form-bean

+action

/Logoff

LogonForm

welcom.jsp logon.jsp

mainMenu.jsp

/SubmitLogon

/Logon

success

failure

success

org.example.LogonActionorg.example.LogonAction

org.example.LogoffActionorg.example.LogoffAction

org.example.LogonFormorg.example.LogonForm

スタート画面 ログイン画面

認証済み画面

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

22

個々の成果物の正当性管理

モデリングインターフェース

A B

C

<<meta-model>>

画面遷移図のメタモデル

X

Y

<<meta-model>>

struts-config.xml のメタモデル

開発者 開発者

正当性管理正当性管理

<<model>>B1: B C1: C

C2: C

<<model>>B1: B C1: C

C2: C

<<model>>X1: X Y1: Y

Y2: Y

BX_Trace

CY_Trace

<<meta-model>>

RefB

RefC

RefX

RefY

画面遷移図 -struts-config.xml 間の依存関係のメタモデル(トレースメタモデル)

<<model>>X1: X Y1: Y

Y2: Y

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

23

X

Y

<<meta-model>>

struts-config.xml のメタモデル

A B

C

<<meta-model>>

画面遷移図のメタモデル

<<model>>B1: B C1: C

C2: C

トレース情報の蓄積

BX_Trace

CY_Trace

<<meta-model>>

RefB

RefC

RefX

RefY

画面遷移図 -struts-config.xml 間の依存関係のメタモデル(トレースメタモデル)

トレース管理

B1X1: BX_Trace

<<model>>

RefB1 RefX1

C1Y1: CY_TraceRefC1 RefY1

C2Y2: CY_TraceRefC2 RefY2

モデリングインターフェース開発者 開発者

作成されることが要求されるが,まだ作られていない状態

<<model>>X1: X Y1: Y

Y2: Y

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

24

X

Y

<<meta-model>>

struts-config.xml のメタモデル

<<model>>X1: X Y1: Y

Y2: Y

A B

C

<<meta-model>>

画面遷移図のメタモデル

<<model>>B1: B C1: C

C2: C

追跡可能性の実現と一貫性の管理( 1/2 )

BX_Trace

CY_Trace

<<meta-model>>

RefB

RefC

RefX

RefY

画面遷移図 -struts-config.xml 間の依存関係のメタモデル(トレースメタモデル)

B1X1: BX_Trace

<<model>>

C1Y1: CY_Trace

RefB1

RefC1

RefX1

RefY1

C2Y2: CY_TraceRefC2 RefY2

トレース管理

モデリングインターフェース開発者 開発者

正当性管理正当性管理

変更要修正

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

25

X

Y

<<meta-model>>

struts-config.xml のメタモデル

<<model>>X1: X Y1: Y

Y2: Y

A B

C

<<meta-model>>

画面遷移図のメタモデル

<<model>>B1: B C1: C

C2: C

追跡可能性の実現と一貫性の管理( 2/2 )

BX_Trace

CY_Trace

<<meta-model>>

RefB

RefC

RefX

RefY

画面遷移図 -struts-config.xml 間の依存関係のメタモデル(トレースメタモデル)

トレース管理

<<model>>

B1X1: BX_Trace

C1Y1: CY_Trace

RefB1

RefC1

RefX1

RefY1

C2Y2: CY_TraceRefC2 RefY2

モデリングインターフェース開発者 開発者

正当性管理正当性管理

要修正影響

削除

メタモデル違反

削除削除

トレース情報の削除

1

0..1

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

2005/11/29 150 SIGSE-150-5第 回ソフトウェア工学研究会( )26Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

研究の背景と目的 Struts とは メタモデルと MOF 提案手法

Struts の成果物とトレース情報に対するメタモデル定義 メタモデルに基づく追跡可能性の実現手法

まとめと今後の課題

発表の流れ

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

2005/11/29 150 SIGSE-150-5第 回ソフトウェア工学研究会( )27Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

まとめと今後の課題 まとめ

画面遷移図と struts-config.xml ,及びそのトレース情報に対して MOF メタモデルを定義

メタモデルから生成した MOF リポジトリを操作することで, Struts における追跡可能性,一貫性管理を実現する手法を提案

今後の課題メタモデルの詳細化プロトタイプツールの実装による評価実験

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

32Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

SIGSE 質問,コメント トレーサビリティを確保するということだけなら,わざわざこん

なことしなくても自動的に生成してしまったら? QVT を使わなかった(使えなかった)のは?(沢田先生@京

大) インスタンス決めうちであるような依存関係は?(沢田先生@京大)

単純な n 対 n ではなくてもう少し何か.すごい数になるよね(沢田先生@京大)

汎用的な手法のようだけど,なぜ struts を? なぜ設計と実装の間のインスタンスに対して,適切なトレースが

作れるの?(岸先生@JAIST ) 簡単に言うけど…もうちょっと詳しく(落水先生@JAIST ) 次々に入り組んだトレースを保存していって,いざ修正が入った

場合に,その影響が及ぶ部分をどうピンポイントに取り出すのか.(落水先生@JAIST )