Software Engineering:: - Software Maintenance & Reliability Issues

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 20

Software

Engineering:
- Software maintenance & reliability issues -
Conte
nts
Introduction
Software Maintenance refers to the process of modifying and updating a software
system after it has been delivered to the customer. It is a critical part of the
software development life cycle (SDLC) and is necessary to ensure that the software
continues to meet the needs of the users over time.
What is Software Maintenance?
Software maintenance is a continuous process that occurs throughout the entire life
cycle of the software system.
•The goal of software maintenance is to keep the software system working correctly,
efficiently, and securely, and to ensure that it continues to meet the needs of the users.
•This can include fixing bugs, adding new features, improving performance, or updating
the software to work with new hardware or software systems.
•It is also important to consider the cost and effort required for software maintenance
when planning and developing a software system.
•It is important to have a well-defined maintenance process in place, which includes
testing and validation, version control, and communication with stakeholders.
•It’s important to note that software maintenance can be costly and complex, especially
for large and complex systems. Therefore, the cost and effort of maintenance should be
taken into account during the planning and development phases of a software project.
•It’s also important to have a clear and well-defined maintenance plan that includes
regular maintenance activities, such as testing, backup, and bug fixing.
Several Key Aspects of Software Maintenance

1.Bug Fixing: The process of finding and fixing errors and problems in the
software.
2.Enhancements: The process of adding new features or improving existing
features to meet the evolving needs of the users.
3.Performance Optimization: The process of improving the speed, efficiency,
and reliability of the software.
4.Porting and Migration: The process of adapting the software to run on new
hardware or software platforms.
5.Re-Engineering: The process of improving the design and architecture of the
software to make it more maintainable and scalable.
6.Documentation: The process of creating, updating, and maintaining the
documentation for the software, including user manuals, technical specifications,
and design documents.
Challenges in Software Maintenance

•The popular age of any software program is taken into consideration up to ten to
fifteen years. As software program renovation is open-ended and might maintain for
decades making it very expensive.
•Older software programs, which had been intended to paint on sluggish machines
with much less reminiscence and garage ability can not maintain themselves tough in
opposition to newly coming more advantageous software programs on contemporary-
day hardware.
•Changes are frequently left undocumented which can also additionally reason greater
conflicts in the future.
•As the era advances, it turns into high prices to preserve vintage software programs.
•Often adjustments made can without problems harm the authentic shape of the
software program, making it difficult for any next adjustments.
•There is a lack of Code Comments.
•Lack of documentation: Poorly documented systems can make it difficult to
understand how the system works, making it difficult to identify and fix problems.
•Legacy code: Maintaining older systems with outdated technologies can be difficult,
as it may require specialized knowledge and skills.
•Complexity: Large and complex systems can be difficult to understand and modify,
making it difficult to identify and fix problems.
•Changing requirements: As user requirements change over time, the software
system may need to be modified to meet these new requirements, which can be
difficult and time-consuming.
•Interoperability issues: Systems that need to work with other systems or software
can be difficult to maintain, as changes to one system can affect the other systems.
•Lack of test coverage: Systems that have not been thoroughly tested can be difficult
to maintain as it can be hard to identify and fix problems without knowing how the
system behaves in different scenarios.
•Lack of personnel: A lack of personnel with the necessary skills and knowledge to
maintain the system can make it difficult to keep the system up-to-date and running
smoothly.
•High-Cost: The cost of maintenance can be high, especially for large and complex
systems, which can be difficult to budget for and manage
Need for
maintenance
Need for Maintenance

Software Maintenance must be performed in order to:


•Correct faults.
•Improve the design.
•Implement enhancements.
•Interface with other systems.
•Accommodate programs so that different hardware, software, system features,
and telecommunications facilities can be used.
•Migrate legacy software.
•Retire software.
•Requirement of user changes.
•Run the code fast
Types of software
maintenance
The four types are:
Corrective Software Maintenance
Preventative Software Maintenance
Perfective Software Maintenance
Adaptive Software Maintenance
Corrective Software Maintenance
Corrective software maintenance is the typical, classic form of maintenance (for
software and anything else for that matter). Corrective software maintenance is
necessary when something goes wrong in a piece of software including faults and
errors. These can have a widespread impact on the functionality of the software in
general and therefore must be addressed as quickly as possible.
Many times, software vendors can address issues that require corrective maintenance
due to bug reports that users send in. If a company can recognize and take care of faults
before users discover them, this is an added advantage that will make your company
seem more reputable and reliable (no one likes an error message after all).

Preventative Software Maintenance


Preventative software maintenance is looking into the future so that your software can
keep working as desired for as long as possible.
This includes making necessary changes, upgrades, adaptations and more. Preventative
software maintenance may address small issues which at the given time may lack
significance but may turn into larger problems in the future. These are called latent
faults which need to be detected and corrected to make sure that they won’t turn into
effective faults.
Perfective Software Maintenance
As with any product on the market, once the software is released to the public, new
issues and ideas come to the surface. Users may see the need for new features or
requirements that they would like to see in the software to make it the best tool
available for their needs. This is when perfective software maintenance comes into
play.
Perfective software maintenance aims to adjust software by adding new features as
necessary and removing features that are irrelevant or not effective in the given
software. This process keeps software relevant as the market, and user needs, change.

Adaptive Software Maintenance


Adaptive software maintenance has to do with the changing technologies as well as
policies and rules regarding your software. These include operating system changes,
cloud storage, hardware, etc. When these changes are performed, your software must
adapt in order to properly meet new requirements and continue to run well.
Cost of
maintenance
Cost of software maintenance Include:

•Labor costs: This includes the cost of the personnel who perform the maintenance,
such as software developers, engineers, and technicians.
Hardware and software costs: This includes the cost of hardware and software tools
used for maintenance, such as servers, software licenses, and development tools.
•Training costs: This includes the cost of training personnel to perform maintenance
tasks, such as software developers, engineers, and technicians.
The effort of software maintenance can include:
•Time and resources: This includes the time and resources required to perform the
maintenance, such as the time required to identify and fix the problem, test the solution,
and implement the solution.
•Communication and coordination: This includes the effort required to communicate
and coordinate with stakeholders, such as customers and other teams.
•Testing and validation: This includes the effort required to test and validate the
solution to ensure that it is working correctly and that it does not cause any new
problems.
The cost and effort of software maintenance can be reduced by:

•Adopting a proactive maintenance strategy that includes regular testing, monitoring,


and updating of the system to prevent issues from occurring
Automating repetitive and routine tasks
•Using modern development methodologies such as Agile, DevOps and Continuous
Integration and Continuous Deployment (CI/CD)
•Using tools and technologies that can help to improve the efficiency of maintenance
tasks, such as automated testing tools and configuration management tools
Having a clear and well-defined maintenance plan that includes regular maintenance
activities, such as testing, backup, and bug fixing.
•It’s important to note that software maintenance is an ongoing process, and the cost and
effort of maintenance will vary over time as the system evolves and new requirements
are added.
Software maintenance cost factors:
The key factors that distinguish development and maintenance and which lead to higher
maintenance cost are divided into two subcategories Which are Non-Technical factors and
Technical factors.
1.Complexity of the software system: The more complex the software system, the more
effort and resources will be required to maintain it.
2.Size of the software system: The larger the software system, the more effort and
resources will be required to maintain it.
3.Number of users: The more users a software system has, the more effort and resources
will be required to maintain it.
4.Change rate of the software system: The more frequently the software system changes,
the more effort and resources will be required to maintain it.
5.Availability of personnel: The availability of personnel with the necessary skills and
experience to maintain the software system can affect the cost of maintenance.
6.Tools and technologies: The cost of maintenance can be affected by the tools and
technologies used to maintain the software system, such as automated testing tools and
configuration management tools.
7.Maintenance plan: Having a clear and well-defined maintenance plan can help to reduce
the cost of maintenance by allowing for more efficient use of resources.
8.Age of the software system: Older systems may require more effort to maintain as the
technology may be outdated.
9.Type of maintenance: The type of maintenance being performed can also affect the cost,
for example, corrective maintenance is typically less expensive than perfective
maintenance.
10.Location: The cost of maintenance can be affected by the location of the system and the
cost of labor in that area.
Non-Technical factors:
The Non-Technical factors include:
1.Application Domain
2.Staff stability
3.Program lifetime
4.Dependence on External Environment
5.Hardware stability

Technical factors:
Technical factors include the following:
6.module independence
2.Programming language
3.Programming style
4.Program validation and testing
5.Documentation
6.Configuration management techniques
Thank
you
Shruti(10321210063)
BTech CSE – sem : VI- B

You might also like