Why is there a maintenance problem?
There is a maintenance problem because the team carrying out the maintenance
is not sure as to how modifications to the code will affect the overall program.
Also, the personnel and their work are not much appreciated.
The maintenance was a major problem earlier because the workers had no proper
guidance as to how a particular program works as there was not enough and hence
they spend lot of time in finding the working of the program for which maintenance
has to be done.
Why is Maintenance hard?
Maintenance is considered hard as any change in the code during maintenance
can have a adverse impact on the code as a whole. The programmers who design
might not document the common errors that might occur in specific parts of the
code; thus the maintenance workers have to spend time finding the location of
these errors when they occur.
Why is maintenance expensive?
Maintenance is an expensive affair in today's scenario as a major part of a
project budget is paid to the programmers who are working as maintenance workers.
Also another reason for this could be that the software maintenance degrades
the structure of software, ultimately making maintenance more costly. There
may be times when in order to help the program to adapt to any changes made,
we have to change the structure of the program.
Should existing code be discarded?
The existing code should not be discarded as the program could be divided in
to smaller functional modules and each module tested individually. Each of these
modules could be utilized in further developments.
Do requirements end in requirements phase?
No, the requirements do not end in the requirement phase as the user might
need additional functionalities to be added to the existing program or modification
s in some of the existing functionalities. In order to overcome these difficulties,
there should be a proper feedback given to the programmers as to what is needed
by the client. Agile programming methods such as XP use methods requiring close
interaction and cooperation between programmers and end-users to iteratively
develop requirements.
Is the life cycle model appropriate for maintenance?
Yes life cycle model is an appropriate model for maintenance. The software
life cycle model contains several activities, which cover the software from
its birth stage to its retirement stage. A life cycle model organizes these
software development activities in various ways and provides a framework for
monitoring and controlling the software development project.
What design approaches are needed?
All software design approaches should consider maintainability and develop
design criteria based on it. Also, the design should be able to absorb the changes
made during the maintenance period. The interconnections between various parts
of the software should be clearly documented thus helping in locating the errors
and also the areas that would be affected if a certain change were made.
What maintenance practices are needed?
Maintenance should be carried out in a structured manner, by implementing the
easiest change first. There should be a clear idea about what changes need to
be done and their respective after effects on the program as a whole need to
be understood. After each change the working of the program should be tested;
if any further changes are needed, then they can be performed at this stage
itself. Also, there should be proper documentation maintained at each stage
of maintenance, as this would inform any new programmer coming in to the process
about the maintenance process being carried out.
What management policies are needed?
The personnel in maintenance should be involved in designing the program and
there should a feedback system between maintenance workers and the end users.
The common approach that maintenance is a post delivery issue needs to be done
away with and both design and maintenance should be integrated.
What tools are needed?
The tools needed are generally concentrating on the structure of the program
and not the logic. If the program is too long and cluttered, then a tool should
used to restructure the program. Tools should be able to trace the origin and
use of data and also the control flow statements. The tool should be able to
make comparisons between different versions of the program.