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