SlideShare a Scribd company logo
1 of 53
Download to read offline
Introduction to
 Software Evolution:

“The Software Volcano”

             Paul Klint




    Introduction to Software Evolution   1
Software Volcano




                                      Mt. Etna, Sicily, Italy


 Introduction to Software Evolution                             2
The Software Volcano: Languages
           Distribution of languages in use, worldwide
           Language            Used in % of total
           COBOL                      30
           Assembler                  10
           C                          10
           C++                        10
           550 other languages        40

●   For mainframe applications 80% is COBOL!
●   Figures taken from Capers Jones (Software
    Productivity Research)

                   Introduction to Software Evolution    3
Software Volcano: Volume
●   The total volume of software is estimated at
    7 * 109 function points
●   1 FP = 128 lines of C or 107 lines of COBOL
●   The volume of the volcano is
    –   750 Giga-lines of COBOL code, or
    –   900 Giga-lines of C code

Printed on paper we can wrap planet Earth
                 9 times!

                   Introduction to Software Evolution   4
Software Volcano: Defects
●   Observation:
    –   on average 5 errors (bugs) per function point
    –   includes errors in requirements, design, coding,
        documentation and bad fixes
●   The software volcano, world-wide, contains
    5 * 7 * 109 Bugs = 35 Giga Bugs

This means 6 bugs per human being on
            planet Earth!

                    Introduction to Software Evolution     5
Work distribution of programmers
     Year   New projects    Enhancements             Repairs        Total
     1950            90                 3                  7          100
     1960         8,500               500              1,000       10,000
     1970        65,000            15,000             20,000      100,000
     1980     1,200,000           600,000            200,000    2,000,000
     1990     3,000,000         3,000,000          1,000,000    7,000,000
     2000     4,000,000         4,500,000          1,500,000   10,000,000
     2010     5,000,000         7,000,000          2,000,000   14,000,000
     2020     7,000,000        11,000,000          3,000,000   21,000,000




Now: 60% of the programmers work on enhancement and repair

In 2020: only 30% of all programmers will work on new software

                   Introduction to Software Evolution                       6
Message
●   When an industry approaches 50 years of age it
    takes more workers to perform maintenance than
    to build new products (ex: automobile industry)
●   Maintenance and renovation of existing software
    become more and more important: avoid that the
    software volcano explodes




                Introduction to Software Evolution    7
Software Maintenance & Evolution
●   What is Software Maintenance?
●   Why evolves software?
●   Problems in Software Maintenance
●   Solutions




                Introduction to Software Evolution   8
What is Software Maintenance?
●   Modification of a software product after delivery
    to correct faults, to improve performance or other
    attributes, or to adapt the product to a modified
    environment (IEEE 1219, 1993)
●   Observe that:
    –   maintenance is seen as after-the-fact activity
    –   no integration with software development process




                   Introduction to Software Evolution      9
A

K
N
O
W
N

P
I
T
F
A
L
L   Introduction to Software Evolution   10
Another Classification
●   Software maintenance
    –   Changes are made in response to changed requirements
    –   The fundamental software structure is stable
●   Architectural transformation
    –   The architecture of the system is modified
    –   Generally from a centralised to a distributed architecture
●   Software re-engineering
    –   No new functionality is added to the system but it is
        restructured and reorganised to facilitate future changes


                      Introduction to Software Evolution             11
Why systems change
●   Correct errors
●   Business pull:
     –   Business / IT alignment
     –   Requirements change (legislation, new insights, efficiency)
     –   Re-organization
     –   Mergers / take-overs
     –   New products, marketing actions
     –   Market hypes (CRM, ERP, BPR, STP)
●   Technology push:
     –   Internet
     –   Mobile
     –   Updates of operating system, development environment, databases
     –   Hardware
                          Introduction to Software Evolution               12
Categories of Maintenance
●   Corrective: needed to correct actual errors
●   Adaptive: result from changes in the environment
●   Perfective: modifications to meet the expanding
    needs of the user
●   Enhancement = Adaptive + Perfective




                Introduction to Software Evolution     13
Cost Distribution per Category


        Corrective
          20%

                                    Perfective
                                      55%
       Adaptive
        25%




       Introduction to Software Evolution        14
Costs of Maintenance
●   Usually greater than development costs
     – 2* to 100* depending on the application
●   Affected by both technical and non-technical factors
●   Increases as software is maintained
     –   Maintenance corrupts the software structure, making further
         maintenance more difficult
●   Ageing software can have high support costs
     –old languages, compilers etc.
●   Think of your software as continuously evolving

                       Introduction to Software Evolution              15
Cost distribution of two systems



System 1


System 2


                                                                             450         $
           0   50       1 00   15 0    200     2 50     3 00    35 0   400         500

    Development costs                 Maintenance costs




                           Introduction to Software Evolution                                16
Costs and Complexity
●   Predictions of maintainability costs can be made by
    assessing the complexity of system components.
●   Most maintenance effort is spent on a relatively small
    number of system components.
●   Complexity depends on
     –   Complexity of control structures;
     –   Complexity of data structures;
     –   Object, method (procedure) and module size
     –   Dependencies


                       Introduction to Software Evolution    17
Lehman’s Laws for
                Software Evolution
●   Lehman observed that software evolves
●   Law of Continuing Change: software needs to
    change in order to stay usefull
●   Law of Increasing Complexity: the structure of a
    program deteriorates as it evolves
    –   the structure of a program degrades until it becomes
        more cost effective to rewrite it




                    Introduction to Software Evolution         18
Why Systems Survive
●   Organisations have huge investments in their
    software systems
●   Systems are critical business assets
●   Organizations depend on the system
●   Organizations know how to use their systems
●   (Re) building systems is high risk



                 Introduction to Software Evolution   19
Business versus IT in
               Software Maintenance
• Low costs                                • Need for adequate resources

• Opportunistic / flexible                 • Requires planning / choices
• Quick decision making                    • Hard to predict costs, impact

                                           •   Time to deliver quality
•   Reliability in short time
                                           •   Business should understand IT
•   IT should understand business
                                           •   Want something new
•   Protect initial investment
                                           •   Why all these procedures?
•   Problems with IT systems
    make companies careful



                     Introduction to Software Evolution                        20
Major problems in
            Software Maintenance
●   Inadequate testing methods
●   Performance measurement difficulties
●   Knowledge management / documentation
●   Adapting to the rapidly changing business
    environment
●   Large backlog



                 Introduction to Software Evolution   21
Major problems in
           Software Management
●   Lack of skilled staff
●   Lack of managerial understanding and support
●   Lack of maintenance methodology, standards,
    procedures & tools
●   Program code is complex and unstructured
●   Integration of overlapping/incompatible systems



                Introduction to Software Evolution    22
Solutions
●   Architecture
●   Refactoring
●   Automated regression testing
●   Knowledge management
●   Automated code inspection
●   Better organization -> ITIL / CMM



                Introduction to Software Evolution   23
What About
              Software Renovation?
●   Legacy system:
    –   (information) system that defeats further maintenance,
        adjustment or renewal due to its size and age
    –   requires increasing maintenance costs
●   System renovation:
    –   understanding and improvement of legacy systems
    –   by means of reverse engineering, program
        understanding, design recovery, transformation, ...


                    Introduction to Software Evolution           24
Forward Engineering

                   Goals
                   Goals


            Requirements
             Requirements


             Specification
              Specification


           Implementation
            Implementation


  Introduction to Software Evolution   25
Reverse Engineering
Legacy system                            Renovated system

    Goals
    Goals                                         Goals
                                                  Goals


Requirements
 Requirements                               Requirements
                                             Requirements


 Specification
  Specification                              Specification
                                              Specification


Implementation
 Implementation                            Implementation
                                            Implementation


             Introduction to Software Evolution               26
A Typical Legacy System

                                                      ~ 1-100 MLOC

●   Different implementation languages
●   Job Control Language scripts serve as glue
●   Part of programs/databases are obsolete
●   Some source text lost or incomplete; version
    unknown
●   Documentation is incomplete or obsolete
                 Introduction to Software Evolution             27
Typical Renovation Questions
●   What is the architecture of this system
●   Can we improve its structure?
●   Can we generate documentation for it?
●   Can we migrate it from COBOL 74 to
    COBOL85?
●   Can we connect it to Internet?
●   Can we migrate it to a client/server architecture?


                 Introduction to Software Evolution      28
Synergy between Renovated and New
           Components

 Legacy code                                            New business requirements
                                                        New business requirements
  Legacy code



    Extracted                                         New
    components                                        components




                 Introduction to Software Evolution                           29
Renovation =
          Analysis + Transformation
                                                 Human
    Legacy code
     Legacy code                                insight +
                                                  tools

      Analysis
      Analysis
                   Documentation, object model, types,
                   Documentation, object model, types,
                   metrics, visualization, components, ...
                   metrics, visualization, components, ...



Transformation
 Transformation        Transformation                       Renovated system
     rules              Transformation                       Renovated system
      rules
                     Introduction to Software Evolution                         30
Software Renovation
●   Analysis (partly supported by tools):
    –   architecture recovery
    –   system understanding
●   Transformation (mostly supported by tools):
    –   systematic repairs
    –   code improvement/dialect conversion/translation
    –   architecture improvement/change



                   Introduction to Software Evolution     31
Software Renovation: Analysis
●   Extraction of procedure calls and call graph
●   Database usage between programs
●   Dataflow analysis (at program and system level)
●   Type analysis
●   Cluster and concept analysis
●   Metrics
●   Visualization

                 Introduction to Software Evolution   32
Software Renovation: analysis
                           Legacy code
                            Legacy code
Elementary
   facts                       Extract                     Enriched by
                                                            semantic
                                                             queries
                                 Facts
                                  Facts

                              Abstract

                                 View

             Documentation, object model, types,
             Documentation, object model, types,
             metrics, visualization, components, ...
             metrics, visualization, components, ...
                      Introduction to Software Evolution                 33
The Analysis Funnel

                          Legacy code
                           Legacy code


Volume inhibits
detailed analysis                                          Lexical analysis
                                                            Lexical analysis
   of all code
                                                           Syntactic analysis
                                                            Syntactic analysis

                                                           Semantic analysis
                                                            Semantic analysis


                              Facts
                               Facts
                      Introduction to Software Evolution                         34
Example: DocGen
●   Given the sources of a legacy system, web-based
    documentation is generated containing
    –   overall architecture
    –   module dependencies & internal structure modules
    –   database usage
    –   simple metrics
●   Fact: code reading finds two times more defects
    than testing
●   Commercialized by Software Improvement
    Group
                   Introduction to Software Evolution      35
Software Renovation: Transformation

                         Legacy code
                          Legacy code




        Facts
         Facts



Transformation
 Transformation    Transformation
     rules          Transformation                     Renovated system
                                                        Renovated system
      rules

                  Introduction to Software Evolution                       36
Typical Transformations
●   Year 2000
●   Euro
●   Extending bank account numbers to 10 digits
●   Goto elimination
●   OO restructuring
●   Dialect translation (Cobol 74 → Cobol 85)
●   Language conversion (Cobol → Java, VB →
    Java, ...)
                Introduction to Software Evolution   37
Observations
●   Most legacy systems are multi-lingual
●   A generic approach is needed to describe all
    forms of analysis and transformations for all
    required languages
●   Languages like COBOL and PL/I are big:
    –   getting the right grammar is difficult
    –   many parsing techniques break down
●   Meta-Programming can help

                    Introduction to Software Evolution   38
N
e
e
d               get
e
        o   to
          w ammi     ng
d     H      gr
        -p ro or
Tm   eta ols f      s ing?
o        to roces
o
          agep
l
  l an gu
s      Introduction to Software Evolution   39
Meta-Programming in Rascal

       Software Analysis
    Software Transformation
 DSL Design & Implementation

        Introduction to Software Evolution   40
Some Problems We Address
●   How to parse source code/data files/models
●   How to extract facts from them
●   How to perform computations on these facts
●   How to generate new source code (trafo, refactor,
    compile)
●   How to synthesize other information


     EASY: Extract-Analyze-SYnthesize Paradigm
     EASY: Extract-Analyze-SYnthesize Paradigm

                  Introduction to Software Evolution    41
System


                        ?
                        ?
   Under
Investigation
    (SUI)
                                                  EASY
                                                 Paradigm
                         Extract
                          Extract




                Internal Representation          Analyze
                                                  Analyze
                 Internal Representation




                       Synthesize
                        Synthesize




                         Results
                          Results
            Introduction to Software Evolution              42
Here comes Rascal to the Rescue
                                ●   Lab infrastructure
                                ●   Test bed
                                ●   Social infrastructure
                                ●   Transfer medium
                                      –      Academia
                                      –      Industry (IBM, Eclipse)




        Introduction to Software Evolution                             43
Rascal Highlights
●   Sophisticated built-in                ●   Concrete syntax
    data types (immutable)                ●   Visiting/traversal
●   Static safety                         ●   Comprehensions
●   Local type inference                  ●   Higher-order
●   Pattern Matching                      ●   Familiar syntax
●   Pattern-directed                      ●   Java and Eclipse
    invocation                                integration
●   Syntax definitions and                ●   Read-Eval-Print
    parsing                                   (REPL)
                  Introduction to Software Evolution               44
The Rascal Standard Library
●   Benchmark/test                       ●   Exception
●   Boolean, Number,                     ●   IO (text, HTML, XML,
    String, Node, Location,                  ATERM, RSF, AUC, ...)
    DateTime                             ●   JDT (Eclipse only)
●   List, Set, Tuple,                    ●   Resource (Eclipse only)
    Relation, Map
                                         ●   Subversion/CVS
●   (Labelled) Graph,
    PriorityQueue                        ●   Figures (declarative
                                             graphics)



                 Introduction to Software Evolution                45
Applications
●   Several refactorings                   ●   Analysis/transformation
                                               of service composition
●   Typechecking Rascal                        automata
●   Analysis SVN                           ●   Assertion checking
    repositories                               JML
●   Perf. Analysis Hibernate               ●   Various DSLs
    code (KPMG)
                                                 –     Auditing (PWC)
●   Generic metrics                              –     Forensics (NFI)
●   ECORE models                           ●   UvA Master's courses
●   Magnolia compiler                      ●   OU course
                  Introduction to Software Evolution                     46
ile
                          nc es in f
               o   ccurre
          View




Introduction to Software Evolution         47
Introduction to Software Evolution   48
Introduction to Software Evolution   49
Main Research Topics
                    Methods        Methods for      Methods for software
Specific DSLs
                for DSL design software maintenance    improvement
                                 Applications

                                     Constraint               IDE
Parsing Matching Rewriting Traversing solving Visualisation support
                                     Rascal
                                Technology


  Grammar theory
                          Language                 Compilation    Software
      and
                          semantics                 techniques   Engineering
   Engineering

                               Foundations
                      Introduction to Software Evolution                       50
Take Home Messages




  Introduction to Software Evolution   51
Take Home Messages
●   Software evolves in order to stay usefull
●   Maintenance enables this evolution
●   Software renovation is needed to extend the life
    cycle of a system
●   Rascal is a meta-programming language for
    –   software analysis & transformation
    –   DSL design and implementation



                   Introduction to Software Evolution   52
www.studeren.uva.nl/master-software-engineering-nl




www.cwi.nl/sen1                              www.rascal-mpl.org
               Introduction to Software Evolution                 53

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 Engineering - Ch2
Software Engineering - Ch2Software Engineering - Ch2
Software Engineering - Ch2Siddharth Ayer
 
3 introduction
3 introduction3 introduction
3 introductionAlenaDion
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsNishu Rastogi
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - BasicsPurvik Rana
 
Software Engineering - Ch17
Software Engineering - Ch17Software Engineering - Ch17
Software Engineering - Ch17Siddharth Ayer
 
Software Evolution and Maintenance Models
Software Evolution and Maintenance ModelsSoftware Evolution and Maintenance Models
Software Evolution and Maintenance ModelsMoutasm Tamimi
 
1. introducción a la Ingeniería de Software (UTM 2071)
1. introducción a la Ingeniería de Software (UTM 2071)1. introducción a la Ingeniería de Software (UTM 2071)
1. introducción a la Ingeniería de Software (UTM 2071)Mario A Moreno Rocha
 
Software engineering note
Software engineering noteSoftware engineering note
Software engineering noteNeelamani Samal
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and AnswersBala Ganesh
 
962 sech04
962 sech04962 sech04
962 sech04aldwal
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringHitesh Mohapatra
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introductionVishal Singh
 

What's hot (20)

SE Unit 1
SE Unit 1SE Unit 1
SE Unit 1
 
software engineering ch-1
software engineering ch-1software engineering ch-1
software engineering ch-1
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 
Software Engineering - Ch2
Software Engineering - Ch2Software Engineering - Ch2
Software Engineering - Ch2
 
3 introduction
3 introduction3 introduction
3 introduction
 
Software process
Software processSoftware process
Software process
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process Models
 
Software maintenance
Software maintenance Software maintenance
Software maintenance
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
 
Software Engineering - Ch17
Software Engineering - Ch17Software Engineering - Ch17
Software Engineering - Ch17
 
Software Evolution and Maintenance Models
Software Evolution and Maintenance ModelsSoftware Evolution and Maintenance Models
Software Evolution and Maintenance Models
 
1. introducción a la Ingeniería de Software (UTM 2071)
1. introducción a la Ingeniería de Software (UTM 2071)1. introducción a la Ingeniería de Software (UTM 2071)
1. introducción a la Ingeniería de Software (UTM 2071)
 
Software engineering
Software engineering Software engineering
Software engineering
 
Software engineering note
Software engineering noteSoftware engineering note
Software engineering note
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
 
962 sech04
962 sech04962 sech04
962 sech04
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 

Similar to Introduction to Software Evolution: The Software Volcano

Intoduction to software engineering part 1
Intoduction to software engineering part 1Intoduction to software engineering part 1
Intoduction to software engineering part 1Rupesh Vaishnav
 
Ian_Sommerville_Software_Engineering_6th.pdf
Ian_Sommerville_Software_Engineering_6th.pdfIan_Sommerville_Software_Engineering_6th.pdf
Ian_Sommerville_Software_Engineering_6th.pdfjyotineeli1
 
SE-TEXT-BOOK_Material.doc
SE-TEXT-BOOK_Material.docSE-TEXT-BOOK_Material.doc
SE-TEXT-BOOK_Material.docDrPreethiD1
 
SE-TEXT-BOOK_Material.doc
SE-TEXT-BOOK_Material.docSE-TEXT-BOOK_Material.doc
SE-TEXT-BOOK_Material.docDrPreethiD1
 
Software Engineering pdf
Software Engineering pdfSoftware Engineering pdf
Software Engineering pdfKieveBarreto1
 
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SESE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SEAbhishekTripathi709328
 
The quality attribute of upgradability
The quality attribute of upgradabilityThe quality attribute of upgradability
The quality attribute of upgradabilityLen Bass
 
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 MeetupPreparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 MeetupYashrajNayak4
 

Similar to Introduction to Software Evolution: The Software Volcano (20)

Intoduction to software engineering part 1
Intoduction to software engineering part 1Intoduction to software engineering part 1
Intoduction to software engineering part 1
 
Ian_Sommerville_Software_Engineering_6th.pdf
Ian_Sommerville_Software_Engineering_6th.pdfIan_Sommerville_Software_Engineering_6th.pdf
Ian_Sommerville_Software_Engineering_6th.pdf
 
Ch9
Ch9Ch9
Ch9
 
merged (1).pdf
merged (1).pdfmerged (1).pdf
merged (1).pdf
 
SE-TEXT-BOOK_Material.doc
SE-TEXT-BOOK_Material.docSE-TEXT-BOOK_Material.doc
SE-TEXT-BOOK_Material.doc
 
SE-TEXT-BOOK_Material.doc
SE-TEXT-BOOK_Material.docSE-TEXT-BOOK_Material.doc
SE-TEXT-BOOK_Material.doc
 
0273710133 pp01v2
0273710133 pp01v20273710133 pp01v2
0273710133 pp01v2
 
Software Engineering pdf
Software Engineering pdfSoftware Engineering pdf
Software Engineering pdf
 
ch1_introduction (1).ppt
ch1_introduction (1).pptch1_introduction (1).ppt
ch1_introduction (1).ppt
 
ch1_introduction (2).ppt
ch1_introduction (2).pptch1_introduction (2).ppt
ch1_introduction (2).ppt
 
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SESE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
SE UNIT 1 NOTES OF SE SOFTWARE ENGG AND SE
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
ch1_introduction.ppt
ch1_introduction.pptch1_introduction.ppt
ch1_introduction.ppt
 
SE UNIT-1.pptx
SE UNIT-1.pptxSE UNIT-1.pptx
SE UNIT-1.pptx
 
SE-Lecture1.ppt
SE-Lecture1.pptSE-Lecture1.ppt
SE-Lecture1.ppt
 
The quality attribute of upgradability
The quality attribute of upgradabilityThe quality attribute of upgradability
The quality attribute of upgradability
 
Adopting DevOps for 2-Speed IT
Adopting DevOps for 2-Speed ITAdopting DevOps for 2-Speed IT
Adopting DevOps for 2-Speed IT
 
Developer want change Ops want control - devops
Developer want change Ops want control - devopsDeveloper want change Ops want control - devops
Developer want change Ops want control - devops
 
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 MeetupPreparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
 
SE
SESE
SE
 

More from Devnology

What do we really know about the differences between static and dynamic types?
What do we really know about the differences between static and dynamic types?What do we really know about the differences between static and dynamic types?
What do we really know about the differences between static and dynamic types?Devnology
 
Meetup at SIG: Meten is weten
Meetup at SIG: Meten is wetenMeetup at SIG: Meten is weten
Meetup at SIG: Meten is wetenDevnology
 
Software Operation Knowledge
Software Operation KnowledgeSoftware Operation Knowledge
Software Operation KnowledgeDevnology
 
Slides Felienne Hermans Symposium EWI
Slides Felienne Hermans Symposium EWISlides Felienne Hermans Symposium EWI
Slides Felienne Hermans Symposium EWIDevnology
 
Devnology auteursrecht en open source 20130205
Devnology auteursrecht en open source 20130205Devnology auteursrecht en open source 20130205
Devnology auteursrecht en open source 20130205Devnology
 
The top 10 security issues in web applications
The top 10 security issues in web applicationsThe top 10 security issues in web applications
The top 10 security issues in web applicationsDevnology
 
Hacking Smartcards & RFID
Hacking Smartcards & RFIDHacking Smartcards & RFID
Hacking Smartcards & RFIDDevnology
 
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISPDevnology
 
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISPDevnology
 
Devnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology Back to School: Empirical Evidence on Modeling in Software DevelopmentDevnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology Back to School: Empirical Evidence on Modeling in Software DevelopmentDevnology
 
Devnology Back to School IV - Agility en Architectuur
Devnology Back to School IV - Agility en ArchitectuurDevnology Back to School IV - Agility en Architectuur
Devnology Back to School IV - Agility en ArchitectuurDevnology
 
Devnology Back to School III : Software impact
Devnology Back to School III : Software impactDevnology Back to School III : Software impact
Devnology Back to School III : Software impactDevnology
 
Devnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology
 
Devnology Workshop Genpro 2 feb 2011
Devnology Workshop Genpro 2 feb 2011Devnology Workshop Genpro 2 feb 2011
Devnology Workshop Genpro 2 feb 2011Devnology
 
Devnology Coding Dojo 05-01-2011
Devnology Coding Dojo 05-01-2011Devnology Coding Dojo 05-01-2011
Devnology Coding Dojo 05-01-2011Devnology
 
Spoofax: ontwikkeling van domeinspecifieke talen in Eclipse
Spoofax: ontwikkeling van domeinspecifieke talen in EclipseSpoofax: ontwikkeling van domeinspecifieke talen in Eclipse
Spoofax: ontwikkeling van domeinspecifieke talen in EclipseDevnology
 
Experimenting with Augmented Reality
Experimenting with Augmented RealityExperimenting with Augmented Reality
Experimenting with Augmented RealityDevnology
 
Unit testing and MVVM in Silverlight
Unit testing and MVVM in SilverlightUnit testing and MVVM in Silverlight
Unit testing and MVVM in SilverlightDevnology
 
mobl: Een DSL voor mobiele applicatieontwikkeling
mobl: Een DSL voor mobiele applicatieontwikkelingmobl: Een DSL voor mobiele applicatieontwikkeling
mobl: Een DSL voor mobiele applicatieontwikkelingDevnology
 
Devnology Fitnesse workshop
Devnology Fitnesse workshopDevnology Fitnesse workshop
Devnology Fitnesse workshopDevnology
 

More from Devnology (20)

What do we really know about the differences between static and dynamic types?
What do we really know about the differences between static and dynamic types?What do we really know about the differences between static and dynamic types?
What do we really know about the differences between static and dynamic types?
 
Meetup at SIG: Meten is weten
Meetup at SIG: Meten is wetenMeetup at SIG: Meten is weten
Meetup at SIG: Meten is weten
 
Software Operation Knowledge
Software Operation KnowledgeSoftware Operation Knowledge
Software Operation Knowledge
 
Slides Felienne Hermans Symposium EWI
Slides Felienne Hermans Symposium EWISlides Felienne Hermans Symposium EWI
Slides Felienne Hermans Symposium EWI
 
Devnology auteursrecht en open source 20130205
Devnology auteursrecht en open source 20130205Devnology auteursrecht en open source 20130205
Devnology auteursrecht en open source 20130205
 
The top 10 security issues in web applications
The top 10 security issues in web applicationsThe top 10 security issues in web applications
The top 10 security issues in web applications
 
Hacking Smartcards & RFID
Hacking Smartcards & RFIDHacking Smartcards & RFID
Hacking Smartcards & RFID
 
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISP
 
Learn a language : LISP
Learn a language : LISPLearn a language : LISP
Learn a language : LISP
 
Devnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology Back to School: Empirical Evidence on Modeling in Software DevelopmentDevnology Back to School: Empirical Evidence on Modeling in Software Development
Devnology Back to School: Empirical Evidence on Modeling in Software Development
 
Devnology Back to School IV - Agility en Architectuur
Devnology Back to School IV - Agility en ArchitectuurDevnology Back to School IV - Agility en Architectuur
Devnology Back to School IV - Agility en Architectuur
 
Devnology Back to School III : Software impact
Devnology Back to School III : Software impactDevnology Back to School III : Software impact
Devnology Back to School III : Software impact
 
Devnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology back toschool software reengineering
Devnology back toschool software reengineering
 
Devnology Workshop Genpro 2 feb 2011
Devnology Workshop Genpro 2 feb 2011Devnology Workshop Genpro 2 feb 2011
Devnology Workshop Genpro 2 feb 2011
 
Devnology Coding Dojo 05-01-2011
Devnology Coding Dojo 05-01-2011Devnology Coding Dojo 05-01-2011
Devnology Coding Dojo 05-01-2011
 
Spoofax: ontwikkeling van domeinspecifieke talen in Eclipse
Spoofax: ontwikkeling van domeinspecifieke talen in EclipseSpoofax: ontwikkeling van domeinspecifieke talen in Eclipse
Spoofax: ontwikkeling van domeinspecifieke talen in Eclipse
 
Experimenting with Augmented Reality
Experimenting with Augmented RealityExperimenting with Augmented Reality
Experimenting with Augmented Reality
 
Unit testing and MVVM in Silverlight
Unit testing and MVVM in SilverlightUnit testing and MVVM in Silverlight
Unit testing and MVVM in Silverlight
 
mobl: Een DSL voor mobiele applicatieontwikkeling
mobl: Een DSL voor mobiele applicatieontwikkelingmobl: Een DSL voor mobiele applicatieontwikkeling
mobl: Een DSL voor mobiele applicatieontwikkeling
 
Devnology Fitnesse workshop
Devnology Fitnesse workshopDevnology Fitnesse workshop
Devnology Fitnesse workshop
 

Recently uploaded

UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1DianaGray10
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTxtailishbaloch
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxKaustubhBhavsar6
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingFrancesco Corti
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3DianaGray10
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)codyslingerland1
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxSatishbabu Gunukula
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveIES VE
 
Graphene Quantum Dots-Based Composites for Biomedical Applications
Graphene Quantum Dots-Based Composites for  Biomedical ApplicationsGraphene Quantum Dots-Based Composites for  Biomedical Applications
Graphene Quantum Dots-Based Composites for Biomedical Applicationsnooralam814309
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.IPLOOK Networks
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 

Recently uploaded (20)

UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptx
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is going
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptx
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
 
Graphene Quantum Dots-Based Composites for Biomedical Applications
Graphene Quantum Dots-Based Composites for  Biomedical ApplicationsGraphene Quantum Dots-Based Composites for  Biomedical Applications
Graphene Quantum Dots-Based Composites for Biomedical Applications
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile Brochure
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 

Introduction to Software Evolution: The Software Volcano

  • 1. Introduction to Software Evolution: “The Software Volcano” Paul Klint Introduction to Software Evolution 1
  • 2. Software Volcano Mt. Etna, Sicily, Italy Introduction to Software Evolution 2
  • 3. The Software Volcano: Languages Distribution of languages in use, worldwide Language Used in % of total COBOL 30 Assembler 10 C 10 C++ 10 550 other languages 40 ● For mainframe applications 80% is COBOL! ● Figures taken from Capers Jones (Software Productivity Research) Introduction to Software Evolution 3
  • 4. Software Volcano: Volume ● The total volume of software is estimated at 7 * 109 function points ● 1 FP = 128 lines of C or 107 lines of COBOL ● The volume of the volcano is – 750 Giga-lines of COBOL code, or – 900 Giga-lines of C code Printed on paper we can wrap planet Earth 9 times! Introduction to Software Evolution 4
  • 5. Software Volcano: Defects ● Observation: – on average 5 errors (bugs) per function point – includes errors in requirements, design, coding, documentation and bad fixes ● The software volcano, world-wide, contains 5 * 7 * 109 Bugs = 35 Giga Bugs This means 6 bugs per human being on planet Earth! Introduction to Software Evolution 5
  • 6. Work distribution of programmers Year New projects Enhancements Repairs Total 1950 90 3 7 100 1960 8,500 500 1,000 10,000 1970 65,000 15,000 20,000 100,000 1980 1,200,000 600,000 200,000 2,000,000 1990 3,000,000 3,000,000 1,000,000 7,000,000 2000 4,000,000 4,500,000 1,500,000 10,000,000 2010 5,000,000 7,000,000 2,000,000 14,000,000 2020 7,000,000 11,000,000 3,000,000 21,000,000 Now: 60% of the programmers work on enhancement and repair In 2020: only 30% of all programmers will work on new software Introduction to Software Evolution 6
  • 7. Message ● When an industry approaches 50 years of age it takes more workers to perform maintenance than to build new products (ex: automobile industry) ● Maintenance and renovation of existing software become more and more important: avoid that the software volcano explodes Introduction to Software Evolution 7
  • 8. Software Maintenance & Evolution ● What is Software Maintenance? ● Why evolves software? ● Problems in Software Maintenance ● Solutions Introduction to Software Evolution 8
  • 9. What is Software Maintenance? ● Modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment (IEEE 1219, 1993) ● Observe that: – maintenance is seen as after-the-fact activity – no integration with software development process Introduction to Software Evolution 9
  • 10. A K N O W N P I T F A L L Introduction to Software Evolution 10
  • 11. Another Classification ● Software maintenance – Changes are made in response to changed requirements – The fundamental software structure is stable ● Architectural transformation – The architecture of the system is modified – Generally from a centralised to a distributed architecture ● Software re-engineering – No new functionality is added to the system but it is restructured and reorganised to facilitate future changes Introduction to Software Evolution 11
  • 12. Why systems change ● Correct errors ● Business pull: – Business / IT alignment – Requirements change (legislation, new insights, efficiency) – Re-organization – Mergers / take-overs – New products, marketing actions – Market hypes (CRM, ERP, BPR, STP) ● Technology push: – Internet – Mobile – Updates of operating system, development environment, databases – Hardware Introduction to Software Evolution 12
  • 13. Categories of Maintenance ● Corrective: needed to correct actual errors ● Adaptive: result from changes in the environment ● Perfective: modifications to meet the expanding needs of the user ● Enhancement = Adaptive + Perfective Introduction to Software Evolution 13
  • 14. Cost Distribution per Category Corrective 20% Perfective 55% Adaptive 25% Introduction to Software Evolution 14
  • 15. Costs of Maintenance ● Usually greater than development costs – 2* to 100* depending on the application ● Affected by both technical and non-technical factors ● Increases as software is maintained – Maintenance corrupts the software structure, making further maintenance more difficult ● Ageing software can have high support costs –old languages, compilers etc. ● Think of your software as continuously evolving Introduction to Software Evolution 15
  • 16. Cost distribution of two systems System 1 System 2 450 $ 0 50 1 00 15 0 200 2 50 3 00 35 0 400 500 Development costs Maintenance costs Introduction to Software Evolution 16
  • 17. Costs and Complexity ● Predictions of maintainability costs can be made by assessing the complexity of system components. ● Most maintenance effort is spent on a relatively small number of system components. ● Complexity depends on – Complexity of control structures; – Complexity of data structures; – Object, method (procedure) and module size – Dependencies Introduction to Software Evolution 17
  • 18. Lehman’s Laws for Software Evolution ● Lehman observed that software evolves ● Law of Continuing Change: software needs to change in order to stay usefull ● Law of Increasing Complexity: the structure of a program deteriorates as it evolves – the structure of a program degrades until it becomes more cost effective to rewrite it Introduction to Software Evolution 18
  • 19. Why Systems Survive ● Organisations have huge investments in their software systems ● Systems are critical business assets ● Organizations depend on the system ● Organizations know how to use their systems ● (Re) building systems is high risk Introduction to Software Evolution 19
  • 20. Business versus IT in Software Maintenance • Low costs • Need for adequate resources • Opportunistic / flexible • Requires planning / choices • Quick decision making • Hard to predict costs, impact • Time to deliver quality • Reliability in short time • Business should understand IT • IT should understand business • Want something new • Protect initial investment • Why all these procedures? • Problems with IT systems make companies careful Introduction to Software Evolution 20
  • 21. Major problems in Software Maintenance ● Inadequate testing methods ● Performance measurement difficulties ● Knowledge management / documentation ● Adapting to the rapidly changing business environment ● Large backlog Introduction to Software Evolution 21
  • 22. Major problems in Software Management ● Lack of skilled staff ● Lack of managerial understanding and support ● Lack of maintenance methodology, standards, procedures & tools ● Program code is complex and unstructured ● Integration of overlapping/incompatible systems Introduction to Software Evolution 22
  • 23. Solutions ● Architecture ● Refactoring ● Automated regression testing ● Knowledge management ● Automated code inspection ● Better organization -> ITIL / CMM Introduction to Software Evolution 23
  • 24. What About Software Renovation? ● Legacy system: – (information) system that defeats further maintenance, adjustment or renewal due to its size and age – requires increasing maintenance costs ● System renovation: – understanding and improvement of legacy systems – by means of reverse engineering, program understanding, design recovery, transformation, ... Introduction to Software Evolution 24
  • 25. Forward Engineering Goals Goals Requirements Requirements Specification Specification Implementation Implementation Introduction to Software Evolution 25
  • 26. Reverse Engineering Legacy system Renovated system Goals Goals Goals Goals Requirements Requirements Requirements Requirements Specification Specification Specification Specification Implementation Implementation Implementation Implementation Introduction to Software Evolution 26
  • 27. A Typical Legacy System ~ 1-100 MLOC ● Different implementation languages ● Job Control Language scripts serve as glue ● Part of programs/databases are obsolete ● Some source text lost or incomplete; version unknown ● Documentation is incomplete or obsolete Introduction to Software Evolution 27
  • 28. Typical Renovation Questions ● What is the architecture of this system ● Can we improve its structure? ● Can we generate documentation for it? ● Can we migrate it from COBOL 74 to COBOL85? ● Can we connect it to Internet? ● Can we migrate it to a client/server architecture? Introduction to Software Evolution 28
  • 29. Synergy between Renovated and New Components Legacy code New business requirements New business requirements Legacy code Extracted New components components Introduction to Software Evolution 29
  • 30. Renovation = Analysis + Transformation Human Legacy code Legacy code insight + tools Analysis Analysis Documentation, object model, types, Documentation, object model, types, metrics, visualization, components, ... metrics, visualization, components, ... Transformation Transformation Transformation Renovated system rules Transformation Renovated system rules Introduction to Software Evolution 30
  • 31. Software Renovation ● Analysis (partly supported by tools): – architecture recovery – system understanding ● Transformation (mostly supported by tools): – systematic repairs – code improvement/dialect conversion/translation – architecture improvement/change Introduction to Software Evolution 31
  • 32. Software Renovation: Analysis ● Extraction of procedure calls and call graph ● Database usage between programs ● Dataflow analysis (at program and system level) ● Type analysis ● Cluster and concept analysis ● Metrics ● Visualization Introduction to Software Evolution 32
  • 33. Software Renovation: analysis Legacy code Legacy code Elementary facts Extract Enriched by semantic queries Facts Facts Abstract View Documentation, object model, types, Documentation, object model, types, metrics, visualization, components, ... metrics, visualization, components, ... Introduction to Software Evolution 33
  • 34. The Analysis Funnel Legacy code Legacy code Volume inhibits detailed analysis Lexical analysis Lexical analysis of all code Syntactic analysis Syntactic analysis Semantic analysis Semantic analysis Facts Facts Introduction to Software Evolution 34
  • 35. Example: DocGen ● Given the sources of a legacy system, web-based documentation is generated containing – overall architecture – module dependencies & internal structure modules – database usage – simple metrics ● Fact: code reading finds two times more defects than testing ● Commercialized by Software Improvement Group Introduction to Software Evolution 35
  • 36. Software Renovation: Transformation Legacy code Legacy code Facts Facts Transformation Transformation Transformation rules Transformation Renovated system Renovated system rules Introduction to Software Evolution 36
  • 37. Typical Transformations ● Year 2000 ● Euro ● Extending bank account numbers to 10 digits ● Goto elimination ● OO restructuring ● Dialect translation (Cobol 74 → Cobol 85) ● Language conversion (Cobol → Java, VB → Java, ...) Introduction to Software Evolution 37
  • 38. Observations ● Most legacy systems are multi-lingual ● A generic approach is needed to describe all forms of analysis and transformations for all required languages ● Languages like COBOL and PL/I are big: – getting the right grammar is difficult – many parsing techniques break down ● Meta-Programming can help Introduction to Software Evolution 38
  • 39. N e e d get e o to w ammi ng d H gr -p ro or Tm eta ols f s ing? o to roces o agep l l an gu s Introduction to Software Evolution 39
  • 40. Meta-Programming in Rascal Software Analysis Software Transformation DSL Design & Implementation Introduction to Software Evolution 40
  • 41. Some Problems We Address ● How to parse source code/data files/models ● How to extract facts from them ● How to perform computations on these facts ● How to generate new source code (trafo, refactor, compile) ● How to synthesize other information EASY: Extract-Analyze-SYnthesize Paradigm EASY: Extract-Analyze-SYnthesize Paradigm Introduction to Software Evolution 41
  • 42. System ? ? Under Investigation (SUI) EASY Paradigm Extract Extract Internal Representation Analyze Analyze Internal Representation Synthesize Synthesize Results Results Introduction to Software Evolution 42
  • 43. Here comes Rascal to the Rescue ● Lab infrastructure ● Test bed ● Social infrastructure ● Transfer medium – Academia – Industry (IBM, Eclipse) Introduction to Software Evolution 43
  • 44. Rascal Highlights ● Sophisticated built-in ● Concrete syntax data types (immutable) ● Visiting/traversal ● Static safety ● Comprehensions ● Local type inference ● Higher-order ● Pattern Matching ● Familiar syntax ● Pattern-directed ● Java and Eclipse invocation integration ● Syntax definitions and ● Read-Eval-Print parsing (REPL) Introduction to Software Evolution 44
  • 45. The Rascal Standard Library ● Benchmark/test ● Exception ● Boolean, Number, ● IO (text, HTML, XML, String, Node, Location, ATERM, RSF, AUC, ...) DateTime ● JDT (Eclipse only) ● List, Set, Tuple, ● Resource (Eclipse only) Relation, Map ● Subversion/CVS ● (Labelled) Graph, PriorityQueue ● Figures (declarative graphics) Introduction to Software Evolution 45
  • 46. Applications ● Several refactorings ● Analysis/transformation of service composition ● Typechecking Rascal automata ● Analysis SVN ● Assertion checking repositories JML ● Perf. Analysis Hibernate ● Various DSLs code (KPMG) – Auditing (PWC) ● Generic metrics – Forensics (NFI) ● ECORE models ● UvA Master's courses ● Magnolia compiler ● OU course Introduction to Software Evolution 46
  • 47. ile nc es in f o ccurre View Introduction to Software Evolution 47
  • 48. Introduction to Software Evolution 48
  • 49. Introduction to Software Evolution 49
  • 50. Main Research Topics Methods Methods for Methods for software Specific DSLs for DSL design software maintenance improvement Applications Constraint IDE Parsing Matching Rewriting Traversing solving Visualisation support Rascal Technology Grammar theory Language Compilation Software and semantics techniques Engineering Engineering Foundations Introduction to Software Evolution 50
  • 51. Take Home Messages Introduction to Software Evolution 51
  • 52. Take Home Messages ● Software evolves in order to stay usefull ● Maintenance enables this evolution ● Software renovation is needed to extend the life cycle of a system ● Rascal is a meta-programming language for – software analysis & transformation – DSL design and implementation Introduction to Software Evolution 52
  • 53. www.studeren.uva.nl/master-software-engineering-nl www.cwi.nl/sen1 www.rascal-mpl.org Introduction to Software Evolution 53