Software Maintenance can be defined as the process of modifying a software product after its delivery. The main purpose of software maintenance is to modify and update the software applications after delivery to correct faults(if any) and to optimise performance. Software being a model of the real world needs to be constantly updated to keep up with the real world changes. It is an inclusive activity that includes deletion of obsolete features, error corrections, upgrades and necessary optimizations.
Need for Maintenance:
Corrective Maintenance -
This includes all the modifications and updates done in order to rectify bugs and find solutions to specific problems which are either discovered by the user or concluded by user error reports.
Adaptive Maintenance -
It includes all the modifications and updates done to keep the software up-to-date and in tune to the always changing world of technology and business environment.
It implies that adaptive maintenance includes the modifications and updates when the customers need the product to run on new platforms, on new operating systems, or when they need the product to interface with new hardware and software.
Preventive Maintenance -
This includes modifications and updations to prevent any future problems with the software. It aims to attend to problems, which are not significant at this moment but may cause serious issues in future. This ensures that the software doesn’t die out.
Perfective Maintenance -
It defines improving the processing efficiency or performance and/or enhancing changeability. This may contain enhancement of existing system functionality, improvement in computational efficiency, etc. It includes new features, new user requirements for refining the software and improving its overall reliability and performance.
Challenges to Software Maintenance:
Software Reliability implies Operational reliability. It is described as the ability of a system or component to perform its required functions under static conditions for a specific period of time.
Software reliability can also be defined as the probability that a software system fulfills its assigned task in a particular environment for a predefined number of input cases, assuming that the hardware and the input are error free. It is an essential component of software engineering and consists of - functionality, usability, capability, serviceability, documentation and installability of the software.
Software reliability is inversely proportional to the complexity of the software. However, that does not deter system developers from pushing a certain complexity level into the software layer. It is believed that the more advanced the technology, the higher complexity of software involved. For instance, the upcoming International Space Station will have an estimated 10 million lines of ground support software; next generation air traffic control systems with about 1-2 million lines of software. To put it in plain terms, we can not sacrifice software complexity for a better reliability since software complexity raises the overall quality of the software.
When the user perceives that the software has ceased delivering the desired result with respect to specific input values, it can be said that software failure has occurred. This can occur for a variety of reasons like - bugs, ambiguities, misinterpretation of the specification that the software is supposed to satisfy, carelessness in writing code, inadequate testing, incorrect or unexpected usage of the software or other unforeseen problems.
Software failure can be classified as:
Risk is a problem that can be a potential threat to the progress of the project in the near future, but hasn’t occurred yet. These potential issues might harm cost, schedule or technical success of the project and the quality of the software device, or cost the project team morale.
Risk Management is the process of identifying, addressing and eliminating these problems before they can cause damage to the project.
Risks affecting a software project can be classified into:
Project risks: Project risks concern different forms of budgetary, schedule, personnel, resource, and customer-related problems. A vital project risk is schedule slippage. Since the software is intangible, it is very difficult to monitor and control a software project. It is very hard to control something which cannot be identified.
Technical risks: Technical risks concern potential method, implementation, interfacing, testing, and maintenance issues. It also consists of an ambiguous specification, incomplete specification, changing specification, technical uncertainty, and technical obsoleteness. Most technical risks actually appear due to the development team's insufficient knowledge about the project and/or incompetence.
Business risks: This type of risks are more about the business aspects than the technical aspects. For instance, losing budgetary commitments, building expensive projects with no market demands, etc can be termed as business risks.
Other Risk Categories:
Global perspective:
Reviewing the bigger system description, design, and implementation. We take a look at the chance and the impact the risk is going to have.
Open communication:
Encouraging open lines of communication between the client and the team enables certainty and concise plan of action against the risks.
Foresighting:
Contemplating and foreseeing future events help us a lot in forming strategies to deal with future risks and anomalies.
Integrated management:
Risk management is made an essential part of project management.
Continuous process:
In this phase, the risks are often tracked continuously throughout the risk management paradigm.
WHAT IS WEB3?Web3 is the catch-all term for the vision of an upgraded version of the internet aimed at giving power back to the users. It is truly the......
Operating Systems is one of the core subjects for a computer science student. As such a lot of important questions are asked on this subject in interv......
Getting started with cloud computing ?The words "cloud" and "web" will be interchangeable. What kind of business operates today without the internet? ...
A quick summary upto what we did this far from this series:Software EngineeringSoftware engineering is a discipline of engineering concerned wit...
Introduction:Understanding time complexity of a function is imperative for every programmer to execute a program in the most efficient manner. Time co...
Software MethodologyA software methodology (which is also known as software process) is a set of related development Phases that leads to the pr...
Software Engineering is a subject that requires when you are a software developer as well as when you are in your college preparing for a semester or ...
Are you getting ready for your SQL developer job interview?You've come to the correct place.This tutorial will assist you in brushing up on your SQL s...
Introduction: What is SQL?To understand SQL, we must first understand databases and database management systems (DBMS).Data is essentially a collectio...
Networking: Importance in real life!Using a computer for work, as well as for personal use, ha...
FORMULA LIST:ALGEBRA :1.Sum of first n natural numbers = n(n+1)/22.Sum of the squares of first n nat...
ER-DiagramWhat are ER Models ?An Entity Relationship Diagram (ERD) is a visual representation of dif...
What is actually DBMS?A Database Management System (DBMS) is system software used to manage the orga...
C CHEATSHEETINTRODUCTION:C programming language was developed by Dennis Ritchie of Bell Labs in 1972...
C is a general purpose high-level language most popular amongst coders, it is the most compatible, e...
C++ programming language has templates which basically allows functions and classes to work with gen...
C++ was conceived in the late 1970s to overcome the limitations of C. It is an extension of th...
Interview Questions are a great source to test your knowledge about any specific field. But remember...
The most popular high-level, multipurpose programming language right now is Python.Python supports p...
IntroductionPython is a high-level programming language with dynamic binding and high-level inherent...
Interview Questions are a great source to test your knowledge about any specific field. But remember...
Object-Oriented Programming or better known as OOPs is one of the major pillars of Java that has lev...
Java is a high-level programming language known for its robustness, object-oriented nature, enhanced...