0% found this document useful (0 votes)
66 views17 pages

Software Engineering - Presentation For Group 1 Edited

This document discusses software maintenance and re-engineering. It defines software maintenance as the process of changing, modifying, and updating software to meet customer needs and remain competitive. There are various types of software maintenance including corrective, adaptive, perfective, and preventative. The document also discusses the software re-engineering process which involves reverse engineering existing software, restructuring code if needed, and forward engineering to develop new features. Re-engineering helps reduce risks and costs compared to new development.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views17 pages

Software Engineering - Presentation For Group 1 Edited

This document discusses software maintenance and re-engineering. It defines software maintenance as the process of changing, modifying, and updating software to meet customer needs and remain competitive. There are various types of software maintenance including corrective, adaptive, perfective, and preventative. The document also discusses the software re-engineering process which involves reverse engineering existing software, restructuring code if needed, and forward engineering to develop new features. Re-engineering helps reduce risks and costs compared to new development.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 17

WITH FOCUS ON

SOFTWARE
MAINTENANCE AND
SOFTWARE RE-
ENGINEERING
MWAITA KUDAKWASHE DAWN M196953
ZHAKATA LAINAH M197505

CHIDAU ALLEN M197232


CHABAYA DEMOCRACY M198204
KASHUWARE BRILLIANT M198070
SOFTWARE DEVELOPMENT LIFE CYCLE
• This is the application of standard business practices to building software applications.
SOFTWARE MAINTENANCE
• SOFTWARE MAINTENANCE IS A NATURAL PART OF SDLC (SOFTWARE DEVELOPMENT LIFE
CYCLE). SOFTWARE DEVELOPERS DON’T HAVE THE LUXURY OF LAUNCHING A PRODUCT
AND LETTING IT RUN, THEY CONSTANTLY NEED TO BE ON THE LOOKOUT TO BOTH
CORRECT AND IMPROVE THEIR SOFTWARE TO REMAIN COMPETITIVE AND RELEVANT.
• SOFTWARE MAINTENANCE IS THE PROCESS OF CHANGING, MODIFYING, AND UPDATING
SOFTWARE TO KEEP UP WITH THE CUSTOMER NEEDS.
SOFTWARE MAINTENANCE
Stands for all the modifications and updating done after the delivery of the software
product. There are number of reasons, why modifications are required, some of them
are briefly mentioned below:

Market Conditions - Policies, which changes over the time, such as taxation and newly
introduced constraints like, how to maintain bookkeeping, may trigger need for
modification.
Client Requirements - Over the time, customer may ask for new features or functions
in the software.
Host Modifications - If any of the hardware and/or platform (such as operating system)
of the target host changes, software changes are needed to keep adaptability.
Organization Changes - If there is any business level change at client end, such as
reduction of organization strength, acquiring another company, organization venturing
into new business, need to modify in the original software may arise.
TYPES OF SOFTWARE MAINTANANCE
TYPES OF SOFTWARE MAINTANANCE
CORRECTIVE MAINTENANCE
IS CONCERNED WITH FIXING ERRORS THAT ARE OBSERVED WHEN THE SOFTWARE IS IN USE. IT IS
WHAT ONE WOULD TYPICALLY ASSOCIATE WITH THE MAINTENANCE OF ANY KIND. IT ADDRESSES
THE ERRORS AND FAULTS WITHIN THE SOFTWARE THAT INCLUDE: THE DESIGN, THE LOGIC, AND
CODE
ADAPTIVE MAINTENANCE
IS CONCERNED WITH THE CHANGE IN THE SOFTWARE THAT TAKES PLACE TO MAKE THE SOFTWARE
ADAPTABLE TO NEW ENVIRONMENTS. ADAPTIVE SOFTWARE MAINTENANCE BECOMES IMPORTANT
WHEN THE ENVIRONMENT OF YOUR SOFTWARE CHANGES. THIS CAN BE BROUGHT ON BY
CHANGES TO THE OPERATING SYSTEM, HARDWARE, SOFTWARE DEPENDENCIES, CLOUD
STORAGE, OR EVEN CHANGES WITHIN THE OPERATING SYSTEM. SOMETIMES, ADAPTIVE
SOFTWARE MAINTENANCE REFLECTS ORGANIZATIONAL POLICIES OR RULES AS WELL. UPDATING
SERVICES, MAKING MODIFICATIONS TO VENDORS, OR CHANGING PAYMENT PROCESSORS CAN
ALL NECESSITATE ADAPTIVE SOFTWARE MAINTENANCE.
TYPES OF SOFTWARE MAINTANANCE
PERFECTIVE MAINTENANCE
IS CONCERNED WITH THE CHANGE IN THE SOFTWARE THAT OCCURS WHILE ADDING NEW
FUNCTIONALITIES IN THE SOFTWARE. IT FOCUSES ON THE EVOLUTION OF REQUIREMENTS AND
FEATURES THAT EXIST IN YOUR SYSTEM. THIS INCLUDES SUGGESTIONS OF NEW FEATURES, BY
ADDING FEATURES THAT CAN ENHANCE USER EXPERIENCE AND REMOVING FEATURES THAT ARE
NOT EFFECTIVE AND FUNCTIONAL.
PREVENTIVE MAINTENANCE
INVOLVES IMPLEMENTING CHANGES TO PREVENT THE OCCURRENCE OF ERRORS. THE FOCUS OF
THE TYPE OF MAINTENANCE IS TO PREVENT THE DETERIORATION OF YOUR SOFTWARE AS IT
CONTINUES TO ADAPT AND CHANGE. THESE SERVICES CAN INCLUDE OPTIMIZING CODE AND
UPDATING DOCUMENTATION AS NEEDED. PREVENTATIVE SOFTWARE MAINTENANCE HELPS TO
REDUCE THE RISK ASSOCIATED WITH OPERATING SOFTWARE FOR A LONG TIME, HELPING IT TO
BECOME MORE STABLE, UNDERSTANDABLE, AND MAINTAINABLE.
ADVANTAGES OF SOFTWARE MAINTANACE
IMPROVE PERFORMANCE
• UPGRADES TYPICALLY ATTEND TO ISSUES REPORTED BY OTHER SOFTWARE USERS AND
CAN GREATLY ENHANCE FUNCTIONALITY OR PERFORMANCE.
ADAPT TO A CHANGING ENVIRONMENT
• TECHNOLOGY AND THE BUSINESS ENVIRONMENT ARE THE TWO OF THE FASTEST
CHANGING ELEMENTS OF OUR WORLD. IT IS INCREASINGLY IMPORTANT TO MAKE
SURE THAT YOUR BUSINESS IS ALWAYS TAKING ADVANTAGE OF THE VERY BEST THAT
YOUR SOFTWARE HAS TO PROVIDE AND THAT YOUR SOFTWARE MATCHES THE
BUSINESS DEMANDS OF THE TIME. REGULAR UPDATES AND MAINTENANCE WILL
ENABLE YOU TO KEEP UP WITH MARKET TRENDS AND GUARANTEE YOUR BUSINESS IS
AS RELIABLE AND EFFICIENT AS IT CAN BE.
THE SOFTWARE MAINTENANCE PROCESS
THE SOFTWARE MAINTENANCE PROCESS
 
1. IDENTIFICATION & TRACING – THE PROCESS OF DETERMINING WHAT PART OF THE SOFTWARE NEEDS TO BE MODIFIED (OR
MAINTAINED). THIS CAN BE USER-GENERATED OR THR SYSTEM MAY ITSELF REPORT VIA LOGS OR ERROR MESSAGES.

2. ANALYSIS – THE PROCESS OF ANALYZING THE SUGGESTED MODIFICATION INCLUDING UNDERSTANDING THE POTENTIAL
EFFECTS OF SUCH A CHANGE. THIS STEP TYPICALLY INCLUDES COST ANALYSIS TO UNDERSTAND IF THE CHANGE IS
FINANCIALLY WORTHWHILE.

3. DESIGN – DESIGNING THE NEW CHANGES USING REQUIREMENT SPECIFICATIONS, TEST CASES ARE CREATED FOR
VALIDATION AND VERIFICATION.

4. IMPLEMENTATION – THE PROCESS OF IMPLEMENTING THE NEW MODULES BY PROGRAMMERS.

5. SYSTEM TESTING – BEFORE BEING LAUNCHED, THE SOFTWARE AND SYSTEM MUST BE TESTED. THIS INCLUDES THE MODULE
ITSELF, THE SYSTEM AND THE MODULE, AND THE WHOLE SYSTEM AT ONCE.

6. ACCEPTANCE TESTING- USERS TEST THE MODIFICATION FOR ACCEPTANCE. THIS IS AN IMPORTANT STEP AS USERS CAN
IDENTIFY ONGOING ISSUES AND GENERATE RECOMMENDATIONS FOR MORE EFFECTIVE IMPLEMENTATION AND CHANGES.

7. DELIVERY – SOFTWARE UPDATES OR IN SOME CASES NEW INSTALLATION OF THE SOFTWARE. THIS IS WHEN THE CHANGES
ARRIVE AT THE CUSTOMERS.
SOFTWARE RE-ENGINEERING
SOFTWARE REENGINEERING IS THE PROCESS OF UPDATING SOFTWARE. THIS PROCESS INCLUDES DEVELOPING
ADDITIONAL FEATURES ON THE SOFTWARE AND ADDING FUNCTIONALITIES FOR BETTER AND MORE EFFICIENT
SOFTWARE.
Steps involved in Re-engineering:

a) Decide what to re-engineer. Is it whole software or a part of it?


b) Perform Reverse Engineering, in order to obtain specifications of existing software.
c) Restructure Program if required. For example, changing function-oriented programs into object-oriented
programs.
d) Re-structure data as required.
e) Apply Forward engineering concepts in order to get re-engineered software.
SOFTWARE RE-ENGINEERING
1. Reverse engineering
IT IS A PROCESS TO ACHIEVE SYSTEM SPECIFICATION BY THOROUGHLY ANALYZING,
UNDERSTANDING THE EXISTING SYSTEM. THIS PROCESS CAN BE SEEN AS REVERSE SDLC
MODEL.

AN EXISTING SYSTEM IS PREVIOUSLY IMPLEMENTED DESIGN, ABOUT WHICH WE KNOW NOTHING.


DESIGNERS THEN DO REVERSE ENGINEERING BY LOOKING AT THE CODE AND TRY TO GET THE
DESIGN. WITH DESIGN IN HAND, THEY TRY TO CONCLUDE THE SPECIFICATIONS. THUS, GOING IN
REVERSE FROM CODE TO SYSTEM SPECIFICATION.
SOFTWARE RE-ENGINEERING
Re-structuring
IT IS A PROCESS TO RE-STRUCTURE AND RE-CONSTRUCT THE EXISTING SOFTWARE. IT IS ALL
ABOUT RE-ARRANGING THE SOURCE CODE, EITHER IN SAME PROGRAMMING LANGUAGE OR FROM
ONE PROGRAMMING LANGUAGE TO A DIFFERENT ONE. RESTRUCTURING CAN HAVE EITHER
SOURCE CODE-RESTRUCTURING AND DATA-RESTRUCTURING OR BOTH.

RE-STRUCTURING DOES NOT IMPACT THE FUNCTIONALITY OF THE SOFTWARE BUT ENHANCE
RELIABILITY AND MAINTAINABILITY. PROGRAM COMPONENTS, WHICH CAUSE ERRORS VERY
FREQUENTLY CAN BE CHANGED, OR UPDATED WITH RE-STRUCTURING.

THE DEPENDABILITY OF SOFTWARE ON OBSOLETE HARDWARE PLATFORM CAN BE REMOVED VIA


RE-STRUCTURING.
SOFTWARE RE-ENGINEERING
Forward engineering
FORWARD ENGINEERING IS A PROCESS OF OBTAINING DESIRED SOFTWARE FROM THE
SPECIFICATIONS IN HAND WHICH WERE BROUGHT DOWN BY MEANS OF REVERSE ENGINEERING. IT
ASSUMES THAT THERE WAS SOME SOFTWARE ENGINEERING ALREADY DONE IN THE PAST.

FORWARD ENGINEERING IS SAME AS SOFTWARE ENGINEERING PROCESS WITH ONLY ONE


DIFFERENCE – IT IS CARRIED OUT ALWAYS AFTER REVERSE ENGINEERING.
SOFTWARE RE-ENGINEERING
Re-structuring
IT IS A PROCESS TO RE-STRUCTURE AND RE-CONSTRUCT THE EXISTING SOFTWARE. IT IS ALL
ABOUT RE-ARRANGING THE SOURCE CODE, EITHER IN SAME PROGRAMMING LANGUAGE OR FROM
ONE PROGRAMMING LANGUAGE TO A DIFFERENT ONE. RESTRUCTURING CAN HAVE EITHER
SOURCE CODE-RESTRUCTURING AND DATA-RESTRUCTURING OR BOTH.

RE-STRUCTURING DOES NOT IMPACT THE FUNCTIONALITY OF THE SOFTWARE BUT ENHANCE
RELIABILITY AND MAINTAINABILITY. PROGRAM COMPONENTS, WHICH CAUSE ERRORS VERY
FREQUENTLY CAN BE CHANGED, OR UPDATED WITH RE-STRUCTURING.

THE DEPENDABILITY OF SOFTWARE ON OBSOLETE HARDWARE PLATFORM CAN BE REMOVED VIA


RE-STRUCTURING.
Advantages of Re-engineering:
1. 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.
2. Reduced Cost: The cost of re-engineering is less than the costs of developing new software.
3. Revelation of Business Rules: As a system is re-engineered, business rules that are embedded in the system
are rediscovered.
4. Better use of Existing Staff: Existing staff expertise can be maintained and extended accommodate new skills
during re-engineering.

Disadvantages of Re-engineering:
5. Practical limits to the extent of re-engineering.
6. Major architectural changes or radical reorganizing of the systems data management has to be done manually.
7. Re-engineered system is not likely to be as maintainable as a new system developed using modern software
Re-engineering methods.
 

You might also like