SE Unit IV - Solved Important Questions
SE Unit IV - Solved Important Questions
(5m)
Software Maintenance is the process of modifying a software product after it has been
delivered to the customer. The main purpose of software maintenance is to modify and update
software applications after delivery to correct faults and to improve performance.
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 program’s, which had been intended to paintings on sluggish machines
with much less reminiscence and garage ability can not maintain themselves tough in
opposition to newly coming more advantageous software program on contemporary-day
hardware.
Changes are frequently left undocumented which can also additionally reason greater
conflicts in future.
As era advances, it turns into high priced to preserve vintage software program.
Often adjustments made can without problems harm the authentic shape of the software
program, making it difficult for any next adjustments.
2. Adaptive maintenance:
This includes modifications and updations 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.
3. Perfective maintenance:
A software product needs maintenance to support the new features that the users want or to
change different types of functionalities of the system according to the customer demands.
4. Preventive maintenance:
This type of maintenance includes modifications and updations to prevent future problems of the
software. It goals to attend problems, which are not significant at this moment but may cause
serious issues in future.
In 1983, Boehm proposed a model for the maintenance process which was based upon the
economic models and principles. Economics model is nothing new thing, economic decisions are a
major building block of many processes and Boehm’s thesis was that economics model and principles
could not only improve productivity in the maintenance but it also helps to understand the process
very well.
Boehm maintenance process model represented as a closed-loop cycle as shown in the below diagram.
He theorizes that it is the platform where management decisions are made that drive the process. In
this stage, a set of required changes is determined by applying particular strategies and cost -benefits
evaluations to a set of proposed changes. Those approved changes are accompanied by company
budgets, which will largely determine the extent and type of resources expanded.
Boehm had understood that the maintenance manager’s task is one of the balancing and the pursuit of
the objectives of maintenance against the constraint imposed by the environment in which
maintenance work is carried out. That’s why, the maintenance process should be driven by the
maintenance manager’s decisions, which are typically based on the balancing of objectives against the
constraint. Boehm proposed a formula for calculating the maintenance cost as it is a part of the
COCOMO Model. All the collected data from the various projects, the formula was formed in terms of
effort.
Boehm used a quantity called Annual Charge Traffic (ACT), which is defined as:
The fraction of a software product’s source instruction which changes during a year either through
add, delete or modify.
The ACT is related to the number of change request,
Example –
Annual change traffic (ACT) for a software system is 20% per year. The development effort is 700 PMs.
Compute an estimate the annual maintenance effort (AME). If the lifetime of the project is 15 years,
what is the total effort of the project ?
Explanation :
Given,
The development effort = 700PM
Annual Charge traffic (ACT) = 20%
Total duration for which effort is to be calculated = 15years.
The maintenance effort is a fraction of development effort and that is assumed to be constant.
AME
= ACT * SDE
= 0.20 * 700
= 140PM
The difference between Boehm’s and McCall’s model is that McCall’s model primarily focuses on
precise measurement of high-level characteristics, whereas Boehm’s quality model is based on a
wider range of characteristics.
The Boehm’s model has three levels for quality attributes. These levels are divided based on their
characteristics. These levels are:
primary uses (high level characteristics),
intermediate constructs(mid-level characteristics) and
primitive constructs(primitive characteristics).
The highest level of Boehm’s model has following three primary uses stated as below –
As is utility – Extent to which, we can use software as-is.
Maintainability – Effort required to detect and fix an error during maintenance.
Portability – Effort required to change software to fit in a new environment.
The next level of Boehm’s hierarchical model consists of seven quality factors associated with three
primary uses, stated as below –
Portability –Effort required to change software to fit in a new environment.
Reliability – Extent to which software performs according to requirements.
Efficiency – Amount of hardware resources and code required to execute a function.
Usability (Human Engineering) – Extent of effort required to learn, operate and understand
functions of the software.
Testability – Effort required to verify that software performs its intended functions.
Understandability – Effort required for a user to recognize logical concept and its applicability.
Modifiability – Effort required to modify a software during maintenance phase.
Boehm further classified characteristics into Primitive constructs as follows- device independence,
accuracy, completeness, consistency, device efficiency, accessibility, communicativeness, self-
descriptiveness, legibility, structuredness, conciseness, augment-ability.
For example- Testability is broken down into:- accessibility, communicativeness, structuredness and
self descriptiveness.
Advantages :
It focuses and tries to satisfy the needs of the user.
It focuses on software maintenance cost effectiveness.
Disadvantages :
It doesn’t suggest, how to measure the quality characteristics.
It is difficult to evaluate the quality of software using the top-down approach.
So, we can say that, Boehm’s model is an improvised version of McCall’s model and it is used
extensively, but because of the top-down approach to see quality of software, Boehm’s model can’t be
employed always.
Updated test
documents
Updated user
documents
Test
preparation
review report
System test Updated software Functional test Software code Tested and
Objectives of Re-engineering:
To describe a cost-effective option for system evolution.
To describe the activities involved in the software maintenance process.
To distinguish between software and data re-engineering and to explain the problems of data re-
engineering.
Advantages of Re-engineering:
Reduced Risk: As the software is already existing, the risk is less as compared to new software
development. Development problems, staffing problems and specification problems are the lots of
problems which may arise in new software development.
Reduced Cost: The cost of re-engineering is less than the costs of developing new software.
Revelation of Business Rules: As a system is re-engineered , business rules that are embedded in
the system are rediscovered.
Better use of Existing Staff: Existing staff expertise can be maintained and extended accommodate
new skills during re-engineering.
Disadvantages of Re-engineering:
Practical limits to the extent of re-engineering.
Major architectural changes or radical reorganizing of the systems data management has to be
done manually.
Re-engineered system is not likely to be as maintainable as a new system developed using modern
software Re-engineering methods.
Q7. Mention and briefly explain different tools used for software maintenance. (5m)
Software maintenance involves modifying the existing software system and recording all the
modifications made to it. For this, various maintenance tools are used. One of the commonly used
maintenance tool is text editor. This tool creates a copy of the documentation or the code.
Name Description
File comparator Compares two files or systems and maintains the record of the
differences in the files. In addition, it determines whether the two
files or the systems are identical.
Compiler and linker Compilers are used to check syntax errors and in some cases, locate
the type of errors. When the code is compiled, the linker is used to
link the code with other components, which are required for the
program execution. Linkers sometimes are used to track the version
numbers of the components so that appropriate versions are linked
together.
Debugger Allows tracing the logic of the program and examines the contents of
the registers and memory areas.
Cross-reference generator Assures that the changes in code are in compliance with the existing
code. When a change to a requirement is requested, this tool enables
to know which other requirements, design, and code components will
be affected.
Static code analyzer Measures information about the code attributes such as the number
of lines of code, number of spanning paths, and so on. This can be
calculated when the new versions of the system are developed.
Q8. Define Software Quality. Mention and explain the different quality methods associated with
a software product. (5m)
Quality software refers to a software which is reasonably bug or defect free, is delivered in
time and within the specified budget, meets the requirements and/or expectations, and is
maintainable. In the software engineering context, software quality reflects both functional quality as
well as structural quality.
Software Functional Quality − It reflects how well it satisfies a given design, based on the
functional requirements or specifications.
Software Structural Quality − It deals with the handling of non-functional requirements that
support the delivery of the functional requirements, such as robustness or maintainability, and the
degree to which the software was produced correctly.
Software Quality Control − Software Quality Control (SQC) is a set of activities to ensure the
quality in software products. These activities focus on determining the defects in the actual products
produced. It involves product-focused action.
(iii) Walkthrough:
Members of the development team is guided by author and other interested parties and the
participants ask questions and make comments about defects.
(v) Inspection:
In inspection the reviewers follow a well-defined process to find defects.
Q12. What is meant by software Maintenance? Explain the different types of Maintenance
models. (10m)
To overcome internal as well as external problems of the software, Software maintenance
models are proposed. These models use different approaches and techniques to simplify the process
of maintenance as well as to make is cost effective. Software maintenance models that are of most
importance are:
1. Quick-Fix Model:
This is an ad hoc approach used for maintaining the software system. The objective of this
model is to identify the problem and then fix it as quickly as possible. The advantage is that it
performs its work quickly and at a low cost. This model is an approach to modify the software code
with little consideration for its impact on the overall structure of the software system.
A detailed framework is required for the classification of components and the possible
modifications. With the full reuse model the starting point may be any phase of the life cycle -the
requirements, the design, the code or the test data-unlike other models. For example, in the quick fix
model, the starting point is always the code.
4. Boehm's Model:
Boehm’s Model performs maintenance process based on the economic models and principles.
It represents the maintenance process in a closed loop cycle, wherein changes are suggested and
approved first and then are executed.
He theorizes that it is the stage where management decisions are made that drives the process.
In this stage, a set of approved changes is determined by applying particular strategies and cost-
benefit evaluations to a set of proposed changes. The approved changes are accompanied by their own
budgets, which will largely determine the extent and type of resources expanded.
B. Estimate phase:
This phase is devoted to estimate the time and effort required to make the change.
Objective is to have at least reasonable estimate of time effort.
Impact analysis on existing system is also required to minimise the ripple effect
C. Schedule phase:
To identify change requests for the next scheduled release and may also prepare the documents
that are required for planning.
D. Programming phase:
Source coe is modified to implement the requested change.
All relevant documents are updated acordingly.
Final output is the test versio of the source code.
E. Test phase:
Ensure that the modificatio is correctly implemented.
The term used for teting is known as regression testing.
F. Documentation phase:
After regression testing, system and user documents ar prepared/ updated before releasing
the system.
G. Release phase:
The new software product along with updated documents are delivered to the customer.
Acceptance testing is carried out by the users of the system.
H. Operation phase:
After acceptance testing, software is placed under normal operation.
During usage, when another problem is identified or new functionality requirement is felt
again a ‘Change request’ process is initiated.
Q13. Explain the Maintenance Process with the help of a neat diagram. (10m) or
Q14. Explain the Software Maintenance Life Cycle. (10m)
Changes are implemented in the software system by following a software maintenance process,
which is known as Software Maintenance Life Cycle (SMLC).This life cycle comprises seven phases,
namely, problem identification, analysis, design, implementation, system testing, acceptance testing,
and delivery phase.
The software maintenance process should be planned and structured in a way that it can be executed
effectively and efficiently. The following are the main phases in the software maintenance process:
The first step in the software maintenance process is to identify the requirement.
In this phase, the change requests are identified.
These chanage requests come from the end user or picked up by developers from the error
reports or logs.
Each Change Request (CR) or Modification Request (MR) is then evaluated to determine
whether it falls into one of four maintenance activities (corrective, adaptive, perfective, or
preventive).
After categorization, each change request is given an identification number and priority in
order to establish the order of processing.
#2. Analysis
In this phase, each of the change request is analyzed to determine and classify the type of
maintenance activity it requires.
This stage usually entails an analysis of the costs (cost of modification and maintenance is
estimated) and potential consequences of such a modification.
#3. Design
The module or the system as a whole should undergo regression testing before it is released to
make sure that no defect is left undetected.
It also confirms that no additional faults are introduced as a consequence of software
maintenance.
Integration testing also conducted to verify that newly developed components work together
with the existing system.
Acceptance testing is carried out on the fully integrated system by end users or by a third party
chosen by the end users.
The primary aim of this testing is to ensure that all features of the software fulfill the
requirements stated in the change request document.
#7. Delivery
This phase is to release the modified or altered software into production environment.
This may involve re-packaging of existing software release, creation of new software release or
copying the existing software release to another location.
In addition, the user is given with complete help documents that detail the software’s
operation as well as its hardware requirements.
After the system has been delivered, the client conducts the final testing on the delivered
system.
Disadvantage of SQA:
There are a number of disadvantages of quality assurance.
Some of them include adding more resources, employing more workers to help maintain quality
and so much more.
Q16. Explain the process of software reviews with a neat diagram. (10m)
Software Review is systematic inspection of a software by one or more individuals who work
together to find and resolve errors and defects in the software during the early stages of Software
Development Life Cycle (SDLC). Software review is an essential part of Software Development Life
Cycle (SDLC) that helps software engineers in validating the quality, functionality and other vital
features and components of the software. It is a whole process that includes testing the software
product and it makes sure that it meets the requirements stated by the client.
Usually performed manually, software review is used to verify various documents like
requirements, system designs, codes, test plans and test cases.
(iii) Walkthrough:
Members of the development team is guided by author and other interested parties and the
participants ask questions and make comments about defects.
(v) Inspection:
In inspection the reviewers follow a well-defined process to find defects.
Software Reverse Engineering is used in software design, reverse engineering enables the developer
or programmer to add new features to the existing software with or without knowing the source code.
Reverse engineering is also useful in software testing, it helps the testers to study the virus and other
malware code .