SlideShare a Scribd company logo
1 of 96
Download to read offline
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/

More Related Content

Similar to Modeling History to Understand Software Evolution With Hismo 2008-02-25

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
 

Similar to Modeling History to Understand Software Evolution With Hismo 2008-02-25 (13)

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)
 

More from 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
 

More from 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
 

Recently uploaded

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
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
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
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

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
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
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...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

Modeling History to Understand Software Evolution With Hismo 2008-02-25

  • 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/