collaborative and practical reverse engineering research with moose

Post on 29-Nov-2014

3.322 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Collaborative and practicalreverse engineering researchwith Moose

Tudor Gîrbawww.tudorgirba.com

forward engineering

actual development }

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse

engin

eerin

g

Moose is built in Bern

Moose is built in Bern

used for research in several universities

~100 men years of effort

>130 publications

since 1997

an analysis tool

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Metrics compress systems into numbers.

NOM number of methods

LOC number of lines of code

CYCLO McCabe cyclomatic complexity

TCC tight class cohesion

...

Lorentz, Kidd, 1994Chidamber, 1994

McCabe 1977

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Queries reduce the analysis space.

Detection Strategies are metric-based queries to detect design flaws.

METRIC 1 > Threshold 1

Rule 1

METRIC 2 < Threshold 2

Rule 2

AND Quality problem

Lanza, Marinescu 2006

Example: a God Class centralizes too much intelligence in the system.

ATFD > FEW

Class uses directly more than a

few attributes of other classes

WMC ! VERY HIGH

Functional complexity of the

class is very high

TCC < ONE THIRD

Class cohesion is low

AND GodClass

Lanza, Marinescu, 2006

We can always resort to Smalltalk for querying.

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

Visualization compresses the system into pictures.

Polymetric views show up to 5 metrics.

Color metric

Width metric

Height metric

Position metrics

Lanza, 2003

System Complexity shows class hierarchies.

lines

attributes

methods

Lanza, Ducasse, 2003

Class Blueprint shows class internals.Ducasse, Lanza, 2005

schizophrenic classtwin classes

Package Blueprint shows how classes are used across packages. Ducasse etal, 2007

a sumo package

Distribution Map shows properties over structure. Ducasse etal, 2006

31 parts, 394 elements and 9 properties

Semantic Clustering reveals implementation topics.

user, run, load, message, file, buffer, util

property, AWT, edit, show, update, sp, set

start, buffer, end, text, length, line, count

action, box, component, event, button, layout, GUI

start, length, integer, end, number, pre, count

XML, dispatch, microstar, reader, XE, register, receive

current, buffer, idx, review, archive, endr, TAR

BSH, simple, invocation, assign, untype, general, arbitrary

maximum, label, link, item, code, put, vector

Kuhn etal 2006

9 concepts spread over 394 classes

Softwarenaut explores the package structure.Lungu etal, 2006

Code City shows where your code lives.Wettel, Lanza, 2007

classes are buildings grouped in quarters of packages

Trace Signals reveal similar execution traces.Kuhn, Greevy 2006

lines show traces and colors denote concepts

Feature Views show how features cover classes.Greevy etal, 2006

addFolder addPage

boxes are features and squares are classes colored by activity

Object Dependencies show how features depend on each other.

OpenConnect

Join ChannelSend Message

Lienhard etal, 2007

dependencies between objects and their age measured in features

Object Flow shows how objects move through the system. Lienhard etal, 2007

objects flowing through other objects

Hierarchy Evolution reveals evolution patterns.Girba etal, 2005

histories of classes and of their inheritances

Evolution Radar shows co-change relationships.D’Ambros, Lanza 2006

one package and its co-change relationships

Ownership Map reveals patterns in CVS.Girba etal, 2006

Clone Evolution shows who copied from whom.Balint etal, 2006

colors represent authors

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

}

{

}

{

}

{}

{

}

{

McCabe = 21

LOC =

753,0

00NOM = 102

Metrics Queries Visualizations ...

an analysis tool

an analysis tool

a platform for modeling

Class

Method

Attribute

Access

Inheritance

Package

Namespace

*

belongsTo

*

belongsTo

belongsTopackagedIn

superclass

subclass

* *

InvocationinvokedBy

candidate

*

accessedIn

*

accesses

FAMIX is a language independent meta-model.

FAMIX

Class Method...

FAMIX

Class Method...

Dynamix

Activation... Instance

FAMIX

Class Method...

Dynamix

Activation... Instance

ObjectFlow

Alias...

FAMIX

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

ObjectFlow

Alias...

FAMIX

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

CVS

FileHistory

FileVersion

...

ObjectFlow

Alias...

FAMIX

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

CVS

FileHistory

FileVersion

...

BugsLife

Bug Activity...

ObjectFlow

Alias...

FAMIX

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

Hismo

ClassHistory

MethodHistory

...

CVS

FileHistory

FileVersion

...

BugsLife

Bug Activity...

ObjectFlow

Alias...

FAMIX

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

Hismo

ClassHistory

MethodHistory

...

CVS

FileHistory

FileVersion

...

Subversion

FileHistory

FileVersion

...

BugsLife

Bug Activity...

ObjectFlow

Alias...

FAMIX

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

Hismo

ClassHistory

MethodHistory

...

CVS

FileHistory

FileVersion

...

Subversion

FileHistory

FileVersion

...

BugsLife

Bug Activity...

ObjectFlow

Alias...

...

...

FAMIX

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

Hismo

ClassHistory

MethodHistory

...

CVS

FileHistory

FileVersion

...

Subversion

FileHistory

FileVersion

...

BugsLife

Bug Activity...

ObjectFlow

Alias...

...

...

FAMIX is now more than a

language independent meta-model

FAMIX Core

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

Hismo

ClassHistory

MethodHistory

...

CVS

FileHistory

FileVersion

...

Subversion

FileHistory

FileVersion

...

BugsLife

Bug Activity...

ObjectFlow

Alias...

...

...

FAMIX

FAMIX Core

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

Hismo

ClassHistory

MethodHistory

...

CVS

FileHistory

FileVersion

...

Subversion

FileHistory

FileVersion

...

BugsLife

Bug Activity...

ObjectFlow

Alias...

...

...

FAMIX

FAMIX Core

Class Method...

Dynamix

Activation... Instance

Dude

Duplication...

Hismo

ClassHistory

MethodHistory

...

CVS

FileHistory

FileVersion

...

Subversion

FileHistory

FileVersion

...

BugsLife

Bug Activity...

ObjectFlow

Alias...

...

...

We are now working on FAMIX 3.0.

Would you like to join?

MSE is the exchange file format.

Moose is based on Fame :)

Where to get Fame from?

VisualWorks just download Moose

Java http://smallwiki.unibe.ch/fame/

Python http://smallwiki.unibe.ch/fame/

an analysis tool

a platform for modeling

an analysis tool

a platform for modeling

a platform for visualization

view := ViewRenderer new.view nodes: classes forEach: [:each |

view nodes: each methods.view gridLayout].

view edgesFrom: #superclass.view treeLayout.view open.

Mondrian is an engine for scripting graph visualizations. Meyer etal 2006

EyeSee is an engine for scripting charts.Junker, Hofstetter 2007

CodeCity is an engine for 3D visualizations.Wettel, Lanza, 2007

an analysis tool

a platform for modeling

a platform for visualization

an analysis tool

a platform for modeling

a platform for visualization

a platform for building tools

Repository Meta MondrianUIFAMIX Core

EyeSee

MSE

Repository Meta MondrianUI

Smalltalk

Java

C++

ExternalParser

FAMIX Core

EyeSee

MSE

Repository Meta MondrianUI

Smalltalk

Java

C++

ExternalParser

FAMIX Core

HapaxDynaMoose SoftwarenautChronia SmallDude

EyeSee

Cook CodeCity

MSE

Repository Meta MondrianUI

Smalltalk

Java

C++

ExternalParser

FAMIX Core

HapaxDynaMoose SoftwarenautChronia SmallDude

EyeSee

Cook

CVS

CodeCity

MSE SourceJ-Wiretap

MSE

Repository Meta MondrianUI

Smalltalk

Java

C++

ExternalParser

FAMIX Core

HapaxDynaMoose SoftwarenautChronia SmallDude

EyeSee

Cook

CVS

CodeCity

MSE SourceJ-Wiretap

YellowSubmarine

BugsLife ClusteringConceptAnalysis ...

an analysis tool

a platform for modeling

a platform for visualization

a platform for building tools

an analysis tool

a platform for modeling

a platform for visualization

a platform for building tools

a collaboration

Current TeamStéphane DucasseTudor GîrbaAdrian KuhnToon Verwaest

Previous TeamSerge DemeyerMichele LanzaSander Tichelaar

Current ContributorsHani Abdeen Ilham AllouiGabriela Arevalo Mihai BalintPhilipp Bunge Marco D’AmbrosOrla Greevy Markus Hofstetter Matthias Junker Adrian LienhardMartin von Löwis Mircea LunguMichael Meyer Damien PolletSara Sellos Lucas StreitToon Verwaest Roel Wuyts Richard Wettel

Previous ContributorsTobias Aebi Frank BuchliThomas Bühler Calogero ButeraDaniel Frey Georges GolomingiDavid Gurtner Reinout HeeckMarkus Kobel Michael LocherPietro Malorgio Michael MeerLaura Ponisio Daniel RatiuMatthias Rieger Azadeh Razavizadeh Andreas Schlapbach Daniel SchweizerMauricio Seeberger Lukas SteigerDaniele Talerico Herve VerjusVioleta Voinescu.

Current TeamStéphane DucasseTudor GîrbaAdrian KuhnToon Verwaest

Previous TeamSerge DemeyerMichele LanzaSander Tichelaar

Current ContributorsHani Abdeen Ilham AllouiGabriela Arevalo Mihai BalintPhilipp Bunge Marco D’AmbrosOrla Greevy Markus Hofstetter Matthias Junker Adrian LienhardMartin von Löwis Mircea LunguMichael Meyer Damien PolletSara Sellos Lucas StreitToon Verwaest Roel Wuyts Richard Wettel

Previous ContributorsTobias Aebi Frank BuchliThomas Bühler Calogero ButeraDaniel Frey Georges GolomingiDavid Gurtner Reinout HeeckMarkus Kobel Michael LocherPietro Malorgio Michael MeerLaura Ponisio Daniel RatiuMatthias Rieger Azadeh Razavizadeh Andreas Schlapbach Daniel SchweizerMauricio Seeberger Lukas SteigerDaniele Talerico Herve VerjusVioleta Voinescu.

~ 100 men years

an analysis tool

a platform for modeling

a platform for visualization

a platform for building tools

a collaboration

an analysis tool

a platform for modeling

a platform for visualization

a platform for building tools

a collaboration

an idea

an analysis tool

a platform for modeling

a platform for visualization

a platform for building tools

a collaboration

an idea

moose.unibe.ch

top related