SlideShare a Scribd company logo
1 of 33
CHAPTER 7
Software maintaince and
SOFTWARE MAINTENANCE
 Software maintenance is a part of the Software
Development Life Cycle.
 Its primary goal is to modify and update software
application after delivery to correct errors and to improve
performance.
 Software is a model of the real world. When the real world
changes, the software require alteration wherever
possible.
 Software Maintenance is an inclusive activity that includes
error corrections, enhancement of capabilities, deletion of
obsolete capabilities, and optimization.
NEED FOR MAINTENANCE
 Software Maintenance is needed for:-
 Correct errors
 Change in user requirement with time
 Changing hardware/software requirements
 To improve system efficiency
 To optimize the code to run faster
 To modify the components
 To reduce any unwanted side effects.
 Thus the maintenance is required to ensure that the
system continues to satisfy user requirements.
TYPES OF SOFTWARE MAINTENANCE
 1. Corrective Maintenance
 Corrective maintenance aims to correct any remaining errors
regardless of where they may cause specifications, design,
coding, testing, and documentation, etc.
 2. Adaptive Maintenance
 It contains modifying the software to match changes in the ever-
changing environment.
 3. Preventive Maintenance
 It is the process by which we prevent our system from being
obsolete. It involves the concept of reengineering & reverse
engineering in which an old system with old technology is re-
engineered using new technology. This maintenance prevents
the system from dying out.
 4. Perfective Maintenance
 It defines improving processing efficiency or performance or
restricting the software to enhance changeability. This may
contain enhancement of existing system functionality,
improvement in computational efficiency, etc.
SOFTWARE MAINTENANCE COST FACTORS
 There are two types of cost factors involved in software
maintenance.
 These are
 Non-Technical Factors
 Technical Factors
 Non-Technical Factors

1. Application Domain
 If the application of the program is defined and well
understood, the system requirements may be definitive
and maintenance due to changing needs minimized.
 If the form is entirely new, it is likely that the initial
conditions will be modified frequently, as user gain
experience with the system.
 2. Staff Stability
 It is simple for the original writer of a program to
understand and change an application rather than some
other person who must understand the program by the
study of the reports and code listing.
 If the implementation of a system also maintains that
systems, maintenance costs will reduce.
 In practice, the feature of the programming profession is
such that persons change jobs regularly. It is unusual for
one user to develop and maintain an application
throughout its useful life.
 3. Program Lifetime
 Programs become obsolete when the program becomes
obsolete, or their original hardware is replaced, and
conversion costs exceed rewriting costs.
 4. Dependence on External Environment
 If an application is dependent on its external environment, it must be
modified as the climate changes.
 For example:
 Changes in a taxation system might need payroll, accounting, and stock
control programs to be modified.
 Taxation changes are nearly frequent, and maintenance costs for these
programs are associated with the frequency of these changes.
 A program used in mathematical applications does not typically depend
on humans changing the assumptions on which the program is based.
 5. Hardware Stability
 If an application is designed to operate on a specific hardware
configuration and that configuration does not changes during the
program's lifetime, no maintenance costs due to hardware changes will
be incurred.
 Hardware developments are so increased that this situation is rare.
 The application must be changed to use new hardware that replaces
obsolete equipment.
TECHNICAL FACTORS
 Technical Factors include the following:
 Module Independence
 It should be possible to change one program unit of
a system without affecting any other unit.
 Programming Language
 Programs written in a high-level programming
language are generally easier to understand than
programs written in a low-level language.
 Programming Style
 The method in which a program is written
contributes to its understandability and hence, the
ease with which it can be modified.
 Program Validation and Testing
 Generally, more the time and effort are spent on design validation and
program testing, the fewer bugs in the program and, consequently,
maintenance costs resulting from bugs correction are lower.
 Maintenance costs due to bug's correction are governed by the type of
fault to be repaired.
 Coding errors are generally relatively cheap to correct, design errors are
more expensive as they may include the rewriting of one or more
program units.
 Bugs in the software requirements are usually the most expensive to
correct because of the drastic design which is generally involved.
 Documentation
 If a program is supported by clear, complete yet concise documentation,
the functions of understanding the application can be associatively
straight-forward.
 Program maintenance costs tends to be less for well-reported systems
than for the system supplied with inadequate or incomplete
documentation.
 Configuration Management Techniques
 One of the essential costs of maintenance is keeping track of all system
documents and ensuring that these are kept consistent.
 Effective configuration management can help control these costs.
MAINTENANCE ACTIVITIES
 IEEE provides a framework for sequential
maintenance process activities. It can be used in
iterative manner and can be extended so that
customized items and processes can be included.
 These activities go hand-in-hand with each of the following phase:
 Identification & Tracing - It involves activities pertaining to identification
of requirement of modification or maintenance. It is generated by user or
system may itself report via logs or error messages. Here, the
maintenance type is classified also.
 Analysis - The modification is analyzed for its impact on the system
including safety and security implications. If probable impact is severe,
alternative solution is looked for. A set of required modifications is then
materialized into requirement specifications. The cost of
modification/maintenance is analyzed and estimation is concluded.
 Design - New modules, which need to be replaced or modified, are
designed against requirement specifications set in the previous stage.
Test cases are created for validation and verification.
 Implementation - The new modules are coded with the help of
structured design created in the design step.Every programmer is
expected to do unit testing in parallel.
 System Testing - Integration testing is done among newly
created modules. Integration testing is also carried out between
new modules and the system. Finally the system is tested as a
whole, following regressive testing procedures.
 Acceptance Testing - After testing the system internally, it is
tested for acceptance with the help of users. If at this state, user
complaints some issues they are addressed or noted to address
in next iteration.
 Delivery - After acceptance test, the system is deployed all over
the organization either by small update package or fresh
installation of the system. The final testing takes place at client
end after the software is delivered.
 Training facility is provided if required, in addition to the hard
copy of user manual.
 Maintenance management - Configuration management is an
essential part of system maintenance. It is aided with version
control tools to control versions, semi-version or patch
management.
SOFTWARE RE-ENGINEERING
 Software Re-engineering is a process of software
development which is done to improve the maintainability of a
software system. Re-engineering is the examination and
alteration of a system to reconstitute it in a new form. This
process encompasses a combination of sub-processes like
reverse engineering, forward engineering, reconstructing etc.
 Re-engineering is the reorganizing and modifying existing
software systems to make them more maintainable.
 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.
ACTIVITIES OF REENGINEERING
 1.Decide what to re-engineer.is it whole software or
a part of it?
 2. perform reverse engineering in order to obtain
specification of existing software .
 3.Re-structure program if required. For example
,changing function oriented programs into object-
oriented programs.
 4.Re-structuring data is required.
 5.Apply forward engineering concepts in order to
get re-engineered software.
 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.
REVERSE ENGINEERING
 Software Reverse Engineering is a process of
recovering the design, requirement specifications and
functions of a product from an analysis of its code. It
builds a program database and generates information
from this.
 The purpose of reverse engineering is to facilitate the
maintenance work by improving the understandability of
a system and to produce the necessary documents for a
legacy system.
 Reverse Engineering Goals:
 Cope with Complexity.
 Recover lost information.
 Detect side effects.
 Synthesise higher abstraction.
 Facilitate Reuse.
STEPS OF SOFTWARE REVERSE ENGINEERING
 Collection Information:
This step focuses on collecting all possible information
(i.e., source design documents etc.) about the
software.
 Examining the information:
The information collected in step-1 as studied so as to
get familiar with the system.
 Extracting the structure:
This step concerns with identification of program
structure in the form of structure chart where each node
corresponds to some routine.
 Recording the functionality:
During this step processing details of each module of
the structure, charts are recorded using structured
language like decision table, etc.
 Recording data flow:
From the information exA tracted in step-3 and step-4,
set of data flow diagrams are derived to show the flow of
data among the processes.
 Recording control flow:
High level control structure of the software is recorded.
 Review extracted design:
Design document extracted is reviewed several times to
ensure consistency and correctness. It also ensures that
the design represents the program.
 Generate documentation:
Finally, in this step, the complete documentation
including SRS, design document, history, overview, etc.
are recorded for future use.
ADVANTAGE OF REVERSE ENGINEERING
 Reverse engineering provides the abstract
information from the detailed source code
implementation.
 Reverse engineering improves system
documentation that is either incomplete or out of
date.
 It manages the complexity that is present in
software programs
 Reverse engineering focuses on recovering the lost
information from the programs.
SOFTWARE RESTRUCTURING
 Software restructuring modifies source code and/or data
in an effort to make it amenable to future changes. In
general, restructuring does not modify the overall
program architecture. It tends to focus on the design
details of individual modules and on local data
structures defined within modules. If the restructuring
effort extends beyond module boundaries and
encompasses the software architecture, restructuring
becomes forward engineering .
 Its goal is increased maintainability to better facilitate
other maintenance activities, such as adding new
functionality to, or correcting previously undetected
errors within a software system.
 Changes to the structure are introduced through the
application of transformations.
 Manually transforming the source code may introduce
undesirable as well as undetectable changes in the
system's behaviour. It is very difficult to ensure that
manual restructuring preserves functionality and
guaranteeing it is almost impossible.
 Code Restructuring:-
 Code restructuring is performed to yield a design that
produces the same function but with higher quality than
the original program. In general, code restructuring
techniques model program logic using Boolean algebra
and then apply a series of transformation rules that yield
restructured logic.
 Data Restructuring:-
 Before data restructuring can begin, a reverse
engineering activity called analysis of source code
must be conducted. All programming language
statements that contain data definitions, file
descriptions, I/O, and interface descriptions are
evaluated.
 Data restructuring begins with a reverse
engineering activity.
 Current data architecture is dissected, and the
necessary data models are defined.
 Data objects and attributes are identified, and
existing data structure are reviewed for quality.
 The intent is to extract data items and objects, to
get information on data flow, and to understand the
existing data structures that have been
implemented. This activity is sometimes called data
analysis .
 Process of restructuring:
 Step 1: static analysis is performed ,which provides
information that is used to represent code as a
directed graph or associative(semantic)
network. The representation may or may not be in
a human readable form ; thus an automated tool is
used.
 Step 2: transformational techniques are used to refine the
representation.
 Step 3: refined representation is interpreted and used to
generate the structured code.
 Forward Engineering:-Forward Engineering is a method of
creating or making an application with the help of the given
requirements. Forward engineering is also known as
Renovation and Reclamation. Forward engineering is required
high proficiency skills. It takes more time to construct or
develop an application. Forward engineering is a
technique of creating high-level models or designs to make in
complexities and low-level information. Therefore this kind of
engineering has completely different principles in numerous
package and information processes. Forward Engineering
applies of all the software engineering process which contains
SDLC to recreate associate existing application. It is near to
full fill new needs of the users into re-engineering.
CHARACTERISTICS OF FORWARD ENGINEERING:
 Forward engineering is a variety of engineering that has different
principles in numerous package and information processes.
 Forward engineering is vital in IT as a result of it represents the
‘normal’ development process.
 Forward engineering deals with the conversion of business
processes, services, and functions into applications.
 In this method business model is developed first. Then, a top-to-
down approach is followed to urge the package from the model
developed.
 Forward engineering tools are accustomed move from
implementation styles and logic to the event of supply code.
 It essentially permits the user to develop a business model which
may then be translated into data system components.
 These tools basically follow the top-to down approach. System
creator and visual Analyst is a forward engineering CASE tool.
 Component reusability
 A component is a part of software program code, which executes an
independent task in the system. It can be a small module or sub-system
itself.
 Example
 The login procedures used on the web can be considered as
components, printing system in software can be seen as a component of
the software.
 Components have high cohesion of functionality and lower rate of
coupling, i.e. they work independently and can perform tasks without
depending on other modules.
 In OOP, the objects are designed are very specific to their concern and
have fewer chances to be used in some other software.
 In modular programming, the modules are coded to perform specific
tasks which can be used across number of other software programs.
 There is a whole new vertical, which is based on re-use of software
component, and is known as Component Based Software Engineering
(CBSE).
 Re-use can be done at various levels
 Application level - Where an entire application is used
as sub-system of new software.
 Component level - Where sub-system of an application
is used.
 Modules level - Where functional modules are re-used.
 Software components provide interfaces, which can be
used to establish communication among different
components.
 Reuse Process
 Two kinds of method can be adopted: either by keeping
requirements same and adjusting components or by
keeping components same and modifying requirements.
 Requirement Specification - The functional and non-functional
requirements are specified, which a software product must
comply to, with the help of existing system, user input or both.
 Design - This is also a standard SDLC process step, where
requirements are defined in terms of software parlance. Basic
architecture of system as a whole and its sub-systems are
created.
 Specify Components - By studying the software design, the
designers segregate the entire system into smaller components
or sub-systems. One complete software design turns into a
collection of a huge set of components working together.
 Search Suitable Components - The software component
repository is referred by designers to search for the matching
component, on the basis of functionality and intended software
requirements..
 Incorporate Components - All matched components are packed
together to shape them as complete software.
RELATION BETWEEN FORWARD ENGINEERING AND
REVERSE ENGINEERING

More Related Content

Similar to Software Maintenance and Re-engineering Fundamentals

Software maintenance Unit5
Software maintenance  Unit5Software maintenance  Unit5
Software maintenance Unit5Mohammad Faizan
 
Software maintenance
Software maintenanceSoftware maintenance
Software maintenanceAnsh Kapoor
 
10 software maintenance
10 software maintenance10 software maintenance
10 software maintenanceakiara
 
Why Software Maintenance is Essential for Business?
Why Software Maintenance is Essential for Business?Why Software Maintenance is Essential for Business?
Why Software Maintenance is Essential for Business?Albiorix Technology
 
Softweare Engieering
Softweare Engieering Softweare Engieering
Softweare Engieering Huda Alameen
 
SWE-401 - 1. Introduction to Software Engineering
SWE-401 - 1. Introduction to Software EngineeringSWE-401 - 1. Introduction to Software Engineering
SWE-401 - 1. Introduction to Software Engineeringghayour abbas
 
Software Maintenance and Evolution
Software Maintenance and EvolutionSoftware Maintenance and Evolution
Software Maintenance and Evolutionkim.mens
 
Ch9-Software Engineering 9
Ch9-Software Engineering 9Ch9-Software Engineering 9
Ch9-Software Engineering 9Ian Sommerville
 
PS02CINT22 SE Software Maintenance
PS02CINT22 SE Software MaintenancePS02CINT22 SE Software Maintenance
PS02CINT22 SE Software MaintenanceConestoga Collage
 
Software Engineering.pptx
Software Engineering.pptxSoftware Engineering.pptx
Software Engineering.pptxTheMusicFever
 
Software quality and maintainance pdf
Software quality and maintainance      pdfSoftware quality and maintainance      pdf
Software quality and maintainance pdfvaibhavshukla3003
 
Programming maintenance - Programming methodology
Programming maintenance - Programming methodologyProgramming maintenance - Programming methodology
Programming maintenance - Programming methodologyVishnu J Kumar
 

Similar to Software Maintenance and Re-engineering Fundamentals (20)

Unit5.pptx
Unit5.pptxUnit5.pptx
Unit5.pptx
 
Software maintenance Unit5
Software maintenance  Unit5Software maintenance  Unit5
Software maintenance Unit5
 
Software maintenance
Software maintenanceSoftware maintenance
Software maintenance
 
SE-Unit I.pptx
SE-Unit I.pptxSE-Unit I.pptx
SE-Unit I.pptx
 
Software maintenance
Software maintenanceSoftware maintenance
Software maintenance
 
10 software maintenance
10 software maintenance10 software maintenance
10 software maintenance
 
Sw Maintenance.ppt
Sw Maintenance.pptSw Maintenance.ppt
Sw Maintenance.ppt
 
Why Software Maintenance is Essential for Business?
Why Software Maintenance is Essential for Business?Why Software Maintenance is Essential for Business?
Why Software Maintenance is Essential for Business?
 
Softweare Engieering
Softweare Engieering Softweare Engieering
Softweare Engieering
 
Se lec 3
Se lec 3Se lec 3
Se lec 3
 
SWE-401 - 1. Introduction to Software Engineering
SWE-401 - 1. Introduction to Software EngineeringSWE-401 - 1. Introduction to Software Engineering
SWE-401 - 1. Introduction to Software Engineering
 
Ch9
Ch9Ch9
Ch9
 
Software Maintenance and Evolution
Software Maintenance and EvolutionSoftware Maintenance and Evolution
Software Maintenance and Evolution
 
Ch9-Software Engineering 9
Ch9-Software Engineering 9Ch9-Software Engineering 9
Ch9-Software Engineering 9
 
PS02CINT22 SE Software Maintenance
PS02CINT22 SE Software MaintenancePS02CINT22 SE Software Maintenance
PS02CINT22 SE Software Maintenance
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Software Engineering.pptx
Software Engineering.pptxSoftware Engineering.pptx
Software Engineering.pptx
 
Ch21
Ch21Ch21
Ch21
 
Software quality and maintainance pdf
Software quality and maintainance      pdfSoftware quality and maintainance      pdf
Software quality and maintainance pdf
 
Programming maintenance - Programming methodology
Programming maintenance - Programming methodologyProgramming maintenance - Programming methodology
Programming maintenance - Programming methodology
 

Recently uploaded

Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
CELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxCELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxJiesonDelaCerna
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,Virag Sontakke
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentInMediaRes1
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaVirag Sontakke
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxsocialsciencegdgrohi
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxAvyJaneVismanos
 
Capitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitolTechU
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
MARGINALIZATION (Different learners in Marginalized Group
MARGINALIZATION (Different learners in Marginalized GroupMARGINALIZATION (Different learners in Marginalized Group
MARGINALIZATION (Different learners in Marginalized GroupJonathanParaisoCruz
 

Recently uploaded (20)

Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
CELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxCELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptx
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,भारत-रोम व्यापार.pptx, Indo-Roman Trade,
भारत-रोम व्यापार.pptx, Indo-Roman Trade,
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media Component
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of India
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptx
 
Capitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptxCapitol Tech U Doctoral Presentation - April 2024.pptx
Capitol Tech U Doctoral Presentation - April 2024.pptx
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
MARGINALIZATION (Different learners in Marginalized Group
MARGINALIZATION (Different learners in Marginalized GroupMARGINALIZATION (Different learners in Marginalized Group
MARGINALIZATION (Different learners in Marginalized Group
 

Software Maintenance and Re-engineering Fundamentals

  • 2. SOFTWARE MAINTENANCE  Software maintenance is a part of the Software Development Life Cycle.  Its primary goal is to modify and update software application after delivery to correct errors and to improve performance.  Software is a model of the real world. When the real world changes, the software require alteration wherever possible.  Software Maintenance is an inclusive activity that includes error corrections, enhancement of capabilities, deletion of obsolete capabilities, and optimization.
  • 3. NEED FOR MAINTENANCE  Software Maintenance is needed for:-  Correct errors  Change in user requirement with time  Changing hardware/software requirements  To improve system efficiency  To optimize the code to run faster  To modify the components  To reduce any unwanted side effects.  Thus the maintenance is required to ensure that the system continues to satisfy user requirements.
  • 4. TYPES OF SOFTWARE MAINTENANCE  1. Corrective Maintenance  Corrective maintenance aims to correct any remaining errors regardless of where they may cause specifications, design, coding, testing, and documentation, etc.  2. Adaptive Maintenance  It contains modifying the software to match changes in the ever- changing environment.  3. Preventive Maintenance  It is the process by which we prevent our system from being obsolete. It involves the concept of reengineering & reverse engineering in which an old system with old technology is re- engineered using new technology. This maintenance prevents the system from dying out.  4. Perfective Maintenance  It defines improving processing efficiency or performance or restricting the software to enhance changeability. This may contain enhancement of existing system functionality, improvement in computational efficiency, etc.
  • 5. SOFTWARE MAINTENANCE COST FACTORS  There are two types of cost factors involved in software maintenance.  These are  Non-Technical Factors  Technical Factors  Non-Technical Factors  1. Application Domain  If the application of the program is defined and well understood, the system requirements may be definitive and maintenance due to changing needs minimized.  If the form is entirely new, it is likely that the initial conditions will be modified frequently, as user gain experience with the system.
  • 6.  2. Staff Stability  It is simple for the original writer of a program to understand and change an application rather than some other person who must understand the program by the study of the reports and code listing.  If the implementation of a system also maintains that systems, maintenance costs will reduce.  In practice, the feature of the programming profession is such that persons change jobs regularly. It is unusual for one user to develop and maintain an application throughout its useful life.  3. Program Lifetime  Programs become obsolete when the program becomes obsolete, or their original hardware is replaced, and conversion costs exceed rewriting costs.
  • 7.  4. Dependence on External Environment  If an application is dependent on its external environment, it must be modified as the climate changes.  For example:  Changes in a taxation system might need payroll, accounting, and stock control programs to be modified.  Taxation changes are nearly frequent, and maintenance costs for these programs are associated with the frequency of these changes.  A program used in mathematical applications does not typically depend on humans changing the assumptions on which the program is based.  5. Hardware Stability  If an application is designed to operate on a specific hardware configuration and that configuration does not changes during the program's lifetime, no maintenance costs due to hardware changes will be incurred.  Hardware developments are so increased that this situation is rare.  The application must be changed to use new hardware that replaces obsolete equipment.
  • 8. TECHNICAL FACTORS  Technical Factors include the following:
  • 9.  Module Independence  It should be possible to change one program unit of a system without affecting any other unit.  Programming Language  Programs written in a high-level programming language are generally easier to understand than programs written in a low-level language.  Programming Style  The method in which a program is written contributes to its understandability and hence, the ease with which it can be modified.
  • 10.  Program Validation and Testing  Generally, more the time and effort are spent on design validation and program testing, the fewer bugs in the program and, consequently, maintenance costs resulting from bugs correction are lower.  Maintenance costs due to bug's correction are governed by the type of fault to be repaired.  Coding errors are generally relatively cheap to correct, design errors are more expensive as they may include the rewriting of one or more program units.  Bugs in the software requirements are usually the most expensive to correct because of the drastic design which is generally involved.  Documentation  If a program is supported by clear, complete yet concise documentation, the functions of understanding the application can be associatively straight-forward.  Program maintenance costs tends to be less for well-reported systems than for the system supplied with inadequate or incomplete documentation.  Configuration Management Techniques  One of the essential costs of maintenance is keeping track of all system documents and ensuring that these are kept consistent.  Effective configuration management can help control these costs.
  • 11. MAINTENANCE ACTIVITIES  IEEE provides a framework for sequential maintenance process activities. It can be used in iterative manner and can be extended so that customized items and processes can be included.
  • 12.  These activities go hand-in-hand with each of the following phase:  Identification & Tracing - It involves activities pertaining to identification of requirement of modification or maintenance. It is generated by user or system may itself report via logs or error messages. Here, the maintenance type is classified also.  Analysis - The modification is analyzed for its impact on the system including safety and security implications. If probable impact is severe, alternative solution is looked for. A set of required modifications is then materialized into requirement specifications. The cost of modification/maintenance is analyzed and estimation is concluded.  Design - New modules, which need to be replaced or modified, are designed against requirement specifications set in the previous stage. Test cases are created for validation and verification.  Implementation - The new modules are coded with the help of structured design created in the design step.Every programmer is expected to do unit testing in parallel.
  • 13.  System Testing - Integration testing is done among newly created modules. Integration testing is also carried out between new modules and the system. Finally the system is tested as a whole, following regressive testing procedures.  Acceptance Testing - After testing the system internally, it is tested for acceptance with the help of users. If at this state, user complaints some issues they are addressed or noted to address in next iteration.  Delivery - After acceptance test, the system is deployed all over the organization either by small update package or fresh installation of the system. The final testing takes place at client end after the software is delivered.  Training facility is provided if required, in addition to the hard copy of user manual.  Maintenance management - Configuration management is an essential part of system maintenance. It is aided with version control tools to control versions, semi-version or patch management.
  • 14. SOFTWARE RE-ENGINEERING  Software Re-engineering is a process of software development which is done to improve the maintainability of a software system. Re-engineering is the examination and alteration of a system to reconstitute it in a new form. This process encompasses a combination of sub-processes like reverse engineering, forward engineering, reconstructing etc.  Re-engineering is the reorganizing and modifying existing software systems to make them more maintainable.  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.
  • 15. ACTIVITIES OF REENGINEERING  1.Decide what to re-engineer.is it whole software or a part of it?  2. perform reverse engineering in order to obtain specification of existing software .  3.Re-structure program if required. For example ,changing function oriented programs into object- oriented programs.  4.Re-structuring data is required.  5.Apply forward engineering concepts in order to get re-engineered software.
  • 16.  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.
  • 17. REVERSE ENGINEERING  Software Reverse Engineering is a process of recovering the design, requirement specifications and functions of a product from an analysis of its code. It builds a program database and generates information from this.  The purpose of reverse engineering is to facilitate the maintenance work by improving the understandability of a system and to produce the necessary documents for a legacy system.  Reverse Engineering Goals:  Cope with Complexity.  Recover lost information.  Detect side effects.  Synthesise higher abstraction.  Facilitate Reuse.
  • 18.
  • 19. STEPS OF SOFTWARE REVERSE ENGINEERING  Collection Information: This step focuses on collecting all possible information (i.e., source design documents etc.) about the software.  Examining the information: The information collected in step-1 as studied so as to get familiar with the system.  Extracting the structure: This step concerns with identification of program structure in the form of structure chart where each node corresponds to some routine.  Recording the functionality: During this step processing details of each module of the structure, charts are recorded using structured language like decision table, etc.
  • 20.  Recording data flow: From the information exA tracted in step-3 and step-4, set of data flow diagrams are derived to show the flow of data among the processes.  Recording control flow: High level control structure of the software is recorded.  Review extracted design: Design document extracted is reviewed several times to ensure consistency and correctness. It also ensures that the design represents the program.  Generate documentation: Finally, in this step, the complete documentation including SRS, design document, history, overview, etc. are recorded for future use.
  • 21. ADVANTAGE OF REVERSE ENGINEERING  Reverse engineering provides the abstract information from the detailed source code implementation.  Reverse engineering improves system documentation that is either incomplete or out of date.  It manages the complexity that is present in software programs  Reverse engineering focuses on recovering the lost information from the programs.
  • 22. SOFTWARE RESTRUCTURING  Software restructuring modifies source code and/or data in an effort to make it amenable to future changes. In general, restructuring does not modify the overall program architecture. It tends to focus on the design details of individual modules and on local data structures defined within modules. If the restructuring effort extends beyond module boundaries and encompasses the software architecture, restructuring becomes forward engineering .  Its goal is increased maintainability to better facilitate other maintenance activities, such as adding new functionality to, or correcting previously undetected errors within a software system.
  • 23.  Changes to the structure are introduced through the application of transformations.  Manually transforming the source code may introduce undesirable as well as undetectable changes in the system's behaviour. It is very difficult to ensure that manual restructuring preserves functionality and guaranteeing it is almost impossible.  Code Restructuring:-  Code restructuring is performed to yield a design that produces the same function but with higher quality than the original program. In general, code restructuring techniques model program logic using Boolean algebra and then apply a series of transformation rules that yield restructured logic.
  • 24.  Data Restructuring:-  Before data restructuring can begin, a reverse engineering activity called analysis of source code must be conducted. All programming language statements that contain data definitions, file descriptions, I/O, and interface descriptions are evaluated.  Data restructuring begins with a reverse engineering activity.  Current data architecture is dissected, and the necessary data models are defined.  Data objects and attributes are identified, and existing data structure are reviewed for quality.
  • 25.  The intent is to extract data items and objects, to get information on data flow, and to understand the existing data structures that have been implemented. This activity is sometimes called data analysis .  Process of restructuring:  Step 1: static analysis is performed ,which provides information that is used to represent code as a directed graph or associative(semantic) network. The representation may or may not be in a human readable form ; thus an automated tool is used.
  • 26.  Step 2: transformational techniques are used to refine the representation.  Step 3: refined representation is interpreted and used to generate the structured code.  Forward Engineering:-Forward Engineering is a method of creating or making an application with the help of the given requirements. Forward engineering is also known as Renovation and Reclamation. Forward engineering is required high proficiency skills. It takes more time to construct or develop an application. Forward engineering is a technique of creating high-level models or designs to make in complexities and low-level information. Therefore this kind of engineering has completely different principles in numerous package and information processes. Forward Engineering applies of all the software engineering process which contains SDLC to recreate associate existing application. It is near to full fill new needs of the users into re-engineering.
  • 27. CHARACTERISTICS OF FORWARD ENGINEERING:  Forward engineering is a variety of engineering that has different principles in numerous package and information processes.  Forward engineering is vital in IT as a result of it represents the ‘normal’ development process.  Forward engineering deals with the conversion of business processes, services, and functions into applications.  In this method business model is developed first. Then, a top-to- down approach is followed to urge the package from the model developed.  Forward engineering tools are accustomed move from implementation styles and logic to the event of supply code.  It essentially permits the user to develop a business model which may then be translated into data system components.  These tools basically follow the top-to down approach. System creator and visual Analyst is a forward engineering CASE tool.
  • 28.
  • 29.  Component reusability  A component is a part of software program code, which executes an independent task in the system. It can be a small module or sub-system itself.  Example  The login procedures used on the web can be considered as components, printing system in software can be seen as a component of the software.  Components have high cohesion of functionality and lower rate of coupling, i.e. they work independently and can perform tasks without depending on other modules.  In OOP, the objects are designed are very specific to their concern and have fewer chances to be used in some other software.  In modular programming, the modules are coded to perform specific tasks which can be used across number of other software programs.  There is a whole new vertical, which is based on re-use of software component, and is known as Component Based Software Engineering (CBSE).
  • 30.  Re-use can be done at various levels  Application level - Where an entire application is used as sub-system of new software.  Component level - Where sub-system of an application is used.  Modules level - Where functional modules are re-used.  Software components provide interfaces, which can be used to establish communication among different components.  Reuse Process  Two kinds of method can be adopted: either by keeping requirements same and adjusting components or by keeping components same and modifying requirements.
  • 31.
  • 32.  Requirement Specification - The functional and non-functional requirements are specified, which a software product must comply to, with the help of existing system, user input or both.  Design - This is also a standard SDLC process step, where requirements are defined in terms of software parlance. Basic architecture of system as a whole and its sub-systems are created.  Specify Components - By studying the software design, the designers segregate the entire system into smaller components or sub-systems. One complete software design turns into a collection of a huge set of components working together.  Search Suitable Components - The software component repository is referred by designers to search for the matching component, on the basis of functionality and intended software requirements..  Incorporate Components - All matched components are packed together to shape them as complete software.
  • 33. RELATION BETWEEN FORWARD ENGINEERING AND REVERSE ENGINEERING