SlideShare a Scribd company logo
1 of 57
Download to read offline
Assessing software systems




Tudor Gîrba
www.tudorgirba.com
2002
PhD
2002         2005
PhD          PostDoc
2002         2005             2009
PhD           PostDoc
2002         2005                 2009
                    Consultant




                                             .ch
                                          eng
                                   ww.sw-
                                 w
}
                                                    }
                                                {
                                                {



                                                    }
                                                    }
                                                {
                                                {




                                            g
                                       in
                                  er
                             ne
                        gi
                   en
               d
          ar
     rw
fo
fo
                                               rw
                                                ar
                                                  d
                                                     en
                                                     gi
                                                      ne
                                                          er
                                                          in
                                                           g
{               {                                              {               {
                        {
    {
                            }                                      {               {
                                actual development
        }
                                                                       }               }
        }
            }               }                                              }               }
                    {
fo
                                                               rw
                                           g
                                          rin




                                                                ar
                                          ee




                                                                  d
                                                                     en
                                      in
                                     ng




                                                                     gi
                                                                      ne
                                     ee




                                                                          er
                                 rs




                                                                          in
                                ve




                                                                           g
                                re




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

                                    complex
                            }

                                =
        }
        }
            }               }
                    {
complex, large
{               {
                        {
    {
                            }

                                =
        }
        }
            }               }
                    {
= 250’000 lines of code
= 250’000 lines of code

* 2 

 = 500’000 seconds
= 250’000 lines of code

* 2 

 = 500’000 seconds

/ 3600 	 140 hours
       ~
= 250’000 lines of code

* 2 

 = 500’000 seconds

/ 3600 	 140 hours
       ~

/ 8 		 ~ 18 days
= 250’000 lines of code

* 2 

 = 500’000 seconds

/ 3600 	 140 hours
       ~

/ 8 		 ~ 18 days

/ 20 	 ~ 1 month
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
Metric   Value
LOC      148‘760
NOM       14‘915
NOC        2’089
CYCLO     30‘073
CALLS    151287
FANOUT    85909
AHH         0.12
...           ...
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
A God Class centralizes too much intelligence


 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

                                                                     6
                                                             scu 200
                                                      Marine
                                             Lanza,
Significant duplication goes beyond just one line
  Duplication chain has at least a
 size of two relevant exact clones

      SDC ! 2x(FEW+1)+1


  Exact clones are longer than a
         few lines of code                 Significant Duplication
                                     AND
                                                   Chain
           SEC > FEW


 Distance between clones is not
  more than a few lines of code

            LB quot; FEW


       Significant standalone
             exact clone

 SEC > AVERAGE(LOC/Operation)                      Significant
                                     OR
                                                   Duplication

                                                                            6
                                                                    scu 200
    Significant Duplication Chain
                                                             Marine
                                                    Lanza,
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
How do programs look like today?
A picture tells
a thousand words
proximity
enclosure
connectivity
similarity
closure
continuity
A picture tells
a thousand words
es tell a
  ot all ords
          pictur
N
    usand w
tho
System Complexity shows class hierarchies




                                                  03
                                          asse 20
                                        uc
                                anza, D
                               L
Distribution Map
 shows properties
 over structure




Ducass
       e   etal 200
                   6
Feature Map relates features to packages




                                                7
                                        etal 200
                                 Greevy
CodeCity shows where your code lives




                                                7
                                         nza 200
                                      La
                              Wettel,
and where your flaws live




                                      8
                                     0
                            ettel 20
                           W
Duplications shown side by side
fo
                                                               rw
                                           g
                                          rin




                                                                ar
                                          ee




                                                                  d
                                                                     en
                                      in
                                     ng




                                                                     gi
                                                                      ne
                                     ee




                                                                          er
                                 rs




                                                                          in
                                ve




                                                                           g
                                re




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



{
                         {
                }

}
                                 re
                                      ve
                                           rs
                                                ee
                                                     ng
                                                              in
                                                                   ee
                                                                        rin
                                                                              g



                             reverse engineering


                                                                                  fo
    actual development
                                                                            rw
                                                                       ar
                                                                   d
                                                              en
                                                         gi
                                                    ne
                                               er
                                          in
                                      g
                         {
             {
    }
}
                         {
             {
    }
}
Hierarchy Evolution reveals evolution patterns




                                                    5
                                           etal 200
                                     Girba
Ownership Map reveals patterns in CVS




                                              5
                                     etal 200
                               Girba
Clone Evolution shows who copied from whom




                                                6
                                        etal 200
                                 Balint
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
e.ch
        unib
    se.
  o
mo
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




                                                     {                   {
                                                                                 {
                                                             {
                                                                                     }
                                                                 }
                                                                 }
                                                                     }               }
                                                                             {
ment is
          assess
  oftware
S
                  cy tools
          han fan
    ore t
m
McCabe = 21
                                                         d
                                                      o
                                                 #isG
                                               :
NOM =
                                          lect
                           0
        102                             se
                        ,00


                                                                                         ...
                                    ses
                      3
                               clas
                    75
                =
            C
          LO




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




creativecommons.org/licenses/by/3.0/

More Related Content

Similar to Assessing software systems

Enhancing agile development through software assessment
Enhancing agile development through software assessmentEnhancing agile development through software assessment
Enhancing agile development through software assessmentTudor Girba
 
Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Tudor 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
 
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
 
Reverse Engineering (EVO 2008)
Reverse Engineering (EVO 2008)Reverse Engineering (EVO 2008)
Reverse Engineering (EVO 2008)Tudor Girba
 
Modeling History to Understand Software Evolution with Hismo 2008-03-12
Modeling History to Understand Software Evolution with Hismo 2008-03-12Modeling History to Understand Software Evolution with Hismo 2008-03-12
Modeling History to Understand Software Evolution with Hismo 2008-03-12Tudor Girba
 
Modeling History to Understand Software Evolution With Hismo 2008-02-25
Modeling History to Understand Software Evolution With Hismo 2008-02-25 Modeling History to Understand Software Evolution With Hismo 2008-02-25
Modeling History to Understand Software Evolution With Hismo 2008-02-25 Tudor Girba
 
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)Tudor Girba
 
What history can tell us
What history can tell usWhat history can tell us
What history can tell usTudor 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
 
History Analysis (EVO 2008)
History Analysis (EVO 2008)History Analysis (EVO 2008)
History Analysis (EVO 2008)Tudor Girba
 
A Moose Slideshow
A Moose SlideshowA Moose Slideshow
A Moose SlideshowTudor 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 Assessing software systems (14)

Enhancing agile development through software assessment
Enhancing agile development through software assessmentEnhancing agile development through software assessment
Enhancing agile development through software assessment
 
Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Humane assessment at ICSM 2010
Humane assessment at ICSM 2010
 
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
 
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
 
Reverse Engineering (EVO 2008)
Reverse Engineering (EVO 2008)Reverse Engineering (EVO 2008)
Reverse Engineering (EVO 2008)
 
Modeling History to Understand Software Evolution with Hismo 2008-03-12
Modeling History to Understand Software Evolution with Hismo 2008-03-12Modeling History to Understand Software Evolution with Hismo 2008-03-12
Modeling History to Understand Software Evolution with Hismo 2008-03-12
 
Modeling History to Understand Software Evolution With Hismo 2008-02-25
Modeling History to Understand Software Evolution With Hismo 2008-02-25 Modeling History to Understand Software Evolution With Hismo 2008-02-25
Modeling History to Understand Software Evolution With Hismo 2008-02-25
 
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
 
What history can tell us
What history can tell usWhat history can tell us
What history can tell us
 
Reverse Engineering Techniques 2007-11-29
Reverse Engineering Techniques 2007-11-29 Reverse Engineering Techniques 2007-11-29
Reverse Engineering Techniques 2007-11-29
 
History Analysis (EVO 2008)
History Analysis (EVO 2008)History Analysis (EVO 2008)
History Analysis (EVO 2008)
 
A Moose Slideshow
A Moose SlideshowA Moose Slideshow
A Moose Slideshow
 
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

Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application ) Sakshi Ghasle
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxsocialsciencegdgrohi
 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfadityarao40181
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,Virag Sontakke
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
internship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerinternship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerunnathinaik
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Celine George
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxUnboundStockton
 

Recently uploaded (20)

Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
Hybridoma Technology ( Production , Purification , and Application )
Hybridoma Technology  ( Production , Purification , and Application  ) Hybridoma Technology  ( Production , Purification , and Application  )
Hybridoma Technology ( Production , Purification , and Application )
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
 
Biting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdfBiting mechanism of poisonous snakes.pdf
Biting mechanism of poisonous snakes.pdf
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
internship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerinternship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developer
 
Staff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSDStaff of Color (SOC) Retention Efforts DDSD
Staff of Color (SOC) Retention Efforts DDSD
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17
 
Blooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docxBlooming Together_ Growing a Community Garden Worksheet.docx
Blooming Together_ Growing a Community Garden Worksheet.docx
 

Assessing software systems

  • 1. Assessing software systems Tudor Gîrba www.tudorgirba.com
  • 3. PhD 2002 2005
  • 4. PhD PostDoc 2002 2005 2009
  • 5. PhD PostDoc 2002 2005 2009 Consultant .ch eng ww.sw- w
  • 6. } } { { } } { { g in er ne gi en d ar rw fo
  • 7. fo rw ar d en gi ne er in g { { { { { { } { { actual development } } } } } } } } {
  • 8. fo rw g rin ar ee d en in ng gi ne ee er rs in ve g re { { { { { { } { { actual development } } } } } } } } {
  • 9. { { { { complex } = } } } } {
  • 10. complex, large { { { { } = } } } } {
  • 11.
  • 12. = 250’000 lines of code
  • 13. = 250’000 lines of code * 2 = 500’000 seconds
  • 14. = 250’000 lines of code * 2 = 500’000 seconds / 3600 140 hours ~
  • 15. = 250’000 lines of code * 2 = 500’000 seconds / 3600 140 hours ~ / 8 ~ 18 days
  • 16. = 250’000 lines of code * 2 = 500’000 seconds / 3600 140 hours ~ / 8 ~ 18 days / 20 ~ 1 month
  • 17. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 18. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 19. Metric Value LOC 148‘760 NOM 14‘915 NOC 2’089 CYCLO 30‘073 CALLS 151287 FANOUT 85909 AHH 0.12 ... ...
  • 20. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 21.
  • 22. A God Class centralizes too much intelligence 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 6 scu 200 Marine Lanza,
  • 23. Significant duplication goes beyond just one line Duplication chain has at least a size of two relevant exact clones SDC ! 2x(FEW+1)+1 Exact clones are longer than a few lines of code Significant Duplication AND Chain SEC > FEW Distance between clones is not more than a few lines of code LB quot; FEW Significant standalone exact clone SEC > AVERAGE(LOC/Operation) Significant OR Duplication 6 scu 200 Significant Duplication Chain Marine Lanza,
  • 24. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 25. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 26.
  • 27.
  • 28. How do programs look like today?
  • 29. A picture tells a thousand words
  • 36. A picture tells a thousand words
  • 37.
  • 38. es tell a ot all ords pictur N usand w tho
  • 39. System Complexity shows class hierarchies 03 asse 20 uc anza, D L
  • 40. Distribution Map shows properties over structure Ducass e etal 200 6
  • 41. Feature Map relates features to packages 7 etal 200 Greevy
  • 42. CodeCity shows where your code lives 7 nza 200 La Wettel,
  • 43. and where your flaws live 8 0 ettel 20 W
  • 45. fo rw g rin ar ee d en in ng gi ne ee er rs in ve g re { { { { { { } { { actual development } } } } } } } } {
  • 46. { { } } } { { { } } re ve rs ee ng in ee rin g reverse engineering fo actual development rw ar d en gi ne er in g { { } } { { } }
  • 47. Hierarchy Evolution reveals evolution patterns 5 etal 200 Girba
  • 48. Ownership Map reveals patterns in CVS 5 etal 200 Girba
  • 49. Clone Evolution shows who copied from whom 6 etal 200 Balint
  • 50. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 51. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 52. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 53. e.ch unib se. o mo
  • 54. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 55. ment is assess oftware S cy tools han fan ore t m
  • 56. McCabe = 21 d o #isG : NOM = lect 0 102 se ,00 ... ses 3 clas 75 = C LO { { { { } } } } } {
  • 57. Tudor Gîrba www.tudorgirba.com creativecommons.org/licenses/by/3.0/