Assignment
Assignment
Assignment
Software Maintenance refers to the process of modifying and updating a software system
after it has been delivered to the customer. This can include fixing bugs, adding new features,
improving performance, or updating the software to work with new hardware or software
systems. There Two broad categories of process models for software maintenance, the first
model is preferred for projects involving small reworks where the code is changed directly
and the changes are reflected in the relevant documents later in this approach, the project
starts by gathering the requirements for changes. The requirements are next analysed to
formulate the strategies to be adopted for code change. At this stage, the association of at
least a few members of the original development team goes a long way in reducing the cycle
team, especially for projects involving unstructured and inadequately documented code, the
second process model for software maintenance is preferred for projects where the amount of
rework required is significant. This approach can be represented by a reverse engineering
cycle followed by a forward engineering cycle. Such an approach is also known as software
reengineering. The reverse engineering cycle is required for legacy products. During the
reverse engineering, the old code is analysed (abstracted) to extract the module specifications.
The module specifications are then analysed to produce the design. The design is analysed
(abstracted) to produce the original requirements specification. The change requests are then
applied to this requirements specification to arrive at the new requirements specification.
The motivation behind software maintenance stems from the recognition that software is not
a static entity, rather it exists within a dynamic and evolving environment. Several key
motivations drive the need for software maintenance;
Bug fixer: Software is prone to errors, or bugs, which can affect its functionality, reliability,
and security, Maintenance involves identifying and rectifying these issues to ensure the
software performs as intended.
Cost Efficiency: It is often more cost-effective to maintain and enhance existing software
than to develop an entirely new system from scratch.
There are basically three types of software maintenance and these are;
Corrective: this is necessary to rectify the bugs observed while the system is in use.
Adaptive: A software product might need maintenance 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 or software.
Perfective: A software product needs maintenance to support the new features that users
want it to support, to change different functionalities of the system according to customer
demands, or to enhance the performance of the system
(Boehm 1981) states that COCOMO’s intermediate model provides estimates which deviate
from the actual needed effort only about 20% in average. Cocomo-II is the new updated
version of the classic model, with a more modern project database. Boehm (1981) has also
represented a simple linear model for determining maintenance costs, but he admits that it has
many limitations. [1]
Q2