SlideShare a Scribd company logo
1 of 89
Software Evolution
Michele Lanza
Faculty of Informatics
University of Lugano
Switzerland
Lugano?
Lugano..
Lugano!
REVEAL
Reverse Engineering Visualization Evolution Analysis Lab




                    Michele Lanza
                   Romain Robbes
                    Mircea Lungu
                   Marco D’Ambros
                    Richard Wettel
Contents

•   Introduction
•   Key Concepts
•   Mining Software Repositories
•   Visualization
•   Applications
    •   The Evolution Matrix
    •   CodeCity
    •   A Bug’s Life

•   Undermining Software Evolution
•   Conclusion
Acknowledgements

•   4 slides borrowed from Dr. Tudor Gîrba
•   9 slides borrowed from Marco D’Ambros
•   11 slides borrowed from Richard Wettel
•   12 slides borrowed from Romain Robbes


•   Thanks to Prof. Zeller for having me here
Key Concepts
What is Software?


  “a program enables a
  computer to perform a
      specific task”


 “A computer program is
      a collection of
     instructions that
 describe a task, or set of
  tasks, to be carried out
      by a computer”
Some Facts About Software

•   Society increasingly relies on software
    •   ...but it is unreliable and of low quality

•   Software is regarded like a classical engineering
    product
    •   ...but it is more complex than any other human artifact

•   Maintenance is treated as a lowly activity
    •   ...but 75% - 95% of cost is spent on maintenance

•   Software evolves due to business & technology
    drivers: systems that do not change are dead
•   Software evolution is crucial
How Large is Software?

                                                         Windows XP: > 45 M
                  Lines of code (millions)

         40                                        Windows 2000: 40 M

                                                                        Red Hat 7.1
                                                                        30 M
         30



         20
                                            Windows 98: 18 M
  Unix V7:
                              Windows 95: 15 M
   10,000                                                                Red Hat 6.2
                                                  Solaris 7: 12 M        17 M
             10
                  Windows NT: 4 M
             2 Windows 3.1: 3 M
                      1990     Linux: 10,000   1995          1998       2000
                                 1992
How Much Software is There?

•   The total volume of software is estimated at
    7’000’000’000 function points (FP)
    •   1 FP ~ 128 lines of C or 107 lines of COBOL
    •   This means ca. 1 TLOC (1’000’000’000’000 lines)
        •   Printed on paper we can wrap the planet 10 times

•   In what shape is it?
    •   On average ca. 5 bugs / FP
    •   This means ca. 35’000’000’000 bugs (6 per person)
How Reliable is Software??

 • Empirically
  • 1 error / 20 lines
 • Saftey-critical Systems
  • 1 error / 100 lines
 • Wishful Thinking
  • 1 error / 1000 lines
 • The software that flies
   a Jumbo Jet
  • 8’000’000 lines: you do
     the math...
Software is complex...
...and it evolves!




                     Mozilla:
                     3 MLOC, more than 1
                     Milliion changes
                     performed by hundreds
                     of developers over more
                     than 6 years
What is Evolution?




    “the accumulation of
      changes through
  succeeding generations
 of organisms that results
 in the emergence of new
          species”
Maintenance vs Evolution


                      Software Evolution
                                  XP sez: a system is
        1.0    1.1   1.1a         *always* in evolution,
                                        2.0
                                  there is no “for ward   t
       maintenance                engineering” phase only
                        maintenance steps
         activity



 “Software                   Maintenance
Development”
Why Analyze Software Evolution?


  “Nevertheless, the industrial track record raises the
    question, why, despite so many advances, [...]
  • satisfactory functionality, performance and quality is
    only achieved over a lengthy evolutionary
    process
  • software maintenance never ceases until a system
    is scrapped
  • software is still generally regarded as the weakest
    link in the development of computer-based
    systems”

                                            Lehman et. al, 1997
Software Entropy

•   Lehman’s “Laws of Software Evolution”
    •   “Continuing Change”
    •   “Increasing Entropy/Complexity”
    •   “Increasing Size”

•   Maintenance increases “Software Entropy”
    •   Erosion of architecture, design, modularization
    •   Increase if interdependencies between parts (“Coupling”)
    •   Decrease of separation of concerns (“Cohension”)
A “small” example of software entropy
Software Evolution Analysis

•   Goal: Investigate the evolution of a software system
    to identify potential shortcomings in its architecture or
    logical structure
•   Structural shortcomings can the be subjected to
    reengineering or restructuring
    •   Prerequisite: Reverse Engineering
Reverse Engineering
Reverse Engineering in Reality

 • During WW2 in 1944 3 B-29
   Bombers had to land in Russia
  • The main US bomber provided the
     strategic advantage of reaching
     over the Pacific

 • Tremendously valuable, unknown
   to the Russians, to build from
   scratch would have taken 5 years
 • Approach: Disassemble, test, run
  • One was disassembled, one was
     used, one was a training model
Software Reverse Engineering

•   “The process of analysing a subject system to
    •   identify the system’s components and their
        interrelationships, and
    •   create representations of the system in another form or
        at a higher level of abstraction”
                                             [Chikofsky & Cross, 1990]


•   Why? To understand other people’s code
    (newcomers in the team, code reviewing, developers
    that left, etc.)
    •   Generating UML diagrams is not reverse
        engineering...but it is a valuable support tool
Development: Hidden Chaos




                                             fo
                                              rw
                                                ar
                                                  d
                                                   en
                                                      gin
                                                       ee
                                                        rin
                                                            g
 {               {
     {                   {                                      {               {
                             }                                      {               {
         }
         }                       actual development                     }               }
             }       {       }                                              }               }
Reengineering: Regaining control




                                                            fo
                                                g




                                                             rw
                                            rin




                                                              ar
                                           ee




                                                                 d
                                          gin




                                                                   en
                                      en




                                                                     gin
                                      e




                                                                      ee
                                  rs




                                                                        rin
                                 ve




                                                                           g
                                 re




 {               {
     {                   {                                                     {               {
                             }                                                     {               {
         }
         }                                program transformation                       }               }
             }       {       }                                                             }               }
Creating high level views: reverse engineering




                                                g
                                            rin
                                           ee
                                          gin
                                      en
                                      e
                                  rs
                                 ve
                                 re




 {               {
     {                   {
                             }
         }
         }
             }       {       }
Coming back to Software Evolution Analysis

•   Software systems are not “just there”, they are
    evolved over time
•   “If you want to know who somebody is, you have to
    ask where he comes from”
•   Evolution information is the key to a holistic
    understanding of software
•   The major goals of software evolution analysis are to
    •   Understand the evolutionary process
    •   Predict the future evolution

•   This is done by mining software repositories
Mining Software Repositories
Mining Software Repositories?

•   Software evolution research relies on software
    repositories (think “CVS” or “Subversion”)
•   To answer the question “Who did what and when?”
•   ...but much more than that:

                    Code     Effort   Bugs       Tests
           ...
                                                Changes


         e-Mails                               Navigation


        Web Sites   Traces   Chats    People     Specs
Mining: Tools & Models

•   Tools to create Models
•   Tools to reason on the created Models

                         Models




                   ...                    Effort
                          Tests                       People
 Documentation

                 Code                  Traces
                                                   e-Mails
    Bugs                     e-Mails
Models & Meta-Models

  •     A Model is just that: a representation of a system
  •     A Model always relies on a meta-model
  •     One challenge: unify and connect meta-models
                                Package                 Namespace

                             packagedIn                      belongsTo

                                           *       *
                                                       superclass         *
                                           Class                              Inheritance
                                                       subclass           *

                                   belongsTo       belongsTo                                                         Package                Namespace
                                                             *
                                                                                                                     History                 History
                                     *
             *   invokedBy                                                                                         packagedIn                   belongsTo
Invocation                     Method                    Attribute
                                                                                                                                *       *
             *   candidate                                                                                                                  superclass      *
                             accessedIn                        accesses
                                                                                                                                 Class                          Inheritance
                                                                                                                                History     subclass        *
                                                                                                                                                                  History
                                               *   *
                                                                                                                        belongsTo       belongsTo
                                          Access
                                                                                                                          *                     *
                                                                                                   *   invokedBy
                                                                                      Invocation                    Method                  Attribute
                                                                                        History    *   candidate    History                  History
                                                                                                               accessedIn                        accesses


                                                                                                                                    *   *
                                                                                                                                Access
                                                                                                                                History
...and Tools again!
Software Evolution Visualization
Software Visualization




   “The use of the crafts of typography, graphic design,
       animation, and cinematography with modern
    human-computer interaction and computer graphics
          technology to facilitate both the human
      understanding and effective use of computer
                          software”



                                          Stasko et.al., 1998
Static Visualization
Dynamic Visualization
No Silver Bullet




Visualization is only a means, not
             the end
Break
The Evolution Matrix

A simple way to visualize evolution
The Evolution Matrix - Principles
 V1   V2      ...        ...   Vn-1   Vn




                                                 NOM


                                           NOA   age




           Growth    Stagnation
The Evolution Matrix shows Change
Idle
class

Pulsar
class


Supernova
class
                                  Persistent
                                  Class
White dwarf
class




                         DayFly
The Evolution Matrix Exemplified
CodeCity

A fancy way to look at software
The city metaphor
                                   class metric         building property
software representation            number of methods    height

classes   buildings                number of attributes width
                                   number of attributes length
packages districts
system          city


package metric district property
nesting level   color saturation
ArgoUML City




 2’522 classes
 143 packages
Topology

                                       Azureus
                                     4500+ classes




Nesting level
•   color saturation
•   reinforced by altitude (stacked platforms)
Scalability?




               VW Smalltalk
               8000+ classes
Interacting in the City
What about Software Evolution?
                                                                                                                                                                      referenceVersion



                                                                                                                                          1 versions *
                                                                                                                                                                                                                                        versionEntity
                                                                                    ModelHistory                                             history                     EntityVersion                                                                                MooseModel




                                                                                                                                                                                                                     referenceVersion
                                                 referenceHistory
                                                                                          containingPackageHistory




                                                                                                                                                                                                                                                                                                                                                            mooseModel
                                                                                                                              packageHistories                                                                                                                          packagedIn

                                                                                                                 1                    *
                                                                                                                                          1 versions *
                                                                                                                                                                                                                                        versionEntity
                                                                          PackageHistory                                                     history                     EntityVersion                                                                      FAMIXPackage




                                                                                                                                                                                                                                                                                                                                   extendedInPackages
                                                                                                                                                                                                                                                                                                                                                        *
                                                                    1                                                                                                                                                                                                  1 1




                                                                                                                                                                                                                                                                                       extendedClasses
                                                                                                                                                                                                  referenceVersion




                                                                                                                                                                                                                                                                       definedClasses
                                                                         classHistories




                                                                                                                                                                                                                                                                                                                                                                                            from here...
                                    referenceHistory




                                                                                                                                                                                                                                                                                                          packagedIn




                                                                                                                                                                                                                                                                                                                                                                  mooseModel
                                                                                                                containingPackageHistory
                                                                     *                                                                                                                                                                                                   * *                                                                            1
                                                                                                                                          1 versions *
                                                                                                                                                                                                                                        versionEntity
                                                                                      ClassHistory                                           history                     ClassVersion                                                                                 FAMIXClass

                                                                                                                                     1
                                                                     1                                                                                                                                                                                                                 1                                                1
                                                                                                                methodHistories




                                                                                                                                                                               referenceVersion
                                                                                           attributeHistories
                        referenceHistory




                                                                                                                                                                                                                                                                                                         methods
                                                                                                                                                                                                                                                         attributes




                                                                                                                                                                                                                                                                                                                                                                         mooseModel
                                                                                                                                                                                                                                                                                                                                       belongsTo
                                                                                                                                  containingClassHistory
                                                                                                                                                                                                                                                                                                          *
                                                                                                                   *
                                                                                                                                          1 versions *
                                                                                                                                                                                                                                        versionEntity
                                                                               MethodHistory                                                 history             MethodVersion                                                                                 FAMIXMethod
                                                                                                                                                            referenceVersion
             referenceHistory




                                                                                                                                                                                                                                                                                                                                                                               mooseModel
                                                                                                                                                                                                                                                                                                                       belongsTo
                                                                    containingClassHistory
                                                                                                                                                                                                                                                         *



  to here!
                                                                           *
                                                                                                                                          1 versions *
                                                                                                                                                                                                                                        versionEntity
                                                                            AttributeHistory                                                 history                     EntityVersion                                                                       FAMIXAttribute




                                                                     HISTORY LAYER                                                                         VERSION LAYER                                                                                SNAPSHOT LAYER
Same problem, more data

System            ArgoUML         JHotDraw        Jmol

Packages                    144              72           105

Classes                 2’542            998             1’032

Lines of code         137’000          30’000        85’000

Sampling start       Oct 2002        Oct 2000      Jan 2000

Sampling end         Feb 2007        Apr 2005      Aug 2007

Sampling period       variable         1 week       8 weeks

Samples                       9              57            50

Revisions              13’535            267             8’065
ArgoUML, somewhere in time
Ver. 0.10.1                     Ver. 0.12                        Ver. 0.14          ModelFacade
9/10/2002                       18/08/2003                       5/12/2003




                 ModelFacade                                                        FacadeMDRImpl
                                             NSUMLModelFacade                     Facade
Ver. 0.16                                                              NSUMLModelFacade
19/07/2004                                                    Facade




                                                   Ver. 0.18.1                         Ver. 0.20
                       FacadeMDRImpl
                                                   30/04/2005                          9/02/2006
              Facade




               Ver. 0.22                        Ver. 0.23.4                         Ver. 0.24
               8/08/2006                        10/12/2006                          12/02/2007
ArgoUML Age map
                    org.argouml.language.cpp           STDCTokenTypes                                                 FacadeMDRImpl
                                                       NOA 152, NOM 0, AGE 4
                                                                                              Facade                  NOA 3, NOM 351, AGE 4
               org.argouml.language.php                                                       NOA 1, NOM 339, AGE 5
     org.argouml.language.csharp                                     CPPParser
                                                                     NOA 85, NOM 204, AGE 4
 org.argouml.language.java
                                                                                               org.argouml.model

  JavaRecognizer
  NOA 24, NOM 91, AGE 9

JavaTokenTypes
NOA 146, NOM 0, AGE 9




org.argouml.uml.reveng.java

                          JavaTokenTypes
                          NOA 175, NOM 0, AGE 9


                                            JavaRecognizer
                                            NOA 79, NOM 176, AGE 9
JHotDraw Age map
Jmol, The Time Machine
Tool Support: CodeCity

•   Implemented in Smalltalk, uses OpenGL for
    representation, uses a language-independent meta-
    model (FAMIX)
The EvoSpaces eclipse plugin
A Bug’s Life

Treating bugs as first-level entities
An ideal bug’s life cycle


         Unconfirmed              Verified




   New                Resolved             Closed



          Assigned
A less ideal bug’s life cycle


         Unconfirmed              Verified




   New                Resolved              Closed



          Assigned               Reopened
A real bug’s life cycle


         Unconfirmed              Verified




   New                Resolved              Closed



          Assigned               Reopened
Bug history from activities

               Bug                                                Bug
              Problem                                            Problem
  id       description                               id       description
   product      component                             product      component
            Criticality                 Activity               Criticality
   severity            priority                       severity            priority
      Involved people                                      Involved people
    steve
  assignedTo     reporter         qa
                                        AssignedTo      john
                                                     assignedTo     reporter         qa
               State                   steve john                 State
   Status             Resolution                      Status             Resolution
                ...                                                ...

 Bug history
                             .              .          .                      .
Mozilla’s bugs [Sep ‘98 - Apr ‘03]
                               30%    Activities
                               25%
     #Bugs         255’302
                               20%
                               15%
                               10%
 #Activities 2’706’201          5%
                                0%
                                        0     1-3   4-5      6-10 11-20 21-30 > 30

  40%   Lifetime (reported - last activity)
  32%
  24%
                                                        > 50%
  16%
   8%
   0%
        12 Hours   1 Day   1 Week    1 Month 6 Months     1 Year   2 Years   More
The System Radiography View
              “Where (in the system and in its history) are the
                           open bugs located?”

              Visualization
                principle                          •   System decomposition
                                                       on the y axis
Component 1

Component 2
                                       Product A
                                                   •   Product :: Component
                               Color
                y position     #bugs
               Component

                  x position
                                       Product B
                                                   •   (x,y) : (time, component)
                                                   •
               Time Interval
                                                       Color: # open bugs
                                Time
Mozilla example [Sep ‘98 - Apr ‘03]

                                 aggiungere transizione
                                 alla prossima slide,
                                 volendo anche nel filmato

Browser




Mailnews
The Bug Watch View
 “How are bugs characterized with respect to their history?”
Visualization principle
    End: 10/16/2001 Beginning: 10/19/1999   •    3 Layers
                                 Time           • Status
                                                     Status       From         To
                                                    Assigned    10/19/99   12/21/99
                                                    Resolved    12/21/99    1/31/00
                                                    Reopened     1/31/00     2/6/00
                                                      New         2/6/00     6/5/00
                                                       ...          ...        ...

                                                •    Activity
                                                •    Severity
Examples from Mozilla
Browser :: Networking [Nov ‘02- Apr ‘03]
          tell more about the
          clustering                                   dire che ne abbiamo
                                                       trovato anche bugs che
                                                       passano da resolved a
                                                       new o unconfirmed senza
                                                       passare da reopened


 •   Reopened 4 times
 •   Activities:
                                                       dire cosa e’ la grandezza

      •                         •
          Developer in charge to fix it
                         One statusonly (new)
          changed 6 times
                       but many activities
      •   Many people added in the
          CC
                                • All addition of CC
                                  • Popular bug
Undermining Software
       Evolution

Did we take the wrong turn?
Versioning Systems suck..




                             AbstractBar
         Bar                - stuff
                            - other
                            + factory():
                            ConcreteA

                   Quux                     ConcreteB


         Foo                  ConcreteA
   - asdf: int              - asdf: int
                                              Foo
   + Foo(c: int)            + Foo(c: int)
   + bar(): void            + bar(): void
Change as a first-class entity

                                Computing...
               Event! Answer.
                      Query?




Integrated Development    SpyWare       Change
      Environment          plugin      repository
Changes can be composed
          Atomic
                                            Developer-level actions                                   Refactorings
→+→+→+→
          changes
          →+→+→   →+→+→+→+→   →+→+→   →+→       →+→+→   →+→+→+→+→   →   →+→+→+→+→   →+→+→+→   →+→+→   →+→+→+→   →+→   →+→+→




=          =          =        =       =          =         =       =       =         =        =         =      =       =




     + + + +                                            + + + + +                                            + +
                    =                                               =                                           =
            Sessionclass
              Add
                                            +                       Session Extract Method Session
                                                                                                   +
                                                            =
            Change class                                                      Add method
            Add method                                                       Change method
           Change method                                                    Rename Method
                  ...                                                       Change method(s)
                                             Entire system history
Example Application:
Understanding Development
        Sessions
Date




     Class Change     Refactorings

 15/08/2006
   17h17:29
Added class Foo                        Number of Entities
                        Additions      (Unique Number)




                                          method
                                           m2
                     Modifications
                       Method Change




                        Removals
                    Duration
There is a shift of focus among classes




                                                               ChangePerformerTest,   AdditionOperation,
                                         MethodNode,
ScopeNode, TreeNode,                                            ChangePerformer,      DeletionOperation,
                           Method,        BlockNode,
Argument, Temporary,                                            AdditionOperation,        TreeNode,
                       ChangePerformer    ScopeNode TreeNode
       Entity                                                   DeletionOperation          Removal




                         Let’s look at                 S ,
                       a painting and decoration session
Added arguments and temporaries to the parse tree




ScopeNode
 TreeNode                                  AddEntityChild:
Argument                                     isArgument
Temporary                                   isTemporary
   Entity
Added arguments and temporaries to Method.
    Changed how to handle the children of a method




                                           addArgument:
    Method                                addTemporary:
ChangePerformer                              allChildren:
                                         allLocalVariables:
Changed how source code is generated




MethodNode                                 printTempsOn:
 BlockNode                              printArgumentsOn:
ScopeNode                               printSourceCodeOn:
Potentially buggy method




TreeNode                              ReorderChildrenWith:
Implementing tests and behavior
                         for a difference algorithm




ChangePerformerTest
                                                  testEventsAndResults
  ChangePerformer
                                                processDeletionOperation:
 AdditionOperation
                                                       performOn:
 DeletionOperation
Focusing on deletion




AdditionOperation
                                              performOn:
DeletionOperation
                                           deleteSubtreeAt:
    TreeNode
                                             isCutBranch
     Removal
Software Animator
Conclusion
Mining Repositories to Control Evolution
 •   “Reverse Engineering with Logical Coupling”, Marco
     D’Ambros, Michele Lanza, In Proceedings of WCRE 2006
     (13th Working Conference on Reverse Engineering), pp.
     189 - 198, IEEE CS Press, 2006

 •   “Software Bugs and Evolution: A Visual Approach to
     Uncover their Relationship”, Marco D’Ambros, Michele
     Lanza, In Proceedings of CSMR 2006 (10th European
     Conference on Software Maintenance and
     Reengineering), pp. 227 - 236, IEEE CS Press, 2006

 •   “A Bug’s Life: Visualizing a Bug Database”, Marco
     D’Ambros, Michele Lanza, Martin Pinzger, In Proceedings
     of VISSOFT 2007 (4th IEEE International Workshop on
     Visualizing Software For Understanding and Analysis), pp.
     113 - 120, IEEE CS Press, 2007

 •   “The Evolution Radar: Integrating Fine-grained and
     Coarse-grained Logical Coupling Information”, Marco
     D’Ambros, Michele Lanza, Mircea Lungu, In Proceedings
     of MSR 2006 (3rd International Workshop on Mining
     Software Repositories), pp. 26 - 32, 2006

 •   “Fractal Figures: Visualizing Development Effort for CVS
     Entities”, Marco D'Ambros, Michele Lanza, Harald Gall, In
     Proceedings of VISSOFT 2005 (3rd IEEE International
     Workshop on Visualizing Software For Understanding and
     Analysis), pp. 46 - 51, IEEE CS Press, 2005
Immersive Software Analysis
 •   “Program Comprehension through Software Habitability”,
     Richard Wettel, Michele Lanza, In Proceedings of ICPC
     2007 (15th International Conference on Program
     Comprehension), pp. 231 - 240, IEEE CS Press, 2007

 •   “Visualizing Software Systems as Cities”, Richard Wettel,
     Michele Lanza, In Proceedings of VISSOFT 2007 (4th
     International Workshop on Visualizing Software for
     Understanding and Analysis), pp. 92 - 99, IEEE CS Press,
     2007
Change-based Software Evolution
 •   “A Change-based Approach to Software Evolution”,
     Romain Robbes, Michele Lanza, In ENTCS, vol. 166, pp
     93 - 109, Jan 2007, Elsevier Science Direct

 •   “Characterizing and Understanding Development
     Sessions”, Romain Robbes, Michele Lanza, In
     Proceedings of ICPC 2007 (15th International Conference
     on Program Comprehension), pp. 155 - 164, IEEE CS
     Press, 2007

 •   “An Approach to Software Evolution Based on Semantic
     Change”, Romain Robbes, Michele Lanza, Mircea Lungu,
     In Proceedings of FASE 2007 (10th ETAPS Conference on
     Fundamental Approaches to Software Engineering), pp.
     27 - 411, Springer LNCS, 2007

 •   “Mining a Change-based Repository”, Romain Robbes, In
     Proceedings of MSR 2007 (4th International Workshop on
     Mining Software Repositories), IEEE CS Press, 2007

 •   “Change-based Software Evolution”, Romain Robbes,
     Michele Lanza, In Proceedings of EVOL 2006 (1st
     International Workshop on Software Evolution), pp. 159 -
     164, 2006

 •   “Versioning Systems for Evolution Research”, Romain
     Robbes, Michele Lanza, In Proceedings of IWPSE 2005
     (8th International Workshop on Principles of Software
     Evolution), pp. 155 - 164, IEEE CS Press, 2005
Visual Architecture Reconstruction
 •   “Reverse Engineering Super-Repositories”, Mircea Lungu,
     Michele Lanza, Tudor Gîrba, Reinout Heeck, In Proceedings
     of WCRE 2007 (14th Working Conference on Reverse
     Engineering), to be published, IEEE CS Press, 2007

 •   “Exploring Inter-Module Relationships in Evolving Software
     Systems”, Mircea Lungu, Michele Lanza, In Proceedings of
     CSMR 2007 (11th European Conference on Software
     Maintenance and Reengineering), pp. 91 - 100, IEEE CS
     Press, 2007

 •   “Package Patterns for Visual Architecture Recovery”, Mircea
     Lungu, Michele Lanza, Tudor Gîrba, In Proceedings of CSMR
     2006 (10th European Conference on Software Maintenance
     and Reengineering), pp. 227 - 236, IEEE CS Press, 2006

 •   “Interactive Exploration of Semantic Clusters”, Mircea Lungu,
     Adrian Kuhn, Tudor Gîrba, Michele Lanza, In Proceedings of
     VISSOFT 2005 (3rd International Workshop on Visualizing
     Software for Understanding and Analysis), pp. 95 - 100, IEEE
     CS Press, 2005

 •   “A Small Observatory for Super-Repositories”, Mircea Lungu,
     Tudor Gîrba, In Proceedings of IWPSE 2007 (10th
     International Workshop on Principles of Software Evolution),
     pp. 106 - 109, IEEE CS Press, 2007

 •   “Softwarenaut: Cutting the Edge in Software Visualization”,
     Mircea Lungu, Michele Lanza, In Proceedings of Softvis 2006
     (3rd International Symposium on Software Visualization), pp.
     179 - 180, ACM Press, 2006
Take-away

•   Software is not written, it’s being evolved (by people)
•   Fully understanding software is only possible if one
    takes into account evolutionary information
•   Evolution analysis = mining software repositories
•   Mining software repositories = tools & models
•   A myriad of approaches exist
•   Long-term goal: holistic understanding of software
    •   And: assisting the developer

•   Last but not least: an exciting, still under-researched,
    field of software engineering
Thank you - Questions?
Michele Lanza
    http://www.inf.unisi.ch/lanza/




creativecommons.org/licenses/by/3.0/

More Related Content

What's hot

Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)ShudipPal
 
Software Re-Engineering
Software Re-EngineeringSoftware Re-Engineering
Software Re-EngineeringSaqib Raza
 
Software Design and Modularity
Software Design and ModularitySoftware Design and Modularity
Software Design and ModularityDanyal Ahmad
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models Satya P. Joshi
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - BasicsPurvik Rana
 
Software project management- Software Engineering
Software project management- Software EngineeringSoftware project management- Software Engineering
Software project management- Software EngineeringMuhammad Yousuf Abdul Qadir
 
Software Engineering - Ch1
Software Engineering - Ch1Software Engineering - Ch1
Software Engineering - Ch1Siddharth Ayer
 
software engineering
software engineeringsoftware engineering
software engineeringTayfun Çelik
 
Ch1-Software Engineering 9
Ch1-Software Engineering 9Ch1-Software Engineering 9
Ch1-Software Engineering 9Ian Sommerville
 
A presentation on software crisis
A presentation on software crisisA presentation on software crisis
A presentation on software crisischandan sharma
 
System Models in Software Engineering SE7
System Models in Software Engineering SE7System Models in Software Engineering SE7
System Models in Software Engineering SE7koolkampus
 
Ian Sommerville, Software Engineering, 9th Edition Ch1
Ian Sommerville,  Software Engineering, 9th Edition Ch1Ian Sommerville,  Software Engineering, 9th Edition Ch1
Ian Sommerville, Software Engineering, 9th Edition Ch1Mohammed Romi
 
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)Angelin R
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineeringRupesh Vaishnav
 

What's hot (20)

Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)
 
Software Re-Engineering
Software Re-EngineeringSoftware Re-Engineering
Software Re-Engineering
 
Software Design and Modularity
Software Design and ModularitySoftware Design and Modularity
Software Design and Modularity
 
Software Engineering Process Models
Software Engineering Process Models Software Engineering Process Models
Software Engineering Process Models
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
 
Web Engineering
Web EngineeringWeb Engineering
Web Engineering
 
Software design
Software designSoftware design
Software design
 
Software project management- Software Engineering
Software project management- Software EngineeringSoftware project management- Software Engineering
Software project management- Software Engineering
 
Virtual machine
Virtual machineVirtual machine
Virtual machine
 
Software Engineering - Ch1
Software Engineering - Ch1Software Engineering - Ch1
Software Engineering - Ch1
 
Software Development Process
Software Development ProcessSoftware Development Process
Software Development Process
 
software engineering
software engineeringsoftware engineering
software engineering
 
Ch1-Software Engineering 9
Ch1-Software Engineering 9Ch1-Software Engineering 9
Ch1-Software Engineering 9
 
A presentation on software crisis
A presentation on software crisisA presentation on software crisis
A presentation on software crisis
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Requirement Engineering
Requirement EngineeringRequirement Engineering
Requirement Engineering
 
System Models in Software Engineering SE7
System Models in Software Engineering SE7System Models in Software Engineering SE7
System Models in Software Engineering SE7
 
Ian Sommerville, Software Engineering, 9th Edition Ch1
Ian Sommerville,  Software Engineering, 9th Edition Ch1Ian Sommerville,  Software Engineering, 9th Edition Ch1
Ian Sommerville, Software Engineering, 9th Edition Ch1
 
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineering
 

Viewers also liked

Risc cisc Difference
Risc cisc DifferenceRisc cisc Difference
Risc cisc DifferenceSehrish Asif
 
EVOLUTION OF SYSTEM
EVOLUTION OF SYSTEM EVOLUTION OF SYSTEM
EVOLUTION OF SYSTEM Sahil Garg
 
Myths in Software Requirements
Myths in Software RequirementsMyths in Software Requirements
Myths in Software RequirementsSheraz Pervaiz
 
Tales from a radically polyglot team
Tales from a radically polyglot teamTales from a radically polyglot team
Tales from a radically polyglot teamThoughtworks
 
Software Prototyping
Software PrototypingSoftware Prototyping
Software Prototypingdrjms
 
Software re engineering
Software re engineeringSoftware re engineering
Software re engineeringdeshpandeamrut
 
Software Engineering ppt
Software Engineering pptSoftware Engineering ppt
Software Engineering pptshruths2890
 

Viewers also liked (10)

Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Risc cisc Difference
Risc cisc DifferenceRisc cisc Difference
Risc cisc Difference
 
CISC & RISC Architecture
CISC & RISC Architecture CISC & RISC Architecture
CISC & RISC Architecture
 
EVOLUTION OF SYSTEM
EVOLUTION OF SYSTEM EVOLUTION OF SYSTEM
EVOLUTION OF SYSTEM
 
Myths in Software Requirements
Myths in Software RequirementsMyths in Software Requirements
Myths in Software Requirements
 
Tales from a radically polyglot team
Tales from a radically polyglot teamTales from a radically polyglot team
Tales from a radically polyglot team
 
Software Prototyping
Software PrototypingSoftware Prototyping
Software Prototyping
 
Software re engineering
Software re engineeringSoftware re engineering
Software re engineering
 
Software Myths
Software MythsSoftware Myths
Software Myths
 
Software Engineering ppt
Software Engineering pptSoftware Engineering ppt
Software Engineering ppt
 

Similar to Software Evolution

Présentation du projet Moose
Présentation du projet MoosePrésentation du projet Moose
Présentation du projet MooseStefane Fermigier
 
Helping you reengineering your legacy
Helping you reengineering your legacyHelping you reengineering your legacy
Helping you reengineering your legacyStéphane Ducasse
 
Migration and Testing (EVO 2008)
Migration and Testing (EVO 2008)Migration and Testing (EVO 2008)
Migration and Testing (EVO 2008)Tudor Girba
 
On codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiencesOn codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiencesVincenzo De Florio
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and EvolutionEelco Visser
 
Good code-isnt-enough
Good code-isnt-enoughGood code-isnt-enough
Good code-isnt-enoughSkills Matter
 
Dead codepresentation 0
Dead codepresentation 0Dead codepresentation 0
Dead codepresentation 0drewz lin
 
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloAs reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloMarcelo Park
 
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloAs reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloPlataformatec
 
Renaming Tokens
Renaming TokensRenaming Tokens
Renaming Tokensyanamm
 
Accelerated .NET Memory Dump Analysis training public slides
Accelerated .NET Memory Dump Analysis training public slidesAccelerated .NET Memory Dump Analysis training public slides
Accelerated .NET Memory Dump Analysis training public slidesDmitry Vostokov
 
Automatic image moderation in classifieds
Automatic image moderation in classifiedsAutomatic image moderation in classifieds
Automatic image moderation in classifiedsJaroslaw Szymczak
 
Automatic image moderation in classifieds, Jarosław Szymczak
Automatic image moderation in classifieds, Jarosław SzymczakAutomatic image moderation in classifieds, Jarosław Szymczak
Automatic image moderation in classifieds, Jarosław SzymczakPôle Systematic Paris-Region
 
Practical Domain-Specific Languages in Groovy
Practical Domain-Specific Languages in GroovyPractical Domain-Specific Languages in Groovy
Practical Domain-Specific Languages in GroovyGuillaume Laforge
 
20110507 Implementing Continuous Deployment
20110507 Implementing Continuous Deployment20110507 Implementing Continuous Deployment
20110507 Implementing Continuous DeploymentXebiaLabs
 
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Anne Nicolas
 
Fifteen Years of DevOps -- LISA 2012 keynote
Fifteen Years of DevOps -- LISA 2012 keynoteFifteen Years of DevOps -- LISA 2012 keynote
Fifteen Years of DevOps -- LISA 2012 keynoteGeoff Halprin
 

Similar to Software Evolution (20)

Présentation du projet Moose
Présentation du projet MoosePrésentation du projet Moose
Présentation du projet Moose
 
Helping you reengineering your legacy
Helping you reengineering your legacyHelping you reengineering your legacy
Helping you reengineering your legacy
 
Migration and Testing (EVO 2008)
Migration and Testing (EVO 2008)Migration and Testing (EVO 2008)
Migration and Testing (EVO 2008)
 
On codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiencesOn codes, machines, and environments: reflections and experiences
On codes, machines, and environments: reflections and experiences
 
Extension and Evolution
Extension and EvolutionExtension and Evolution
Extension and Evolution
 
Good code-isnt-enough
Good code-isnt-enoughGood code-isnt-enough
Good code-isnt-enough
 
Dead codepresentation 0
Dead codepresentation 0Dead codepresentation 0
Dead codepresentation 0
 
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloAs reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
 
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloAs reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
As reais razões do porque eu devo ser Ágil - Agile Tour São Paulo
 
Renaming Tokens
Renaming TokensRenaming Tokens
Renaming Tokens
 
Accelerated .NET Memory Dump Analysis training public slides
Accelerated .NET Memory Dump Analysis training public slidesAccelerated .NET Memory Dump Analysis training public slides
Accelerated .NET Memory Dump Analysis training public slides
 
Generator
GeneratorGenerator
Generator
 
SUBJECT
SUBJECTSUBJECT
SUBJECT
 
Nosql
NosqlNosql
Nosql
 
Automatic image moderation in classifieds
Automatic image moderation in classifiedsAutomatic image moderation in classifieds
Automatic image moderation in classifieds
 
Automatic image moderation in classifieds, Jarosław Szymczak
Automatic image moderation in classifieds, Jarosław SzymczakAutomatic image moderation in classifieds, Jarosław Szymczak
Automatic image moderation in classifieds, Jarosław Szymczak
 
Practical Domain-Specific Languages in Groovy
Practical Domain-Specific Languages in GroovyPractical Domain-Specific Languages in Groovy
Practical Domain-Specific Languages in Groovy
 
20110507 Implementing Continuous Deployment
20110507 Implementing Continuous Deployment20110507 Implementing Continuous Deployment
20110507 Implementing Continuous Deployment
 
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
 
Fifteen Years of DevOps -- LISA 2012 keynote
Fifteen Years of DevOps -- LISA 2012 keynoteFifteen Years of DevOps -- LISA 2012 keynote
Fifteen Years of DevOps -- LISA 2012 keynote
 

More from Michele Lanza

A Holistic Approach to Evolving Software Systems
A Holistic Approach to Evolving Software SystemsA Holistic Approach to Evolving Software Systems
A Holistic Approach to Evolving Software SystemsMichele Lanza
 
Software Visualization - Promises & Perils
Software Visualization - Promises & PerilsSoftware Visualization - Promises & Perils
Software Visualization - Promises & PerilsMichele Lanza
 
The Visual Terminator
The Visual TerminatorThe Visual Terminator
The Visual TerminatorMichele Lanza
 
Software Visualization 101+
Software Visualization 101+Software Visualization 101+
Software Visualization 101+Michele Lanza
 
Visualizing Gnome with the Small Project Observatory
Visualizing Gnome with the Small Project ObservatoryVisualizing Gnome with the Small Project Observatory
Visualizing Gnome with the Small Project ObservatoryMichele Lanza
 
EvoSpaces - Multi-dimensional Navigation Spaces for Software Evolution
EvoSpaces - Multi-dimensional Navigation Spaces for Software EvolutionEvoSpaces - Multi-dimensional Navigation Spaces for Software Evolution
EvoSpaces - Multi-dimensional Navigation Spaces for Software EvolutionMichele Lanza
 
Of Code and Change: Beautiful Software
Of Code and Change: Beautiful SoftwareOf Code and Change: Beautiful Software
Of Code and Change: Beautiful SoftwareMichele Lanza
 
Beauty is in the Eye of the Beholder
Beauty is in the Eye of the BeholderBeauty is in the Eye of the Beholder
Beauty is in the Eye of the BeholderMichele Lanza
 
Object-Oriented Metrics in Practice
Object-Oriented Metrics in PracticeObject-Oriented Metrics in Practice
Object-Oriented Metrics in PracticeMichele Lanza
 
Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a NutshellMichele Lanza
 
A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk ...
A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk ...A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk ...
A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk ...Michele Lanza
 

More from Michele Lanza (12)

A Holistic Approach to Evolving Software Systems
A Holistic Approach to Evolving Software SystemsA Holistic Approach to Evolving Software Systems
A Holistic Approach to Evolving Software Systems
 
Software Visualization - Promises & Perils
Software Visualization - Promises & PerilsSoftware Visualization - Promises & Perils
Software Visualization - Promises & Perils
 
The Visual Terminator
The Visual TerminatorThe Visual Terminator
The Visual Terminator
 
Software Visualization 101+
Software Visualization 101+Software Visualization 101+
Software Visualization 101+
 
Seeing Software
Seeing SoftwareSeeing Software
Seeing Software
 
Visualizing Gnome with the Small Project Observatory
Visualizing Gnome with the Small Project ObservatoryVisualizing Gnome with the Small Project Observatory
Visualizing Gnome with the Small Project Observatory
 
EvoSpaces - Multi-dimensional Navigation Spaces for Software Evolution
EvoSpaces - Multi-dimensional Navigation Spaces for Software EvolutionEvoSpaces - Multi-dimensional Navigation Spaces for Software Evolution
EvoSpaces - Multi-dimensional Navigation Spaces for Software Evolution
 
Of Code and Change: Beautiful Software
Of Code and Change: Beautiful SoftwareOf Code and Change: Beautiful Software
Of Code and Change: Beautiful Software
 
Beauty is in the Eye of the Beholder
Beauty is in the Eye of the BeholderBeauty is in the Eye of the Beholder
Beauty is in the Eye of the Beholder
 
Object-Oriented Metrics in Practice
Object-Oriented Metrics in PracticeObject-Oriented Metrics in Practice
Object-Oriented Metrics in Practice
 
Smalltalk In a Nutshell
Smalltalk In a NutshellSmalltalk In a Nutshell
Smalltalk In a Nutshell
 
A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk ...
A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk ...A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk ...
A Teamwork-based Approach to Programming Fundamentals with Scheme, Smalltalk ...
 

Recently uploaded

Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 

Recently uploaded (20)

Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 

Software Evolution

  • 1. Software Evolution Michele Lanza Faculty of Informatics University of Lugano Switzerland
  • 5. REVEAL Reverse Engineering Visualization Evolution Analysis Lab Michele Lanza Romain Robbes Mircea Lungu Marco D’Ambros Richard Wettel
  • 6. Contents • Introduction • Key Concepts • Mining Software Repositories • Visualization • Applications • The Evolution Matrix • CodeCity • A Bug’s Life • Undermining Software Evolution • Conclusion
  • 7. Acknowledgements • 4 slides borrowed from Dr. Tudor Gîrba • 9 slides borrowed from Marco D’Ambros • 11 slides borrowed from Richard Wettel • 12 slides borrowed from Romain Robbes • Thanks to Prof. Zeller for having me here
  • 9. What is Software? “a program enables a computer to perform a specific task” “A computer program is a collection of instructions that describe a task, or set of tasks, to be carried out by a computer”
  • 10. Some Facts About Software • Society increasingly relies on software • ...but it is unreliable and of low quality • Software is regarded like a classical engineering product • ...but it is more complex than any other human artifact • Maintenance is treated as a lowly activity • ...but 75% - 95% of cost is spent on maintenance • Software evolves due to business & technology drivers: systems that do not change are dead • Software evolution is crucial
  • 11. How Large is Software? Windows XP: > 45 M Lines of code (millions) 40 Windows 2000: 40 M Red Hat 7.1 30 M 30 20 Windows 98: 18 M Unix V7: Windows 95: 15 M 10,000 Red Hat 6.2 Solaris 7: 12 M 17 M 10 Windows NT: 4 M 2 Windows 3.1: 3 M 1990 Linux: 10,000 1995 1998 2000 1992
  • 12. How Much Software is There? • The total volume of software is estimated at 7’000’000’000 function points (FP) • 1 FP ~ 128 lines of C or 107 lines of COBOL • This means ca. 1 TLOC (1’000’000’000’000 lines) • Printed on paper we can wrap the planet 10 times • In what shape is it? • On average ca. 5 bugs / FP • This means ca. 35’000’000’000 bugs (6 per person)
  • 13. How Reliable is Software?? • Empirically • 1 error / 20 lines • Saftey-critical Systems • 1 error / 100 lines • Wishful Thinking • 1 error / 1000 lines • The software that flies a Jumbo Jet • 8’000’000 lines: you do the math...
  • 15. ...and it evolves! Mozilla: 3 MLOC, more than 1 Milliion changes performed by hundreds of developers over more than 6 years
  • 16. What is Evolution? “the accumulation of changes through succeeding generations of organisms that results in the emergence of new species”
  • 17. Maintenance vs Evolution Software Evolution XP sez: a system is 1.0 1.1 1.1a *always* in evolution, 2.0 there is no “for ward t maintenance engineering” phase only maintenance steps activity “Software Maintenance Development”
  • 18. Why Analyze Software Evolution? “Nevertheless, the industrial track record raises the question, why, despite so many advances, [...] • satisfactory functionality, performance and quality is only achieved over a lengthy evolutionary process • software maintenance never ceases until a system is scrapped • software is still generally regarded as the weakest link in the development of computer-based systems” Lehman et. al, 1997
  • 19. Software Entropy • Lehman’s “Laws of Software Evolution” • “Continuing Change” • “Increasing Entropy/Complexity” • “Increasing Size” • Maintenance increases “Software Entropy” • Erosion of architecture, design, modularization • Increase if interdependencies between parts (“Coupling”) • Decrease of separation of concerns (“Cohension”)
  • 20. A “small” example of software entropy
  • 21. Software Evolution Analysis • Goal: Investigate the evolution of a software system to identify potential shortcomings in its architecture or logical structure • Structural shortcomings can the be subjected to reengineering or restructuring • Prerequisite: Reverse Engineering
  • 23. Reverse Engineering in Reality • During WW2 in 1944 3 B-29 Bombers had to land in Russia • The main US bomber provided the strategic advantage of reaching over the Pacific • Tremendously valuable, unknown to the Russians, to build from scratch would have taken 5 years • Approach: Disassemble, test, run • One was disassembled, one was used, one was a training model
  • 24. Software Reverse Engineering • “The process of analysing a subject system to • identify the system’s components and their interrelationships, and • create representations of the system in another form or at a higher level of abstraction” [Chikofsky & Cross, 1990] • Why? To understand other people’s code (newcomers in the team, code reviewing, developers that left, etc.) • Generating UML diagrams is not reverse engineering...but it is a valuable support tool
  • 25. Development: Hidden Chaos fo rw ar d en gin ee rin g { { { { { { } { { } } actual development } } } { } } }
  • 26. Reengineering: Regaining control fo g rw rin ar ee d gin en en gin e ee rs rin ve g re { { { { { { } { { } } program transformation } } } { } } }
  • 27. Creating high level views: reverse engineering g rin ee gin en e rs ve re { { { { } } } } { }
  • 28. Coming back to Software Evolution Analysis • Software systems are not “just there”, they are evolved over time • “If you want to know who somebody is, you have to ask where he comes from” • Evolution information is the key to a holistic understanding of software • The major goals of software evolution analysis are to • Understand the evolutionary process • Predict the future evolution • This is done by mining software repositories
  • 30. Mining Software Repositories? • Software evolution research relies on software repositories (think “CVS” or “Subversion”) • To answer the question “Who did what and when?” • ...but much more than that: Code Effort Bugs Tests ... Changes e-Mails Navigation Web Sites Traces Chats People Specs
  • 31. Mining: Tools & Models • Tools to create Models • Tools to reason on the created Models Models ... Effort Tests People Documentation Code Traces e-Mails Bugs e-Mails
  • 32. Models & Meta-Models • A Model is just that: a representation of a system • A Model always relies on a meta-model • One challenge: unify and connect meta-models Package Namespace packagedIn belongsTo * * superclass * Class Inheritance subclass * belongsTo belongsTo Package Namespace * History History * * invokedBy packagedIn belongsTo Invocation Method Attribute * * * candidate superclass * accessedIn accesses Class Inheritance History subclass * History * * belongsTo belongsTo Access * * * invokedBy Invocation Method Attribute History * candidate History History accessedIn accesses * * Access History
  • 35. Software Visualization “The use of the crafts of typography, graphic design, animation, and cinematography with modern human-computer interaction and computer graphics technology to facilitate both the human understanding and effective use of computer software” Stasko et.al., 1998
  • 38. No Silver Bullet Visualization is only a means, not the end
  • 39. Break
  • 40. The Evolution Matrix A simple way to visualize evolution
  • 41. The Evolution Matrix - Principles V1 V2 ... ... Vn-1 Vn NOM NOA age Growth Stagnation
  • 42. The Evolution Matrix shows Change Idle class Pulsar class Supernova class Persistent Class White dwarf class DayFly
  • 43. The Evolution Matrix Exemplified
  • 44. CodeCity A fancy way to look at software
  • 45. The city metaphor class metric building property software representation number of methods height classes buildings number of attributes width number of attributes length packages districts system city package metric district property nesting level color saturation
  • 46. ArgoUML City 2’522 classes 143 packages
  • 47. Topology Azureus 4500+ classes Nesting level • color saturation • reinforced by altitude (stacked platforms)
  • 48. Scalability? VW Smalltalk 8000+ classes
  • 50. What about Software Evolution? referenceVersion 1 versions * versionEntity ModelHistory history EntityVersion MooseModel referenceVersion referenceHistory containingPackageHistory mooseModel packageHistories packagedIn 1 * 1 versions * versionEntity PackageHistory history EntityVersion FAMIXPackage extendedInPackages * 1 1 1 extendedClasses referenceVersion definedClasses classHistories from here... referenceHistory packagedIn mooseModel containingPackageHistory * * * 1 1 versions * versionEntity ClassHistory history ClassVersion FAMIXClass 1 1 1 1 methodHistories referenceVersion attributeHistories referenceHistory methods attributes mooseModel belongsTo containingClassHistory * * 1 versions * versionEntity MethodHistory history MethodVersion FAMIXMethod referenceVersion referenceHistory mooseModel belongsTo containingClassHistory * to here! * 1 versions * versionEntity AttributeHistory history EntityVersion FAMIXAttribute HISTORY LAYER VERSION LAYER SNAPSHOT LAYER
  • 51. Same problem, more data System ArgoUML JHotDraw Jmol Packages 144 72 105 Classes 2’542 998 1’032 Lines of code 137’000 30’000 85’000 Sampling start Oct 2002 Oct 2000 Jan 2000 Sampling end Feb 2007 Apr 2005 Aug 2007 Sampling period variable 1 week 8 weeks Samples 9 57 50 Revisions 13’535 267 8’065
  • 52. ArgoUML, somewhere in time Ver. 0.10.1 Ver. 0.12 Ver. 0.14 ModelFacade 9/10/2002 18/08/2003 5/12/2003 ModelFacade FacadeMDRImpl NSUMLModelFacade Facade Ver. 0.16 NSUMLModelFacade 19/07/2004 Facade Ver. 0.18.1 Ver. 0.20 FacadeMDRImpl 30/04/2005 9/02/2006 Facade Ver. 0.22 Ver. 0.23.4 Ver. 0.24 8/08/2006 10/12/2006 12/02/2007
  • 53. ArgoUML Age map org.argouml.language.cpp STDCTokenTypes FacadeMDRImpl NOA 152, NOM 0, AGE 4 Facade NOA 3, NOM 351, AGE 4 org.argouml.language.php NOA 1, NOM 339, AGE 5 org.argouml.language.csharp CPPParser NOA 85, NOM 204, AGE 4 org.argouml.language.java org.argouml.model JavaRecognizer NOA 24, NOM 91, AGE 9 JavaTokenTypes NOA 146, NOM 0, AGE 9 org.argouml.uml.reveng.java JavaTokenTypes NOA 175, NOM 0, AGE 9 JavaRecognizer NOA 79, NOM 176, AGE 9
  • 55. Jmol, The Time Machine
  • 56. Tool Support: CodeCity • Implemented in Smalltalk, uses OpenGL for representation, uses a language-independent meta- model (FAMIX)
  • 58. A Bug’s Life Treating bugs as first-level entities
  • 59. An ideal bug’s life cycle Unconfirmed Verified New Resolved Closed Assigned
  • 60. A less ideal bug’s life cycle Unconfirmed Verified New Resolved Closed Assigned Reopened
  • 61. A real bug’s life cycle Unconfirmed Verified New Resolved Closed Assigned Reopened
  • 62. Bug history from activities Bug Bug Problem Problem id description id description product component product component Criticality Activity Criticality severity priority severity priority Involved people Involved people steve assignedTo reporter qa AssignedTo john assignedTo reporter qa State steve john State Status Resolution Status Resolution ... ... Bug history . . . .
  • 63. Mozilla’s bugs [Sep ‘98 - Apr ‘03] 30% Activities 25% #Bugs 255’302 20% 15% 10% #Activities 2’706’201 5% 0% 0 1-3 4-5 6-10 11-20 21-30 > 30 40% Lifetime (reported - last activity) 32% 24% > 50% 16% 8% 0% 12 Hours 1 Day 1 Week 1 Month 6 Months 1 Year 2 Years More
  • 64. The System Radiography View “Where (in the system and in its history) are the open bugs located?” Visualization principle • System decomposition on the y axis Component 1 Component 2 Product A • Product :: Component Color y position #bugs Component x position Product B • (x,y) : (time, component) • Time Interval Color: # open bugs Time
  • 65. Mozilla example [Sep ‘98 - Apr ‘03] aggiungere transizione alla prossima slide, volendo anche nel filmato Browser Mailnews
  • 66. The Bug Watch View “How are bugs characterized with respect to their history?” Visualization principle End: 10/16/2001 Beginning: 10/19/1999 • 3 Layers Time • Status Status From To Assigned 10/19/99 12/21/99 Resolved 12/21/99 1/31/00 Reopened 1/31/00 2/6/00 New 2/6/00 6/5/00 ... ... ... • Activity • Severity
  • 67. Examples from Mozilla Browser :: Networking [Nov ‘02- Apr ‘03] tell more about the clustering dire che ne abbiamo trovato anche bugs che passano da resolved a new o unconfirmed senza passare da reopened • Reopened 4 times • Activities: dire cosa e’ la grandezza • • Developer in charge to fix it One statusonly (new) changed 6 times but many activities • Many people added in the CC • All addition of CC • Popular bug
  • 68. Undermining Software Evolution Did we take the wrong turn?
  • 69. Versioning Systems suck.. AbstractBar Bar - stuff - other + factory(): ConcreteA Quux ConcreteB Foo ConcreteA - asdf: int - asdf: int Foo + Foo(c: int) + Foo(c: int) + bar(): void + bar(): void
  • 70. Change as a first-class entity Computing... Event! Answer. Query? Integrated Development SpyWare Change Environment plugin repository
  • 71. Changes can be composed Atomic Developer-level actions Refactorings →+→+→+→ changes →+→+→ →+→+→+→+→ →+→+→ →+→ →+→+→ →+→+→+→+→ → →+→+→+→+→ →+→+→+→ →+→+→ →+→+→+→ →+→ →+→+→ = = = = = = = = = = = = = = + + + + + + + + + + + = = = Sessionclass Add + Session Extract Method Session + = Change class Add method Add method Change method Change method Rename Method ... Change method(s) Entire system history
  • 73. Date Class Change Refactorings 15/08/2006 17h17:29 Added class Foo Number of Entities Additions (Unique Number) method m2 Modifications Method Change Removals Duration
  • 74. There is a shift of focus among classes ChangePerformerTest, AdditionOperation, MethodNode, ScopeNode, TreeNode, ChangePerformer, DeletionOperation, Method, BlockNode, Argument, Temporary, AdditionOperation, TreeNode, ChangePerformer ScopeNode TreeNode Entity DeletionOperation Removal Let’s look at S , a painting and decoration session
  • 75. Added arguments and temporaries to the parse tree ScopeNode TreeNode AddEntityChild: Argument isArgument Temporary isTemporary Entity
  • 76. Added arguments and temporaries to Method. Changed how to handle the children of a method addArgument: Method addTemporary: ChangePerformer allChildren: allLocalVariables:
  • 77. Changed how source code is generated MethodNode printTempsOn: BlockNode printArgumentsOn: ScopeNode printSourceCodeOn:
  • 78. Potentially buggy method TreeNode ReorderChildrenWith:
  • 79. Implementing tests and behavior for a difference algorithm ChangePerformerTest testEventsAndResults ChangePerformer processDeletionOperation: AdditionOperation performOn: DeletionOperation
  • 80. Focusing on deletion AdditionOperation performOn: DeletionOperation deleteSubtreeAt: TreeNode isCutBranch Removal
  • 83. Mining Repositories to Control Evolution • “Reverse Engineering with Logical Coupling”, Marco D’Ambros, Michele Lanza, In Proceedings of WCRE 2006 (13th Working Conference on Reverse Engineering), pp. 189 - 198, IEEE CS Press, 2006 • “Software Bugs and Evolution: A Visual Approach to Uncover their Relationship”, Marco D’Ambros, Michele Lanza, In Proceedings of CSMR 2006 (10th European Conference on Software Maintenance and Reengineering), pp. 227 - 236, IEEE CS Press, 2006 • “A Bug’s Life: Visualizing a Bug Database”, Marco D’Ambros, Michele Lanza, Martin Pinzger, In Proceedings of VISSOFT 2007 (4th IEEE International Workshop on Visualizing Software For Understanding and Analysis), pp. 113 - 120, IEEE CS Press, 2007 • “The Evolution Radar: Integrating Fine-grained and Coarse-grained Logical Coupling Information”, Marco D’Ambros, Michele Lanza, Mircea Lungu, In Proceedings of MSR 2006 (3rd International Workshop on Mining Software Repositories), pp. 26 - 32, 2006 • “Fractal Figures: Visualizing Development Effort for CVS Entities”, Marco D'Ambros, Michele Lanza, Harald Gall, In Proceedings of VISSOFT 2005 (3rd IEEE International Workshop on Visualizing Software For Understanding and Analysis), pp. 46 - 51, IEEE CS Press, 2005
  • 84. Immersive Software Analysis • “Program Comprehension through Software Habitability”, Richard Wettel, Michele Lanza, In Proceedings of ICPC 2007 (15th International Conference on Program Comprehension), pp. 231 - 240, IEEE CS Press, 2007 • “Visualizing Software Systems as Cities”, Richard Wettel, Michele Lanza, In Proceedings of VISSOFT 2007 (4th International Workshop on Visualizing Software for Understanding and Analysis), pp. 92 - 99, IEEE CS Press, 2007
  • 85. Change-based Software Evolution • “A Change-based Approach to Software Evolution”, Romain Robbes, Michele Lanza, In ENTCS, vol. 166, pp 93 - 109, Jan 2007, Elsevier Science Direct • “Characterizing and Understanding Development Sessions”, Romain Robbes, Michele Lanza, In Proceedings of ICPC 2007 (15th International Conference on Program Comprehension), pp. 155 - 164, IEEE CS Press, 2007 • “An Approach to Software Evolution Based on Semantic Change”, Romain Robbes, Michele Lanza, Mircea Lungu, In Proceedings of FASE 2007 (10th ETAPS Conference on Fundamental Approaches to Software Engineering), pp. 27 - 411, Springer LNCS, 2007 • “Mining a Change-based Repository”, Romain Robbes, In Proceedings of MSR 2007 (4th International Workshop on Mining Software Repositories), IEEE CS Press, 2007 • “Change-based Software Evolution”, Romain Robbes, Michele Lanza, In Proceedings of EVOL 2006 (1st International Workshop on Software Evolution), pp. 159 - 164, 2006 • “Versioning Systems for Evolution Research”, Romain Robbes, Michele Lanza, In Proceedings of IWPSE 2005 (8th International Workshop on Principles of Software Evolution), pp. 155 - 164, IEEE CS Press, 2005
  • 86. Visual Architecture Reconstruction • “Reverse Engineering Super-Repositories”, Mircea Lungu, Michele Lanza, Tudor Gîrba, Reinout Heeck, In Proceedings of WCRE 2007 (14th Working Conference on Reverse Engineering), to be published, IEEE CS Press, 2007 • “Exploring Inter-Module Relationships in Evolving Software Systems”, Mircea Lungu, Michele Lanza, In Proceedings of CSMR 2007 (11th European Conference on Software Maintenance and Reengineering), pp. 91 - 100, IEEE CS Press, 2007 • “Package Patterns for Visual Architecture Recovery”, Mircea Lungu, Michele Lanza, Tudor Gîrba, In Proceedings of CSMR 2006 (10th European Conference on Software Maintenance and Reengineering), pp. 227 - 236, IEEE CS Press, 2006 • “Interactive Exploration of Semantic Clusters”, Mircea Lungu, Adrian Kuhn, Tudor Gîrba, Michele Lanza, In Proceedings of VISSOFT 2005 (3rd International Workshop on Visualizing Software for Understanding and Analysis), pp. 95 - 100, IEEE CS Press, 2005 • “A Small Observatory for Super-Repositories”, Mircea Lungu, Tudor Gîrba, In Proceedings of IWPSE 2007 (10th International Workshop on Principles of Software Evolution), pp. 106 - 109, IEEE CS Press, 2007 • “Softwarenaut: Cutting the Edge in Software Visualization”, Mircea Lungu, Michele Lanza, In Proceedings of Softvis 2006 (3rd International Symposium on Software Visualization), pp. 179 - 180, ACM Press, 2006
  • 87. Take-away • Software is not written, it’s being evolved (by people) • Fully understanding software is only possible if one takes into account evolutionary information • Evolution analysis = mining software repositories • Mining software repositories = tools & models • A myriad of approaches exist • Long-term goal: holistic understanding of software • And: assisting the developer • Last but not least: an exciting, still under-researched, field of software engineering
  • 88. Thank you - Questions?
  • 89. Michele Lanza http://www.inf.unisi.ch/lanza/ creativecommons.org/licenses/by/3.0/