struts...
DESCRIPTION
Struts フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案. 大平直宏 † ,松下誠 † ,岡野浩三 † ,楠本真二 † , 井上克郎 † ,山下裕介 ‡ ,我妻智之 ‡ † 大阪大学大学院情報科学研究科 ‡ (株) NTT データ. 研究の背景. Web アプリケーションフレームワーク ex. ) Struts , JSF 画面遷移の管理といった典型的な処理をフレームワークが実装 ソフトウェアの品質向上,開発・保守効率の向上 問題点 フレームワークの意図する仕様に従った成果物の作成が必要 修正や削除が加わった場合にも - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Struts フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/1.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/2.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/3.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/4.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/5.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/6.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/7.jpg)
クライアント
サーバ
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/8.jpg)
クライアント
サーバ
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/9.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/10.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/11.jpg)
11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
メタモデルの重要性 ソフトウェア開発で扱う情報
要求,設計,実装,依存関係,進捗, etc 情報を定められた仕様に従ってモデルとして表現
仕様が曖昧な場合や明示されない場合が存在
仕様を形式的に定義(メタモデル)できる必要
A B
C
<<model>>
開発者
記述仕様
対象の情報
モデル化
![Page 12: Struts フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/12.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/13.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/14.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/15.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/16.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/17.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/18.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/19.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/20.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/21.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/22.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/23.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/24.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/25.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/26.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/27.jpg)
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 フレームワークにおけるメタモデルを用いた追跡可能性実現手法の提案](https://reader033.vdocuments.mx/reader033/viewer/2022061612/568143d2550346895db060a9/html5/thumbnails/28.jpg)
32Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
SIGSE 質問,コメント トレーサビリティを確保するということだけなら,わざわざこん
なことしなくても自動的に生成してしまったら? QVT を使わなかった(使えなかった)のは?(沢田先生@京
大) インスタンス決めうちであるような依存関係は?(沢田先生@京大)
単純な n 対 n ではなくてもう少し何か.すごい数になるよね(沢田先生@京大)
汎用的な手法のようだけど,なぜ struts を? なぜ設計と実装の間のインスタンスに対して,適切なトレースが
作れるの?(岸先生@JAIST ) 簡単に言うけど…もうちょっと詳しく(落水先生@JAIST ) 次々に入り組んだトレースを保存していって,いざ修正が入った
場合に,その影響が及ぶ部分をどうピンポイントに取り出すのか.(落水先生@JAIST )