Ooad Unit 5

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

OBJECT ORIENTED ANALYSIS &

DESIGN
CS3C015
UNIT- 5
Object Oriented Testing, Types of Testing, Quality Assurance
Methods, Reusability, Reverse Engineering, Case Studies.
OBJECT ORIENTED TESTING

OOT is a software testing process that is conducted to test


the software using object oriented paradigm like:
1. Encapsulation

2. Inheritance

3. Polymorphism

Note: classes will be tested.


TESTING ACTIVITIES
Subsystem Requirements
Unit System
Code Test Analysis
Design Document
Tested Document User
Subsystem
Subsystem Manual
Unit
Code Test
Tested Integration Functional
Subsystem
Test Test
Integrated Functioning
Subsystems System

Tested Subsystem

Subsystem Unit
Code Test
All tests by developer
Cf. levels of testing
TESTING ACTIVITIES CONTINUED
Client’s
Global Understanding User
Requirements of Requirements Environment

Functioning Validated Accepted


System PerformanceSystem System
Acceptance Installation
Test Test Test

Usable
Tests by client System
Tests by developer
User’s understanding
System in
Use
Tests (?) by user
NOTE:-
READ ALL THE TESTING EXPLAINED IN TESTING
ACTIVITY
DEVELOPING TEST CASES
1. It should be explicitly specified with each test case
which class it should test.
2. Purpose of each test case should be mentioned.
3. External conditions that should exist while conducting
a test should be clearly stated.
4. All the states of objects that is to be tested should be
specified.
5. Instructions to understand and conduct the test cases
should be provided with each test case.
VERIFICATION AND VALIDATION
VERIFICATION

Verification in Software Testing is a process of checking


documents, design, code, and program in order to check if the
software has been built according to the requirements or not.
The main goal of verification process is to ensure quality of
software application, design, architecture etc. The verification
process involves activities like reviews, walk-throughs and
inspection.
Inspections
Reviews
Walkthroughs
Desk-checking
VALIDATION
Validation in Software Engineering is a dynamic
mechanism of testing and validating if the software product
actually meets the exact needs of the customer or not. The
process helps to ensure that the software fulfills the desired
use in an appropriate environment. The validation process
involves activities like unit testing, integration testing,
system testing and user acceptance testing.

Black box testing


White box testing
Unit testing
Integration testing
Verification Validation
We check whether we are developing the right product We check whether the developed product is right.
or not.
Verification is also known as static testing. Validation is also known as dynamic testing.

Verification includes different methods like Validation includes testing Next


like functional
Topic testing,
Inspections, Reviews, and Walkthroughs. system testing, integration, and User acceptance
testing.
It is a process of checking the work-products (not the It is a process of checking the software during or at the
final product) of a development cycle to decide end of the development cycle to decide whether the
whether the product meets the specified requirements. software follow the specified business requirements.

Quality assurance comes under verification testing. Quality control comes under validation testing.

The execution of code does not happen in the In validation testing, the execution of code happens.
verification testing.
In verification testing, we can find the bugs early in the In the validation testing, we can find those bugs, which
development phase of the product. are not caught in the verification process.

Verification testing is executed by the Quality Validation testing is executed by the testing team to
assurance team to make sure that the product is test the application.
developed according to customers' requirements.

Verification is done before the validation testing. After verification testing, validation testing takes
place.
In this type of testing, we can verify that the inputs In this type of testing, we can validate that the user
follow the outputs or not. accepts the product or not.
SOFTWARE QUALITY

• Quality is defined as a characteristics or attributes of


something where as attributes refer to measurable
characteristics-things that we are able to compare to
known standards.
• There are two kinds of quality:
– Quality of design refers to the characteristics that designers
specify for an item. The grade of materials, tolerances and
performance specifications all contribute to the quality of
design.
– Quality of conformance is the degree to which the design
specifications are followed during manufacturing. Greater the
degree of conformance, the higher is the level of quality of
conformance

18
SOFTWARE QUALITY
• Software quality is defined as conformance to explicitly stated
functional and performance requirements, explicitly
documented development standards, and implicit
characteristics that are expected of all professionally
developed software.
• “In the context of software engineering, software quality
measures how well the software is designed (quality of
design), and how well the software conforms to that design
(quality of conformance). It is often described as the ‘fitness
for purpose’ of a piece of software.”

19
SOFTWARE QUALITY
 Example: Consider a functionally correct software
product. That is, it performs all tasks as specified in the
SRS document. But, has an almost unusable user
interface. Even though it may be functionally right, we
cannot consider it to be a quality product.
SOFTWARE QUALITY
It emphasize three points
1. Software requirements are the foundation from which
quality is measured.
2. Specified standards define a set of development
criteria.
3. Set of implicit requirement.
MCCALL’S QUALITY FACTORS(11)
PRODUCT OPERATION
 Correctness : The extent to which a program satisfies its
specification and fulfils the customers mission objectives
 Reliability :  The extent to which a program can be
expected to perform its intended function with required
precision
 Usability : The effort required to learn , operate , prepare
input for and interpret output of a program
 Integrity :  The extent to which access to software or
data by unauthorized person can be controlled
 Efficiency :  The amount of computing resources and
code required by a program to perform its function.
PRODUCT REVISION
 Maintainability : The effort required to locate and fix an
error in a program
 Flexibility : The effort required to modify an operational
program
 Testability :  The effort required to test a program to
ensure that it performs its intended function
PRODUCT TRANSITION
 Portability :  The effort required to transfer the program
from one hardware and/or software system environment
to another
 Reusability :  The extent to which a program can be
reused in other application related to the packaging and
scope of the functions that the program performs
 Interoperability : The effort required to couple one
system to another
ASSURANCE
 Assurance is nothing but a positive declaration on a
product or service, which gives confidence. It is certainty
of a product or a service, which it will work well. It
provides a guarantee that the product will work without
any problems as per the expectations or requirements.
SOFTWARE QUALITY ASSURANCE(SQA)

• Software quality assurance (SQA ) is defined as a procedure


to ensure the quality of software products or services provided
to the customers by an organization. Quality assurance
focuses on improving the software development process and
making it efficient and effective as per the quality standards
defined for software products.
• is an umbrella activity that is applied throughout the software
process.

27
SQA
• SQA encompasses:
– A quality management approach
– Effective software engineering technology
– Formal technical reviews
– Multi-tier testing strategy
– Control of software documentation and the changes
made to it
– A procedure to ensure compliance with software
development standards
– Measurement and reporting mechanism
HOW TO DO QUALITY ASSURANCE:

Quality Assurance methodology has a defined cycle called


PDCA cycle or Deming cycle. The phases of this cycle are:

1. Plan
2. Do
3. Check
4. Act
HOW TO DO QUALITY ASSURANCE:
 Plan – Organization should plan and establish the
process related objectives and determine the processes
that are required to deliver a high-Quality end product.
 Do – Development and testing of Processes and also
“do” changes in the processes
 Check – Monitoring of processes, modify the processes,
and check whether it meets the predetermined objectives
 Act – A Quality Assurance tester should implement
actions that are necessary to achieve improvements in
the processes
QUALITY ASSURANCE VS. QUALITY
CONTROL
Quality Assurance Quality Control

Quality Assurance (QA) is the set of actions including facilitation, training, Quality Control (QC) is described as the processes and methods used to
measurement, and analysis needed to provide adequate confidence that compare product quality to requirements and applicable standards, and the
processes are established and continuously improved to produce products or actions are taken when a nonconformance is detected.
services that conform to specifications and are fit for use.

QA is an activity that establishes and calculates the processes that produce the QC is an activity that demonstrates whether or not the product produced met
product. If there is no process, there is no role for QA. standards.

QA helps establish process QC relates to a particular product or service

QA sets up a measurement program to evaluate processes QC verified whether particular attributes exist, or do not exist, in a explicit
product or service.

QA identifies weakness in processes and improves them QC identifies defects for the primary goals of correcting errors.

Quality Assurance is a managerial tool. Quality Control is a corrective tool.

Verification is an example of QA. Validation is an example of 


SQA APPROACHES
1. Defect management approach
2. Quality attribute approach
SOFTWARE QUALITY DEFECT
MANAGEMENT APPROACH
 The defect management approach works by counting
and managing defects. Defects encompass a large range
of errors from poor data handling to bad code.
 In defect management, once your development team has
identified a defect, they assign it a category given the
severity of the defect. Then, the team takes specific
actions to address the counted defects. 
 Usually, such an approach operates best with clear and
concise control charts to measure and improve
development process capability. Process capability
determines how well processes manage to meet
standards. 
SOFTWARE QUALITY ATTRIBUTES
APPROACH
 The quality attributes approach directs attention to a
number of quality characteristics. Depending on who
you ask, there are between six and a dozen or more of
these characteristics. 
 This is likely because some attributes overlap or fall
under one another. For instance, suitability is a matter of
functionality. And usability extends learnability. 
SOFTWARE QUALITY ATTRIBUTES APPROACH

That said, just these six basic attributes will cover what


you need to know for the moment:
 Functionality 

 Reliability

 Usability 

 Efficiency

 Maintainability

 Portability
BENEFITS OF SQA
 SQA produce high quality software.
 High quality application saves time and cost.

 SQA is beneficial for better reliability.

 SQA is beneficial in the condition of no maintenance for


long time.
 High quality commercial software increase market share
of company.
 Improving the process of creating software.

 Improves the quality of the software.


REUSABILITY IN OOAD
The ability to reuse relies in an essential way on the
ability to build larger things from smaller parts, and
being able to identify commonalities among those
parts. ... Reusability implies some explicit
management of build, packaging, distribution,
installation, configuration, deployment,
maintenance and upgrade issues.
WHAT IS THE PURPOSE OF
REUSABILITY?

  Reusability is a major contributor to the


development goal of achieving high speed, low
cost and quality. Usually, it is better and faster to
employ proven off-the-shelf designs rather than
specially-crafted designs that might have problems.
WHAT IS REUSABILITY IN OOAD?

 Reusability is the use of existing assets in some


form within the software product development
process. Assets are products and by products of
the software development life cycle and include
code, software components, test suites, designs
and documentation.
 Why is reusability important in Ooad?
WHY IS REUSABILITY IMPORTANT IN
OOAD?

 In object-oriented systems, assessing reusability


plays a key role in reducing a cost and
improving the quality of the software.
Objectoriented programming helps in achieving the
concept of reusability through different types of
inheritance programs, which further help in
developing reusable software modules.
WHAT IS REUSE SOFTWARE ENGINEERING?

 Reuse software engineering is based on guidelines and


principles for reusing the existing software.
What are stages of reuse-oriented software
engineering?
Requirement specification:
First of all, specify the requirements. This will help to
decide that we have some existing software components
for the development of software or not.
Component analysis
Helps to decide that which component can be reused
where.
STAGES OF REUSE-ORIENTED SOFTWARE
ENGINEERING
STAGES OF REUSE-ORIENTED
SOFTWARE ENGINEERING
 Requirement updations / modifications. -If the
requirements are changed by the customer, then still
existing components are helpful for reuse or not.
 Reuse System design-If the requirements are changed
by the customer, then still existing system designs are
helpful for reuse or not.
 Development-Existing components are matching with
new software or not.
 Integration-Can we integrate the new systems with
existing components?
 System validation-To validate the system that it can be
accepted by the customer or not.
SOFTWARE 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.
STEPS OF SOFTWARE REVERSE
ENGINEERING:
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.
Thank you

You might also like