SlideShare ist ein Scribd-Unternehmen logo
1 von 74
Downloaden Sie, um offline zu lesen
Collaborative and practical
reverse engineering research
with Moose



Tudor GĂźrba
www.tudorgirba.com
fo
                                                              rw
                                              g
                                            rin




                                                                ar
                                         ee




                                                                  d
                                        gin




                                                                   en
                                                                       gin
                                       en




                                                                        ee
                                   se




                                                                         rin
                                 erv




                                                                             g
                                re




{               {
    {                   {                                                        {               {
                            }                                                        {               {
        }
        }                                         actual development                     }               }
            }       {       }                                                                }               }
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

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries                                   Visualizations   ...


                                           {               {
                                               {                   {
                                                                       }
                                                   }
                                                   }
                                                       }       {       }
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


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, 1994
                                         Chidamber, 1994
                                            McCabe 1977
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries                               Visualizations   ...


                                       {               {
                                           {                   {
                                                                   }
                                               }
                                               }
                                                   }       {       }
Queries reduce the analysis space.
Detection Strategies are metric-based queries to
detect design ïŹ‚aws.                  Lanza, Marinescu 2006




            Rule 1


    METRIC 1 > Threshold 1

                             AND   Quality problem

            Rule 2


    METRIC 2 < Threshold 2
Example: a God Class centralizes too much
intelligence in the system.
    Class uses directly more than a
    few attributes of other classes

            ATFD > FEW




     Functional complexity of the
          class is very high
                                      AND       GodClass
         WMC ! VERY HIGH




        Class cohesion is low


         TCC < ONE THIRD

                                            Lanza, Marinescu, 2006
We can always resort to Smalltalk for querying.
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries               Visualizations      ...


                                           {               {
                                               {                   {
                                                                       }
                                                   }
                                                   }
                                                       }       {       }
Visualization compresses the system into pictures.
Polymetric views show up to 5 metrics.
                                            Lanza, 2003

                        Width metric

        Height metric



  Position metrics

                                   Color
                                   metric
System Complexity shows class hierarchies.
                                        Lanza, Ducasse, 2003




                                          attributes


                              methods       lines
Class Blueprint shows class internals.
                                         Ducasse, Lanza, 2005




         twin classes               schizophrenic class
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.                                  Kuhn etal 2006



                                   user, run, load, message, ïŹle, 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


              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




                              boxes are features and squares
                               are classes colored by activity
     addFolder   addPage
Object Dependencies show how features depend
on each other.                      Lienhard etal, 2007




                                      Open           Join Channel
                                      Connect        Send Message


   dependencies between objects and their age measured in features
Object Flow shows how objects move through
the system.                         Lienhard etal, 2007




objects ïŹ‚owing
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

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries               Visualizations      ...


                                           {               {
                                               {                   {
                                                                       }
                                                   }
                                                   }
                                                       }       {       }
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C



                                                                                            ...
         LO


  Metrics                        Queries                                   Visualizations




                                           {               {
                                               {                   {
                                                                       }
                                                   }
                                                   }
                                                       }       {       }
an analysis tool
an analysis tool
a platform for modeling
FAMIX is a language independent meta-model.

                            Package                 Namespace

                         packagedIn                      belongsTo

                                       *       *
                                                   superclass
                                       Class                          Inheritance
                                                   subclass

                               belongsTo       belongsTo

                                 *                       *
             invokedBy
Invocation                 Method                    Attribute
             candidate
                         accessedIn                        accesses


                                           *   *

                                      Access
FAMIX


...       Class   Method
Dynamix


...     Instance   Activation




      FAMIX


...       Class      Method
Dynamix                        ObjectFlow


...     Instance   Activation   ...          Alias




      FAMIX


...       Class      Method
Dynamix                        ObjectFlow


...     Instance   Activation   ...          Alias




      FAMIX                           Dude


...       Class      Method     ...    Duplication
Dynamix                        ObjectFlow


                            ...     Instance   Activation   ...          Alias




      CVS                         FAMIX                           Dude

          File      File
...                         ...       Class      Method     ...    Duplication
        History   Version
BugsLife                     Dynamix                        ObjectFlow


...         Bug   Activity   ...     Instance   Activation   ...          Alias




      CVS                          FAMIX                           Dude

          File      File
...                          ...       Class      Method     ...    Duplication
        History   Version
BugsLife                     Dynamix                        ObjectFlow


...         Bug   Activity   ...     Instance   Activation   ...          Alias




      CVS                          FAMIX                           Dude

          File      File
...                          ...       Class      Method     ...    Duplication
        History   Version




                                   Hismo

                                       Class      Method
                             ...
                                      History     History
BugsLife                     Dynamix                        ObjectFlow


...         Bug   Activity   ...     Instance   Activation   ...          Alias




      CVS                          FAMIX                           Dude

          File      File
...                          ...       Class      Method     ...    Duplication
        History   Version




Subversion                         Hismo

          File      File               Class      Method
...                          ...
        History   Version             History     History
BugsLife                     Dynamix                        ObjectFlow


...         Bug   Activity   ...     Instance   Activation   ...                Alias




      CVS                          FAMIX                           Dude

          File      File
...                          ...       Class      Method     ...    Duplication
        History   Version




Subversion                         Hismo                            ...

          File      File               Class      Method
...                          ...                                          ...
        History   Version             History     History
BugsLife                       Dynamix                        ObjectFlow


...         Bug     Activity
                  FAMIX is now ...
                                       more than a
                                       Instance   Activation   ...                Alias



                  language independent meta-model
      CVS                            FAMIX                           Dude

          File        File
...                            ...       Class      Method     ...    Duplication
        History     Version




Subversion                           Hismo                            ...

          File        File               Class      Method
...                            ...                                          ...
        History     Version             History     History
BugsLife                     Dynamix                        ObjectFlow


...         Bug   Activity   ...     Instance   Activation   ...                Alias




      CVS                     FAMIX Core                           Dude

          File      File
...                          ...       Class      Method     ...    Duplication
        History   Version




Subversion                         Hismo                            ...

          File      File               Class      Method
...                          ...                                          ...
        History   Version             History     History
FAMIX
 BugsLife                     Dynamix                        ObjectFlow


...         Bug   Activity   ...     Instance   Activation   ...                Alias




      CVS                     FAMIX Core                           Dude

          File      File
...                          ...       Class      Method     ...    Duplication
        History   Version




Subversion                         Hismo                            ...

          File      File               Class      Method
...                          ...                                          ...
        History   Version             History     History
FAMIX
 BugsLife                     Dynamix                        ObjectFlow


...         Bug   Activity   ...     Instance   Activation   ...                Alias




      We are now working on FAMIX 3.0.
      CVS                     FAMIX Core                           Dude

          File      File
...                          ...       Class      Method     ...    Duplication
        History   Version
                  Would you like to join?

Subversion                         Hismo                            ...

          File      File               Class      Method
...                          ...                                          ...
        History   Version             History     History
MSE is the exchange ïŹle 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
Mondrian is an engine for scripting graph
visualizations.                             Meyer etal 2006


  view := ViewRenderer new.
view nodes: classes forEach: [:each |
  view nodes: each methods.
  view gridLayout].
view edgesFrom: #superclass.
view treeLayout.
view open.
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
FAMIX
Repository           Meta   UI   Mondrian   EyeSee
              Core
FAMIX
Repository              Meta   UI         Mondrian       EyeSee
              Core




   Java
             External
                                    MSE              Smalltalk
              Parser
  C++
Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude




             FAMIX
Repository              Meta      UI         Mondrian       EyeSee
              Core




   Java
             External
                                       MSE              Smalltalk
              Parser
  C++
CVS         J-Wiretap     MSE                              Source




Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude




             FAMIX
Repository               Meta     UI         Mondrian       EyeSee
              Core




   Java
              External
                                       MSE              Smalltalk
               Parser
  C++
CVS          J-Wiretap         MSE                                   Source
   BugsLife      Clustering
                                Concept
                                 Analysis
                                                   Yellow
                                                 Submarine          ...
Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude




              FAMIX
Repository                    Meta          UI         Mondrian       EyeSee
               Core




   Java
               External
                                                 MSE              Smalltalk
                Parser
  C++
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 Team                                Previous Team
Stéphane Ducasse                            Serge Demeyer
Tudor GĂźrba                                 Michele Lanza
Adrian Kuhn                                 Sander Tichelaar
Toon Verwaest



Current Contributors                        Previous Contributors
Hani Abdeen
 
      
   Ilham Alloui        Tobias Aebi

 
 
     Frank Buchli
Gabriela Arevalo
   
   Mihai Balint        Thomas BĂŒhler
 

     Calogero Butera
Philipp Bunge
 
    
   Marco D’Ambros      Daniel Frey
 
 
                                                        
         Georges Golomingi
Orla Greevy
 
      
   Markus Hofstetter   David Gurtner

 
     Reinout Heeck
Matthias Junker
    
   Adrian Lienhard     Markus Kobel
 
 
     Michael Locher
Martin von Löwis
   
   Mircea Lungu        Pietro Malorgio
 
    Michael Meer
Michael Meyer

     
   Damien Pollet       Laura Ponisio
 
 
    Daniel Ratiu
Sara Sellos
 
 
    
   Lucas Streit        Matthias Rieger
 
    Azadeh Razavizadeh
Toon Verwaest

     
   Roel Wuyts
         Andreas Schlapbach
   Daniel Schweizer
Richard Wettel                              Mauricio Seeberger
   Lukas Steiger
                                            Daniele Talerico
 
   Herve Verjus
                                            Violeta Voinescu.
Current Team                                Previous Team
Stéphane Ducasse                            Serge Demeyer
Tudor GĂźrba                                 Michele Lanza
Adrian Kuhn                                 Sander Tichelaar
Toon Verwaest



Current Contributors menPrevious Contributors
               ~ 100     years
Hani Abdeen
 
      
   Ilham Alloui        Tobias Aebi

 
 
     Frank Buchli
Gabriela Arevalo
   
   Mihai Balint        Thomas BĂŒhler
 

     Calogero Butera
Philipp Bunge
 
    
   Marco D’Ambros      Daniel Frey
 
 
                                                        
         Georges Golomingi
Orla Greevy
 
      
   Markus Hofstetter   David Gurtner

 
     Reinout Heeck
Matthias Junker
    
   Adrian Lienhard     Markus Kobel
 
 
     Michael Locher
Martin von Löwis
   
   Mircea Lungu        Pietro Malorgio
 
    Michael Meer
Michael Meyer

     
   Damien Pollet       Laura Ponisio
 
 
    Daniel Ratiu
Sara Sellos
 
 
    
   Lucas Streit        Matthias Rieger
 
    Azadeh Razavizadeh
Toon Verwaest

     
   Roel Wuyts
         Andreas Schlapbach
   Daniel Schweizer
Richard Wettel                              Mauricio Seeberger
   Lukas Steiger
                                            Daniele Talerico
 
   Herve Verjus
                                            Violeta Voinescu.
an analysis tool
  a platform for modeling
a platform for visualization
a platform for building tools
      a collaboration
id ea   an analysis tool
an       a platform for modeling
       a platform for visualization
       a platform for building tools
             a collaboration
id ea   an analysis tool
an       a platform for modeling
       a platform for visualization
       a platform for building tools
             a collaboration
moose.unibe.ch
Tudor GĂźrba
       www.tudorgirba.com




creativecommons.org/licenses/by/3.0/

Weitere Àhnliche Inhalte

Was ist angesagt?

January 2008
January 2008January 2008
January 2008
leroy walker
 
Chemisty Stream (2013-January) Question Papers
Chemisty  Stream (2013-January) Question PapersChemisty  Stream (2013-January) Question Papers
Chemisty Stream (2013-January) Question Papers
B G S Institute of Technolgy
 
2011 10 lyp_mathematics_sa1_15 (1)
2011 10 lyp_mathematics_sa1_15 (1)2011 10 lyp_mathematics_sa1_15 (1)
2011 10 lyp_mathematics_sa1_15 (1)
Tarun Gehlot
 
Circle-based Recommedation in Online Social Networks
Circle-based Recommedation in Online Social NetworksCircle-based Recommedation in Online Social Networks
Circle-based Recommedation in Online Social Networks
Xiwang Yang
 
Smkst scheme of work f4
Smkst scheme of work f4Smkst scheme of work f4
Smkst scheme of work f4
rosdey
 
C O N T R O L S Y S T E M S J N T U M O D E L P A P E R{Www
C O N T R O L  S Y S T E M S  J N T U  M O D E L  P A P E R{WwwC O N T R O L  S Y S T E M S  J N T U  M O D E L  P A P E R{Www
C O N T R O L S Y S T E M S J N T U M O D E L P A P E R{Www
guest3f9c6b
 
January 2009
January 2009January 2009
January 2009
leroy walker
 
C O M P U T E R G R A P H I C S J N T U M O D E L P A P E R{Www
C O M P U T E R  G R A P H I C S  J N T U  M O D E L  P A P E R{WwwC O M P U T E R  G R A P H I C S  J N T U  M O D E L  P A P E R{Www
C O M P U T E R G R A P H I C S J N T U M O D E L P A P E R{Www
guest3f9c6b
 
лДĐșцоя раĐčĐłĐŸŃ€ĐŸĐŽŃĐșĐžĐč слаĐčЮы ĐČĐ”Ń€ŃĐžŃ 1.1
лДĐșцоя раĐčĐłĐŸŃ€ĐŸĐŽŃĐșĐžĐč слаĐčЮы ĐČĐ”Ń€ŃĐžŃ 1.1лДĐșцоя раĐčĐłĐŸŃ€ĐŸĐŽŃĐșĐžĐč слаĐčЮы ĐČĐ”Ń€ŃĐžŃ 1.1
лДĐșцоя раĐčĐłĐŸŃ€ĐŸĐŽŃĐșĐžĐč слаĐčЮы ĐČĐ”Ń€ŃĐžŃ 1.1
csedays
 
M A T H E M A T I C S I I I J N T U M O D E L P A P E R{Www
M A T H E M A T I C S  I I I  J N T U  M O D E L  P A P E R{WwwM A T H E M A T I C S  I I I  J N T U  M O D E L  P A P E R{Www
M A T H E M A T I C S I I I J N T U M O D E L P A P E R{Www
guest3f9c6b
 

Was ist angesagt? (15)

June 2008
June 2008June 2008
June 2008
 
January 2008
January 2008January 2008
January 2008
 
CS 354 Final Exam Review
CS 354 Final Exam ReviewCS 354 Final Exam Review
CS 354 Final Exam Review
 
Chemisty Stream (2013-January) Question Papers
Chemisty  Stream (2013-January) Question PapersChemisty  Stream (2013-January) Question Papers
Chemisty Stream (2013-January) Question Papers
 
2011 10 lyp_mathematics_sa1_15 (1)
2011 10 lyp_mathematics_sa1_15 (1)2011 10 lyp_mathematics_sa1_15 (1)
2011 10 lyp_mathematics_sa1_15 (1)
 
Circle-based Recommedation in Online Social Networks
Circle-based Recommedation in Online Social NetworksCircle-based Recommedation in Online Social Networks
Circle-based Recommedation in Online Social Networks
 
June 2009
June 2009June 2009
June 2009
 
CS 354 Ray Casting & Tracing
CS 354 Ray Casting & TracingCS 354 Ray Casting & Tracing
CS 354 Ray Casting & Tracing
 
Smkst scheme of work f4
Smkst scheme of work f4Smkst scheme of work f4
Smkst scheme of work f4
 
C O N T R O L S Y S T E M S J N T U M O D E L P A P E R{Www
C O N T R O L  S Y S T E M S  J N T U  M O D E L  P A P E R{WwwC O N T R O L  S Y S T E M S  J N T U  M O D E L  P A P E R{Www
C O N T R O L S Y S T E M S J N T U M O D E L P A P E R{Www
 
January 2009
January 2009January 2009
January 2009
 
June 2005
June 2005June 2005
June 2005
 
C O M P U T E R G R A P H I C S J N T U M O D E L P A P E R{Www
C O M P U T E R  G R A P H I C S  J N T U  M O D E L  P A P E R{WwwC O M P U T E R  G R A P H I C S  J N T U  M O D E L  P A P E R{Www
C O M P U T E R G R A P H I C S J N T U M O D E L P A P E R{Www
 
лДĐșцоя раĐčĐłĐŸŃ€ĐŸĐŽŃĐșĐžĐč слаĐčЮы ĐČĐ”Ń€ŃĐžŃ 1.1
лДĐșцоя раĐčĐłĐŸŃ€ĐŸĐŽŃĐșĐžĐč слаĐčЮы ĐČĐ”Ń€ŃĐžŃ 1.1лДĐșцоя раĐčĐłĐŸŃ€ĐŸĐŽŃĐșĐžĐč слаĐčЮы ĐČĐ”Ń€ŃĐžŃ 1.1
лДĐșцоя раĐčĐłĐŸŃ€ĐŸĐŽŃĐșĐžĐč слаĐčЮы ĐČĐ”Ń€ŃĐžŃ 1.1
 
M A T H E M A T I C S I I I J N T U M O D E L P A P E R{Www
M A T H E M A T I C S  I I I  J N T U  M O D E L  P A P E R{WwwM A T H E M A T I C S  I I I  J N T U  M O D E L  P A P E R{Www
M A T H E M A T I C S I I I J N T U M O D E L P A P E R{Www
 

Andere mochten auch

Empty slides 2008.05.01
Empty slides 2008.05.01Empty slides 2008.05.01
Empty slides 2008.05.01
Tudor Girba
 

Andere mochten auch (8)

Beyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismBeyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalism
 
Migration and Testing (EVO 2008)
Migration and Testing (EVO 2008)Migration and Testing (EVO 2008)
Migration and Testing (EVO 2008)
 
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
 
Win32/Flamer: Reverse Engineering and Framework Reconstruction
Win32/Flamer: Reverse Engineering and Framework ReconstructionWin32/Flamer: Reverse Engineering and Framework Reconstruction
Win32/Flamer: Reverse Engineering and Framework Reconstruction
 
Empty slides 2008.05.01
Empty slides 2008.05.01Empty slides 2008.05.01
Empty slides 2008.05.01
 
Pongal
PongalPongal
Pongal
 
HUMANOID ROBOT PPT
HUMANOID ROBOT PPTHUMANOID ROBOT PPT
HUMANOID ROBOT PPT
 
Report Writing - Introduction section
Report Writing - Introduction sectionReport Writing - Introduction section
Report Writing - Introduction section
 

Mehr von Tudor Girba

Mehr von Tudor Girba (20)

GT Spotter
GT SpotterGT Spotter
GT Spotter
 
Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)
 
Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Don't demo facts. Demo stories!
Don't demo facts. Demo stories!
 
Humane assessment on cards
Humane assessment on cardsHumane assessment on cards
Humane assessment on cards
 
Underneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingUnderneath Scrum: Reflective Thinking
Underneath Scrum: Reflective Thinking
 
1800+ TED talks later
1800+ TED talks later1800+ TED talks later
1800+ TED talks later
 
Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)
 
Humane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development roomHumane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development room
 
Moose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeMoose: how to solve real problems without reading code
Moose: how to solve real problems without reading code
 
Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)
 
The emergent nature of software systems
The emergent nature of software systemsThe emergent nature of software systems
The emergent nature of software systems
 
Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)
 
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
 
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
 
Demo-driven innovation teaser
Demo-driven innovation teaserDemo-driven innovation teaser
Demo-driven innovation teaser
 
Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)
 
Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)
 
Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011
 
Flexible analysis with Moose at Jazoon 2011
Flexible analysis with Moose at Jazoon 2011Flexible analysis with Moose at Jazoon 2011
Flexible analysis with Moose at Jazoon 2011
 
Holistic software assessment at the University of Zurich
Holistic software assessment at the University of ZurichHolistic software assessment at the University of Zurich
Holistic software assessment at the University of Zurich
 

KĂŒrzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

KĂŒrzlich hochgeladen (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

Collaborative and practical reverse engineering research with Moose

  • 1. Collaborative and practical reverse engineering research with Moose Tudor GĂźrba www.tudorgirba.com
  • 2. fo rw g rin ar ee d gin en gin en ee se rin erv g re { { { { { { } { { } } actual development } } } { } } }
  • 3. Moose is built in Bern
  • 4. Moose is built in Bern
  • 5. used for research in several universities ~100 men years of effort >130 publications since 1997
  • 7. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 8. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 9. 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, 1994 Chidamber, 1994 McCabe 1977
  • 10. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 11. Queries reduce the analysis space.
  • 12. Detection Strategies are metric-based queries to detect design ïŹ‚aws. Lanza, Marinescu 2006 Rule 1 METRIC 1 > Threshold 1 AND Quality problem Rule 2 METRIC 2 < Threshold 2
  • 13. Example: a God Class centralizes too much intelligence in the system. Class uses directly more than a few attributes of other classes ATFD > FEW Functional complexity of the class is very high AND GodClass WMC ! VERY HIGH Class cohesion is low TCC < ONE THIRD Lanza, Marinescu, 2006
  • 14. We can always resort to Smalltalk for querying.
  • 15. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 16. Visualization compresses the system into pictures.
  • 17. Polymetric views show up to 5 metrics. Lanza, 2003 Width metric Height metric Position metrics Color metric
  • 18. System Complexity shows class hierarchies. Lanza, Ducasse, 2003 attributes methods lines
  • 19. Class Blueprint shows class internals. Ducasse, Lanza, 2005 twin classes schizophrenic class
  • 20. Package Blueprint shows how classes are used across packages. Ducasse etal, 2007 a sumo package
  • 21. Distribution Map shows properties over structure. Ducasse etal, 2006 31 parts, 394 elements and 9 properties
  • 22. Semantic Clustering reveals implementation topics. Kuhn etal 2006 user, run, load, message, ïŹle, 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 9 concepts spread over 394 classes
  • 23. Softwarenaut explores the package structure. Lungu etal, 2006
  • 24. Code City shows where your code lives. Wettel, Lanza, 2007 classes are buildings grouped in quarters of packages
  • 25. Trace Signals reveal similar execution traces. Kuhn, Greevy 2006 lines show traces and colors denote concepts
  • 26. Feature Views show how features cover classes. Greevy etal, 2006 boxes are features and squares are classes colored by activity addFolder addPage
  • 27. Object Dependencies show how features depend on each other. Lienhard etal, 2007 Open Join Channel Connect Send Message dependencies between objects and their age measured in features
  • 28. Object Flow shows how objects move through the system. Lienhard etal, 2007 objects ïŹ‚owing through other objects
  • 29. Hierarchy Evolution reveals evolution patterns. Girba etal, 2005 histories of classes and of their inheritances
  • 30. Evolution Radar shows co-change relationships. D’Ambros, Lanza 2006 one package and its co-change relationships
  • 31. Ownership Map reveals patterns in CVS. Girba etal, 2006
  • 32. Clone Evolution shows who copied from whom. Balint etal, 2006 colors represent authors
  • 33. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 34. McCabe = 21 NOM 0 = 102 3 ,00 75 = C ... LO Metrics Queries Visualizations { { { { } } } } { }
  • 36. an analysis tool a platform for modeling
  • 37. FAMIX is a language independent meta-model. Package Namespace packagedIn belongsTo * * superclass Class Inheritance subclass belongsTo belongsTo * * invokedBy Invocation Method Attribute candidate accessedIn accesses * * Access
  • 38. FAMIX ... Class Method
  • 39. Dynamix ... Instance Activation FAMIX ... Class Method
  • 40. Dynamix ObjectFlow ... Instance Activation ... Alias FAMIX ... Class Method
  • 41. Dynamix ObjectFlow ... Instance Activation ... Alias FAMIX Dude ... Class Method ... Duplication
  • 42. Dynamix ObjectFlow ... Instance Activation ... Alias CVS FAMIX Dude File File ... ... Class Method ... Duplication History Version
  • 43. BugsLife Dynamix ObjectFlow ... Bug Activity ... Instance Activation ... Alias CVS FAMIX Dude File File ... ... Class Method ... Duplication History Version
  • 44. BugsLife Dynamix ObjectFlow ... Bug Activity ... Instance Activation ... Alias CVS FAMIX Dude File File ... ... Class Method ... Duplication History Version Hismo Class Method ... History History
  • 45. BugsLife Dynamix ObjectFlow ... Bug Activity ... Instance Activation ... Alias CVS FAMIX Dude File File ... ... Class Method ... Duplication History Version Subversion Hismo File File Class Method ... ... History Version History History
  • 46. BugsLife Dynamix ObjectFlow ... Bug Activity ... Instance Activation ... Alias CVS FAMIX Dude File File ... ... Class Method ... Duplication History Version Subversion Hismo ... File File Class Method ... ... ... History Version History History
  • 47. BugsLife Dynamix ObjectFlow ... Bug Activity FAMIX is now ... more than a Instance Activation ... Alias language independent meta-model CVS FAMIX Dude File File ... ... Class Method ... Duplication History Version Subversion Hismo ... File File Class Method ... ... ... History Version History History
  • 48. BugsLife Dynamix ObjectFlow ... Bug Activity ... Instance Activation ... Alias CVS FAMIX Core Dude File File ... ... Class Method ... Duplication History Version Subversion Hismo ... File File Class Method ... ... ... History Version History History
  • 49. FAMIX BugsLife Dynamix ObjectFlow ... Bug Activity ... Instance Activation ... Alias CVS FAMIX Core Dude File File ... ... Class Method ... Duplication History Version Subversion Hismo ... File File Class Method ... ... ... History Version History History
  • 50. FAMIX BugsLife Dynamix ObjectFlow ... Bug Activity ... Instance Activation ... Alias We are now working on FAMIX 3.0. CVS FAMIX Core Dude File File ... ... Class Method ... Duplication History Version Would you like to join? Subversion Hismo ... File File Class Method ... ... ... History Version History History
  • 51. MSE is the exchange ïŹle format.
  • 52. Moose is based on Fame :)
  • 53. Where to get Fame from? VisualWorks just download Moose Java http://smallwiki.unibe.ch/fame/ Python http://smallwiki.unibe.ch/fame/
  • 54. an analysis tool a platform for modeling
  • 55. an analysis tool a platform for modeling a platform for visualization
  • 56. Mondrian is an engine for scripting graph visualizations. Meyer etal 2006 view := ViewRenderer new. view nodes: classes forEach: [:each | view nodes: each methods. view gridLayout]. view edgesFrom: #superclass. view treeLayout. view open.
  • 57. EyeSee is an engine for scripting charts. Junker, Hofstetter 2007
  • 58. CodeCity is an engine for 3D visualizations. Wettel, Lanza, 2007
  • 59. an analysis tool a platform for modeling a platform for visualization
  • 60. an analysis tool a platform for modeling a platform for visualization a platform for building tools
  • 61. FAMIX Repository Meta UI Mondrian EyeSee Core
  • 62. FAMIX Repository Meta UI Mondrian EyeSee Core Java External MSE Smalltalk Parser C++
  • 63. Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude FAMIX Repository Meta UI Mondrian EyeSee Core Java External MSE Smalltalk Parser C++
  • 64. CVS J-Wiretap MSE Source Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude FAMIX Repository Meta UI Mondrian EyeSee Core Java External MSE Smalltalk Parser C++
  • 65. CVS J-Wiretap MSE Source BugsLife Clustering Concept Analysis Yellow Submarine ... Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude FAMIX Repository Meta UI Mondrian EyeSee Core Java External MSE Smalltalk Parser C++
  • 66. an analysis tool a platform for modeling a platform for visualization a platform for building tools
  • 67. an analysis tool a platform for modeling a platform for visualization a platform for building tools a collaboration
  • 68. Current Team Previous Team StĂ©phane Ducasse Serge Demeyer Tudor GĂźrba Michele Lanza Adrian Kuhn Sander Tichelaar Toon Verwaest Current Contributors Previous Contributors Hani Abdeen Ilham Alloui Tobias Aebi Frank Buchli Gabriela Arevalo Mihai Balint Thomas BĂŒhler Calogero Butera Philipp Bunge Marco D’Ambros Daniel Frey Georges Golomingi Orla Greevy Markus Hofstetter David Gurtner Reinout Heeck Matthias Junker Adrian Lienhard Markus Kobel Michael Locher Martin von Löwis Mircea Lungu Pietro Malorgio Michael Meer Michael Meyer Damien Pollet Laura Ponisio Daniel Ratiu Sara Sellos Lucas Streit Matthias Rieger Azadeh Razavizadeh Toon Verwaest Roel Wuyts Andreas Schlapbach Daniel Schweizer Richard Wettel Mauricio Seeberger Lukas Steiger Daniele Talerico Herve Verjus Violeta Voinescu.
  • 69. Current Team Previous Team StĂ©phane Ducasse Serge Demeyer Tudor GĂźrba Michele Lanza Adrian Kuhn Sander Tichelaar Toon Verwaest Current Contributors menPrevious Contributors ~ 100 years Hani Abdeen Ilham Alloui Tobias Aebi Frank Buchli Gabriela Arevalo Mihai Balint Thomas BĂŒhler Calogero Butera Philipp Bunge Marco D’Ambros Daniel Frey Georges Golomingi Orla Greevy Markus Hofstetter David Gurtner Reinout Heeck Matthias Junker Adrian Lienhard Markus Kobel Michael Locher Martin von Löwis Mircea Lungu Pietro Malorgio Michael Meer Michael Meyer Damien Pollet Laura Ponisio Daniel Ratiu Sara Sellos Lucas Streit Matthias Rieger Azadeh Razavizadeh Toon Verwaest Roel Wuyts Andreas Schlapbach Daniel Schweizer Richard Wettel Mauricio Seeberger Lukas Steiger Daniele Talerico Herve Verjus Violeta Voinescu.
  • 70. an analysis tool a platform for modeling a platform for visualization a platform for building tools a collaboration
  • 71. id ea an analysis tool an a platform for modeling a platform for visualization a platform for building tools a collaboration
  • 72. id ea an analysis tool an a platform for modeling a platform for visualization a platform for building tools a collaboration
  • 74. Tudor GĂźrba www.tudorgirba.com creativecommons.org/licenses/by/3.0/