Software Quality Assurance Framework
Software Quality Assurance Framework
Software Quality Assurance Framework
Framework (SQA)
CEO
CEO
Development HR Admin
Development HR Admin
Manager Manager Manager
Manager Manager Manager
SQA Project
SQA Project
Manager Manager 1
Manager Manager 1
SCM Project
SCM Project
Manager Manager 2
Manager Manager 2
Organizational Positioning of SQA
(Recommended)
CEO
CEO
Project
Project
Manager 1
Manager 1
Project
Project
Manager 2
Manager 2
Top Management Support to SQA
Department
Proper staffing and hiring
Separate budget for payroll and running expenses
Separate capital budget
Test facilities and environment
Trust and confidence
Authority
• Don’t force to close defects
• Don’t force to sign acceptance
• Act as an arbitrator for the conflicts between QA/Dev.
Components of
Quality Assurance
Components of Quality Assurance
Most software quality assurance activities can
be categorized into software testing, that is,
verification and validation, software configuration
management, and quality control.
But the success of a software quality assurance
program also depends on a coherent collection
of standards, practices, conventions, and
specifications,
as shown in Exhibit 1.1.
Exhibit 1.1. Quality Assurance
Components
Software Testing
Software testing is a popular risk
management strategy. It is used to verify
that functional requirements were met.
The limitation of this approach,
however, is that by the time testing occurs,
it is too late to build quality into the product.
Software Testing
Tests are only as good as the test cases,
but they can be inspected to ensure that
all the requirements are tested across all
possible combinations of inputs and
system states.
However, not all defects are discovered
during testing.
Software Testing
Software testing includes the activities outlined
in this text, including verification and validation
activities.
In many organizations, these activities, or their
supervision, are included within the charter for
the software quality assurance function.
The extent to which personnel independent of
design and coding should participate in software
quality assurance activities is a matter of
institutional, organizational, and project policy.
Software Testing
The major purpose of verification and validation
activities is to ensure that software design, code,
and documentation meet all the requirements
imposed on them.
Examples of requirements include user
requirements; specifications derived from and
designed to meet user requirements; code
review and inspection criteria; test requirements
at the modular, subsystem, and integrated
software levels; and acceptance testing of the
code after it has been fully integrated with
hardware.
Software Testing
During software design and implementation,
verification helps determine whether the
products of one phase of the software
development life cycle fulfill the requirements
established during the previous phase.
The verification effort takes less time and is less
complex when conducted throughout the
development process.
Quality Control
Quality control is defined as the processes
and methods used to monitor work and
observe whether requirements are met. It
focuses on reviews and removal of defects
before shipment of products.
Quality Control
Quality control should be the responsibility
of the organizational unit producing the
product.
It is possible to have the same group that
builds the product perform the quality
control function, or to establish a quality
control group or department within the
organizational unit that develops the
product.
Quality Control
Quality control consists of well-defined
checks on a product that are specified in
the product quality assurance plan.
For software products, quality control
typically includes specification reviews,
inspections of code and documents, and
checks for user deliverables.
Quality Control
Usually, document and product inspections are
conducted at each life cycle milestone to
demonstrate that the items produced are within
the criteria specified by the software quality
assurance plan.
These criteria are normally provided in the
requirements specifications, conceptual and
detailed design documents, and test plans.
The documents given to users are the
requirement specifications, design
documentation, results from the user
acceptance test, the software code, user
guide, and the operations and
maintenance guide.
Additional documents are specified in the
software quality assurance plan.
Quality control can be provided by various
sources. For small projects, the project
personnel’s peer group or the department’s
software quality coordinator can inspect the
documents.
On large projects, a configuration control board
may be responsible for quality control. The
board may include the users or a user
representative, a member of the software quality
assurance department, and the project leader.
Inspections are traditional functions of quality control,
that is, independent examinations to assess compliance
with some stated criteria.
Peers and subject matter experts review specifications
and engineering work products to identify defects and
suggest improvements.
They are used to examine the software project for
adherence to the written project rules at a project’s
milestones and at other times during the project’s life
cycle as deemed necessary by the project leader or the
software quality assurance personnel.
An inspection may be a detailed checklist for assessing
compliance or a brief checklist to determine the
existence of such deliverables as documentation. A
report stating the purpose of the inspection and the
deficiencies found goes to the project supervisor, project
leader, and project personnel for action.
Quality Control
Responsibility for inspections is stated in the
software quality assurance plan.
For small projects, the project leader or the
department’s quality coordinator can perform the
inspections.
For large projects, a member of the software
quality assurance group may lead an inspection
performed by an audit team, which is similar to
the configuration control board mentioned
previously.
Following the inspection, project personnel are
assigned to correct the problems on a specific
schedule.
Quality Control
Quality control is designed to detect and correct
defects, whereas quality assurance is oriented
toward preventing them.
Detection implies flaws in the processes that are
supposed to produce defect-free products and
services.
Quality assurance is a managerial function that
prevents problems by heading them off, and by
advising restraint and redirection.
Software Configuration Management
Testing
Any
Any
Verification
Verification: Says “Are we building the
product right?” All QC activities throughout
the life cycle that ensure that interim
deliverables meet their input specification.
Validation: Says “Are we building the right
product?” The test phase of the life cycle
which assures that the end product meets
the user’s needs.
QA
Quality assurance is the set of support
activities needed to provide adequate
confidence that processes are established
and continuously improved in order to
produce products that meet specifications
and are fit for use.
QC & Auditing
Quality control is the process by which
product quality is compared with
applicable standards and the action taken
when nonconformance is detected.
Auditing is the inspection/assessment
activity that verifies compliance with plans,
policies, and procedures.
Software quality assurance is a planned
effort to ensure that a software product
fulfills these criteria and has additional
attributes specific to the project, for
example, portability, efficiency, reusability,
and flexibility.
It is the collection of activities and
functions used to monitor and control a
software project so that specific objectives
are achieved with the desired level of
confidence.
Quality Standards
Quality Standards
The following describes the leading quality
standards for IT.
ISO9000
Capability Maturity Model (CMM)
PCMM
CMMI
Malcom Baldrige National Quality Award
RUP
Six Sigma
CMMI Introduction
There are 22 process areas,
presented here in alphabetical order by acronym:
Analysis
Analysis Functional
FunctionalSpecs
Specs Reviews
Reviews
Architecture
Architecture&&Design
Design Design
DesignSpecs
Specs Reviews
Reviews
Development
Development Code
Code&&Executables
Executables
Implement
Implement
Test
TestCases
Cases
Testing
Testing
Deployment
Deployment Deployment
DeploymentDocs
Docs Review
Review
SQA Artifacts for a Project
Dev. Artifacts SQA Artifacts SQA Artifacts
(more)
Requirement
RequirementSpecs
Specs RS
RSReviews
Reviews
Functional
FunctionalSpecs
Specs FS
FSReviews
Reviews
Test
TestPlan
Plan
Design
DesignSpecs
Specs DS
DSReviews
Reviews
Test
TestCases
Cases
Code
Code&&Executables
Executables Bug
BugReports
Reports
More
MoreTest
TestCases
Cases
Deployment
DeploymentDocs
Docs DD
DDReviews
Reviews
Communication Between SQA and
Development
Development
Development SQA
SQA
Development
Development SCM
SCM SQA
SQA
Responsibilities of Testing Team
Responsibilities of a tester
• Design test cases
• Write test scripts
• Implement test cases
Responsibility of SQA manager
• Give 25% time for reviewing test cases written
• Lead review meetings
• Resolve conflicts
Other Responsibilities of SQA