SlideShare ist ein Scribd-Unternehmen logo
1 von 96
Downloaden Sie, um offline zu lesen
Modeling History
to Understand Software Evolution



          Tudor Gîrba
          www.tudorgirba.com
Modeling History
                              to Understand Software Evolution


                                           Inauguraldissertation der
                                    Philosophisch-naturwissenschaftlichen
                                         Fakultät der Universität Bern




                                                vorgelegt von


                                           Tudor Gîrba
                                               von Rumänien




Leiter der Arbeit:

Prof. Dr. Stéphane Ducasse
Prof. Dr. Oscar Nierstrasz

Institut für Informatik und
angewandte Mathematik
}
                                                 }
                                             {
                                             {



                                                 }
                                                 }
                                             {
                                             {




                                         g
                                   rin
                              ee
                        gin
                   en
               d
          ar
     rw
fo
fo
                                             rw
                                              ar
                                                d
                                                  en
                                                     gin
                                                      ee
                                                       rin
                                                           g
{               {
    {                   {                                      {               {
                            }                                      {               {
        }
        }                       actual development                     }               }
            }       {       }                                              }               }
fo
                                                               rw
                                              g
                                            rin




                                                                ar
                                         ee




                                                                  d
                                        gin




                                                                    en
                                                                       gin
                                       en




                                                                        ee
                                   se




                                                                         rin
                                 erv




                                                                             g
                                re




{               {
    {                   {                                                        {               {
                            }                                                        {               {
        }
        }                                         actual development                     }               }
            }       {       }                                                                }               }
{
                         {
    } }
}
                         {



{
                         {
                }

}
                                re
                                   v  er
                                           se
                                                 en
                                                      gin
                                                            ee
                                                                 rin
                                                                       g


                             reverse engineering

                                                                           fo
    actual development                                               rw
                                                                ar
                                                            d
                                                       en
                                                 gin
                                            ee
                                      rin
                                  g
                         {
             {
    }
}
                         {
             {
    }
}
Most often time is put on the horizontal
  and a property on the vertical axis.




             Lehman etal, 2001
Evolution Matrix shows how classes evolve.
    Time is still on the horizontal axis.




             Lanza, Ducasse, 2002
Co-change analysis recovers hidden dependencies.
               Time is the lines.




                  Gall etal, 2003
Evolution information can be
mapped on structural information.




           Eick etal, 2002
Eick etal, 2002




  Lehman etal, 2001




                                                ...
Lanza, Ducasse, 2002
                       Gall etal, 2003
Eick etal, 2002




                                                      es?
                                                 niqu
                                            tech
  Lehman etal, 2001                     ese
                                   ll th
                            da te a
                       om mo
            we acc
     can
  ow
H
                                                               ...
Lanza, Ducasse, 2002
                                      Gall etal, 2003
sh
                        ort
                              int
                                 er
                                   me
                                      zzo

What is a   model?
sh
                                  ort
                                        int
                                           er
                                             me
                                                zzo
A model is a simplification of the subject,
and its purpose is to answer some particular

questions aimed towards the subject.

Bezivin, Gerbe, 2001
sh
                             ort
                                   int
                                      er
                                        me
                                           zzo

what is a   meta-model?
sh
                              ort
                                    int
                                       er
                                         me
                                            zzo
a meta-model is
a model that makes statements about

what can be expressed in valid models.




Seidewitz, 2003
sh
                         ort
                               int
                                  er
                                    me
                                       zzo
a good meta-model
allows for succinct

expression of analyses.
Eick etal, 2002




  Lehman etal, 2001




                                             ...
Lanza, Ducasse, 2002
                       Gall etal, 2003
Eick etal, 2002




                                                      es?
                                                 niqu
                                            tech
  Lehman etal, 2001                     ese
                                   ll th
                            da te a
                       om mo
            we acc
     can
  ow
H
                                                            ...
Lanza, Ducasse, 2002
                                      Gall etal, 2003
Evolution Matrix shows class changes.
                                         Lanza, Ducasse, 2004

Idle
class

Pulsar
class


Supernova
class
                                                  attributes

White dwarf
class                                   methods     Class
Evolution Matrix shows class changes.
                                         Lanza, Ducasse, 2004

Idle
class

Pulsar
class


Supernova
class
                                                  attributes

White dwarf
class                                   methods     Class
Evolution Matrix shows class changes.
                                                     Lanza, Ducasse, 2004

Idle
class
                                                            entity.
                                                st c lass
Pulsar
                                         da s fir
class
                                  mo dele
                          to be
                  needs
Supernova tio   n
class Evolu
                                                                attributes

White dwarf
class                                              methods        Class
Evolution Matrix shows class changes.
                                         Lanza, Ducasse, 2004

Idle
class

Pulsar
class


Supernova
class
                                                  attributes

White dwarf
class                                   methods     Class
Evolution Matrix shows class changes.


Idle
class history

Pulsar
class history


Supernova
class history
                                        ClassHistory

White dwarf                             isPulsar
class history                           isIdle
                                        ...
System
Version




 Class
Version
System
          Version




 Class     Class
History   Version
System    System
History   Version




 Class     Class
History   Version
System    System
History   Version




 Class     Class
History   Version
System                 System
                                         History                Version


                                                   en tity.
                                      st c lass         200
                                                            5
                               ya s fir         Gir  ba,
                         tor
                 l s his
         m ode
H ismo

                                          Class                  Class
                                         History                Version
Measuring                Yesterday’s         Time-based
        history                  Weather         Detection Strategies



        1                        2                     3

        4                        5                     6
Visualizing the evolution       Detecting         How developers
     of hierarchies         co-change patterns    drive evolution
Measuring history




                    1
What changed? When did it change? ...


      2     4     3     5    7


      2     2     3     4    9


      2     2     1     2    3


      2     2     2     2    2


      1     5     3     4    4
Evolution of
Number of Methods               LENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 2i-n




    LENOM(C)    =       4   +    2   +   1   +   0   =   7

                    1       5        3       4       4
Latest Evolution of
Number of Methods               LENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 2i-n


Earliest Evolution of
Number of Methods               EENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 22-i




                        -3   -2   -1   0
     LENOM(C)       = 42 + 22 + 12 + 02 =              1.5

                        1   5        3      4      4

     EENOM(C)       = 4 20 + 2 2-1 + 1 2-2 + 0 2-3 =   5.25
ENOM   LENOM EENOM


2   4   3   5   7    7      3.5    3.25


2   2   3   4   9    7      5.75   1.37


2   2   1   2   3    3       1      2


2   2   2   2   2    0       0      0


1   5   3   4   4    7      1.25   5.25
ENOM   LENOM EENOM


balanced changer    7      3.5    3.25


  late changer      7      5.75   1.37


                    3       1      2


  dead stable       0       0      0


 early changer      7      1.25   5.25
ENOM       LENOM EENOM


balanced changer            7         3.5      3.25


  late changer              7 tity    5.75 nts. 1.37
                               en ureme
                           lass eas
                       st c gh m
                   s fir rou 3
                y a th               1           2
              r
        H isto rison
        co mpa
  deadsstable
ena ble                         0    0           0


 early changer              7         1.25     5.25
History can be measured in many ways.




Evolution                       Number of Methods
Stability                    Number of Lines of Code
Historical Max      of        Cyclomatic Complexity
Growth Trend                    Number of Modules
...                                                ...
Yesterday’s weather




                      2
The recently changed parts are likely to change in the
near future.

                                        Common wisdom
The recently changed parts are likely to change in the
near future.


                                ally?
                                        Common wisdom
                             re
                   re they
                 A
30%   90%
present
past




       present
past             future




       present
past             future




       present
past             future




       present
past             future




prediction hit          present
past             future


YesterdayWeatherHit(present):

past:=histories.topLENOM(start, present)

future:=histories.topEENOM(present, end)

past.intersectWith(future).notEmpty()




                          prediction hit          present
Overall Yesterday’s Weather shows the localization of
changed in time.                               Girba etal, 2004




 hit               hit                hit

                                             YW = 3 / 8 = 37%




 hit         hit   hit    hit   hit   hit   hit

                                             YW = 7 / 8 = 87%
Time-based
Detection Strategies




                       3
Detection Strategies are metric-based queries to
detect design flaws.                  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
Example: a God Class centralizes too much
intelligence in the system.
    Class uses directly more than a
    few attributes of other classes

            ATFD > FEW


                                                tab le?
                                       f it is s
                                wh
     Functional complexity of the  at i
                          ut,
          class is very high
                        B                     AND         GodClass
         WMC ! VERY HIGH




        Class cohesion is low


         TCC < ONE THIRD
History-based Detection Strategies take evolution
into account.                            Ratiu etal, 2004




            God Class
        in the last version

         isGodClass(last)


                              AND   Harmless God Class


        Stable throughout
           the history

         Stability > 90%
History-based Detection Strategies take evolution
into account.                            Ratiu etal, 2004




                                                     me.
            God Class
        in the last version
                                                  sa
                                         ed the
         isGodClass(last)
                                      eat
                                  e tr
                           pace ar
                    an  ds         AND      Harmless God Class
                  e
           Tim
        Stable throughout
           the history

         Stability > 90%
Visualizing the evolution
of hierarchies




                            4
What happens with inheritance?


  A                A                A                A                A




         B   C            B   C            B   C            B                B




                              D                D                D            E


ver .1           ver. 2           ver. 3           ver. 4           ver. 5
History contains too much data.


  A                A                A                A                A            A                A                A                A                A            A                A                A                A                A            A                A                A                A                A




         B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B




                              D                D                D            E                                 D                D                D            E                                 D                D                D            E                                 D                D                D            E


ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5


  A                A                A                A                A            A                A                A                A                A            A                A                A                A                A            A                A                A                A                A




         B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B




                              D                D                D            E                                 D                D                D            E                                 D                D                D            E                                 D                D                D            E


ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5


  A                A                A                A                A            A                A                A                A                A            A                A                A                A                A            A                A                A                A                A




         B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B




                              D                D                D            E                                 D                D                D            E                                 D                D                D            E                                 D                D                D            E


ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5

  A                A                A                A                A            A                A                A                A                A            A                A                A                A                A            A                A                A                A                A




         B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B            B   C            B   C            B   C            B                B




                              D                D                D            E                                 D                D                D            E                                 D                D                D            E                                 D                D                D            E


ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5       ver .1           ver. 2           ver. 3           ver. 4           ver. 5
System    System
History   Version




 Class     Class
History   Version
System              System
History             Version




          Inheritance
            Version




 Class               Class
History             Version
System              System
          History             Version




Inheritance         Inheritance
  History             Version




           Class               Class
          History             Version
A                A                A                A                A




          B   C            B   C            B   C            B                B




                               D                D                D            E


 ver .1           ver. 2           ver. 3           ver. 4           ver. 5



A is persistent, B is stable, C was removed, E is newborn ...
Hierarchy Evolution View encapsulates time.
                                                   Girba etal, 2005
                 A
                                                   changed
                                                   methods

                                         changed
                                                     age
                                           lines
         C                  B

                                                Removed

                                                Removed
        D               E


A is persistent, B is stable, C was removed, E is newborn ...
Hierarchy Evolution View reveals patterns.
                                             Girba etal, 2005
Hierarchy Evolution View reveals patterns.
                                               Girba etal, 2005




                                     ntity .
                                 ss e aph
                            t cla a gr
                         firs to
                       as ing
                  tory mapp
               His les
               e nab
Identifying co-change
patterns




                        5
1   2   3   4   5   6

A
                                        A

B
                            B                            E
C

D

E                               C                    D


                                    Gall etal, ‘98
Co-change patterns are n-ary relationships.
1   2   3   4   5   6

A

B

C

D
                            Version
E
1   2   3   4   5   6

A

B

C

D
                            Version
E                           changed
1   2   3   4   5   6

A                            History
                            changed(i)
B

C

D
                             Version
E                            changed
What is Concept Analysis?
1   2   3   4   5   6

A

B

C

D

E
{A, B, C, D, E}
    1   2   3   4   5   6                             Ø

A                                       {A, D, B}         {A, E, C, D}
                                          {2}                  {6}
B
                                   {D, B}           {A, D}         {A, E, C}
C                           FCA
                                   {2, 4}            {2, 6}         {5, 6}

D
                                    {D}             {A}              {C}
E                                 {2, 4, 6}       {2, 5, 6}        {3, 5, 6}


                                                      Ø
                                              {1, 2, 3, 4, 5, 6}
{A, B, C, D, E}
    1   2   3   4   5   6                             Ø

A                                       {A, D, B}         {A, E, C, D}
                                          {2}                  {6}
B
                                   {D, B}           {A, D}          {A, E, C}
C                           FCA
                                   {2, 4}            {2, 6}          {5, 6}

D
                                    {D}              {A}              {C}
E                                 {2, 4, 6}        {2, 5, 6}        {3, 5, 6}


                                                      Ø
                                               {1, 2, 3, 4, 5, 6}


                                              Girba etal, 2007
Parallel Inheritance
add simultaneously children to several classes


Shotgun Surgery
change several classes simultaneously, but do not add methods
{A, B, C, D, E}
    1   2   3   4   5   6                             Ø

A                                       {A, D, B}         {A, E, C, D}
                                          {2}                  {6}
B
                                   {D, B}           {A, D}         {A, E, C}
C                           FCA
                                   {2, 4}            {2, 6}         {5, 6}

D
                                    {D}             {A}              {C}
E                                 {2, 4, 6}       {2, 5, 6}        {3, 5, 6}


                                                      Ø
                                              {1, 2, 3, 4, 5, 6}
{A, B, C, D, E}
    1   2   3   4   5    6                               Ø

A                                          {A, D, B}         {A, E, C, D}
                                             {2}                  {6}
                                         tity
B
                                   s en A.
                            st clas {D, B}
                                      FC
                          firFCA g to{2, 4}             {A, D}         {A, E, C}
                      y as appin
C                                                       {2, 6}         {5, 6}
                  stor s m
                Hi ble
D
                 ena                 {D}               {A}              {C}
E                                    {2, 4, 6}       {2, 5, 6}        {3, 5, 6}


                                                         Ø
                                                 {1, 2, 3, 4, 5, 6}
How developers drive
software evolution




                       6
CVS shows activity.
Who is responsible for this?
Who is responsible for this?
Alphabetical order is no order.
The Hausdorf metric can be used to compute the
similarity between commits.




A
                              d(A, B) = ∑ min2{ | a - b | b in B }
                                      a in A
B
Alphabetical order is no order.
Ownership Map reveals development patterns.
                                              Girba etal, 2006
Ownership Map reveals development patterns.
                                                Girba etal, 2006




                                       tity anges.
                                   s en c ch
                               clas listi
                            rst ho
                        as fi out
                   tory ing ab
                His son
              les rea
         enab
Measuring                Yesterday’s         Time-based
        history                  Weather         Detection Strategies



        1                        2                     3

        4                        5                     6
Visualizing the evolution       Detecting         How developers
     of hierarchies         co-change patterns    drive evolution
System              System
          History             Version




Inheritance         Inheritance
  History             Version




           Class               Class
          History             Version
History             Version




History             Version




          History             Version
History               Version


                                             en tity.
                                 st c lass          200
                                                        5
                           as fir           Gir  ba,

                   his tory History               Version

         mo dels
Hi smo

                                      History               Version
Modeling History
                              to Understand Software Evolution


                                           Inauguraldissertation der
                                    Philosophisch-naturwissenschaftlichen
                                         Fakultät der Universität Bern




                                                vorgelegt von

                                           Tudor Gîrba
                                               von Rumänien




Leiter der Arbeit:

Prof. Dr. Stéphane Ducasse
Prof. Dr. Oscar Nierstrasz

Institut für Informatik und
angewandte Mathematik




                      www.tudorgirba.com
Tudor Gîrba
       www.tudorgirba.com




creativecommons.org/licenses/by/3.0/

Weitere ähnliche Inhalte

Ähnlich wie Modeling History to Understand Software Evolution with Hismo 2008-03-12

Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Tudor Girba
 
05 Problem Detection
05 Problem Detection05 Problem Detection
05 Problem DetectionJorge Ressia
 
Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Tudor Girba
 
Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Tudor Girba
 
Restructuring (EVO 2008)
Restructuring (EVO 2008)Restructuring (EVO 2008)
Restructuring (EVO 2008)Tudor Girba
 
Assessing software systems
Assessing software systemsAssessing software systems
Assessing software systemsTudor Girba
 
What history can tell us
What history can tell usWhat history can tell us
What history can tell usTudor Girba
 
Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Tudor Girba
 
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 ZurichTudor Girba
 
Reverse Engineering 2007-11-27
Reverse Engineering 2007-11-27 Reverse Engineering 2007-11-27
Reverse Engineering 2007-11-27 Tudor Girba
 
Enhancing agile development through software assessment
Enhancing agile development through software assessmentEnhancing agile development through software assessment
Enhancing agile development through software assessmentTudor Girba
 
Helping you reengineering your legacy
Helping you reengineering your legacyHelping you reengineering your legacy
Helping you reengineering your legacyStéphane Ducasse
 
Software in Pictures 2008-03-12
Software in Pictures 2008-03-12Software in Pictures 2008-03-12
Software in Pictures 2008-03-12Tudor Girba
 
Reverse Engineering Techniques 2007-11-29
Reverse Engineering Techniques 2007-11-29 Reverse Engineering Techniques 2007-11-29
Reverse Engineering Techniques 2007-11-29 Tudor Girba
 
The humane software assessment (Choose Forum 2009)
The humane software assessment (Choose Forum 2009)The humane software assessment (Choose Forum 2009)
The humane software assessment (Choose Forum 2009)Tudor Girba
 

Ähnlich wie Modeling History to Understand Software Evolution with Hismo 2008-03-12 (16)

Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Problem Detection (EVO 2008)
Problem Detection (EVO 2008)
 
05 Problem Detection
05 Problem Detection05 Problem Detection
05 Problem Detection
 
Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)
 
Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Humane assessment at ICSM 2010
Humane assessment at ICSM 2010
 
Restructuring (EVO 2008)
Restructuring (EVO 2008)Restructuring (EVO 2008)
Restructuring (EVO 2008)
 
Assessing software systems
Assessing software systemsAssessing software systems
Assessing software systems
 
Moose Overview
Moose OverviewMoose Overview
Moose Overview
 
What history can tell us
What history can tell usWhat history can tell us
What history can tell us
 
Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010
 
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
 
Reverse Engineering 2007-11-27
Reverse Engineering 2007-11-27 Reverse Engineering 2007-11-27
Reverse Engineering 2007-11-27
 
Enhancing agile development through software assessment
Enhancing agile development through software assessmentEnhancing agile development through software assessment
Enhancing agile development through software assessment
 
Helping you reengineering your legacy
Helping you reengineering your legacyHelping you reengineering your legacy
Helping you reengineering your legacy
 
Software in Pictures 2008-03-12
Software in Pictures 2008-03-12Software in Pictures 2008-03-12
Software in Pictures 2008-03-12
 
Reverse Engineering Techniques 2007-11-29
Reverse Engineering Techniques 2007-11-29 Reverse Engineering Techniques 2007-11-29
Reverse Engineering Techniques 2007-11-29
 
The humane software assessment (Choose Forum 2009)
The humane software assessment (Choose Forum 2009)The humane software assessment (Choose Forum 2009)
The humane software assessment (Choose Forum 2009)
 

Mehr von Tudor Girba

Beyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismBeyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismTudor Girba
 
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 ...Tudor Girba
 
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)Tudor Girba
 
Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Tudor Girba
 
Humane assessment on cards
Humane assessment on cardsHumane assessment on cards
Humane assessment on cardsTudor Girba
 
Underneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingUnderneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingTudor Girba
 
1800+ TED talks later
1800+ TED talks later1800+ TED talks later
1800+ TED talks laterTudor Girba
 
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)Tudor Girba
 
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 roomTudor Girba
 
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 codeTudor Girba
 
Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Tudor Girba
 
The emergent nature of software systems
The emergent nature of software systemsThe emergent nature of software systems
The emergent nature of software systemsTudor Girba
 
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)Tudor Girba
 
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)Tudor Girba
 
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)Tudor Girba
 
Demo-driven innovation teaser
Demo-driven innovation teaserDemo-driven innovation teaser
Demo-driven innovation teaserTudor Girba
 
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)Tudor Girba
 
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)Tudor Girba
 
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 2011Tudor Girba
 

Mehr von Tudor Girba (20)

Beyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismBeyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalism
 
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 ...
 
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
 

Kürzlich hochgeladen

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Kürzlich hochgeladen (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

Modeling History to Understand Software Evolution with Hismo 2008-03-12

  • 1. Modeling History to Understand Software Evolution Tudor Gîrba www.tudorgirba.com
  • 2. Modeling History to Understand Software Evolution Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultät der Universität Bern vorgelegt von Tudor Gîrba von Rumänien Leiter der Arbeit: Prof. Dr. Stéphane Ducasse Prof. Dr. Oscar Nierstrasz Institut für Informatik und angewandte Mathematik
  • 3. } } { { } } { { g rin ee gin en d ar rw fo
  • 4. fo rw ar d en gin ee rin g { { { { { { } { { } } actual development } } } { } } }
  • 5. fo rw g rin ar ee d gin en gin en ee se rin erv g re { { { { { { } { { } } actual development } } } { } } }
  • 6. { { } } } { { { } } re v er se en gin ee rin g reverse engineering fo actual development rw ar d en gin ee rin g { { } } { { } }
  • 7. Most often time is put on the horizontal and a property on the vertical axis. Lehman etal, 2001
  • 8. Evolution Matrix shows how classes evolve. Time is still on the horizontal axis. Lanza, Ducasse, 2002
  • 9. Co-change analysis recovers hidden dependencies. Time is the lines. Gall etal, 2003
  • 10. Evolution information can be mapped on structural information. Eick etal, 2002
  • 11. Eick etal, 2002 Lehman etal, 2001 ... Lanza, Ducasse, 2002 Gall etal, 2003
  • 12. Eick etal, 2002 es? niqu tech Lehman etal, 2001 ese ll th da te a om mo we acc can ow H ... Lanza, Ducasse, 2002 Gall etal, 2003
  • 13. sh ort int er me zzo What is a model?
  • 14. sh ort int er me zzo A model is a simplification of the subject, and its purpose is to answer some particular questions aimed towards the subject. Bezivin, Gerbe, 2001
  • 15. sh ort int er me zzo what is a meta-model?
  • 16. sh ort int er me zzo a meta-model is a model that makes statements about what can be expressed in valid models. Seidewitz, 2003
  • 17. sh ort int er me zzo a good meta-model allows for succinct expression of analyses.
  • 18. Eick etal, 2002 Lehman etal, 2001 ... Lanza, Ducasse, 2002 Gall etal, 2003
  • 19. Eick etal, 2002 es? niqu tech Lehman etal, 2001 ese ll th da te a om mo we acc can ow H ... Lanza, Ducasse, 2002 Gall etal, 2003
  • 20. Evolution Matrix shows class changes. Lanza, Ducasse, 2004 Idle class Pulsar class Supernova class attributes White dwarf class methods Class
  • 21. Evolution Matrix shows class changes. Lanza, Ducasse, 2004 Idle class Pulsar class Supernova class attributes White dwarf class methods Class
  • 22. Evolution Matrix shows class changes. Lanza, Ducasse, 2004 Idle class entity. st c lass Pulsar da s fir class mo dele to be needs Supernova tio n class Evolu attributes White dwarf class methods Class
  • 23. Evolution Matrix shows class changes. Lanza, Ducasse, 2004 Idle class Pulsar class Supernova class attributes White dwarf class methods Class
  • 24. Evolution Matrix shows class changes. Idle class history Pulsar class history Supernova class history ClassHistory White dwarf isPulsar class history isIdle ...
  • 26. System Version Class Class History Version
  • 27. System System History Version Class Class History Version
  • 28. System System History Version Class Class History Version
  • 29. System System History Version en tity. st c lass 200 5 ya s fir Gir ba, tor l s his m ode H ismo Class Class History Version
  • 30. Measuring Yesterday’s Time-based history Weather Detection Strategies 1 2 3 4 5 6 Visualizing the evolution Detecting How developers of hierarchies co-change patterns drive evolution
  • 32. What changed? When did it change? ... 2 4 3 5 7 2 2 3 4 9 2 2 1 2 3 2 2 2 2 2 1 5 3 4 4
  • 33. Evolution of Number of Methods LENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 2i-n LENOM(C) = 4 + 2 + 1 + 0 = 7 1 5 3 4 4
  • 34. Latest Evolution of Number of Methods LENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 2i-n Earliest Evolution of Number of Methods EENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 22-i -3 -2 -1 0 LENOM(C) = 42 + 22 + 12 + 02 = 1.5 1 5 3 4 4 EENOM(C) = 4 20 + 2 2-1 + 1 2-2 + 0 2-3 = 5.25
  • 35. ENOM LENOM EENOM 2 4 3 5 7 7 3.5 3.25 2 2 3 4 9 7 5.75 1.37 2 2 1 2 3 3 1 2 2 2 2 2 2 0 0 0 1 5 3 4 4 7 1.25 5.25
  • 36. ENOM LENOM EENOM balanced changer 7 3.5 3.25 late changer 7 5.75 1.37 3 1 2 dead stable 0 0 0 early changer 7 1.25 5.25
  • 37. ENOM LENOM EENOM balanced changer 7 3.5 3.25 late changer 7 tity 5.75 nts. 1.37 en ureme lass eas st c gh m s fir rou 3 y a th 1 2 r H isto rison co mpa deadsstable ena ble 0 0 0 early changer 7 1.25 5.25
  • 38. History can be measured in many ways. Evolution Number of Methods Stability Number of Lines of Code Historical Max of Cyclomatic Complexity Growth Trend Number of Modules ... ...
  • 40. The recently changed parts are likely to change in the near future. Common wisdom
  • 41. The recently changed parts are likely to change in the near future. ally? Common wisdom re re they A
  • 42. 30% 90%
  • 43.
  • 44.
  • 46. past present
  • 47. past future present
  • 48. past future present
  • 49. past future present
  • 50. past future prediction hit present
  • 51. past future YesterdayWeatherHit(present): past:=histories.topLENOM(start, present) future:=histories.topEENOM(present, end) past.intersectWith(future).notEmpty() prediction hit present
  • 52. Overall Yesterday’s Weather shows the localization of changed in time. Girba etal, 2004 hit hit hit YW = 3 / 8 = 37% hit hit hit hit hit hit hit YW = 7 / 8 = 87%
  • 54. Detection Strategies are metric-based queries to detect design flaws. Lanza, Marinescu 2006 Rule 1 METRIC 1 > Threshold 1 AND Quality problem Rule 2 METRIC 2 < Threshold 2
  • 55. 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
  • 56. Example: a God Class centralizes too much intelligence in the system. Class uses directly more than a few attributes of other classes ATFD > FEW tab le? f it is s wh Functional complexity of the at i ut, class is very high B AND GodClass WMC ! VERY HIGH Class cohesion is low TCC < ONE THIRD
  • 57. History-based Detection Strategies take evolution into account. Ratiu etal, 2004 God Class in the last version isGodClass(last) AND Harmless God Class Stable throughout the history Stability > 90%
  • 58. History-based Detection Strategies take evolution into account. Ratiu etal, 2004 me. God Class in the last version sa ed the isGodClass(last) eat e tr pace ar an ds AND Harmless God Class e Tim Stable throughout the history Stability > 90%
  • 60. What happens with inheritance? A A A A A B C B C B C B B D D D E ver .1 ver. 2 ver. 3 ver. 4 ver. 5
  • 61. History contains too much data. A A A A A A A A A A A A A A A A A A A A B C B C B C B B B C B C B C B B B C B C B C B B B C B C B C B B D D D E D D D E D D D E D D D E ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 A A A A A A A A A A A A A A A A A A A A B C B C B C B B B C B C B C B B B C B C B C B B B C B C B C B B D D D E D D D E D D D E D D D E ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 A A A A A A A A A A A A A A A A A A A A B C B C B C B B B C B C B C B B B C B C B C B B B C B C B C B B D D D E D D D E D D D E D D D E ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 A A A A A A A A A A A A A A A A A A A A B C B C B C B B B C B C B C B B B C B C B C B B B C B C B C B B D D D E D D D E D D D E D D D E ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5
  • 62. System System History Version Class Class History Version
  • 63. System System History Version Inheritance Version Class Class History Version
  • 64. System System History Version Inheritance Inheritance History Version Class Class History Version
  • 65. A A A A A B C B C B C B B D D D E ver .1 ver. 2 ver. 3 ver. 4 ver. 5 A is persistent, B is stable, C was removed, E is newborn ...
  • 66. Hierarchy Evolution View encapsulates time. Girba etal, 2005 A changed methods changed age lines C B Removed Removed D E A is persistent, B is stable, C was removed, E is newborn ...
  • 67. Hierarchy Evolution View reveals patterns. Girba etal, 2005
  • 68. Hierarchy Evolution View reveals patterns. Girba etal, 2005 ntity . ss e aph t cla a gr firs to as ing tory mapp His les e nab
  • 70. 1 2 3 4 5 6 A A B B E C D E C D Gall etal, ‘98
  • 71. Co-change patterns are n-ary relationships.
  • 72. 1 2 3 4 5 6 A B C D Version E
  • 73. 1 2 3 4 5 6 A B C D Version E changed
  • 74. 1 2 3 4 5 6 A History changed(i) B C D Version E changed
  • 75. What is Concept Analysis?
  • 76. 1 2 3 4 5 6 A B C D E
  • 77. {A, B, C, D, E} 1 2 3 4 5 6 Ø A {A, D, B} {A, E, C, D} {2} {6} B {D, B} {A, D} {A, E, C} C FCA {2, 4} {2, 6} {5, 6} D {D} {A} {C} E {2, 4, 6} {2, 5, 6} {3, 5, 6} Ø {1, 2, 3, 4, 5, 6}
  • 78. {A, B, C, D, E} 1 2 3 4 5 6 Ø A {A, D, B} {A, E, C, D} {2} {6} B {D, B} {A, D} {A, E, C} C FCA {2, 4} {2, 6} {5, 6} D {D} {A} {C} E {2, 4, 6} {2, 5, 6} {3, 5, 6} Ø {1, 2, 3, 4, 5, 6} Girba etal, 2007
  • 79. Parallel Inheritance add simultaneously children to several classes Shotgun Surgery change several classes simultaneously, but do not add methods
  • 80. {A, B, C, D, E} 1 2 3 4 5 6 Ø A {A, D, B} {A, E, C, D} {2} {6} B {D, B} {A, D} {A, E, C} C FCA {2, 4} {2, 6} {5, 6} D {D} {A} {C} E {2, 4, 6} {2, 5, 6} {3, 5, 6} Ø {1, 2, 3, 4, 5, 6}
  • 81. {A, B, C, D, E} 1 2 3 4 5 6 Ø A {A, D, B} {A, E, C, D} {2} {6} tity B s en A. st clas {D, B} FC firFCA g to{2, 4} {A, D} {A, E, C} y as appin C {2, 6} {5, 6} stor s m Hi ble D ena {D} {A} {C} E {2, 4, 6} {2, 5, 6} {3, 5, 6} Ø {1, 2, 3, 4, 5, 6}
  • 84. Who is responsible for this?
  • 85. Who is responsible for this?
  • 87. The Hausdorf metric can be used to compute the similarity between commits. A d(A, B) = ∑ min2{ | a - b | b in B } a in A B
  • 89. Ownership Map reveals development patterns. Girba etal, 2006
  • 90. Ownership Map reveals development patterns. Girba etal, 2006 tity anges. s en c ch clas listi rst ho as fi out tory ing ab His son les rea enab
  • 91. Measuring Yesterday’s Time-based history Weather Detection Strategies 1 2 3 4 5 6 Visualizing the evolution Detecting How developers of hierarchies co-change patterns drive evolution
  • 92. System System History Version Inheritance Inheritance History Version Class Class History Version
  • 93. History Version History Version History Version
  • 94. History Version en tity. st c lass 200 5 as fir Gir ba, his tory History Version mo dels Hi smo History Version
  • 95. Modeling History to Understand Software Evolution Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultät der Universität Bern vorgelegt von Tudor Gîrba von Rumänien Leiter der Arbeit: Prof. Dr. Stéphane Ducasse Prof. Dr. Oscar Nierstrasz Institut für Informatik und angewandte Mathematik www.tudorgirba.com
  • 96. Tudor Gîrba www.tudorgirba.com creativecommons.org/licenses/by/3.0/