Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 58

SOFTWARE QUALITY ASSURANCE

(SQA)
Lecturer
Hira Faisal
hira.f@scocs.edu.pk
COURSE GRADING POLICY
 Assignment = 10%

 Quiz = 10%

 Presentation = 10%

 Mid-Term = 30%

 Final Exam = 40%


COURSE OUTLINE
 Week 1: Introduction to Software Quality Assurance

 Week 2: Testing and Testing Techniques

 Week 3: Project Management

 Week 4: Design with Reuse


COURSE OUTLINE…
 Week 5: Component Based Software Development

 Week 6: Software Defects I and II

 Week 7: Maintenance and Re-engineering

 Week 8: Revision

 Week 9: Mid Term – October 31, 2022


Learning Objectives
Upon completion of this material, you should be able to:

 Define Software Maintenance


 Need of Maintenance
 AIM of Software Maintenance
 Categories of Software Maintenance
 Maintenance Process
 Define software re-engineering
 The need of software re-engineering
 Software re-engineering activities

5
Software Maintenance and
Re-engineering
What is Software Maintenance?
Software Maintenance
• Software maintenance is the last stage of s/w life cycle .
• After the product has been released, the maintenance phase keeps the
s/w up to date with environment changes & changing user
requirements.
• It consumes about 40-70% of the cost of the entire life cycle.
• Maintenance can only happen efficiently if the earlier phases are done
properly.
Continue...
• Software maintenance includes error correction, enhancements of
capabilities, deletion of obsolete capabilities & optimization.
• As changes cannot be avoided, we should develop mechanism for
evaluating, controlling & making modifications.
• Hence any work done to change the s/w after its operation is
considered to be a maintenance work.
Continue....
• Software maintenance is a very broad activity that includes error corrections, enhancements of
capabilities, deletion of obsolete capabilities, and optimization.

• As per ieee, it is a modification of s/w product after delivery to correct faults, to improve
performance or other attributes or to adapt the product to a modified environment.

• As per iso, it is a set of activities performed when s/w undergoes modifications to code &
associated documentation due to a problem or the need for improvement or adaptation.
Need for Maintenance
Software Maintenance is needed for
• Correct errors.
• Change in user requirement with time.
• Changing hardware/software environment.
• To improve system efficiency — to optimize the code to run faster — to modify
the components.

• To eliminate any unwanted side effects.


• Thus, the maintenance is needed to ensure that the system continues to satisfy
user requirements.
AIM of Software Maintenance
AIM of Software Maintenance

• To correct errors.
• To enhance the s/w by changing its functions.
• To update the s/w.
• To adapt the s/w to cope with changes in the environment.
Categories of Software Maintenance
Categories of Software Maintenance

• There are four types of software maintenance:


• Corrective maintenance
• Adaptive maintenance
• Perfective maintenance
• Preventive maintenance
Corrective Maintenance

• This refer to modifications initiated by defects in the


software.
Adaptive Maintenance

•It includes modifying the software to match changes in the


ever changing environment.
Perfective maintenance

•It means improving processing efficiency or performance, or


restructuring the software to improve changeability. This
may include enhancement of existing system functionality,
improvement in computational efficiency etc.
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 an old technology
is re-engineered using new technology. This maintenance
prevents the system from dying out.
Problems During Maintenance
Problems During Maintenance
• Often the program is written by another person or group of persons.
• Often the program is changed by person who did not understand it clearly.
• Program listings are not structured.
• High staff turnover.
• Information gap.
• Systems are not designed for change.
Potential Solutions to Maintenance
Problems
Potential Solutions to Maintenance
Problems

•Budget and effort reallocation


•Complete replacement of the system
•Maintenance of existing system
The Maintenance Process
The Maintenance Process
• PROGRAM UNDERSTANDING
• GENERATING PARTICULAR MAINTENANCE PROPOSAL
• RIPPLE EFFECT
• MODIFIED PROGRAM TESTING
• MAINTAINABILITY
Program Understanding

•The first phase consists of analyzing the program in order to


understand.
Generating Particular Maintenance Proposal

•The second phase consists of generating a particular


maintenance proposal to accomplish the implementation of
the maintenance objective.
Ripple Effect

•The third phase consists of accounting for all of the ripple


effect as a consequence of program modifications.
Modified Program Testing

•The fourth phase consists of testing the modified program to


ensure that the modified program has at least the same
reliability level as before.
Maintainability
•Each of these four phases and their associated software
quality attributes are critical to the maintenance process. All
of these factors must be combined to form maintainability.
•How easy is to maintain a program depends on how easy is
to understand it.
Cost of Maintenance
Cost of Maintenance

• Software maintenance cost is derived from the changes made to


software after it has been delivered to the end user. Software does not
“wear out” but it will become less useful as it gets older, plus there
WILL always be issues within the software itself.
• Software maintenance costs typically from 40-75%.
Software Re-Engineering
What is software re-engineering?
Introduction to Software Re-Engineering

• Software re-engineering is the examination and alteration of a system to


reconstitute it in a new form. The principles of re-engineering when applied to
the software development process is called software re-engineering. It affects
positively at software cost, quality, service to the customer and speed of delivery.
In software re-engineering, we are improving the software to make it more
efficient and effective. 
Continue….

• Software re-engineering is concerned with taking existing legacy systems and re-implementing
them to make them more maintainable.

• The critical distinction between re-engineering and new software development is the starting
point for the development as shown in fig:
The need of software re-engineering
The need of software re-engineering
• The software reengineering is necessary for having:
• Boost up productivity
•  Processes in continuity
• Improvement opportunity
• Reduction in risks
• Saves time
• Optimization
Boost up productivity

•Software reengineering increase productivity by optimizing


the code and database so that processing gets faster.
Processes in continuity

• The functionality of older software product can be still used


while the testing or development of software.
Improvement opportunity
•Meanwhile the process of software reengineering, not only
software qualities, features and functionality but also your
skills are refined, new ideas hit in your mind. This makes the
developers mind accustomed to capturing new opportunities
so that more and more new features can be developed.
Reduction in risks
•Instead of developing the software product from scratch or
from the beginning stage here developers develop the
product from its existing stage to enhance some specific
features that are brought in concern by stakeholders or its
users. Such kind of practice reduces the chances of fault
fallibility.
Saves time

•As we stated above here that the product is developed from


the existing stage rather than the beginning stage so the time
consumes in software engineering is lesser.
Optimization

•This process refines the system features, functionalities and


reduces the complexity of the product by consistent
optimization as maximum as possible.
Re-engineering cost factors: 

• The quality of the software to be re-engineered.


• The tool support availability for engineering.
• The extent of the data conversion which is required.
• The availability of expert staff for re-engineering.
Software re-engineering activities
Software re-engineering activities
1. Inventory analysis: 
• Every software organization should have an inventory of all the applications.  
• Inventory can be nothing more than a spreadsheet model containing information
that provides a detailed description of every active application.

• By sorting this information according to business criticality, longevity, current


maintainability and other local important criteria, candidates for re-engineering
appear.

• The resource can then be allocated to a candidate application for re-engineering


work.
2. Document reconstructing: 
• Documentation of a system either explains how it operates or how to
use it. 
• Documentation must be updated.
• It may not be necessary to fully document an application.
• The system is business-critical and must be fully re-documented.
3. Reverse engineering: 

•Reverse engineering is a process of design recovery. Reverse


engineering tools extract data, architectural and procedural
design information from an existing program. 
4. Code reconstructing: 

• To accomplish code reconstructing, the source code is analyzed using


a reconstructing tool. Violations of structured programming construct
are noted and code is then reconstructed.
• The resultant restructured code is reviewed and tested to ensure that
no anomalies have been introduced.
5. Data restructuring: 
• 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.
6. Forward engineering
•Forward engineering also called as renovation or
reclamation not only for recovers design information from
existing software but uses this information to alter or
reconstitute the existing system in an effort to improve its
overall quality.
Advantages of software re-engineering
Advantages of software re-engineering

• Reduced risk: As the software is already existing, the risk


is less as compared to developing a new software.
• Reduced cost: the cost of re-engineering is significantly
less than the cost of developing a new software.
Comparison of new software development
with re-engineering
• The following suggestions may be useful for the modification of the legacy code:
• Study code well before attempting changes
• Concentrate on overall control flow and not coding
• Heavily comment internal code.
• Create cross references
• Build symbol tables
• Use own variables, constants and declarations to localize the effect
• Keep detailed maintenance document
• Use modern design techniques

You might also like