2005 re-reverse engineering goal models from legacy code
DESCRIPTION
TRANSCRIPT
選定理由
2つの論文「Constructing Feature Models using Goal-Oriented Analysis」
「Goal-Driven Software Product Line Engineering」
を組み合わせ、問題点を分析
問題点の解決策を考案
問題解決に使えそうだから0
「Constructing Feature Models using
Goal-Oriented Analysis」 by 佐伯元司
1
あらゆる要求に対応できるフィーチャモデル
「Goal-Driven Software Product Line
Engineering」 by Mohsen Asadi
2
顧客満足度の付与
FD=0
それ以外=1
=1∨0
=1=0=1∨0
=1=0 =1 顧客の要求に必要な機能
のみのフィーチャモデル
ゴールモデル
フィーチャモデル
問題点
• 既存システムのゴールモデルが存在
しなければならない
(既存システムの開発時に、ゴール指向
要求分析をしていなければならない)
• 既存システムのゴールモデルは、結合できるように互いに整合性がとれている必要がある
互いに整合性のとれた、既存システムの
ゴールモデルを作成する必要がある 3
発表論文
• タイトル
– 「Reverse Engineering Goal Models
from Legacy Code」
(遺産コードからゴールモデルにリバースエンジニアリング)
• 著者– Yijun Yu, Yiqiao Wang, John Mylopoulos, Sotirios Liaskos,
Alexei Lapouchnian,Julio Cesar Sampaio do Prado Leite
• 出典– Proceedings of the 13th IEEE International Conference on
Requirements Engineering (2005)4
概要
• 目的:既存ソフトウェアから、可変性の高い
ソフトウェアを再設計するため
• 手法:既存ソフトウェアのソースコードから
ゴールモデルを導出
• 結果:提案手法を用いることで、
コードからゴールモデルを導出できた
5
リバースエンジニアリングの蹄鉄モデル
6
ここがメイン
提案手法
7
リファクタリング
ゴールモデルへ変換
構造化されているか?
構造化されていないソースコードをステートチャートに変換1
8
ステートチャートソースコード
9
構造化されていないソースコードをステートチャートに変換2
ステートチャートソースコード
ステートチャートの構造化1
10
Globalsとして抽出
ステートチャートの構造化2
11
関数GlobalsSetに/set_globalsを
入力
12
ステートチャートの構造化3
ステートチャートの構造化4
13
構造化されたステートチャートをGOTO文ありFORTRANコードへ写像
1. ステートチャートの各状態にラベルを付ける
2. 矢印先の状態に遷移するときは、
そのラベルにGOTO
14
GOTO文を除去し構造化
• FPTコンパイラを使用
15
ゴールモデルへの変換ルール
16
順次
選択
反復
SになるまでCを繰り返し、SになったらBに
ソースコードからゴールモデルへ変換
17
非機能要求の追加
18
非機能要求--
非機能要求++
利用したツールなど
• リファクタリング
– JAVAなら、Eclipse IDEを利用
– PHP用にサポートツールを自作
• GOTO除去
– FORTRAN用のFTPコンパイラを利用
• ゴールモデルの抽出
– Eclipseフレームワーク(JAVAならJDT API)を利用
• 機能を持たないゴールの識別
– 再コンパイルで識別
• 非機能要求をソフトゴールにリンク
– 非機能要求フレームワークを利用19
まとめ
既存システムのソースコードをリファクタリング
ソースコードが構造化されていなければ、
ステートチャートを作成しGOTO文を除去
構造化されたコードから、ゴールモデルを導出
非機能要求を識別し、ソフトゴールとして
ゴールモデルに追加 20
私見
• 長所
– 構造化されていないプログラムであっても、
リバースエンジニアリングできるよう考慮されている
– コンフィギュレーションプロセスで重要な非機能要求まで
リバースエンジニアリングが対応している
• 短所
– 評価実験をしていない
システム開発過程で作られたゴールモデルと、
実際に開発されたシステムをリバースエンジニアリングして作ったゴールモデルとを比較し、議論する必要がある
21