Unit 8 Material
Unit 8 Material
Unit 8 Material
• This includes modifications and updations done in order to correct or fix problems, which are
either discovered by user or concluded by user error reports.
• Corrective maintenance deals with the repair of faults or defects found in day-today system
functions.
• A defect can result due to errors in software design, logic and coding.
• Design errors occur when changes made to the software are incorrect, incomplete, wrongly
communicated, or the change request is misunderstood.
Adaptive Maintenance:
• This includes modifications and updations applied to keep the software product up-to date
and tuned to the ever changing world of technology and business environment.
• Adaptive maintenance is the implementation of changes in a part of the system, which has
been affected by a change that occurred in some other part of the system.
• The term environment in this context refers to the conditions and the influences which act
(from outside) on the system.
Perfective Maintenance:
• This includes modifications and updates done in order to keep the software usable over long
period of time. It includes new features, new user requirements for refining the software and
improve its reliability and performance.
• Perfective maintenance mainly deals with implementing new or changed user requirements.
• This includes modifications and updations to prevent future problems of the software. It aims
to attend problems, which are not significant at this moment but may cause serious issues in
future.
• It tends to reduce the software complexity thereby improving program understandability and
increasing software maintainability. It comprises documentation updating, code optimization,
and code restructuring.
• Documentation updating involves modifying the documents affected by the changes in order
to correspond to the present state of the system.
➢ Change control:
• Change control is a procedural activity that ensures quality and consistency as changes are
made to a configuration object.
• A change request is submitted to a configuration control authority, which is usually a
change control board (CCB).
• The request is evaluated for technical merit, potential side effects, overall impact on other
configuration objects and system functions, and projected cost in terms of money, time and
resources.
• An engineering change order (ECO) is issued for each approved change request. Describes
the change to be made, the constraints to follow and the criteria for review and audit.
➢ Version control:
• Version control is a set of procedures and tools for managing the creation and use of
multiple occurrences of objects in the SCM repository.
• Version Control Capabilities:
o An SCM repository that stores all relevant configuration objects.
o A version management capability that stores all versions of a configuration object.
o A make facility that enables the software engineer to collect all relevant
configuration objects and construct a specific version of the software.
o Issues or bug tracking capability that enables the team to record and track the status
of all outstanding issues associated with each configuration object.
➢ Configuration Audit:
• Configuration auditing is an SQA activity that helps to ensure that quality is maintained as
changes are made.
• It complements the formal technical review and is conducted by the SQA group.
• It addresses the following questions:
o Has a formal technical review been conducted to assess technical correctness?
o Has the software process been followed and have software engineering standards
been properly applied?
o Has the change been "highlighted" and "documented" in the SCI? Have the change
data and change author been specified? Do the attributes of the configuration object
reflect the change?
➢ Status Reporting:
• Configuration status reporting (CSR) is also called status accounting.
• Provides information about each change to those personnel in an organization with a need
to know.
• Answers what happened, who did it, when did it happen and what else will be affected?
• Sources of entries for configuration status reporting
o Each time a SCI is assigned new or updated information.
o Each time a configuration audit is conducted.
• The configuration status report
o Placed in an on-line database or on a website for software developers and
maintainers to read.
o Given to management and practitioners to keep them appraised of important
changes to the project SCIs.
• It is a thorough process where the design of software is changed and programs are re-written.
• Legacy software cannot keep tuning with the latest technology available in the market.
• Even if software grows old with time, its functionality does not.
• For example, initially UNIX was developed in assembly language. When language C came
into existence, UNIX was re-engineered in C, because working in assembly language was
difficult.
• Other than this, sometimes programmers notice that few parts of software need more
maintenance than others and they also need re-engineering.
Re-Engineering Process
• Version control combines procedures and tools to manage different versions of configuration
objects that are created during the software process.
• A version control system implements or is directly integrated with four major capabilities:
1. A project database (repository) that stores all relevant configuration objects.
2. A version management capability that stores all versions of a configuration object.
3. A make facility that enables you to collect all relevant configuration objects and
construct a specific version of the software.
• In addition, version control and change control systems often implement an issues tracking
capability that enables the team to record and track the status of all outstanding issues
associated with each configuration object.
• A number of version control systems establish a change set—a collection of all changes (to
some baseline configuration) that are required to create a specific version of the software.
• A change set “captures all changes to all files in the configuration along with the reason for
changes and details of who made the changes and when.”
• This enables you to construct a version of the software by specifying the change sets (by
name) that must be applied to the baseline configuration.
• To accomplish this, a system modeling approach is applied. The system model contains:
1. A template that includes a component hierarchy and a “build order” for the
components that describes how the system must be constructed.
2. Construction rules.
3. Verification rules.
• The primary difference in approaches is the sophistication of the attributes that are used to
construct specific versions and variants of a system and the mechanics of the process for
construction.
Change Control
• For such projects, change control combines human procedures and automated tools to provide
a mechanism for the control of change.
• A change request is submitted and evaluated to assess technical merit, potential side effects,
overall impact on other configuration objects and system functions, and the projected cost of
the change.
• The results of the evaluation are presented as a change report, which is used by a change
control authority
• (CCA)—a person or group that makes a final decision on the status and priority of the change.
• The ECO describes the change to be made, the constraints that must be respected, and the
criteria for review and audit.
7. Write short note on reverse engineering. OR Explain reverse engineering
in brief.
• Reverse engineering can extract design information from source code, but the abstraction
level, the completeness of the documentation, the degree to which tools and a human analyst
work together, and the
• The abstraction level of a reverse engineering process and the tools used to effect it refers to
the sophistication of the design information that can be extracted from source code.
• That is, the reverse engineering process should be capable of deriving procedural design
representations (a low-level abstraction), program and data structure information (a somewhat
higher level of abstraction), object models, data and/or control flow models (a relatively high
level of abstraction), and entity relationship models (a high level of abstraction).
• As the abstraction level increases, you are provided with information that will allow easier
understanding of the program.
• The completeness of a reverse engineering process refers to the level of detail that is provided
at an abstraction level. In most cases, the completeness decreases as the abstraction level
increases.
• Interactivity refers to the degree to which the human is “integrated” with automated tools to
create an effective reverse engineering process.
• In most cases, as the abstraction level increases, interactivity must increase or completeness
will suffer.
• The directionality of the reverse engineering process is one-way, all information extracted
from the source code is provided to the software engineer who can then use it during any
maintenance activity.
• Forward engineering is same as software engineering process with only one difference it is
carried out always after reverse engineering.
• The forward engineering process applies software engineering principles, concepts, and
methods to re-create an existing application. In most cases, forward engineering does not
simply create a modern equivalent of an older program.
• Rather, new user and technology requirements are integrated into the reengineering effort.
• Software maintenance is an activity in which program is modified after it has been put into
use.
• In software maintenance usually it is not preferred to apply major software changes to
system’s architecture.
• Maintenance is a process in which changes are implemented by either modifying the
existing system’s architecture or by adding new components to the system.
Need for maintenance:
The software maintenance is essential because of following reasons:
1. Usually the system requirements are changing and to meet these requirements some
changes are incorporated in the system.
2. There is a strong relationship between system and its environment. When a system is
installed in an environment, it changes that environment. This ultimately changes the
system requirements.
3. The maintained system remains useful in their working environment.
Maintenance is applicable to software developed using any software life cycle model. The
system changes and hence maintenance must be performed in order to:
a) Correct faults.
b) Improve the design.
c) Implement enhancement.
d) Interface with other systems.
e) Adoption of environment (different hardware, software, system features etc.).
f) Migrate legacy software.
g) Replacement of old software by new software.
In software maintenance report four key characteristics should be mentioned.
1) Maintaining control over the software’s day to day functions.
2) Maintaining control over software modification.
3) Repairing of functions.
4) Performance degradation should be avoided.
Types of software maintenance:
Various types of software maintenance are:
1. Corrective maintenance – Means the maintenance for correcting the software faults.
2. Adaptive maintenance – Means maintenance for adapting the change in environment
(different computers or different operating systems).
3. Perfective maintenance – Means modifying or enhancing the system to meet the new
requirements.
4. Preventive maintenance – Means changes made to improve future maintainability.
• When we develop software, the product (software) undergoes many changes in their
maintenance phase; we need to handle these changes effectively.
• Several individuals (programs) works together to achieve these common goals. This
individual produces several work product (SC Items) e.g., Intermediate version of modules
or test data used during debugging, parts of the final product.
• The elements that comprise all information produced as a part of the software process are
collectively called a software configuration.
• As software development progresses, the number of Software Configuration elements
(SCI's) grow rapidly.
• These are handled and controlled by SCM. This is where we require software configuration
management.
• A configuration of the product refers not only to the product's constituent but also to a
particular version of the component.
• Therefore, SCM is the discipline which
o Identify change
o Monitor and control change
o Ensure the proper implementation of change made to the item.
o Auditing and reporting on the change made.
• Configuration Management (CM) is a technic of identifying, organizing, and controlling
modification to software being built by a programming team.
• The objective is to maximize productivity by minimizing mistakes (errors).
• CM is used to essential due to the inventory management, library management, and
updation management of the items essential for the project.
• Multiple people are working on software which is consistently updating. It may be a method
where multiple version, branches, authors are involved in a software project, and the team
is geographically distributed and works concurrently. It changes in user requirements, and
policy, budget, schedules need to be accommodated.
Importance of SCM:
• It is practical in controlling and managing the access to various SCIs e.g., by preventing
the two members of a team for checking out the same component for modification at the
same time.
• It provides the tool to ensure that changes are being properly implemented.
• It has the capability of describing and storing the various constituent of software.
• SCM is used in keeping a system in a consistent state by automatically producing derived
version upon modification of the same component.