Lec 01
Lec 01
  Software evolution
“There is no such thing as a ‘finished’ computer
program”
                                          Lehman (169, chap 2)
BASIC CONCEPTS
   Software maintenance is the discipline concerned with
    changes related to a software system after delivery.
   When there are changes, thus, the evolution of the
    software happen
   Changes will usually be required to support quality
    factors during the lifetime of a software.
    ◦ changes maybe necessary to satisfy requests for performance
      improvement, functional enhancement, increasing the degree
      of portability.
   Maintenance process takes about 40-70% of the costs of
    the entire life cycle of the software system
SOFTWARE MAINTENANCE
   Maintenance in general :
    ◦ the act of keeping an entity in an existing
      state of efficiency, validity, to preserve from
      failure or decline.
   Software maintenance :
    ◦ modification of a software product after
      delivery in order to:
      improve performance
      correct faults
      adapt the product to a modified
       environment
DEFINITION…..
   Maintenance – the act of keeping an entity
    in an existing state of repair, efficiency, or
    validity; to preserve from failure or decline
   Software Maintenance – modification of a
    software product after delivery, to correct
    fault, to improve performance or other
    quality attributes or to adapt the product to
    a new environment
   Maintainability- the ease with which
    maintenance can be carried out
   Evolution – a process of continuous change
    from a lower, simpler or worse to a higher,
    more complex or better state
Misconception…….
     ‘software comprises
     a program or object
     code or set of
     instructions….’
Program
                 Documentation
Source code
                                                    Operating procedure
                 Doc of analysis, design
                 (logical or physical),
                                                                          Software
                 implementation, testing            User manual,
                 •URD, Context diagram,             installation
                  ERD, class diagram, SRS,
                  code listings, test cases, test
                                                    procedure,
                                                    instruction on
                                                                          is more
                                                                          than
                  results, flow charts, DFD,
                  Software Project Plan
                                                    how to react to
                                                    system failures
                                                                          that….
          The programs, documentation and
          operating procedures by which
          computers can be made useful to human
All those components of software      Software artifact limit to tangible
          i.e. programs +                byproduct produce during
  documentation + installation         software development process
                             Software
                             artifacts
   IEEE                            ISO
Again …. Another definition
                The totality of activities required to
                 provide cost effective support to a
                 software system
                Activities are performed during the
                 pre delivery stage as well as the post-
                 delivery stage
                Pre delivery activities include
                 planning for post-delivery operations,
                 supportability, and logistics
                 determination
                Post delivery activities include
                 software modification, training and
                 operating help desk
Again …. Another definition
   The primary activities of
    software maintenance such as
    ◦ Process implementation
    ◦ Problem and modification
      analysis
    ◦ Modification implementation
    ◦ Maintenance review/acceptance
    ◦ Migration
    ◦ Retirement
Perception….                 We must fix all
                              the bugs
   Why?
    ◦ Perception is perpetuated by users submitting problems
      reports that in reality are major enhancements to the
      system.
    ◦ However, over 80% from survey shows that the
      maintenance effort is used for non-corrective actions
    ➔ maintenance is similar to software development,
    although some unique processes are employed
Reality………
 Focus of SD is to solve problems or to obtain
  business advantage through producing code.
 The generated code implements stated requirements
  and should operate correctly
 Maintainers look back at the development products
  and also the present by working with users and
  operators
 Maintainers also look forward to anticipate
  problems and to consider functional changes
New Development vs Maintenance
   New development done on a green field site but
    maintenance must work within the parameters and
    constraints of an existing system
   Impact analysis should be carried out to determine the
    ramifications of the new or modified system.
    ◦ For example what will happen if we increased from 32bit to 64
      bit to our encryption algorithm?
   Critical analysis need to be done by the maintenance
    engineer to abstract the architectural and the low level
    designs.
    →the maintenance engineer needs to have comprehension
    and analytical skills than just computer programming.
Software Architecture and Software
Maintenance
   Software architecture can be seen as a set
    of structures + data flows + controls flows,
    then we put it together into sub-system to
    solve the broadly problem domain. It
    represents a common high-level abstraction
    of the system
   Software architecture represents the
    embodiment of the early design decisions
    that far outweigh the impact and activities
    on development, service and maintenance
Software Architecture and Software
Maintenance
 One of the problem is to identify the most
  significant non-functional requirement issues such
  as maintainability, flexibility, performance,
  scalability.
 If the software architecture is good then the
  software maintenance is easy to manage.
 There are implicit relationship between Software
  Architecture and Software Maintenance
  Why software maintenance is needed
     To provide                 To support           To support user         To facilitate future
    continuity of               mandatory              requests for          maintenance work
       service                   upgrades            improvements            • To save a cost, e.g
• System need to keep      • Needed because of     • The better the system financial and effort
  running.                   an amendments to        is, the more it will be   for a long term by
  Maintenance                government              used and the more         making future
  activities such as big     regulations, e.g        user will request         maintenance easier
  fixing, recovering         changes in tax laws     enhancements in           and less-effort
  from failure and                                   functionality e.g
  accommodating                                      improving
  changes in the OS                                  performance and
  and hardware                                       reliability
Nature of maintenance
   Maintenance has a broader scope than
    development, with more changes to track
    and control.
   Thus, configuration management is an
    important aspect of software evolution and
    maintenance.
   Contact with the developers and early
    involvement by the maintainer helps the
    maintenance effort.
   However, it is difficult sometimes when the
    developers are no longer around
                                      2. Maintaining control over
1. Maintaining control over the
                                               software
software's day to-day functions
                                             modification
                            Maintainer’s
                             activities
                                        4. Preventing software
                                           performance from
3. Perfecting existing functions
                                   degrading to unacceptable levels
Quality attributes   – consideration before the software development start
Quality attributes.. more
                                      Platform              System
                      Fault repair
                                     adaptation          enhancement