スライド 1

Strutsフレームワークにおけるメタモデルを
用いた追跡可能性実現手法の提案
大平直宏†,松下誠†,岡野浩三†,楠本真二†,
井上克郎†,山下裕介‡,我妻智之‡
† 大阪大学大学院情報科学研究科
‡ (株)NTTデータ
2005/11/29
第150回ソフトウェア工学研究会(SIGSE-150-5)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
研究の背景

Webアプリケーションフレームワーク
ex.)Struts,JSF
 画面遷移の管理といった典型的な処理をフレームワークが実装
 ソフトウェアの品質向上,開発・保守効率の向上

問題点
 フレームワークの意図する仕様に従った成果物の作成が必要
 修正や削除が加わった場合にも
 明示的な仕様が定められていない成果物の存在
 実装成果物にはフレームワークの仕様があるが,設計成果物にはない
 成果物間の依存関係(トレース情報)を保存・管理する枠組み
が存在しない
設計・実装成果物間の一貫性が保たれない
2005/11/29
第150回ソフトウェア工学研究会(SIGSE-150-5)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
研究の目的
Strutsフレームワークにおける画面遷移の設計~実装を対象
 追跡可能性を実現する
 設計・実装間で,互いに関連のある要素の依存関係を追跡可能
(変更影響を追跡可能である)

一貫性管理を実現する
 設計・実装間で,お互いが表現する内容に矛盾がない
(設計情報が正しく実装に伝わっている)
org.example.LogonForm
スタート画面
ログイン画面
/Logon
welcom.jsp
logon.jsp
LogonForm
success
/Logoff
/SubmitLogon
org.example.LogoffAction
画面遷移図
認証済み画面
mainMenu.jsp
failure
success
struts-config.xml
org.example.LogonAction
設計
実装
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
提案手法の概要

成果物とその依存関係(トレース情報)をMOFメタモデルのもとで統一的に管理
1. 個々の成果物に対してMOFメタモデルを定義
成果物単体の正しさを保証

2.
成果物間のトレース情報に対してMOFメタモデルを定義
成果物間のトレース情報を自動蓄積

Asub_X_Trace: Trace
Asub : RefElement
ValueSpecification
(from BasicActivities)
+guard
+target
+
ref: = "ValueSpecification"
ref: = "ForwardEdge"
+
impl_file: JspName
+
+
path: String
impl_class: ClassName
+
detail: String
0..*
ref: = "Forward"
B : RefElement
ActionEdge
ForwardEdge
constraints
{+source is DisplayNode}
{+target is ActionNode}
constraints
{+source is ActionNode}
ref: = "DisplayNode"
1
0..*
0..*
Action
FormBean
ref: = "ActionNode"
+
+
C_Y_Trace: Trace
C : RefElement
+
+
Y : RefElement
detail: String
ActionNode.path
→ Action.path
ActionNode.impl_class → Action.type
+
ref: = "Action"
name: BeanName
type: ClassName [0..1]
+
+
+
+
+
path: RequestPath
type: ClassName [0..1]
name: BeanName [0..1]
forward: RequestPath [0..1]
scope: RequestScope
D_YZ_Trace: Trace
+form-bean
D : RefElement
ActionFormBean
+
+
+
0..*
ActionMappings
1
+ detail: String
DisplayNode.impl_file → Action.forward
DisplayNode.impl_file → Forward.path
+action
DisplayDef
1
1
FormBeans
*
ActionNode
+
B_XY_Trace: Trace
+
DisplayNode
StrutsConfig
X : RefElement
A_X_Trace: Trace
A : RefElement
+
ActivityEdge
*
+outgoing (from BasicActivities)
1
detail: String
ValueSpecification.body → Forward.name
1
+incomming
ActivityNode
1
(from BasicActivities) +source
+
+
name: String
impl_class: ClassName
scope: String
ref: = "ActionFormBean"
+ detail: String
ActionFormBean.name
ActionFormBean.name
ActionFormBean.impl_class
ActionFormBean.scope
→ FormBean.name
→ Action.name
→ FormBean.type
→ Action.scope
0..1
Z : RefElement
+
0..*
ref: = "FormBean"
Forward
+
+
org.example.LogonForm
スタート画面
name: String
path: RequestPath [0..1]
ログイン画面
/Logon
welcom.jsp
logon.jsp
LogonForm
success
/Logoff
/SubmitLogon
org.example.LogoffAction
画面遷移図
認証済み画面
mainMenu.jsp
failure
success
struts-config.xml
org.example.LogonAction
設計
実装
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
発表の流れ
研究の背景と目的
 Strutsとは
 メタモデルとMOF
 提案手法


Strutsの成果物とトレース情報に対するメタモデル定義
 メタモデルに基づく追跡可能性の実現手法

まとめと今後の課題
2005/11/29
第150回ソフトウェア工学研究会(SIGSE-150-5)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
Struts


JavaのWebアプリケーションフレー
ムワーク
Webアプリケーションの機能を個々
のコンポーネントへ分割





各コンポーネントを制御するアクション
サーブレット
ユーザの入出力画面を表示する
JSP/HTMLファイル
入力データを保存するアクションフォー
ムBeans
リクエスト処理するアクションクラス
アクションサーブレット


フレームワークのコアエンジン
各コンポーネントを設定ファイルに基づ
いて結合

struts-config.xml
2. 入力データの保存
アクションフォームBeans
struts-config.xml
データ の参照
3. 対応するアクションの実行
アクションクラス
4. ステータスの返却
アクションサーブレット
1. リクエスト
& 入力データ
ログイン
認証
アカウント
●●●●●
パスワード
●●●●●●●●
OK
処理
サーバ
Cancel
5. 次画面の出力
認証済み
UserA
クライアント
Inbox
Outbox
=================
================
===========
===============
===============
6
struts-config.xmlの例
<action-mappings>
ユーザのリクエストを処理するアクショ
ンクラスと画面の遷移に関する設定
2. 入力データの保存
アクションフォームBeans
struts-config.xml
データ の参照
3. 対応するアクションの実行
<form-beans>
ユーザの入力情報を保存するアク
ションフォームBeansに関する設定
アクションクラス
1. リクエスト
& 入力データ
ログイン
認証
アカウント
●●●●●
パスワード
●●●●●●●●
OK
アクションサーブレット
4. ステータスの返却
サーバ
Cancel
5. 次画面の出力
認証済み
UserA
クライアント
Inbox
Outbox
=================
================
===========
===============
===============
7
struts-config.xmlの例
LogonForm
= org.example.LogonForm
2. 入力データの保存
アクションフォームBeans
struts-config.xml
データ の参照
org.example.LogonAction
3. 対応するアクションの実行
アクションクラス
認証
アカウント
●●●●●
パスワード
●●●●●●●●
OK
success
failure
1. リクエスト
& 入力データ
ログイン
<action>
リクエスト処理に関する設定
<forward>
アクションクラスの終了ステータスと
次画面のマッピング
アクションサーブレット
4. ステータスの返却
/SubmitLogon
サーバ
Cancel
mainMenu.jsp
logon.jsp
5. 次画面の出力
認証済み
ログイン
認証
UserA
クライアント
=================
●●●●●
アカウント================
Inbox ===========
===============
●●●●●●●●
パスワード
Outbox ===============
OK
Cancel
8
Strutsにおける成果物


実装:設定ファイルstruts-config.xml
設計:画面遷移図
 フレームワークによる明示的な仕様は定められていない
 struts-config.xmlとして実装できる設計にする必要性
org.example.LogonForm
スタート画面
設計もフレームワークに
よって暗黙的な仕様で
制限されている
ログイン画面
/Logon
welcom.jsp
logon.jsp
LogonForm
success
/Logoff
/SubmitLogon
org.example.LogoffAction
認証済み画面
mainMenu.jsp
failure
success
org.example.LogonAction
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
発表の流れ
研究の背景と目的
 Strutsとは
 メタモデルとMOF
 提案手法


Strutsの成果物とトレース情報に対するメタモデル定義
 メタモデルに基づく追跡可能性の実現手法

まとめと今後の課題
2005/11/29
第150回ソフトウェア工学研究会(SIGSE-150-5)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
メタモデルの重要性

ソフトウェア開発で扱う情報
要求,設計,実装,依存関係,進捗,etc

情報を定められた仕様に従ってモデルとして表現
仕様が曖昧な場合や明示されない場合が存在
記述仕様
<<model>>
A
B
対象の情報
C
モデル化
開発者
仕様を形式的に定義(メタモデル)できる必要
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
MOF(Meta Object Facility)


オブジェクト指向に基づいてメタモデルを
定義するためのOMG標準言語
UMLのクラス図に似た意味論をもつが,
表記法はない




X
UMLは同じ性質のオブジェクトをUMLクラス
として抽象化
メタオブジェクトは他のオブジェクトの性質を
規定するオブジェクト(≒UMLクラス)
MOFリポジトリを生成可能
MOF
クラス
1
0..1
Y
メタモデル設計者
UMLクラス図を用いて記述されることが多い
MOFは同じ性質のメタオブジェクトを
MOFクラスとして抽象化

<<meta-model>>
モデル化
定義
<<model>>
A:Y
B:X
MOF
オブジェクト
C:Y
開発者
定義
モデル化
対象の情報
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
MOFリポジトリ

MOFで記述したメタモデルに対して,そのスキーマに従うイン
スタンスを管理できるリポジトリを生成可能
メタモデ
ル
<<meta-model>>
<<meta-model>>
A
1
*
A
B
B
C
1
0..1
Generate
MOFリポジトリ
C
メタモデル設計者
モデル
(インスタン
ス)
格納OK
格納OK
格納NG
<<model>>
A1: A
B1: B
<<model>>
A1: A
B1: B
<<model>>
A1: A
B1: B
C1: C
B2: B
開発者A
開発者B
C1: C
開発者C
メタモデル
違反
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
発表の流れ
研究の背景と目的
 Strutsとは
 メタモデルとMOF
 提案手法


Strutsの成果物とトレース情報に対するメタモデル定義
 メタモデルに基づく追跡可能性の実現手法

まとめと今後の課題
2005/11/29
第150回ソフトウェア工学研究会(SIGSE-150-5)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
struts-config.xmlのMOFメタモデル

XML文書のメタモデル


DTD(Document Type Definition,文書定義型)で定義されている
MOFによるXML文書のメタモデル

要素の親子関係をMOFクラスの集約関係として定義
※ MOFで再定義するのは,全ての成果物をMOFリポジトリの上で統一的に扱うため
StrutsConfig
<!– struts-config.xmlのDTDの一部 -->
0..*
<!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>
…
1
1
ActionMappings
FormBeans
1
1
0..*
0..*
Action
FormBean
+
+
0..*
name: BeanName
type: ClassName [0..1]
+
+
+
+
+
path: RequestPath
type: ClassName [0..1]
name: BeanName [0..1]
forward: RequestPath [0..1]
scope: RequestScope
0..1
0..*
Forward
+
+
name: String
path: RequestPath [0..1]
15
struts-config.xmlのモデル例
<<meta-model>>
StrutsConfig
1
1
0..*
1
1
0..*
0..*
Action
FormBean
+
+
0..*
ActionMappings
FormBeans
name: BeanName
type: ClassName [0..1]
+
+
+
+
+
path: RequestPath
type: ClassName [0..1]
name: BeanName [0..1]
forward: RequestPath [0..1]
scope: RequestScope
0..1
0..*
<<instance of>>
Forward
+
+
: StrutsConfig
: FormBeans
name: String
path: RequestPath [0..1]
: ActionMappings
: Action
: FormBean
+ path: = "/SubmitLogon"
+ name: = "LogonForm"
+ type: = "org.example.LogonForm" + type: = "org.example.LogonAction"
+ name: = "LogonForm"
+ scope: = "request"
<<model>>
: Forward
: Forward
+ name: = "success"
+ path: = "mainMenu.jsp"
+ name: = "failure"
+ path: = "logon.jsp"
16
画面遷移図のMOFメタモデル

UMLアクティビティのメタモデルをベースに定義

ノード ActivityNode



辺 ActivityEdge



画面DisplayNode
アクションActionNode
リクエストActionEdge
次画面遷移ForwardEdge
ValueSpecification
(from BasicActivities)
ガード条件 ValueSpecification
+guard
+target
1
+incomming
ActivityNode
1
(from BasicActivities) +source
ActivityEdge
*
+outgoing (from BasicActivities)
org.example.LogonForm
1
ログイン画面
*
/Logon
logon.jsp
DisplayNode
+
impl_file: JspName
ActionNode
+
+
path: String
impl_class: ClassName
LogonForm
/SubmitLogon
認証済み画面
mainMenu.jsp
failure
ActionEdge
ForwardEdge
constraints
{+source is DisplayNode}
{+target is ActionNode}
constraints
{+source is ActionNode}
+action
DisplayDef
+form-bean
ActionFormBean
success
org.example.LogonAction
+
+
+
name: String
impl_class: ClassName
scope: String
17
画面遷移図のモデル例
ValueSpecification
(from BasicActivities)
<<meta-model>>
+target
+guard
ActivityNode
1
(from BasicActivities) +source
ActivityEdge
*
+outgoing (from BasicActivities)
1
DisplayNode
+
*
ActionNode
impl_file: JspName
+
+
1
+incomming
path: String
impl_class: ClassName
ActionEdge
ForwardEdge
constraints
{+source is DisplayNode}
{+target is ActionNode}
constraints
{+source is ActionNode}
<<instance of>>
+action
DisplayDef
+form-bean
ActionFormBean
+
+
+
name: String
impl_class: ClassName
scope: String
: DisplayNode
+
: ValueSpecification
impl_file: = "logon.jsp"
+source
+
body: = "[failure]"
+target
: ActionFormBean
org.example.LogonForm
ログイン画面
+
+
+
name: = "LogonForm"
impl_class: = "org.example.LogonForm"
scope: = "request"
/Logon
logon.jsp
+source
path: = "/SubmitLogon"
impl_class: = "org.example.LogonAction"
LogonForm
+source
/SubmitLogon
mainMenu.jsp
+target
: ActionNode
+
+
認証済み画面
: ForwardEdge
: ActionEdge
failure
<<model>>
: ValueSpecification
: ForwardEdge
+
body: = "[success]"
+target
success
: DisplayNode
org.example.LogonAction
+
impl_file: = "mainMenu.jsp"
18
トレース情報のMOFメタモデル(1/2)





成果物間の依存関係(トレース情報)のメタモデル
依存関係を保持した状態で管理しなければならない要素対を定義
依存元の要素と依存先の要素のn対nの関係
あるトレース情報はより詳細な別のトレース情報と関連をもつ
インスタンスであるトレース情報はツールが自動生成することを想定
ValueSpecification
(from BasicActivities)
+guard
1
+
+incomming
Asub_X_Trace: Trace
Asub : RefElement
ref: = "ValueSpecification"
ActivityEdge
*
+outgoing (from BasicActivities)
+
detail: String
StrutsConfig
ValueSpecification.body → Forward.name
0..*
1
1
0..*
ActionMappings
FormBeans
*
ActionEdge
constraints
{+source is DisplayNode}
{+target is ActionNode}
Name
A : RefElement
ForwardEdge
constraints
{+source is ActionNode}
+
ref: = "ForwardEdge"
X : RefElement
A_X_Trace: Trace
+
detail: String
1
1
0..*
0..*
Action
FormBean
+
+ name: BeanName
ref: = "Forward"
+ type: ClassName [0..1]
+
+
+
+
+
path: RequestPath
type: ClassName [0..1]
name: BeanName [0..1]
forward: RequestPath [0..1]
scope: RequestScope
+action
ActionFormBean
+
+
+
name: String
impl_class: ClassName
scope: String
0..1
B_XY_Trace: Trace
+form-bean
B : RefElement
+
ref: = "DisplayNode"
+ detail: String
DisplayNode.impl_file → Action.forward
DisplayNode.impl_file → Forward.path
0..*
Forward
+
+
name: String
path: RequestPath [0..1]
C_Y_Trace: Trace
: RefElement
Software Engineering Laboratory, CDepartment
of Computer Science, Graduate School of Information Science and
Y :Technology,
RefElement Osaka University
+ detail: String
19
トレース情報のMOFメタモデル(2/2)
画面遷移図の
メタモデル要素
への参照
Asub : RefElement
+
ref: = "ValueSpecification"
+
ref: = "ForwardEdge"
detail: String
ValueSpecification.body → Forward.name
X : RefElement
A_X_Trace: Trace
A : RefElement
+
struts-config.xmlの
メタモデル要素への参照
Asub_X_Trace: Trace
+
+
detail: String
ref: = "Forward"
B_XY_Trace: Trace
B : RefElement
+
ref: = "DisplayNode"
+ detail: String
DisplayNode.impl_file → Action.forward
DisplayNode.impl_file → Forward.path
C_Y_Trace: Trace
C : RefElement
+
ref: = "ActionNode"
+
Y : RefElement
detail: String
ActionNode.path
→ Action.path
ActionNode.impl_class → Action.type
+
ref: = "Action"
D_YZ_Trace: Trace
D : RefElement
+
ref: = "ActionFormBean"
+ detail: String
ActionFormBean.name
ActionFormBean.name
ActionFormBean.impl_class
ActionFormBean.scope
→ FormBean.name
→ Action.name
→ FormBean.type
→ Action.scope
Z : RefElement
+
ref: = "FormBean"
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
20
メタモデルに基づく追跡可能性の実現手法

MOFリポジトリの操作による追跡可能性の実現
1.
2.
個々の成果物をMOFリポジトリで管理
トレース情報をMOFリポジトリに自動蓄積
ValueSpecification
(from BasicActivities)
+target
ref: = "ValueSpecification"
1
StrutsConfig
Asub_X_Trace: Trace
Asub : RefElement
+
+guard
+
detail: String
ValueSpecification.body → Forward.name
0..*
+incomming
ActivityNode
1
(from BasicActivities) +source
ActivityEdge
*
+outgoing (from BasicActivities)
1
1
1
A : RefElement
+
ref: = "ForwardEdge"
+
detail: String
0..*
ActionMappings
FormBeans
X : RefElement
A_X_Trace: Trace
+
ref: = "Forward"
1
*
1
0..*
0..*
B_XY_Trace: Trace
B : RefElement
DisplayNode
+
impl_file: JspName
ActionNode
+
+
path: String
impl_class: ClassName
+
ActionEdge
ForwardEdge
constraints
{+source is DisplayNode}
{+target is ActionNode}
constraints
{+source is ActionNode}
ref: = "DisplayNode"
ref: = "ActionNode"
+
+
C_Y_Trace: Trace
C : RefElement
+
+action
DisplayDef
+
Action
FormBean
+ detail: String
DisplayNode.impl_file → Action.forward
DisplayNode.impl_file → Forward.path
Y : RefElement
detail: String
ActionNode.path
→ Action.path
ActionNode.impl_class → Action.type
+
name: BeanName
type: ClassName [0..1]
+
+
+
+
+
path: RequestPath
type: ClassName [0..1]
name: BeanName [0..1]
forward: RequestPath [0..1]
scope: RequestScope
ref: = "Action"
0..1
+form-bean
0..*
D_YZ_Trace: Trace
ActionFormBean
+
+
+
D : RefElement
name: String
impl_class: ClassName
scope: String
+
画面遷移図のメタモデル
ref: = "ActionFormBean"
+ detail: String
ActionFormBean.name
→ FormBean.name
ActionFormBean.name
→ Action.name
ActionFormBean.impl_class → FormBean.type
ActionFormBean.scope
→ Action.scope
Forward
Z : RefElement
+
ref: = "FormBean"
トレース情報のメタモデル
+
+
name: String
path: RequestPath [0..1]
struts-config.xmlの
メタモデル
org.example.LogonForm
スタート画面
ログイン画面
/Logon
welcom.jsp
logon.jsp
LogonForm
success
/Logoff
/SubmitLogon
正当性管理
org.example.LogoffAction
認証済み画面
mainMenu.jsp
failure
トレース管理
success
正当性管理
org.example.LogonAction
モデリングインターフェース
開発者
開発者
21
個々の成果物の正当性管理
<<meta-model>>
<<meta-model>>
A
RefB
BX_Trace
<<meta-model>>
RefX
B
X
RefC
C
画面遷移図のメタモデル
CY_Trace
RefY
Y
画面遷移図-struts-config.xml間の
依存関係のメタモデル(トレースメタモデル)
struts-config.xmlの
メタモデル
<<model>>
B1: B
C1: C
C2: C
<<model>>
正当性管理
X1: X
Y1: Y
Y2: Y
<<model>>
B1: B
<<model>>
C1: C
X1: X
C2: C
正当性管理
モデリングインターフェース
開発者
Y1: Y
Y2: Y
開発者
22
トレース情報の蓄積
<<meta-model>>
<<meta-model>>
A
RefB
RefX
C
画面遷移図のメタモデル
C2: C
CY_Trace
RefY
画面遷移図-struts-config.xml間の
依存関係のメタモデル(トレースメタモデル)
<<model>>
<<model>>
C1: C
<<meta-model>>
X
B
RefC
B1: B
BX_Trace
RefB1
B1X1: BX_Trace
RefX1
RefC1
C1Y1: CY_Trace
RefY1
RefC2
C2Y2: CY_Trace
Y
struts-config.xmlの
メタモデル
<<model>>
作成されることが要求
X1: X されるが,まだ作られて
Y1: Y
いない状態
Y2: Y
RefY2
トレース管理
モデリングインターフェース
開発者
開発者
23
追跡可能性の実現と一貫性の管理(1/2)
<<meta-model>>
<<meta-model>>
A
RefB
C
画面遷移図のメタモデル
<<meta-model>>
X
C1: C
C2: C
変更
CY_Trace
RefY
画面遷移図-struts-config.xml間の
依存関係のメタモデル(トレースメタモデル)
<<model>>
<<model>>
正当性管理
RefX
B
RefC
B1: B
BX_Trace
Y
struts-config.xmlの
メタモデル
<<model>>
RefB1
B1X1: BX_Trace
RefX1
RefC1
C1Y1: CY_Trace
RefY1
X1: X
Y1: Y
Y2: Y
要修正
RefC2
C2Y2: CY_Trace
RefY2
正当性管理
トレース管理
モデリングインターフェース
開発者
開発者
24
追跡可能性の実現と一貫性の管理(2/2)
<<meta-model>>
<<meta-model>>
メタモデル違反
A
B
1
0..1
C
画面遷移図のメタモデル
RefB
C1: C
C2: C
正当性管理
削除
要修正
RefX
X
RefC
CY_Trace
RefY
画面遷移図-struts-config.xml間の
依存関係のメタモデル(トレースメタモデル)
削除<<model>>
B1: B
BX_Trace
<<meta-model>>
<<model>>
Y
struts-config.xmlの
メタモデル
<<model>>
RefB1
B1X1: BX_Trace
RefX1
RefC1
C1Y1: CY_Trace
RefY1
X1: X
Y1: Y
Y2: Y
影響
削除
RefC2
C2Y2: CY_Trace
トレース情報の
削除
RefY2
正当性管理
トレース管理
モデリングインターフェース
開発者
開発者
25
発表の流れ
研究の背景と目的
 Strutsとは
 メタモデルとMOF
 提案手法


Strutsの成果物とトレース情報に対するメタモデル定義
 メタモデルに基づく追跡可能性の実現手法

まとめと今後の課題
2005/11/29
第150回ソフトウェア工学研究会(SIGSE-150-5)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
26
まとめと今後の課題

まとめ
画面遷移図とstruts-config.xml,及びそのトレース情報
に対してMOFメタモデルを定義
メタモデルから生成したMOFリポジトリを操作することで,
Strutsにおける追跡可能性,一貫性管理を実現する手
法を提案

今後の課題
メタモデルの詳細化
プロトタイプツールの実装による評価実験
2005/11/29
第150回ソフトウェア工学研究会(SIGSE-150-5)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
27
SIGSE質問,コメント
トレーサビリティを確保するということだけなら,わざわざこんなことしなくて
も自動的に生成してしまったら?
 QVTを使わなかった(使えなかった)のは?(沢田先生@京大)
 インスタンス決めうちであるような依存関係は?(沢田先生@京大)
 単純なn対nではなくてもう少し何か.すごい数になるよね(沢田先生
@京大)
 汎用的な手法のようだけど,なぜstrutsを?
 なぜ設計と実装の間のインスタンスに対して,適切なトレースが作れる
の?(岸先生@JAIST)
 簡単に言うけど…もうちょっと詳しく(落水先生@JAIST)
 次々に入り組んだトレースを保存していって,いざ修正が入った場合に,
その影響が及ぶ部分をどうピンポイントに取り出すのか.(落水先生
@JAIST)

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
32