You are on page 1of 26

What is Software Quality

What is Software Quality


 “Quality is totality of features and characteristics of a product or service that
bears on its ability to satisfy the given needs” by ANSI (ANSI/ASQC A3/1978).

 Using IEEE Standard (IEEE Std 729-1983):


1. The totality of features and characteristics of a software product that bear on its
ability to satisfy given needs: for example, conform to specifications.
2. The degree to which software possesses a desired combinations of attributes.
3. The degree to which a customer and user perceives that software meets his or her
composite expectations.
4. The composite characteristics of software that determine the degree to which the
software will meet the expectations of the customer.
Quality Assurance v/s Quality Control
Quality Assurance v/s Quality Control

In general, quality control is a set of activities to


ensure that developed software product is
conforming customer specifications.

In general, quality assurance is a set of activities to


ensure that developing software complies with
defined or standardized quality specifications.
What is Quality Control
 Quality control is corrective approach, and we use it after finishing
product development.
 It is the evaluation of end product before giving it to the customer.
 With the help of this approach, we can improve the processes which is
used in quality assurance.
 When we evaluate and conclude that the product is conforming customer
specifications, we hand it over to the market to sell but if it fails, we
come to know that which process is wrong.
 We do root cause analysis of the problem, correct the problem and make
the corrections in the part of processes. This is how we establish
continuous improvement program.
 Each time we evaluate, find, fix and document the fixed problem for
further development.
What is Quality Assurance

 Software Quality Assurance is a set of activities for ensuring quality in


software engineering processes.
 It ensures that developed software meets and complies with defined or
standardized quality specifications.
 Rather than checking for quality after completion, SQA processes test
for quality in each phase of development, until the software is complete.
 With SQA, the software development process moves into the next phase
only once the current/previous phase complies with the required quality
standards.
Quality Assurance v/s Quality Control

Quality Control (QC) Quality Assurance (QA)


Correction (Reactive) Prevention (Proactive)
Product Process
Confidence to producer Confidence to Customer
Find Defects Prevent Defects
Quality Assurance at each phase of SDLC
Phases of SDLC
Quality during Requirement and Analysis
Software Requirements

 Generally, Requirements describe how a system should act, appear


or perform.
 For this, when users request for software, they provide an
approximation of what the new system should be capable of doing.
 Requirements differ from one user to another and from one business
process to another.
Types of Software Requirements

Broadly Software requirements


categorized in two categories:
1. Functional Requirements
2. Non- Functional Requirements
Functional Requirements
In software engineering, a functional requirement defines a system or its
component. It describes the functions a software must perform. A function is
nothing but inputs, its behavior, and outputs. It can be a calculation, data
manipulation, business process, user interaction, or any other specific
functionality which defines what function a system is likely to perform.

Examples:
 The software automatically validates customers against the ABC Contact
Management System
 The Sales system should allow users to record customers sales
 The background color for all windows in the application will be blue and
have a hexadecimal RGB color value of 0x0000FF.
 Only Managerial level employees have the right to view revenue data.
 The software system should be integrated with banking API.
Non- Functional Requirements
A non-functional requirement defines the quality attribute of a software
system. They represent a set of standards used to judge the specific
operation of a system. Example, how fast does the website load?
A non-functional requirement is essential to ensure the usability and
effectiveness of the entire software system. Failing to meet non-functional
requirements can result in systems that fail to satisfy user needs .
Examples:
 Users must change the initially assigned login password immediately after the first
successful login. Moreover, the initial should never be reused.
 Employees never allowed to update their salary information. Such attempt should be
reported to the security administrator.
 A website should be capable enough to handle 20 million users without affecting its
performance
 The software should be portable. So moving from one OS to other OS does not
create any problem.
Non- Functional Requirements
Non- Functional Requirements includes:
 Security
 Logging
 Storage
 Configuration
 Performance
 Cost
 Interoperability
 Flexibility
 Disaster recovery
 Accessibility
Software Requirements
The IEEE Standard glossary of Software Engineering terminology
defines a requirement as:
1. A condition or capability needed by a user to solve a problem or
achieve an objective.
2. A condition or capability that must be met or possessed by a
system or system component to satisfy a contract, standards
specifications or other formally imposed document.
3. Documented representation of a condition or capability to solve a
problem by system or to satisfy a contract, standard specifications
or other formally imposed document.
Requirement Engineering Process

It is a four-step process, which includes:


1. Feasibility Study
2. Requirement Gathering
3. System/Software Requirement Specification
4. Software Requirement Verification
Feasibility Study

 When the client approaches the organization for getting the


desired product developed, it comes up with rough idea about
what all functions the software must perform and which all
features are expected from the software.
 Referencing to this information, the analysts does a detailed
study about whether the desired system and its functionality are
feasible to develop.
 This feasibility study is focused towards goal of the organization.
Feasibility Study

 This study analyzes whether the software product can be practically


materialized in terms of implementation, contribution of project to
organization, cost constraints and as per values and objectives of the
organization.
 It explores technical aspects of the project and product such as
usability, maintainability, and productivity and integration ability.
 The output of this phase should be a feasibility study report that
should contain adequate comments and recommendations for
management about whether or not the project should be undertaken.
Requirement Gathering and Analysis

 If the feasibility report is positive towards undertaking the project,


next phase starts with gathering requirements from the user.
 Analysts and engineers communicate with the client and end-users
to know their ideas on what the software should provide, and which
features they want the software to include.
Software Requirement Specification
The obvious attributes for specifications are listed below:
 Correct
 Consistent
 Complete
 Unambiguous
 Minimal
 Formal
 Verifiable
 Transformable
 Modifiable
 Traceable
Output

 System Requirement Specifications


Quality During Design
Checklist for Software Design Description
Following are few checklist points:

 Have we addressed all the requirements mentioned in SRS?


 Has the SRS been put under document control?
 Are the design stated (reliability, flexibility, maintainability etc.)?
 Is the design document clear and technically justified?
 Are the interfaces well defined?
 Are the data structures and algorithms are well defined?
 Does design Satisfy every requirement?
 Does functionality exist within another procedure or library function-reuse?
Output

 System Design Specifications


Quality in Software Support Projects

 User Documentation, including online help Text


 Packaging and distribution arrangements
 Implementation and customization service
 Product Training
 Help desk assistance
 Error reporting and correction
 Enhancements

You might also like