Evolution Phase
What is Software Evolution?
• During the development of a software they're various phases
 one such is the Evolution phase otherwise known as Software
 Evolution. It is basically the process of developing the software
 then updating it overtime for various reasons, e.g. to add new
 features or to remove out-of-date functionalities and so on.
           Software Development Stages
• 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 like bug fixes and changes
  to reflect changes in the software’s environment.
• Phase-out- And here the software may still be used but no further changes
  are made to it.
          Why is the Software Evolution
                   Important?
• Software Evolution is important because over time the Company/Business
  who owns the software may have a change in their needs or way of working.
  So Software Evolution is inevitable because a software have to be kept up-
  to-date to match current times and phones and computers also have updates
  to the software have to be up-to-date to prevent performance issues.
• Other reasons includes: i) Errors and bugs may occur over time, ii) Security
  risks may arise due to the outdated software and Also to have the refreshing
  feeling of having a New functionality and features.
         The Spiral Model of Development and
                      Evolution
• The spiral model is a systems development
  lifecycle (SDLC) method used for risk
  management that combines the iterative
  development process model with elements of
  the Waterfall model. The spiral model is used
  by software engineers and is favored for large,
  expensive and complicated projects.
           The Software Evolution Process
              2. System Implementation
              or Change Implementation                      4. Change Request
1. Release Planning              3. Impact Analysis
           This is a simple version of the Software Evolution Process
                Release Planning
• During the releasing planning of software evolution
 process if all the proposal has been changed means new
 functionality, adaptation and fault repair are occur in
 the system. In this situation to make a discussion which
 changes the implementation for the next version of the
 system to release.
       System Implementation or Change
               Implementation
• System Implementation or change Implementation is the
 iteration of software process development where the structure
 of a new version of the software is design, implementation,
 and testing. In the critical software evolution process, there is
 change implementation of the first stage should modify the
 system implementation, design, and specification that can be
 effective to change the system process.
                    Impact Analysis
• After the process of the system implementation then the next
 step is the impact analysis process. In which the impact analysis
 process complete details of the necessary information are
 analyzed and emerge change should not appear in the change
 analysis process.
                        Change Request
• In the change request process, the necessary information is required and the
  impact analysis process analyzed the necessary information and pass to the
  next step release planning process. The release planning process passes the
  information to the next step of the change implementation process so any
  problem in the implementation process retrieves the information to the
  previous step of release planning. If no problem in the change implementation
  processes the pass the information to the system release process. All the
  information are complete the system analysis process retrieves the first step of
  change request process so the evolution process is done. The change request
  process sometimes is related to the system release process.
    Lehman's laws of software evolution
• In software engineering, the laws of software evolution refer to a series of
  laws that Lehman and Belady formulated starting in 1974 with respect to
  software evolution, The laws describe a balance between forces driving
  new developments on one hand, and forces that slow down progress on
  the other hand. Over the past decades the laws have been revised and
  extended several times.
         Law of Continuing Change
• This law states that any software system that represents
 some real-world reality undergoes continuous change
 or become progressively less useful in that
 environment.
        Law of increasing complexity
• As an evolving program changes, its structure becomes
 more complex unless effective efforts are made to
 avoid this phenomenon.
Law of conservation of organization stability
• Over the lifetime of a program, the rate of development of that
  program is approximately constant and independent of the
  resource devoted to system development.
     Law of conservation of familiarity
• This law states that during the active lifetime of the
 program, changes made in the successive release are
 almost constant.
The End