0% found this document useful (0 votes)
91 views

Unit 4 Notes Software Engg

The document discusses software maintenance, which refers to modifying and updating software after delivery to address bugs, add features, improve performance, or ensure compatibility. Key aspects of maintenance include bug fixing, enhancements, optimization, porting, re-engineering, and documentation. Maintenance is needed to correct faults, improve design, implement enhancements, interface with other systems, and adapt to changes. Challenges include lack of documentation, legacy code, complexity, changing requirements, and costs. The maintenance process involves change requests, management, impact analysis, planning, implementation, and releases. Types of maintenance are corrective, adaptive, perfective, and preventive. Models for maintenance include quick-fix, Boehm, iterative enhancement, and

Uploaded by

Mannat Thakur
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
91 views

Unit 4 Notes Software Engg

The document discusses software maintenance, which refers to modifying and updating software after delivery to address bugs, add features, improve performance, or ensure compatibility. Key aspects of maintenance include bug fixing, enhancements, optimization, porting, re-engineering, and documentation. Maintenance is needed to correct faults, improve design, implement enhancements, interface with other systems, and adapt to changes. Challenges include lack of documentation, legacy code, complexity, changing requirements, and costs. The maintenance process involves change requests, management, impact analysis, planning, implementation, and releases. Types of maintenance are corrective, adaptive, perfective, and preventive. Models for maintenance include quick-fix, Boehm, iterative enhancement, and

Uploaded by

Mannat Thakur
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Unit 4

Software Maintenance
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. The goal of software maintenance is to keep the software system working
correctly, efficiently, and securely, and to ensure that it continues to meet the needs of the
users.

There are several key aspects of software maintenance, including:

1. Bug fixing: The process of finding and fixing errors and problems in the software.
2. Enhancements: The process of adding new features or improving existing features
to meet the evolving needs of the users.
3. Performance optimization: The process of improving the speed, efficiency, and
reliability of the software.
4. Porting and migration: The process of adapting the software to run on new
hardware or software platforms.
5. Re-engineering: The process of improving the design and architecture of the
software to make it more maintainable and scalable.
6. Documentation: The process of creating, updating, and maintaining the
documentation for the software, including user manuals, technical specifications,
and design documents.

Need for Maintenance –


Software Maintenance must be performed in order to:
• Correct faults.
• Improve the design.
• Implement enhancements.
• Interface with other systems.
• Accommodate programs so that different hardware, software, system features, and
telecommunications facilities can be used.
• Migrate legacy software.
• Retire software.
• Requirement of user changes.
• Run the code fast

1|Pa ge
Challenges in Software Maintenance:
• Lack of documentation: Poorly documented systems can make it difficult to
understand how the system works, making it difficult to identify and fix problems.
• Legacy code: Maintaining older systems with outdated technologies can be
difficult, as it may require specialized knowledge and skills.
• Complexity: Large and complex systems can be difficult to understand and
modify, making it difficult to identify and fix problems.
• Changing requirements: As user requirements change over time, the software
system may need to be modified to meet these new requirements, which can be
difficult and time-consuming.
• Interoperability issues: Systems that need to work with other systems or
software can be difficult to maintain, as changes to one system can affect the other
systems.
• Lack of test coverage: Systems that have not been thoroughly tested can be
difficult to maintain as it can be hard to identify and fix problems without knowing
how the system behaves in different scenarios.
• Lack of personnel: A lack of personnel with the necessary skills and knowledge
to maintain the system can make it difficult to keep the system up-to-date and
running smoothly.
• High-Cost: The cost of maintenance can be high, especially for large and complex
systems, which can be difficult to budget for and manage.

Components of Software Maintenance Process


There are different components of the software maintenance process as shown below:

2|Pa ge
1. Change Request –
In the maintenance process initially, the request for change is made.
2. Change Management –
In this place, the status of all the change requests is identified and described.
3. Impact Analysis –
Following activities are performed in this place:
• Identify all the systems and the system products affected by a change request.
• Make an estimate of the resources needed to effect the change.
• Analyze the benefits of the change.
4. System Release Planning –
In this phase, the schedule and the contents of the software release are planned. The
changes can be made to all types of software maintenance.
5. Change Implementation –
The implement of changes can be by first designing the changes, then coding for these
changes, and finally testing the changes. Preferably the regression testing must be
performed while testing the changes.
6. System Release –
During software release, following points should be described:
• Documentation
• Software
• Training
• Hardware Changes
• Data Conversion

TYPES of Software Maintenance –


Maintenance can be divided into the following:
1. Corrective maintenance: Corrective maintenance of a software product may be
essential either to rectify some bugs observed while the system is in use, or to
enhance the performance of the system.

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.

3|Pa ge
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.

Software Maintenance Models


The software maintenance process model is an abstract representation of the evolution of software to
help analyze activities during software maintenance. Which use kind of maintenance model, should
be aware of the characteristics of various models and, based on preservation of the environment,
decide.
Quick - Fix Model
• The Quick-Fix model is used for software maintenance, and Its main purpose is to identify the
problem and fix it as soon as possible.
• It will maintain the software system by modifying the software code for its impact on the overall
structure of the software system.
• It works quickly at a low cost.

Boehm Model
Boehm's theory is models and principles of economics can not only improve maintenance productivity
but also helps to understand the maintenance process.

4|Pa ge
It represents the maintenance process in a closed-loop cycle, wherein changes are suggested and
approved first and then are executed.
Iterative Enhancement Model
• The iterative model is used for small-scale application modernization and scheduled maintenance.
• The biggest risk here is that it doesn't include business justifications, i.e., the software team won't
know if more significant changes are needed in the future. The iterative enhancement model treats
the application target as a known quantity.
• This model incorporates changes in the software based on the analysis of the existing system.

The iterative enhancement model is divided into three stages:


• Implementation of requested/asked modifications.
• Classification of requested modifications.
• Analysis of software system.

Re-use Oriental Model


• The reuse model involves building and then reusing the software components.
• The parts of the existing system appropriate for reuse are identified and understood in the Reuse
Oriented Model.
• These components(can be reused) can work in multiple places or applications.
• When applying the reuse model, the dev team should consider the existing application/system
components for reuse and make modifications to them.

5|Pa ge
Maintenance is an essential phase in the software development life cycle (SDLC) and involves modifying, updating, or
improving existing software to meet new requirements or fix defects. To measure the effectiveness of maintenance
activities, software engineers use various metrics. Some of the commonly used metrics for maintenance in software
engineering are:

1. Mean Time Between Failures (MTBF): This metric measures the average time between the occurrence of
software failures. A high MTBF value indicates that the software is reliable and requires minimal maintenance.
2. Mean Time to Repair (MTTR): This metric measures the average time taken to fix software failures. A low MTTR
value indicates that the software is easy to maintain and repair.
3. Defect Density: This metric measures the number of defects present in the software per unit of code size. A high
defect density value indicates poor software quality, which requires more maintenance efforts.
4. Change Request (CR) Rate: This metric measures the number of change requests received by the maintenance
team per unit of time. A high CR rate value indicates that the software requires frequent modifications, which
could increase maintenance efforts.
5. Maintenance Effort: This metric measures the resources and time spent on maintaining the software. A high
maintenance effort value indicates that the software requires significant maintenance efforts.
6. Mean Time Between Critical Failures (MTBCF): This metric measures the average time between critical failures in
the software. A high MTBCF value indicates that the software is highly reliable and requires minimal
maintenance.
7. Mean Time to Failure (MTTF): This metric measures the average time taken for a software component to fail. A
high MTTF value indicates that the software component is highly reliable and requires minimal maintenance.

Reverse Engineering –
Reverse Engineering is processes of extracting knowledge or design information from
anything man-made and reproducing it based on extracted information. It is also called back
Engineering. The main objective of reverse-engineering is to check out how the system
works. There are a many reasons to perform reverse engineering. Reverse engineering is
used to know how the thing works. Also, reverse engineering is to recreate the object by
adding some enhancements.
Software Reverse Engineering –
Software Reverse Engineering is the process of recovering the design and the
requirements specification of a product from an analysis of it’s code. Reverse Engineering is
becoming important, since several existing software products, lack proper documentation,

6|Pa ge
are highly unstructured, or their structure has degraded through a series of maintenance
efforts.
Why Reverse Engineering?
• Providing proper system documentation.
• Recovery of lost information.
• Assisting with maintenance.
• Facility of software reuse.
• Discovering unexpected flaws or faults.
• Implements the innovative processes for specific use.
• Easy to document the things how the efficiency and power can be improved.
Uses of Software Reverse Engineering –
• 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
or detect the virus and other malware code .
• Software reverse engineering is the process of analyzing and understanding the
internal structure and design of a software system. It is often used to improve the
understanding of a software system, to recover lost or inaccessible source code,
and to analyze the behavior of a system for security or compliance purposes.
• Malware analysis: Reverse engineering is used to understand how malware
works and to identify the vulnerabilities it exploits, in order to develop
countermeasures.
• Legacy systems: Reverse engineering can be used to understand and maintain
legacy systems that are no longer supported by the original developer.
• Intellectual property protection: Reverse engineering can be used to detect and
prevent intellectual property theft by identifying and preventing the unauthorized
use of code or other assets.
• Security: Reverse engineering is used to identify security vulnerabilities in a
system, such as backdoors, weak encryption, and other weaknesses.
• Compliance: Reverse engineering is used to ensure that a system meets
compliance standards, such as those for accessibility, security, and privacy.
• Reverse-engineering of proprietary software: To understand how a software
works, to improve the software or to create a new software with similar features.
• Reverse-engineering of a software to create a competing product: To create a
product that functions similarly or to identify the features that are missing in a
product and create a new product that incorporates those features.
• It’s important to note that reverse engineering can be a complex and time-
consuming process, and it is important to have the necessary skills, tools, and
7|Pa ge
knowledge to perform it effectively. Additionally, it is important to consider the
legal and ethical implications of reverse engineering, as it may be illegal or
restricted in some jurisdictions.

Advantages Or Disadvantages:

Advantages of software maintenance:

1. Improved software quality: Regular software maintenance helps to ensure that the
software is functioning correctly and efficiently, and that it continues to meet the
needs of the users.
2. Enhanced security: Maintenance can include security updates and patches, helping
to ensure that the software is protected against potential threats and attacks.
3. Increased user satisfaction: Regular software maintenance helps to keep the
software up-to-date and relevant, leading to increased user satisfaction and
adoption.
4. Extended software life: Proper software maintenance can extend the life of the
software, allowing it to be used for longer periods of time and reducing the need
for costly replacements.
5. Cost savings: Regular software maintenance can help to prevent larger, more
expensive problems from occurring, reducing the overall cost of software
ownership.

System configuration management


Configuration Management (SCM) is an arrangement of exercises which controls change
by recognizing the items for change, setting up connections between those things,
making/characterizing instruments for overseeing diverse variants, controlling the changes
being executed in the current framework, inspecting and revealing/reporting on the
changes made. It is essential to control the changes in light of the fact that if the changes
are not checked legitimately then they may wind up undermining a well-run programming.
In this way, SCM is a fundamental piece of all project management activities. Processes
involved in SCM – Configuration management provides a disciplined environment for
smooth control of work products. It involves the following activities:

SCM Process
It uses the tools which keep that the necessary change has been implemented adequately to the
appropriate component. The SCM process defines a number of tasks:
8|Pa ge
o Identification of objects in the software configuration also the needs
o Version Control
o Change Control
o Configuration Audit
o Status Reporting

Identification

Basic Object: Unit of Text created by a software engineer during analysis, design, code, or test.

Aggregate Object: A collection of essential objects and other aggregate objects. Design Specification
is an aggregate object.

Each object has a set of distinct characteristics that identify it uniquely: a name, a description, a list of
resources, and a "realization."

The interrelationships between configuration objects can be described with a Module


Interconnection Language (MIL).

Version Control

Version Control combines procedures and tools to handle different version of configuration objects
that are generated during the software process.

Clemm defines version control in the context of SCM: Configuration management allows a user to
specify the alternative configuration of the software system through the selection of appropriate

9|Pa ge
versions. This is supported by associating attributes with each software version, and then allowing a
configuration to be specified [and constructed] by describing the set of desired attributes.

Change Control

James Bach describes change control in the context of SCM is: Change Control is Vital. But the forces
that make it essential also make it annoying.

We worry about change because a small confusion in the code can create a big failure in the product.
But it can also fix a significant failure or enable incredible new capabilities.

We worry about change because a single rogue developer could sink the project, yet brilliant ideas
originate in the mind of those rogues, and

A burdensome change control process could effectively discourage them from doing creative work.

A change request is submitted and calculated to assess technical merit; potential side effects, the overall
impact on other configuration objects and system functions, and projected cost of the change.

The results of the evaluations are presented as a change report, which is used by a change control
authority (CCA) - a person or a group who makes a final decision on the status and priority of the
change.

The "check-in" and "check-out" process implements two necessary elements of change control-access
control and synchronization control.

Access Control governs which software engineers have the authority to access and modify a particular
configuration object.

Synchronization Control helps to ensure that parallel changes, performed by two different people,
don't overwrite one another.

Configuration Audit

SCM audits to verify that the software product satisfies the baselines requirements and ensures that
what is built and what is delivered.

SCM audits also ensure that traceability is maintained between all CIs and that all work requests are
associated with one or more CI modification.SCM audits are the "watchdogs" that ensures that the
integrity of the project's scope is preserved.

Status Reporting

10 | P a g e
Configuration Status reporting (sometimes also called status accounting) providing accurate status and
current configuration data to developers, testers, end users, customers and stakeholders through admin
guides, user guides, FAQs, Release Notes, Installation Guide, Configuration Guide, etc.

The main advantages of SCM are:

1. Improved productivity and efficiency by reducing the time and effort required to
manage software changes.
2. Reduced risk of errors and defects by ensuring that all changes are properly
tested and validated.
3. Increased collaboration and communication among team members by providing a
central repository for software artifacts.
4. Improved quality and stability of software systems by ensuring that all changes
are properly controlled and managed.

Change Management in Software Engineering


Change Management in software development refers to the transition from an existing state
of the software product to another improved state of the product. It controls, supports, and
manages changes to artifacts, such as code changes, process changes, or documentation
changes. Where CCP (Change Control Process) mainly identifies, documents, and authorizes
changes to a software application.
Each software development process follows Software Development Life Cycle
(SDLC) where each phase is accordingly followed to finally deliver a good quality software
product. Change Management does not come under any phases of SDLC still it has great
importance in the entire software development process. There are various types of change
management tools that are used for various purposes like to adopt, control, represent and
effect the change required. For example Change management tools for Flow Charting,
Project Planning, Data collection, etc.
Process of Change Management :

When any software application/product goes for any changes in an IT environment, it


undergoes a series of sequential processes as follows:
• Creating a request for change
• Reviewing and assessing a request for change
• Planning the change
• Testing the change
11 | P a g e
Creating a change proposal

• Implementing changes
• Reviewing change performance
• Closing the process
Importance of Change Management :

For improving performance



• For increasing engagement
• For enhancing innovation
• For including new technologies
• For implementing new requirements
• For reducing cost
Source of Change :
There may be multiple reasons involved during the development process for which certain
changes are required to be implemented in the product. These sources are as follows :
Business reorganization

• New Market conditions
• New equipment
• Fixing any bugs/errors
• New customer needs
• Performance or reliability improvement
• Budgetary or scheduling constraints
Key points to be considered during Change Management :
• Reason of change
• Result of change
• The portion to be changed
• Person will change
• Risks involved in change
• Alternative to change
• Resources required for change
• Relationship between changes

Version and Release Management.


The process involved in version and release management are concerned with identifying
and keeping track of the versions of a system. Versions managers devise procedures to
ensure that versions of a system may be retrieved when required and are not accidentally
changed by the development team. For products, version managers work with marketing
staff and for custom systems with customers, to plan when new releases of a system
12 | P a g e
should be created not distributed for deployment. A system instance is an instance of a
system which can be different from other instances in some way. There is a chance in
which versions of the system may have different functionality, enhanced performance or
repaired software faults. Some versions may be functionally equivalent but designed for
different hardware or software configuration. Versions with only small differences are
sometimes called variants. A system release may be a version that’s distributed to
customers. Each system release should either include new functionality or should be
intended for a special hardware platform. There are normally many more versions of a
system than release. Versions are created with an organization for internal development or
testing and are not intended for release to customers. Version Identification : To create a
specific version of a system, you’ve got to specify the versions of the system components
that ought to be included in it. In a large software system, there are hundreds to software
components, each of which may exist in several different versions. There must therefore be
an unambiguous way to identify each component version to ensure that the right
components are included in the system. Three basic techniques are used for components
version identification :
• Version Numbering : In version numbering scheme, a version number is added to
the components or system name. If the first version is called 1.0, subsequent
versions are 1.1, 1.2 and so on. At some stage, a new release is created (release
2.0) and process start again at version 2.1.The scheme is linear, based on the
assumption that system versions are created in sequence. Most version
management tools such as RCS and CVS support this approach to version
identification.

• Attribute Based Identification : If each version is identified by a unique set of


attributes, it is easy to add new versions, that are derived from any of existing
versions. These are identified using unique set of attribute values. They share
most of those values with their parent version so relationships between versions
are maintained. You can retrieve specific versions by specifying attribute values
required. Functions on attributes support queries like ‘the last created version’ or
‘the version created between given dates’. Attribute-based identification may be
implemented directly by version management system, with component attributes

13 | P a g e
maintained in a system database. Alternatively, attribute identification system
may be built as a layer on top of a hidden version-numbering scheme.
• Change Oriented Identification : Each component is known as in attribute-based
identification but is additionally related to one or more change requests. That is, it
is assumed that each version of component has been created in response to one
or more change requests. Component version is identified by set of change
requests that apply to components.

Techniques for Maintenance


•Software Configuration Management
•Impact Analysis
•Software Rejuvenation
Software Configuration Management

Software configuration management can be used effectively while maintaining a system as it keeps
track of changes and their effects on the system components. Many changes occur when the software
is delivered to the users such as failure or users’ request for enhancement in the software. For this,
configuration control board (CCB) oversees the entire change process. Note that the representatives
of CCB along with the users and developers manage changes collectively. These changes are
managed in the following steps.

▪ When the user encounters a problem such as failure report, he requests for change on a formal
change request form. The problem can also be an enhancement to a function, variation in the older
function, or deleting an existing function. The procedure for request of change remains the same.
The change reqest form should include information about how the system works, nature of the
problem, and how the new (expected) system should work.
▪ The request for change is reported to CCB.
▪ The representative of CCB meets the user to discuss the problem (That is, to determine that the
request is for failure report or for enhancement).
▪ If the user requests for a reported failure, the CCB discusses the source of the problem. If the
requested change is an enhancement, the CCB discusses the parts or the components that will be
affected by the change. In both the cases, developers describe the scope of changes and the
expected time to implement them.
▪ The developers determine the source of the problem or the components which will be affected
when the changes will be implemented. For this, they use a test copy instead of the operational
system and implement the requested changes to see whether it (test copy) performs according to
the requested changes.
▪ Finally, after the changes have been made, all the relevant documentation is updated according to
the requested change.
▪ The developers then record all the changes made to the operational system in a change report to
keep track of the next release or version of the software system.

Impact Analysis

Impact analysis is used to evaluate the overall effect of the requested change. This includes identifying
the components that will be affected with the change, the extent to which each of the components will

14 | P a g e
be affected, and the consequences of change on the estimated effort and schedule. There are various
advantages of performing impact analysis, which are listed below.

▪ It is used to understand the situations when the modifications required in the software system affect
large segments of software code or several components of the software.
▪ It helps identifying the relationship among the components that are affected with the change and
thereby helping to understand the overall software structure.
▪ It is used to record the history of modification, which helps in maintaining quality in the software
system.

Software Rejuvenation

Sometimes, organizations have to take difficult decisions about how to make their systems more
maintainable. The choices may include enhancing or completely replacing a software system. Note
that each choice has the same objective, that is, to preserve or increase the software quality while
keeping the costs low. Software rejuvenation is a maintenance technique which helps in taking
appropriate decisions.
Software rejuvenation checks the system’s work products in order to extract additional information or
to reformat them in order to make these work products more understandable. Generally, four types of
software rejuvenation exist, namely, re-documentation, restructuring, reverse engineering, and
reengineering.

Re-documentation uses static analysis of the source code to produce additional information, which
helps the software maintenance team to understand and refer to the code. In source code, component
size, component calls, calling parameters, and control paths are examined to understand what and
how code does it. The output of static code analysis is either graphical or textual, which can be used
to assess whether the re-documentation is required.

15 | P a g e
Restructuring

Restructuring involves the transformation of unstructured code into structured code thereby making it
easier to understand and change. Restructuring involves the following steps.

▪ Static analysis is performed, which provides information that is used to represent code as a directed
graph or associative (semantic) network. The representation mayor may not be in a human
readable form; thus, an automated tool is used.
▪ Transformational techniques are used to refine (simplify) the representation.
▪ Refined representation is interpreted and used to generate the structured code.

Reverse Engineering

Reverse engineering like re-documentation, focuses on providing information about the specification
and design information using the software code. The information extracted from specification and
design is stored in a format that can be easily modified. Reverse engineering is a useful technique
when the software maintenance team is unable to understand the processes involved in the software
system. Reverse engineering involves the following steps.

16 | P a g e
▪ Source code is collected with the help of an automated tool used for reverse engineering. This tool
is used to represent the structure and the naming information of variables, functions and other
components in the software code.
▪ Static analysis is performed.
▪ Some methods such as standards structured analysis and design methods are used. These
methods are used to extract information such as data dictionaries, data-flow, control flow, and entity
relationship (ER) diagrams for the reverse engineering technique.

The advantages associated with reverse engineering are listed below.

▪ It focuses on recovering the lost information from the programs.


▪ It provides the abstract information from the detailed source code implementation.
▪ It improves system documentation ‘that is either incomplete or out of date.
▪ It manages the complexity that is present in the software programs.
▪ It detects the adverse effects of modification in the software system.

Re-engineering

Re-engineering is an extension of reverse engineering. This technique refers to the systematic


transformation of the present software system into a new form to make quality improvements in
operation, system capability, functionality, and achieving high performance at low costs.
Re-engineering involves the following steps.

▪ The system is reverse engineered and represented internally for human


and computer modifications.
▪ The software system is corrected and completed. This includes updating internal specification and
design.
▪ Using new specification and design, a new system is generated.

The advantages associated with re-engineering are listed below.

17 | P a g e
Reduced cost
Reduced risk
Better use of existing staff
Incremental development

18 | P a g e

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy