Software Maintenance
Software Maintenance
Software Maintenance
Software maintenance is the process of updating and improving software after its initial
release to the public. It occurs after completing tasks related to engineering,
architecture, design, implementation, testing, and software deployment.
Product maintenance is not just bug fixing or adding more lines of code. It is a
comprehensive set of activities in adjusting and modifying the software. It can take up
to 2 years to build a software system, while its maintenance can last for 15 to 20 years.
2. Types of Maintenance
According to Herb Krasner, software maintenance can be categorized into four types: corrective
maintenance, adaptive maintenance, preventive maintenance, and perfective maintenance. All
of them are crucial for overall maintenance, and you can't ignore either of them.
Corrective maintenance in software engineering is the most apparent type of
maintenance and the first thing that comes to mind when someone finds out about the
process. Corrective maintenance deals with fixing bugs in the existing code.
For example, let's say an app or a website allows people to authorize via their social
media accounts. After you deployed it, your end-users started to notify you that they
couldn't log in. There is a possibility that it’s a bug in the code that messes with the
authentication process. Fixing this bug that already existed when the software was
released is called corrective maintenance.
Adaptive maintenance deals with adapting the software to new environments. For
instance, you've released a native app for Android but then decided to add an app for
iOS. Or there is a change in third-party API that stops users from authorizing properly.
You don't have a bug in the existing code but need to adapt the software to the
environment so that it functions properly.
Configuration management systems let you consistently define system settings, as well
as build and maintain those systems according to those baseline settings. Configuration
management helps users and administrators know where certain services exist and what
the current state of applications are.
Overall strategy. The change has to support the overall strategy of the
business. The change manager has to understand the direction the business is
going in to know whether a change needs to be implemented or added to the
"skip" list.
Change Process:
5. Version Control
Version control, also known as source control, is the practice of tracking
and managing changes to software code. Version control systems are
software tools that help software teams manage changes to source code
over time. As development environments have accelerated, version
control systems help software teams work faster and smarter. They are
especially useful for DevOps teams since they help them to reduce
development time and increase successful deployments.
Version control helps teams solve these kinds of problems, tracking every
individual change by each contributor and helping prevent concurrent
work from conflicting. Changes made in one part of the software can be
incompatible with those made by another developer working at the same
time. This problem should be discovered and solved in an orderly manner
without blocking the work of the rest of the team. Further, in all software
development, any change can introduce new bugs on its own and new
software can't be trusted until it's tested. So testing and development
proceed together until a new version is ready.
Software teams that do not use any form of version control often run into
problems like not knowing which changes that have been made are
available to users or the creation of incompatible changes between two
unrelated pieces of work that must then be painstakingly untangled and
reworked. If you're a developer who has never used version control you
may have added versions to your files, perhaps with suffixes like "final"
or "latest" and then had to later deal with a new final version. Perhaps
you've commented out code blocks because you want to disable certain
functionality without deleting the code, fearing that there may be a use for
it later. Version control is a way out of these problems.
Traceability. Being able to trace each change made to the software and
connect it to project management and bug tracking software such as Jira,
and being able to annotate each change with a message describing the
purpose and intent of the change can help not only with root cause analysis
and other forensics. Having the annotated history of the code at your
fingertips when you are reading the code, trying to understand what it is
doing and why it is so designed can enable developers to make correct
and harmonious changes that are in accord with the intended long-term
design of the system. This can be especially important for working
effectively with legacy code and is crucial in enabling developers to
estimate future work with any accuracy.
The purpose of this process is to make sure that you’re not changing things
in the project that don’t need to be changed. The last thing you want to do
is disrupt the project for no good reason, wasting valuable time and
resources. Any changes that are approved are then documented. The
change control process is part of the larger change management plan.
Change control is a methodology used to manage any change requests that
impact the baseline of your project. It’s a way to capture that change from
the point where it’s been identified through every step of the project cycle.
That includes evaluating the request and then approving, rejecting or
deferring it.
The purpose of this process is to make sure that you’re not changing things
in the project that don’t need to be changed. The last thing you want to do
is disrupt the project for no good reason, wasting valuable time and
resources. Any changes that are approved are then documented. The
change control process is part of the larger change management plan.
There are some key elements that build a change control framework for
project management. Here’s a brief description of them.
The authors believe that comprehension plays a major role in the software
lifecycle. During the early stages, the development team builds group
understanding, and the system architects have a strategic understanding
of the construction and operation of the system at all levels. At later stages,
this knowledge is lost as developers disperse and the complexity of the
software increases, making it more difficult to understand. Knowledge
appears impossible to replace, once lost, and this forms the basis for our
new model.
8. Re-engineering
Software re-engineering can cover anything from improving an existing
software application to moving the application to a new platform, to
modifying parts of the architecture or data structure. When required, it
can even involve a complete rewrite of the application as a whole.
This is all done keeping certain key software design principles in mind
— in order to deliver value to the business, any software application
should be as modular as possible and easy to maintain. It should also be
extensible and scalable.
The re-engineering team makes modifications to the application in one of three ways.
9. Reverse Engineering
Reverse Engineering is a method of restoring a product from an evaluation
of its software structure, functionality requirements, and functions. This
builds a list of the software and extracts knowledge from it. This
technology is intended to promote maintenance work by improving a
systems’ understandability and generating the necessary documents for a
legacy system.
Reverse Engineering is done :-
To make new compatible products cheaper than currently available
on the market.
To make code more powerful to interoperate or to link different
operating systems or databases.
Uncovering uncoordinated commercial product characteristics.
This form of inquiry involves individuals in a productive process of
learning about program and service operation. The method of
identifying something and explaining how it works is an important
way to learn and develop how to create a system.
10. Project management
Project management is the use of tools, knowledge, processes, and
competencies to ensure a project’s successful completion. Projects are
time-bound endeavors that aim to produce value through products,
services, or results that fulfill its objectives and success parameters.
Project Planning
Once a project is greenlit, project managers have to formulate a project
plan by translating goals and objectives into actionable tasks,
milestones, deliverables, and schedules.
Project Closure
Projects close because of their completion, termination, or
postponement. Regardless of how things go, project managers take on
the role of tying loose ends, so the team can smoothly move on to their
next endeavor.