You are on page 1of 3

STUDENT ID: 29005815

LECTURES NAME: MR BENTLY BWALYA


COURSE: SOFTWARE ENGINEERING
Q1)

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.

Adaptation to Changing Requirements: As business needs evolve or new features are


demanded by users, software must be adapted to accommodate these changes

Compatibility: Software operates within an ecosystem of hardware, operating systems, and


other software components.

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

Software reengineering is a combination of two consecutive processes i.e., software reverse


engineering and software forward engineering. software reengineering involves overhauling
existing software systems to modernize, enhance, and optimize them. While it offers various
benefits such as improved maintainability, enhanced functionality, and competitive
advantage, organizations should be mindful of potential downsides such as complexity,
resource intensity, and the risk of unforeseen challenges. Proper planning, clear objectives,
and effective project management are essential for successful software reengineering
endeavors. [2]

[1] H. S. Behera, A. Prof, K. K. Sahu, and G. Bhattacharjee, “LECTURE NOTES ON SOFTWARE


ENGINEERING Course Code: BCS-306.”

[2] M. Majthoub, M. H. Qutqui, and Y. Odeh, “Software Re-engineering: An Overview,” in 2018


8th International Conference on Computer Science and Information Technology, CSIT 2018,
Institute of Electrical and Electronics Engineers Inc., Oct. 2018, pp. 266–270. doi:
10.1109/CSIT.2018.8486173.

You might also like