Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp...

9
Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003, Amsterdam - The Netherlands)

description

© Serge Demeyer3 Boxes:Classes Width: # methods added Height: # methods overridden Color: # method extended Story #2

Transcript of Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp...

Page 1: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

Towards a Refactoring Benchmark

Serge DemeyerLab on Reengineering (LORE)

University of AntwerpPresentation for the ELISA - Workshop

(September 2003, Amsterdam - The Netherlands)

Page 2: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

© Serge Demeyer 2

TransformSelf Type Checks

Test providertype Test self type Test external

attribute

TransformClient Type Checks

Transform Conditionalsinto Registration

Testnull values

IntroduceNull Object

Factor OutStrategy

Factor OutState

Test object state

Story #1

Page 3: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

© Serge Demeyer 3

Boxes: ClassesWidth: # methods addedHeight: # methods overriddenColor: # method extended

Story #2

Page 4: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

© Serge Demeyer 4

A

Bt()u()v()w()

Split B into X and B'A'

Xt()u()

B'v()w()

/* Hierarchy nesting level increased */(delta_HNL(B') > 0) and

/* Number of methods decreased */((delta_NOM(B') < 0)/* Number of attributes decreased */or (delta_NOA(B') < 0))

Story #3

Page 5: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

© Serge Demeyer 5

Classification

Curative(i.e. Which refactorings are good ?How do tools support refactoring ?)

Retrospective(i.e. Which Refactorings

have been Applied ?)

Predictive(i.e. Where to applyWhich Refactoring ?)

Page 6: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

© Serge Demeyer 6

Characteristics• Life Cycle

(analysis, design, ...)• Evolution

(scale, #iterations, ...)• Domain

(problem, solution, ...)

Case

stu

dies

•To

y Ex

ampl

e(L

AN -S

imul

atio

n)•

Indu

stria

l Sys

tem

(Visu

alW

orks

& S

wing

)•

Publ

ic Do

mai

n(H

otDr

aw &

ET+

+)•

Open

-sou

rce

(Moz

illa)

Benchmark proposal

Page 7: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

© Serge Demeyer 7

Case Study: LAN Simulation

0.0

0.1 0.1r

0.2r0.2

0.nr0.n

0.3rr

0.nrr 0.nr...r

Add functionality

Refactor

Page 8: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

© Serge Demeyer 8

Case Study: LAN Simulation

0.0

0.1 0.1r

0.2r0.2

0.nr0.n

0.3rr

0.nrr 0.nr...r

Curative ?• Version 0.x is "better" than version 0.x-1 ?• Does tool P support 0.x 0.x+1 ?

Predictive ?• Does technique Q predict 0.x 0.x+1 ?

Retrospective ?• Does technique R dicover 0.x 0.x+1 ?

Page 9: Towards a Refactoring Benchmark Serge Demeyer Lab on Reengineering (LORE) University of Antwerp Presentation for the ELISA - Workshop (September 2003,

© Serge Demeyer 9

Discussion

• Does it makes sense to work out this LAN benchmark ?– Would you use it ? o yes o no