Software Reengineering
By
                Dr. Junaid Akram
Assistant Professor, Department of Computer Science COMSATS (Lahore)
                                                                       1
        Software Evolution
        Concepts and Preliminaries
                                     2
J.A COMSATS Uni
   Software Evolution
• In 1965, Mark Halpern used the term evolution to define the dynamic growth of software.
• The term evolution in relation to application systems took gradually in the 1970s.
• Lehman and his collaborators from IBM are generally credited with pioneering the research field
  of software evolution.
• Lehman formulated a set of observations that he called laws of evolution.
• These laws are the results of studies of the evolution of large-scale proprietary or closed source
  system (CSS).
• The laws concern what Lehman called E-type systems:
    • “Monolithic systems produced by a team within an organization that solve a real-world
      problem and have human users.”
                                                                                                       3
Software Evolution: Laws of Lehman
 Continuing change (1st) – A system will become progressively less satisfying to its user
 over time, unless it is continually adapted to meet new needs.
 Increasing complexity (2nd) – A system will become progressively more complex,
 unless work is done to explicitly reduce the complexity.
 Self-regulation (3rd) – The process of software evolution is self regulating with respect
 to the distributions of the products and process artifacts that are produced.
 Conservation of organizational stability (4th) – The average effective global activity rate
 on an evolving system does not change over time, that is the average amount of work
 that goes into each release is about the same.
                                                                                               4
        Software Evolution: Laws of Lehman
        Conservation of familiarity (5th) – The amount of new content in each successive release
        of a system tends to stay constant or decrease over time.
        Continuing growth (6th) – The amount of functionality in a system will increase over time,
        in order to please its users.
        Declining quality (7th) – A system will be perceived as losing quality over time, unless its
        design is carefully maintained and adapted to new operational constraints.
        Feedback system (8th) – Successfully evolving a software system requires recognition
        that the development process is a multi-loop, multi-agent, multi-level feedback system.
                                                                                                  5
J.A COMSATS Uni
Software Change
• Software change is inevitable:
  •   New requirements emerge when the software is used
  •   The business environment changes
  •   Errors must be repaired
  •   New computers and equipment are added to the system
  •   The performance or reliability of the system may have to be improved
• A key problem for all organizations is implementing and managing
  change to their existing software systems
                                                                             6
Software Change
• Software development does not stop when a system is delivered but
  continues throughout the lifetime of the system.
• After a system has been deployed, it inevitably has to change if it is to
  remain useful.
• Business changes and changes to user expectations generate new
  requirements for the existing software.
• Parts of the software may have to be modified to correct errors that are
  found in operation,
   • to adapt it for changes to its hardware and software platform,
   • to improve its performance or other non-functional characteristics.
                                                                           7
    Change identification and Evolution Processes
                                                    8
J.A COMSATS Uni
Importance of Evolution
• Software evolution is important because organizations have invested large
  amounts of money in their software and are now completely dependent on these
  systems.
• Their systems are critical business assets and they have to invest in system change
  to maintain the value of these assets.
• Consequently, most large companies spend more on maintaining existing systems
  than on new systems development.
• Therefore, new releases of the systems, incorporating changes, and updates, are
  usually created at regular intervals.
                                                                                  9
Importance of Evolution
   • Based on an informal industry poll, Erlikh (2000) suggests that 85–90% of
    organizational software costs are evolution costs.
   • Other surveys suggest that about two-thirds of software costs are
    evolution costs.
   • For sure, the costs of software change are a large part of the IT budget for
    all companies.
   • Software cost a lot of money so a company has to use a software system
    for many years to get a return on its investment.
                                                                             10
            Spiral Model of
            Development
            and Evolution
J.A COMSATS Uni               11
    Spiral Model of Development and Evolution
• This model of software evolution implies that a single organization is
  responsible for both the initial software development and the evolution of
  the software.
• Most packaged software products are developed using this approach.
• For custom software, a different approach is commonly used.
• A software company develops software for a customer and the customer’s
  take over the system. They are responsible for software evolution.
                                                                       12
Spiral Model of Development and Evolution
• Alternatively, the software customer might issue a separate contract to a
  different company for system support and evolution.
• In this case, there are likely to be discontinuities in the spiral process.
• Requirements and design documents may not be passed from one company
  to another.
• Companies may merge or reorganize and inherit software from other
  companies, and then find that this has to be changed.
• Maintenance involves extra process activities, such as program
  understanding, in addition to the normal activities of software development.
                                                                                13
        Alternative View
    • Rajlich and Bennett (2000) proposed an alternative view of the software
       evolution life cycle.
    • In this model, they distinguish between Evolution and Servicing.
          • Evolution is the phase in which significant changes to the software architecture and
             functionality may be made.
          • During servicing, the only changes that are made are relatively small, essential changes.
                                                                                                        14
J.A COMSATS Uni
Evolution and Servicing
• Evolution
   ØThe stage in a software system’s life cycle where it is in operational use and is
    evolving as new requirements are proposed and implemented in the system
• Servicing
   ØAt this stage, the software remains useful but the only changes made are those
    required to keep it operational, i.e. bug fixes and changes to reflect changes in
    the software’s environment. No new functionality is added
• Phase-out
   ØThe software may still be used but no further changes are made to it
                                                                                        15
 Evolution Processes
• Software evolution processes depend on
   ØThe type of software being maintained
   ØThe development processes used
   ØThe skills and experience of the people involved
• Proposals for change are the driver for system evolution
   ØShould be linked with components that are affected by the change, thus allowing the
     cost and impact of the change to be estimated
• Change identification and evolution continues throughout the system lifetime
                                                                                    16
 Software Evolution Process Model
                                    17
J.A COMSATS Uni
  Evolution Process Activities… Cont..
  • The cost and impact of these changes are assessed to see how much of the
    system is affected by the change and how much it cost to implement the change.
  • If the proposed changes are accepted, a new release of the system is planned.
  • During release planning, all proposed changes (fault repair, adaptation, and new
    functionality) are considered.
  • A decision is then made on which changes to implement in the next version of the
    system.
  • The changes are implemented and validated, and a new version of the system is
    released.
  • The process then iterates with a new set of changes proposed for the next release.
                                                                                    18
J.A COMSATS Uni
Architectural Evolution
                          19
Evolution Change implementation
• Iteration of the development process where the revisions to the system are
 designed, implemented and tested
• During the program understanding phase, you have to understand how the
 program is structured, how it delivers functionality and how the proposed change
 might affect the program
• System components are redesigned and implemented and the system is retested. If
 appropriate, prototyping of the proposed changes may be carried out as part of the
 change analysis process.
                                                                                20
  Software Configuration Management (Evolution)
  implementation
                                                  21
J.A COMSATS Uni
Case Study
Evolution in
Opensource Software
                      22
  Free and Open Source Software (FOSS)!
• Over the past 2–3 decades, there has been a massive shift in the way software is
  being reengineered and maintained
• The major players responsible for this paradigm shift is open source.
• Generally, open source refers to a computer program in which the source code is
  available to the general public for use or modification from its original design.
• Open-source code is meant to be a collaborative effort where programmers
  improve upon the source code and share the changes within the community.
• This paradigm shift has led to an increase in technological advancement
• Linux, LibreOffice, MySQL, Firefox, GIMP, and Blender are some examples of free
  and open-source software.
                                                                              23
Linux Kernel Evolution: Case study 1
                  Source: https://ics.uci.edu/~wscacchi/Papers/New/Understanding-OSS-Evolution.pdf
                                                                                                     24
J.A COMSATS Uni
Patterns of Software System Evolution
                                                                                   Patterns of software system
                                                                                   evolution forking and joining
                                                                                   across releases (nodes in each
                                                                                   graph) for 3 different F/OSS
                                                                                   systems [Source: Nakakoji,
                                                                                   Yamamoto, et al., 2002]
Source: https://ics.uci.edu/~wscacchi/Papers/New/Understanding-OSS-Evolution.pdf                             25
Social Network of FOSS developers
                                                                                       A social network of
                                                                                       F/OSS developers that
                                                                                       interlinks five different
                                                                                       projects through two
                                                                                       linchpin developers,
                                                                                       dev[46] and dev[58]
                                                                                       [Source: Madey, Freeh,
                                                                                       and Tynan 2002].
                                                                                                          26
    Source: https://ics.uci.edu/~wscacchi/Papers/New/Understanding-OSS-Evolution.pdf
 A case study of medical image software evolution:
 Case study 2 :3D Slicer
 • 3D Slicer was born as a master’s thesis project between the Surgical
   Planning Laboratory at and the Massachusetts Institute of Technology (MIT)
   Artificial Intelligence Laboratory, US, in 1998.
 • 3D Slicer source code is released under the “3D Slicer Software License”, a
   open-source license
       ØSlicer1 and Slicer2 source codes were located in a Concurrent Versions System (CVS)
        repository.
       ØSlicer3 source codes were located in a Subversion (SVN) repository1.
       ØSlicer4 source codes are located in a web2, while the developing version can be found
        in its official GitHub repository3.
                                                                                         27
J.A COMSATS Uni
For this study, the report
examined the 21 major and
minor stable releases s
 https://www.sciencedirect.com/science/article/pii/S2405844024024393   28
SPM (Statistical Parametric Mapping software)
• The (SPM) was born at the MRC Cyclotron
 Unit, at the Hammersmith Hospital, London
• SPM is available for download for free for
 macOS, Windows, and Linux operating
 systems
• 18 major and minor stable releases from
 2000 to 2020
  https://www.sciencedirect.com/science/article/pii/S2405844024024393   29
   Source Code Evolution
https://www.sciencedirect.com/science/article/pii/S2405844024024393   30
                   Thanks for your attention!
             Any Question?
Email me on : junaidakram@cuilahore.edu.pk      31