SlideShare a Scribd company logo
1 of 111
Download to read offline
Software in pictures


     Tudor Gîrba
     www.tudorgirba.com
Software is complex.



   29% Succeeded

      18% Failed



   53% Challenged



 The Standish Group, 2004
How large is your project?
How large is your project?


    1’000’000 lines of code
How large is your project?


    1’000’000 lines of code
    * 2 = 2’000’000 seconds
How large is your project?


    1’000’000 lines of code
    * 2 = 2’000’000 seconds
      / 3600 = 560 hours
How large is your project?


    1’000’000 lines of code
    * 2 = 2’000’000 seconds
      / 3600 = 560 hours
         / 8 = 70 days
How large is your project?


    1’000’000 lines of code
    * 2 = 2’000’000 seconds
      / 3600 = 560 hours
         / 8 = 70 days
       / 20 = 3 months
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                     }               }
            }       {       }                                                                }               }
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries                                   Visualizations   ...


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

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


Metrics                          Queries                                   Visualizations   ...


                                           {               {
                                               {                   {
                                                                       }
                                                   }
                                                   }
                                                       }       {       }
What are software metrics?
Youcannot control
what you cannot measure.




                           Tom de Marco
Software metrics are measurements which
relate to software systems, processes or
related documents
Metrics compress the system into numbers.
Examples of size metrics


NOM - number of methods
NOA - number of attributes
LOC - number of lines of code
NOS - number of statements
NOC - number of children



                                Lorentz, Kidd, 1994
                                  Chidamber, 1994
McCabe cyclomatic complexity counts
the number of possible paths through the code of a
function.




                                           McCabe, 1977
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


Metrics                          Queries                                   Visualizations   ...


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

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries                               Visualizations   ...


                                       {               {
                                           {                   {
                                                                   }
                                               }
                                               }
                                                   }       {       }
Queries reduce the analysis space.
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.          Lanza, Marinescu 2006


     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
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries                               Visualizations   ...


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

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries               Visualizations      ...


                                           {               {
                                               {                   {
                                                                       }
                                                   }
                                                   }
                                                       }       {       }
Software in pictures


     Tudor Gîrba
     www.tudorgirba.com
1946
1956
1956
1956
1956   2006
1956   2006
1956   2006
1956   2006




       ?
Visualization compresses the system into pictures.
1854,
London,
cholera
epidemic
1854,
London,
cholera
epidemic
A picture is worth

a   thousand words.
UML took it literally :)
We are

visual
beings.
How many groups do you see?
How many groups do you see?
How many groups do you see?
How many groups do you see?
Gestalt principles




proximity                        similarity




enclosure                        connectivity
More Gestalt principles




closure                             continuity
We are

visual
beings.
A picture is worth

a   thousand words.
UML took it literally :)
Example: what is   ?
Polymetric views show up to 5 metrics.
                                            Lanza, 2003

                        Width metric

        Height metric



  Position metrics

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




                                          attributes


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


   Initialize   Interface       Internal       Accessor   Attribute




                   invocation and access direction
Class Blueprint has a rich vocabulary.

              internal access
                                              Access
  external
                Attribute
   access                                    Invocation



                                   Regular                Constant

               invocations
                                Overriding                Delegating

      lines      Method
                                Extending                 Setter

                                  Abstract                Getter
Class Blueprint shows class internals.
Distribution Map shows properties over
structure.                            Ducasse etal, 2006




            31 parts, 394 elements and 9 properties
Code City shows where your code lives.
                                                       Wettel, Lanza, 2007




       classes are buildings grouped in quarters of packages
Object Flow shows how objects move.
                                      Lienhard etal, 2007




objects flowing
through other objects
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
                                                                  rw
                                                             ar
    actual development
                                                         d
                                                    en
                                              gin
                                         ee
                                   rin
                               g
                         {
             {
    }
}
                         {
             {
    }
}
Spectographs show change activity.
                              Wu etal, 2004




 commit




                  time
Evolution Matrix shows changes in classes.
                                      Lanza, Ducasse, 2002


Idle class



Pulsar class




Supernova class




White dwarf class
Evolution Matrix shows changes in classes
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
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 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 reveals patterns.
                                   Girba etal, 2005
Evolution Radar shows co-change relationships.
                                                 D’Ambros, Lanza 2006




          one package and its co-change relationships
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries               Visualizations      ...


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

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries               Visualizations      ...


                                           {               {
                                               {                   {
                                                                       }
                                                   }
                                                   }
                                                       }       {       }
moose.unibe.ch
McCabe = 21

NOM                          0
      = 102
                        3 ,00
                      75
                  =
              C
         LO


  Metrics                        Queries               Visualizations      ...


                                           {               {
                                               {                   {
                                                                       }
                                                   }
                                                   }
                                                       }       {       }
But, what actually happens
behind the scene?
System Complexity
1 node type
1 edge type
3 metrics




Class Blueprint
3 node types
2 edge types
3 metrics
8 properties
A small experiment
1, 13, 27, 4, 96
What were the numbers?
Easy!
What was the last advertisement you saw?
Not so easy!
Each visualization provides a   language that
needs to be learnt.
So, what does happen
behind the scene?
Principle: Minimize chart junk




                                 Tufte, 1990
Excel default
Excel default




Excel default
+
6 actions
Distribution Map shows properties.
                                     Ducasse etal, 2006
Principle: Maximize data ink




                               Tufte, 1990
                                 Tufte, 1990
InfoBug is cute and condensed.
                                 Chuah, Eick, 2006
So, what does happen
behind the scene?
Example 1: CVS shows activity.
Who did this?
Alphabetical order is no order.
Ownership Map orders histories to reveal
patterns.                              Girba etal, 2006
Example 2: Who copied from whom?

(john     23.06.03) public boolean stillValid (ToDoItem I, Designer dsgr) {
(bill     09.01.05)    if (!isActive()) {
(bill     09.01.05)       return false
(bill     09.01.05)    }
(steve    16.02.05)    List offs = i.getOffenders();
(john     23.06.03)    Object dm = offs.firstElement();
(steve    16.02.05)    ListSet newOffs = computeOffenders(dm);
(john     23.06.03)    boolean res = offs.equals(newOffs);
(john     23.06.03)    return res;




(george   13.02.05) public boolean stillValid (ToDoItem I, Designer dsgr) {
(bill     11.13.05)    if (!isActive()) {
(bill     11.13.05)       return false
(bill     11.13.05)    }
(steve    16.02.05)    List offs = i.getOffenders();
(george   13.02.05)    Object dm = offs.firstElement();
(steve    16.02.05)    ListSet newOffs = computeOffenders(dm);
(george   13.02.05)    boolean res = offs.equals(newOffs);
(george   13.02.05)    return res;
What is useless?

(john     23.06.03) public boolean stillValid (ToDoItem I, Designer dsgr) {
(bill     09.01.05)    if (!isActive()) {
(bill     09.01.05)       return false
(bill     09.01.05)    }
(steve    16.02.05)    List offs = i.getOffenders();
(john     23.06.03)    Object dm = offs.firstElement();
(steve    16.02.05)    ListSet newOffs = computeOffenders(dm);
(john     23.06.03)    boolean res = offs.equals(newOffs);
(john     23.06.03)    return res;




(george   13.02.05) public boolean stillValid (ToDoItem I, Designer dsgr) {
(bill     11.13.05)    if (!isActive()) {
(bill     11.13.05)       return false
(bill     11.13.05)    }
(steve    16.02.05)    List offs = i.getOffenders();
(george   13.02.05)    Object dm = offs.firstElement();
(steve    16.02.05)    ListSet newOffs = computeOffenders(dm);
(george   13.02.05)    boolean res = offs.equals(newOffs);
(george   13.02.05)    return res;
When did changes happen?

23.06.03   public boolean stillValid (ToDoItem I, Designer dsgr) {
09.01.05      if (!isActive()) {
09.01.05         return false
09.01.05      }
16.02.05      List offs = i.getOffenders();
23.06.03      Object dm = offs.firstElement();
16.02.05      ListSet newOffs = computeOffenders(dm);
23.06.03      boolean res = offs.equals(newOffs);
23.06.03      return res;




13.02.05   public boolean stillValid (ToDoItem I, Designer dsgr) {
11.13.05      if (!isActive()) {
11.13.05         return false
11.13.05      }
16.02.05      List offs = i.getOffenders();
13.02.05      Object dm = offs.firstElement();
16.02.05      ListSet newOffs = computeOffenders(dm);
13.02.05      boolean res = offs.equals(newOffs);
13.02.05      return res;
Clone Evolution shows how developers copy.
                                      Balint etal, 2006
Not every picture is worth a thousand words.
One more thing ...
Visualization is   art, too.
Tudor Gîrba
       www.tudorgirba.com




creativecommons.org/licenses/by/3.0/

More Related Content

Viewers also liked

PICTURES AND SOFTWARE TO ENGLISH BY ANA TEACH
PICTURES AND SOFTWARE TO ENGLISH BY ANA TEACHPICTURES AND SOFTWARE TO ENGLISH BY ANA TEACH
PICTURES AND SOFTWARE TO ENGLISH BY ANA TEACHHerbalifeHQ
 
Pm in pictures 5 if hardware were built like software
Pm in pictures 5   if hardware were built like softwarePm in pictures 5   if hardware were built like software
Pm in pictures 5 if hardware were built like softwareSaeed Khan
 
Computer hardware and networking
Computer hardware and networkingComputer hardware and networking
Computer hardware and networkingdevendrakhairwa
 
Taflaw Presentation: Computer Hardware
Taflaw Presentation: Computer HardwareTaflaw Presentation: Computer Hardware
Taflaw Presentation: Computer Hardwaretafara mapetese
 
Presentation of computer hardware by zawad
Presentation of computer hardware by zawadPresentation of computer hardware by zawad
Presentation of computer hardware by zawadEmrul Zawad
 
Computer hardware presentation
Computer hardware presentationComputer hardware presentation
Computer hardware presentationOliver Sabornido
 
Presentation about computer hardware
Presentation about computer hardwarePresentation about computer hardware
Presentation about computer hardwaremahmood saqy
 
Chapter 1 computer hardware and flow of information
Chapter 1 computer hardware and flow of informationChapter 1 computer hardware and flow of information
Chapter 1 computer hardware and flow of informationFrankie Jones
 
Block diagram of computer 02
Block diagram of computer 02Block diagram of computer 02
Block diagram of computer 02ZTE Nepal
 
Block diagram of a computer
Block diagram of a computerBlock diagram of a computer
Block diagram of a computerZTE Nepal
 
Computer hardware presentation
Computer hardware presentationComputer hardware presentation
Computer hardware presentationJisu Dasgupta
 
Product Manager 101: What Does A Product Manager Actually Do?
Product Manager 101: What Does A Product Manager Actually Do?Product Manager 101: What Does A Product Manager Actually Do?
Product Manager 101: What Does A Product Manager Actually Do?Chris Cummings
 

Viewers also liked (14)

PICTURES AND SOFTWARE TO ENGLISH BY ANA TEACH
PICTURES AND SOFTWARE TO ENGLISH BY ANA TEACHPICTURES AND SOFTWARE TO ENGLISH BY ANA TEACH
PICTURES AND SOFTWARE TO ENGLISH BY ANA TEACH
 
Pm in pictures 5 if hardware were built like software
Pm in pictures 5   if hardware were built like softwarePm in pictures 5   if hardware were built like software
Pm in pictures 5 if hardware were built like software
 
Computer hardware and networking
Computer hardware and networkingComputer hardware and networking
Computer hardware and networking
 
Taflaw Presentation: Computer Hardware
Taflaw Presentation: Computer HardwareTaflaw Presentation: Computer Hardware
Taflaw Presentation: Computer Hardware
 
Presentation of computer hardware by zawad
Presentation of computer hardware by zawadPresentation of computer hardware by zawad
Presentation of computer hardware by zawad
 
Computer hardware presentation
Computer hardware presentationComputer hardware presentation
Computer hardware presentation
 
Computer
ComputerComputer
Computer
 
Presentation about computer hardware
Presentation about computer hardwarePresentation about computer hardware
Presentation about computer hardware
 
Chapter 1 computer hardware and flow of information
Chapter 1 computer hardware and flow of informationChapter 1 computer hardware and flow of information
Chapter 1 computer hardware and flow of information
 
Block diagram of computer 02
Block diagram of computer 02Block diagram of computer 02
Block diagram of computer 02
 
Block diagram of a computer
Block diagram of a computerBlock diagram of a computer
Block diagram of a computer
 
Hardware & Software
Hardware & SoftwareHardware & Software
Hardware & Software
 
Computer hardware presentation
Computer hardware presentationComputer hardware presentation
Computer hardware presentation
 
Product Manager 101: What Does A Product Manager Actually Do?
Product Manager 101: What Does A Product Manager Actually Do?Product Manager 101: What Does A Product Manager Actually Do?
Product Manager 101: What Does A Product Manager Actually Do?
 

Similar to Software in Pictures 2008-03-12

A Moose Slideshow
A Moose SlideshowA Moose Slideshow
A Moose SlideshowTudor 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
 
Reverse Engineering 2007-11-27
Reverse Engineering 2007-11-27 Reverse Engineering 2007-11-27
Reverse Engineering 2007-11-27 Tudor Girba
 
Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Tudor Girba
 
Helping you reengineering your legacy
Helping you reengineering your legacyHelping you reengineering your legacy
Helping you reengineering your legacyStéphane Ducasse
 
Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Tudor Girba
 
History Analysis (EVO 2008)
History Analysis (EVO 2008)History Analysis (EVO 2008)
History Analysis (EVO 2008)Tudor Girba
 
Moose Tutorial at WCRE 2008
Moose Tutorial at WCRE 2008Moose Tutorial at WCRE 2008
Moose Tutorial at WCRE 2008Tudor Girba
 
Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Tudor Girba
 
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
 
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
 
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
 
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
 
Restructuring (EVO 2008)
Restructuring (EVO 2008)Restructuring (EVO 2008)
Restructuring (EVO 2008)Tudor Girba
 
How queries work with sharding
How queries work with shardingHow queries work with sharding
How queries work with shardingMongoDB
 

Similar to Software in Pictures 2008-03-12 (18)

A Moose Slideshow
A Moose SlideshowA Moose Slideshow
A Moose Slideshow
 
Moose Overview
Moose OverviewMoose Overview
Moose Overview
 
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)
 
Reverse Engineering 2007-11-27
Reverse Engineering 2007-11-27 Reverse Engineering 2007-11-27
Reverse Engineering 2007-11-27
 
Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Problem Detection (EVO 2008)
Problem Detection (EVO 2008)
 
Helping you reengineering your legacy
Helping you reengineering your legacyHelping you reengineering your legacy
Helping you reengineering your legacy
 
Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Humane assessment at ICSM 2010
Humane assessment at ICSM 2010
 
History Analysis (EVO 2008)
History Analysis (EVO 2008)History Analysis (EVO 2008)
History Analysis (EVO 2008)
 
Moose Tutorial at WCRE 2008
Moose Tutorial at WCRE 2008Moose Tutorial at WCRE 2008
Moose Tutorial at WCRE 2008
 
Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)
 
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
 
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
 
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
 
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)
 
Restructuring (EVO 2008)
Restructuring (EVO 2008)Restructuring (EVO 2008)
Restructuring (EVO 2008)
 
How queries work with sharding
How queries work with shardingHow queries work with sharding
How queries work with sharding
 

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

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

Software in Pictures 2008-03-12

  • 1. Software in pictures Tudor Gîrba www.tudorgirba.com
  • 2. Software is complex. 29% Succeeded 18% Failed 53% Challenged The Standish Group, 2004
  • 3. How large is your project?
  • 4. How large is your project? 1’000’000 lines of code
  • 5. How large is your project? 1’000’000 lines of code * 2 = 2’000’000 seconds
  • 6. How large is your project? 1’000’000 lines of code * 2 = 2’000’000 seconds / 3600 = 560 hours
  • 7. How large is your project? 1’000’000 lines of code * 2 = 2’000’000 seconds / 3600 = 560 hours / 8 = 70 days
  • 8. How large is your project? 1’000’000 lines of code * 2 = 2’000’000 seconds / 3600 = 560 hours / 8 = 70 days / 20 = 3 months
  • 9. fo rw ar d en gin ee rin g { { { { { { } { { } } actual development } } } { } } }
  • 10. fo rw g rin ar ee d gin en gin en ee se rin erv g re { { { { { { } { { } } actual development } } } { } } }
  • 11. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 12. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 13. What are software metrics?
  • 14. Youcannot control what you cannot measure. Tom de Marco
  • 15. Software metrics are measurements which relate to software systems, processes or related documents
  • 16. Metrics compress the system into numbers.
  • 17. Examples of size metrics NOM - number of methods NOA - number of attributes LOC - number of lines of code NOS - number of statements NOC - number of children Lorentz, Kidd, 1994 Chidamber, 1994
  • 18. McCabe cyclomatic complexity counts the number of possible paths through the code of a function. McCabe, 1977
  • 19. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 20. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 21. Queries reduce the analysis space.
  • 22. 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
  • 23. Example: a God Class centralizes too much intelligence in the system. Lanza, Marinescu 2006 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
  • 24. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 25. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 26. Software in pictures Tudor Gîrba www.tudorgirba.com
  • 27. 1946
  • 28. 1956
  • 29. 1956
  • 30. 1956
  • 31. 1956 2006
  • 32. 1956 2006
  • 33. 1956 2006
  • 34. 1956 2006 ?
  • 35. Visualization compresses the system into pictures.
  • 38. A picture is worth a thousand words.
  • 39.
  • 40. UML took it literally :)
  • 42. How many groups do you see?
  • 43. How many groups do you see?
  • 44. How many groups do you see?
  • 45. How many groups do you see?
  • 46. Gestalt principles proximity similarity enclosure connectivity
  • 49. A picture is worth a thousand words.
  • 50.
  • 51. UML took it literally :)
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58. Polymetric views show up to 5 metrics. Lanza, 2003 Width metric Height metric Position metrics Color metric
  • 59. System Complexity shows class hierarchies. Lanza, Ducasse, 2003 attributes methods lines
  • 60. Class Blueprint shows class internals. Lanza, Ducasse, 2005 Initialize Interface Internal Accessor Attribute invocation and access direction
  • 61. Class Blueprint has a rich vocabulary. internal access Access external Attribute access Invocation Regular Constant invocations Overriding Delegating lines Method Extending Setter Abstract Getter
  • 62. Class Blueprint shows class internals.
  • 63. Distribution Map shows properties over structure. Ducasse etal, 2006 31 parts, 394 elements and 9 properties
  • 64. Code City shows where your code lives. Wettel, Lanza, 2007 classes are buildings grouped in quarters of packages
  • 65. Object Flow shows how objects move. Lienhard etal, 2007 objects flowing through other objects
  • 66. fo rw g rin ar ee d gin en gin en ee se rin erv g re { { { { { { } { { } } actual development } } } { } } }
  • 67. { { } } } { { { } } re v er se en gin ee rin g reverse engineering fo rw ar actual development d en gin ee rin g { { } } { { } }
  • 68. Spectographs show change activity. Wu etal, 2004 commit time
  • 69. Evolution Matrix shows changes in classes. Lanza, Ducasse, 2002 Idle class Pulsar class Supernova class White dwarf class
  • 70. Evolution Matrix shows changes in classes
  • 71. 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
  • 72. 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
  • 73. 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 ...
  • 74. Hierarchy Evolution 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 ...
  • 75. Hierarchy Evolution reveals patterns. Girba etal, 2005
  • 76. Evolution Radar shows co-change relationships. D’Ambros, Lanza 2006 one package and its co-change relationships
  • 77. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 78. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 80. McCabe = 21 NOM 0 = 102 3 ,00 75 = C LO Metrics Queries Visualizations ... { { { { } } } } { }
  • 81. But, what actually happens behind the scene?
  • 82. System Complexity 1 node type 1 edge type 3 metrics Class Blueprint 3 node types 2 edge types 3 metrics 8 properties
  • 84. 1, 13, 27, 4, 96
  • 85. What were the numbers?
  • 86. Easy!
  • 87. What was the last advertisement you saw?
  • 89. Each visualization provides a language that needs to be learnt.
  • 90. So, what does happen behind the scene?
  • 91. Principle: Minimize chart junk Tufte, 1990
  • 94. Distribution Map shows properties. Ducasse etal, 2006
  • 95. Principle: Maximize data ink Tufte, 1990 Tufte, 1990
  • 96. InfoBug is cute and condensed. Chuah, Eick, 2006
  • 97. So, what does happen behind the scene?
  • 98. Example 1: CVS shows activity.
  • 101. Ownership Map orders histories to reveal patterns. Girba etal, 2006
  • 102. Example 2: Who copied from whom? (john 23.06.03) public boolean stillValid (ToDoItem I, Designer dsgr) { (bill 09.01.05) if (!isActive()) { (bill 09.01.05) return false (bill 09.01.05) } (steve 16.02.05) List offs = i.getOffenders(); (john 23.06.03) Object dm = offs.firstElement(); (steve 16.02.05) ListSet newOffs = computeOffenders(dm); (john 23.06.03) boolean res = offs.equals(newOffs); (john 23.06.03) return res; (george 13.02.05) public boolean stillValid (ToDoItem I, Designer dsgr) { (bill 11.13.05) if (!isActive()) { (bill 11.13.05) return false (bill 11.13.05) } (steve 16.02.05) List offs = i.getOffenders(); (george 13.02.05) Object dm = offs.firstElement(); (steve 16.02.05) ListSet newOffs = computeOffenders(dm); (george 13.02.05) boolean res = offs.equals(newOffs); (george 13.02.05) return res;
  • 103. What is useless? (john 23.06.03) public boolean stillValid (ToDoItem I, Designer dsgr) { (bill 09.01.05) if (!isActive()) { (bill 09.01.05) return false (bill 09.01.05) } (steve 16.02.05) List offs = i.getOffenders(); (john 23.06.03) Object dm = offs.firstElement(); (steve 16.02.05) ListSet newOffs = computeOffenders(dm); (john 23.06.03) boolean res = offs.equals(newOffs); (john 23.06.03) return res; (george 13.02.05) public boolean stillValid (ToDoItem I, Designer dsgr) { (bill 11.13.05) if (!isActive()) { (bill 11.13.05) return false (bill 11.13.05) } (steve 16.02.05) List offs = i.getOffenders(); (george 13.02.05) Object dm = offs.firstElement(); (steve 16.02.05) ListSet newOffs = computeOffenders(dm); (george 13.02.05) boolean res = offs.equals(newOffs); (george 13.02.05) return res;
  • 104. When did changes happen? 23.06.03 public boolean stillValid (ToDoItem I, Designer dsgr) { 09.01.05 if (!isActive()) { 09.01.05 return false 09.01.05 } 16.02.05 List offs = i.getOffenders(); 23.06.03 Object dm = offs.firstElement(); 16.02.05 ListSet newOffs = computeOffenders(dm); 23.06.03 boolean res = offs.equals(newOffs); 23.06.03 return res; 13.02.05 public boolean stillValid (ToDoItem I, Designer dsgr) { 11.13.05 if (!isActive()) { 11.13.05 return false 11.13.05 } 16.02.05 List offs = i.getOffenders(); 13.02.05 Object dm = offs.firstElement(); 16.02.05 ListSet newOffs = computeOffenders(dm); 13.02.05 boolean res = offs.equals(newOffs); 13.02.05 return res;
  • 105. Clone Evolution shows how developers copy. Balint etal, 2006
  • 106. Not every picture is worth a thousand words.
  • 108. Visualization is art, too.
  • 109.
  • 110.
  • 111. Tudor Gîrba www.tudorgirba.com creativecommons.org/licenses/by/3.0/