2005 re-reverse engineering goal models from legacy code

22
選定理由 2つの論文 Constructing Feature Models using Goal-Oriented AnalysisGoal-Driven Software Product Line Engineeringを組み合わせ、問題点を分析 問題点の解決策を考案 問題解決に使えそうだから 0

Upload: n-yuki

Post on 22-Apr-2015

422 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 2005 re-reverse engineering goal models from legacy code

選定理由

2つの論文「Constructing Feature Models using Goal-Oriented Analysis」

「Goal-Driven Software Product Line Engineering」

を組み合わせ、問題点を分析

問題点の解決策を考案

問題解決に使えそうだから0

Page 2: 2005 re-reverse engineering goal models from legacy code

「Constructing Feature Models using

Goal-Oriented Analysis」 by 佐伯元司

1

あらゆる要求に対応できるフィーチャモデル

Page 3: 2005 re-reverse engineering goal models from legacy code

「Goal-Driven Software Product Line

Engineering」 by Mohsen Asadi

2

顧客満足度の付与

FD=0

それ以外=1

=1∨0

=1=0=1∨0

=1=0 =1 顧客の要求に必要な機能

のみのフィーチャモデル

ゴールモデル

フィーチャモデル

Page 4: 2005 re-reverse engineering goal models from legacy code

問題点

• 既存システムのゴールモデルが存在

しなければならない

(既存システムの開発時に、ゴール指向

要求分析をしていなければならない)

• 既存システムのゴールモデルは、結合できるように互いに整合性がとれている必要がある

互いに整合性のとれた、既存システムの

ゴールモデルを作成する必要がある 3

Page 5: 2005 re-reverse engineering goal models from legacy code

発表論文

• タイトル

– 「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

Page 6: 2005 re-reverse engineering goal models from legacy code

概要

• 目的:既存ソフトウェアから、可変性の高い

ソフトウェアを再設計するため

• 手法:既存ソフトウェアのソースコードから

ゴールモデルを導出

• 結果:提案手法を用いることで、

コードからゴールモデルを導出できた

5

Page 7: 2005 re-reverse engineering goal models from legacy code

リバースエンジニアリングの蹄鉄モデル

6

ここがメイン

Page 8: 2005 re-reverse engineering goal models from legacy code

提案手法

7

リファクタリング

ゴールモデルへ変換

構造化されているか?

Page 9: 2005 re-reverse engineering goal models from legacy code

構造化されていないソースコードをステートチャートに変換1

8

ステートチャートソースコード

Page 10: 2005 re-reverse engineering goal models from legacy code

9

構造化されていないソースコードをステートチャートに変換2

ステートチャートソースコード

Page 11: 2005 re-reverse engineering goal models from legacy code

ステートチャートの構造化1

10

Globalsとして抽出

Page 12: 2005 re-reverse engineering goal models from legacy code

ステートチャートの構造化2

11

関数GlobalsSetに/set_globalsを

入力

Page 13: 2005 re-reverse engineering goal models from legacy code

12

ステートチャートの構造化3

Page 14: 2005 re-reverse engineering goal models from legacy code

ステートチャートの構造化4

13

Page 15: 2005 re-reverse engineering goal models from legacy code

構造化されたステートチャートをGOTO文ありFORTRANコードへ写像

1. ステートチャートの各状態にラベルを付ける

2. 矢印先の状態に遷移するときは、

そのラベルにGOTO

14

Page 16: 2005 re-reverse engineering goal models from legacy code

GOTO文を除去し構造化

• FPTコンパイラを使用

15

Page 17: 2005 re-reverse engineering goal models from legacy code

ゴールモデルへの変換ルール

16

順次

選択

反復

SになるまでCを繰り返し、SになったらBに

Page 18: 2005 re-reverse engineering goal models from legacy code

ソースコードからゴールモデルへ変換

17

Page 19: 2005 re-reverse engineering goal models from legacy code

非機能要求の追加

18

非機能要求--

非機能要求++

Page 20: 2005 re-reverse engineering goal models from legacy code

利用したツールなど

• リファクタリング

– JAVAなら、Eclipse IDEを利用

– PHP用にサポートツールを自作

• GOTO除去

– FORTRAN用のFTPコンパイラを利用

• ゴールモデルの抽出

– Eclipseフレームワーク(JAVAならJDT API)を利用

• 機能を持たないゴールの識別

– 再コンパイルで識別

• 非機能要求をソフトゴールにリンク

– 非機能要求フレームワークを利用19

Page 21: 2005 re-reverse engineering goal models from legacy code

まとめ

既存システムのソースコードをリファクタリング

ソースコードが構造化されていなければ、

ステートチャートを作成しGOTO文を除去

構造化されたコードから、ゴールモデルを導出

非機能要求を識別し、ソフトゴールとして

ゴールモデルに追加 20

Page 22: 2005 re-reverse engineering goal models from legacy code

私見

• 長所

– 構造化されていないプログラムであっても、

リバースエンジニアリングできるよう考慮されている

– コンフィギュレーションプロセスで重要な非機能要求まで

リバースエンジニアリングが対応している

• 短所

– 評価実験をしていない

システム開発過程で作られたゴールモデルと、

実際に開発されたシステムをリバースエンジニアリングして作ったゴールモデルとを比較し、議論する必要がある

21