0% found this document useful (0 votes)
194 views17 pages

Software Maintenance

Software maintenance involves updating and improving software after its initial release. It includes tasks like fixing bugs, adding new features, and adapting the software to new environments or changes in other systems. Proper configuration management and change management processes are important for software maintenance to ensure systems remain stable and perform as expected over time. Version control systems also play a key role by tracking all changes made to the source code by developers.

Uploaded by

Abhuday Tripathi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
194 views17 pages

Software Maintenance

Software maintenance involves updating and improving software after its initial release. It includes tasks like fixing bugs, adding new features, and adapting the software to new environments or changes in other systems. Proper configuration management and change management processes are important for software maintenance to ensure systems remain stable and perform as expected over time. Version control systems also play a key role by tracking all changes made to the source code by developers.

Uploaded by

Abhuday Tripathi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

1.

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.

Perfective maintenance involves changing the existing product functionality by


refining, deleting, or adding features. Imagine that after the initial release, you ask for
user feedback. It turns out users crave the dark mode of your website or app, and you
decide to add the feature. You improve decently working software based on user
experience and feedback, which is perfective maintenance.

Preventive maintenance deals with updating the documentation, making the


software more maintainable, and foreseeing the situations when problems with
software might occur. For example, if you expect a higher interest in your software
product due to the changes you've made, you also understand that the servers might
crash. So before they do, you check out your servers and make sure they can
withstand the increased flow of visitors, and that's preventive maintenance.
3. Software configuration management
Configuration management is a process for maintaining computer systems, servers, and
software in a desired, consistent state. It’s a way to make sure that a system performs as
it’s expected to as changes are made over time.

Managing IT system configurations involves defining a system's desired state—like


server configuration—then building and maintaining those systems. Closely related to
configuration assessments and drift analyses, configuration management uses both to
identify systems to update, reconfigure, or patch.

Misconfigurations can lead to poor performance, inconsistencies, or noncompliance and


negatively impact business operations and security. When undocumented changes are
made across many systems and applications, it adds to instability and downtime.

Manually identifying systems that require attention, determining remediation steps,


prioritizing actions, and validating completion are too complicated to perform in large
environments. But without documentation, maintenance, and a change control process,
system administrators and software developers could end up not knowing what’s on a
server or which software has been updated.

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.

Proper configuration management tools:

 Classify and manage systems by groups and subgroups.


 Centrally modify base configurations.
 Roll out new settings to all applicable systems.
 Automate system identification, patches, and updates
 Identify outdated, poor performing, and noncompliant configurations.
 Prioritize actions.
 Access and apply prescriptive remediation.

4. Software change management


Change management is a systematic approach towards dealing with a change.
It involves coordinating resources, applying tools and managing knowledge in
order to effectively drive organizational success. The similar goes for what is
change management in software development since it's important for moving
forward and becoming better.

Operational excellence. In many cases, organizations focus on doing many


things at once, instead of focusing on the right things. Change management
helps organizations focus on doing the right thing in accordance with the
business strategy.

Management of risk. Managing change is really about managing risk. When


deciding on implementing a change, the team involved in the process has to
assess whether the change would bring any business value to the company. If
it doesn't, then that's a risk it shouldn't be taken.

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:

 Identify the Change Type

 Discuss and Prioritize the Changes


 Review the Current Workload and Organizational Structure
 Review and Communicate the Risks to the Stakeholders
 Incorporate Testing of Changes to Avoid Incidents
 Use the Right Tools to Track Changes and Collect Data
 Review, Analyze and Improve the 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 software keeps track of every modification to the code in


a special kind of database. If a mistake is made, developers can turn back
the clock and compare earlier versions of the code to help fix the mistake
while minimizing disruption to all team members.
For almost all software projects, the source code is like the crown jewels
- a precious asset whose value must be protected. For most software
teams, the source code is a repository of the invaluable knowledge and
understanding about the problem domain that the developers have
collected and refined through careful effort. Version control protects
source code from both catastrophe and the casual degradation of human
error and unintended consequences.

Software developers working in teams are continually writing new source


code and changing existing source code. The code for a project, app or
software component is typically organized in a folder structure or "file
tree". One developer on the team may be working on a new feature while
another developer fixes an unrelated bug by changing code, each
developer may make their changes in several parts of the file tree.

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.

Good version control software supports a developer's preferred workflow


without imposing one particular way of working. Ideally it also works on
any platform, rather than dictate what operating system or tool chain
developers must use. Great version control systems facilitate a smooth and
continuous flow of changes to the code rather than the frustrating and
clumsy mechanism of file locking - giving the green light to one developer
at the expense of blocking the progress of others.

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.

Version control software is an essential part of the every-day of the


modern software team's professional practices. Individual software
developers who are accustomed to working with a capable version control
system in their teams typically recognize the incredible value version
control also gives them even on small solo projects. Once accustomed to
the powerful benefits of version control systems, many developers
wouldn't consider working without it even for non-software projects.
Version Control Systems (VCS) have seen great improvements over the
past few decades and some are better than others. VCS are sometimes
known as SCM (Source Code Management) tools or RCS (Revision
Control System). One of the most popular VCS tools in use today is called
Git. Git is a Distributed VCS, a category known as DVCS, more on that
later. Like many of the most popular VCS systems available today, Git is
free and open source. Regardless of what they are called, or which system
is used, the primary benefits you should expect from version control are
as follows.

A complete long-term change history of every file. This means every


change made by many individuals over the years. Changes include the
creation and deletion of files as well as edits to their contents. Different
VCS tools differ on how well they handle renaming and moving of files.
This history should also include the author, date and written notes on the
purpose of each change. Having the complete history enables going back
to previous versions to help in root cause analysis for bugs and it is crucial
when needing to fix problems in older versions of software. If the software
is being actively worked on, almost everything can be considered an
"older version" of the software.

Branching and merging. Having team members work concurrently is a no-


brainer, but even individuals working on their own can benefit from the
ability to work on independent streams of changes. Creating a "branch" in
VCS tools keeps multiple streams of work independent from each other
while also providing the facility to merge that work back together,
enabling developers to verify that the changes on each branch do not
conflict. Many software teams adopt a practice of branching for each
feature or perhaps branching for each release, or both. There are many
different workflows that teams can choose from when they decide how to
make use of branching and merging facilities in VCS.

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.

6. Change control and reporting


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.
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.

Change Control Board: A change control board is a group of


representatives from the project team that regularly meet to approve or
disapprove change requests. If they approve a change request, it can turn
into a change order.
Change Requests: A change request is a formal petition for change in a
project. It’s a document that explains what are the changes to be made and
the main reasons why they should be implemented.Change requests can
either be submitted by internal or external project stakeholders. Our free
change request template can help you streamline this process.
Change Orders: Once the change control board has approven a change
request, a change order is signed by the board and the clients or
stakeholders.This is an agreement from both parties to change the
conditions that were first drafted in the original contract. Our free change
order template is a great tool to create your change orders.
Change Log: A change log is a change management tool that’s used to
document all the changes made to a project plan or any contracts. It’s a
must-have tool for any project manager.
7. Program Comprehension Techniques.
Program comprehension is that activity by which software engineers
come to an understanding of the behavior of a software system using the
source code as the primary reference. Studies suggest that program
comprehension is the major activity of maintenance, absorbing around
50% of the costs [2, Chap. 20; 13]. Program comprehension requires
understanding of the user domain that the software serves as well as
software engineering and programming knowledge of the program itself.

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.

When it’s done right, software re-engineering yields many impressive


benefits.

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 management is different from other forms of management


because of its time-bound nature. Management is an ongoing activity,
whereas project management is only done within the duration of a
project.
Project Initiation
The success of the initiation stage will determine if a project will push
through or if it will be dropped altogether. Here, the project team agrees
upon the scope of the project and maps out the roles various
stakeholders will play during the life of the project through the creation
of a Responsibility Assignment Matrix. These first steps are crucial to
a quick start and early project success.

To develop goals, objectives, and project success criteria aligned to a


client’s business needs, project managers need to facilitate
communication and data gathering. In doing so, the project manager
clearly communicates with clients and stakeholders to assure them of
the project’s value and feasibility, and ultimately secure the project’s
approval.

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.

No two projects are identical, so it’s important to determine tools or


systems applicable for each situation. Task types, team dynamics, and
company culture are vital considerations here.

The deliverables for a project manager at this stage will include


estimates, work breakdown structures, and deliverable schedules,
among others.
Project Execution
The project manager’s role becomes more one of support and
monitoring when the execution phase begins. As project teams fulfill
their day-to-day tasks, a project manager facilitates communication to
help encourage collaboration.

Problem-solving and decision-making will be vital to ensure steady


progress. Proactively spotting bottlenecks and protecting the team’s
time against unnecessary requests will also be an essential
responsibility.

Balancing a big-picture view of production while staying in touch to


tackle daily obstacles is vital for project managers.

Project Monitoring & Control


Speed is useless if the team is going in the wrong direction. As the team
executes tasks, project managers monitor and control progress to
ensure the team is aligned with deliverables and priorities.

Trackers and documentation are updated for easy evaluation of


progress. At the same time, project stakeholders are updated through
detailed and digestible reports.

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.

In this phase, a project manager’s tasks can include organizing and


turning over documentation, creating inventories, and facilitating off-
boarding meetings such as retrospectives and debriefing.

11. Feasibility Support


Companies often have problems that can be solved through a variety of
solutions, and it's important for them to pick the best approach. A feasibility
report can help you evaluate the feasibility of different solutions to help you
choose the best one. If your company needs to choose the best path for a
project or solution for a problem, it's useful to know how to prepare a feasibility
report.
A feasibility report is a report that evaluates a set of proposed project paths or
solutions to determine if they are viable. The person who prepares a feasibility
report evaluates the feasibility of different solutions and then chooses their
recommendation for the best solution. They then present the feasibility report
to their company and make their recommendation.
The purpose of a feasibility report is to determine the feasibility of solutions or
project paths and choose the best option. The feasibility report serves to break
down different approaches to a problem or project and help readers understand
the feasibility of each approach. Based on the evaluation outlined in the report,
readers can decide whether to take the report's recommendation of the best
approach. This thorough analysis of different approaches can help companies
make the best possible decisions on projects and problems.
Project and Process Planning
A Software Project is the complete methodology of programming advancement
from requirement gathering to testing and support, completed by the execution
procedures, in a specified period to achieve intended software product.
Software development is a sort of all new streams in world business, and there's
next to no involvement in structure programming items. Most programming
items are customized to accommodate customer's necessities. The most
significant is that the underlying technology changes and advances so generally
and rapidly that experience of one element may not be connected to the other
one. All such business and ecological imperatives bring risk in software
development; hence, it is fundamental to manage software projects efficiently.
Software manager is responsible for planning and scheduling project
development. They manage the work to ensure that it is completed to the
required standard. They monitor the progress to check that the event is on time
and within budget. The project planning must incorporate the major issues like
size & cost estimation scheduling, project monitoring, personnel selection
evaluation & risk management. To plan a successful software project, we must
understand:

Scope of work to be completed


Risk analysis
The resources mandatory
The project to be accomplished
Record of being followed
Software Project planning starts before technical work start. The various steps
of planning activities are:
The size is the crucial parameter for the estimation of other activities.
Resources requirement are required based on cost and development time.
Project schedule may prove to be very useful for controlling and monitoring the
progress of the project. This is dependent on resources & development time.

You might also like