Unit-1 Software Quality
Unit-1 Software Quality
Agenda
Disadvantages of SQA
1) Time-consuming (Testing and deployment takes more time)
2) High cost (required more resources for betterment of product)
3) Challenging to implement sometimes
Software Quality Factor
Software quality factors, often referred to as software quality attributes or
software quality characteristics, are the measurable properties of a software
product that indicate its overall quality.
The various factors, that influence the software, are termed as software factors.
These factors are crucial for assessing the effectiveness, reliability, maintainability,
and overall performance of software systems
They can be broadly divided into two categories.
Factors that can be directly measured (ex. Defects per function point)
Factors that can be measured only indirectly (ex. Usability or maintainability)
The classic model of software quality factors, suggested by McCall, consists of 11
factors.
McCall Model
Product Operation Software Quality Factors
1) Correctness
This refers to the ability of the software to perform its intended functions correctly
and effectively.
These requirements deal with the correctness of the output of the software system.
The extent to which a program satisfies its specification and fulfills the customer’s
mission objectives.
They include −
Output mission
The required accuracy of output that can be negatively affected by
inaccurate data or inaccurate calculations.
The completeness of the output information, which can be affected by
incomplete data.
The availability of the information.
The standards for coding and documenting the software system.
2) Reliability
Reliability refers to the ability of the software to perform consistently under various
conditions and for a specified period. It involves measures such as fault tolerance,
error handling, and failure recovery.
Reliability requirements deal with service failure. They determine the maximum
allowed failure rate of the software system and can refer to the entire system or one
or more of its separate functions.
3) Efficiency
Efficiency relates to how well the software utilizes system resources such as
memory, processor time, and network bandwidth to accomplish its tasks. It involves
factors like speed, scalability, and resource consumption.
4) Integrity
This factor deals with the software system security, that is, to prevent access to
unauthorized persons, also to distinguish between the group of people to be given
read as well as write permit.
5) Usability
Usability measures how easy it is for users to learn and use the software.
Usability requirements deal with the staff resources needed to train a new employee
and to operate the software system.
Efforts required to learn, operate, prepare input, and interpret output of a program.
Product Revision Quality Factors
1) Maintainability
Efforts required to locate and fix an error in a program.
This factor considers the efforts that will be needed by users and maintenance
personnel to identify the reasons for software failures, to correct the failures, and to
verify the success of the corrections.
2) Flexibility
Efforts required to modify an operational program.
This factor deals with the capabilities and efforts required to support adaptive
maintenance activities of the software. These include adapting the current software
to additional circumstances and customers without changing the software.
3) Testability
Testability requirements deal with the testing of the software system as well as with
its operation.
Product Transition Software Quality Factor
1) Portability
Efforts required to transfer the program from one hardware or software system
environment to another.
2) Reusability
This factor deals with the use of software modules originally designed for one
project in a new software project currently being developed.
3) Interoperability
Interoperability requirements focus on creating interfaces with other software
systems or with other equipment firmware.
Software Reliability
The reliability of a computer program is an important element of its overall
quality. If a program repeatedly and frequently fails to perform, it matters little
whether other software quality factors are acceptable.
Software reliability is defined in statistical terms as “the probability of failure-free
operation of a computer program in a specified environment for a specified time”.
Software Reliability is an essential connect of software quality, composed with
functionality, usability, performance, serviceability, capability, installability,
maintainability, and documentation.
Types of Reliability Matrix
Mean Time to Failure (MTTF)
Mean Time to Repair (MTTR)
Rate of occurrence of failure (ROCOF)
Mean Time Between Failure (MTBF)
Probability Of Failure On Demand (POFOD)
Availability (AVAIL)
1) Mean Time to Failure (MTTF)
MTTF looks at how much time has elapsed between two failure occurrences, and it’s
averaged over the total number of failures.
The metric only looks at the time interval between the failures – not the time it took
to fix the error and get the software back up and running.
2) Mean Time to Repair (MTTR)
Building off MTTF, MTTR is used to measure the average time taken to track the
cause of the error and repair it.
It’s a metric used to understand how long it takes to fix an error after a failure
occurs and is helpful to help teams understand their working process for reliability
and come up with ways to improve.
3) Mean Time Between Failure (MTBR)
To calculate MTBF, you’ll need to put together MTTF and MTTR like this.
MTTF + MTTR = MTBF
This metric enables teams to better predict when the next failure can be expected
and helps teams understand the length of uptime and predict software reliability.
4) Rate of occurrence of failure (ROCOF)
ROCOF is a metric to understand the frequency of failures.
While the other metrics measure the length of time between failures and how long
it takes to repair, this metric is used to understand how often failures occur.
5) Probability Of Failure On Demand (POFOD)
POFOD is used to measure the likelihood of the system failing when services are
requested. It measures the possibility of the system failing when receiving a
service request.
It can be used in systems where services are requested at an infrequent pace.
Software Quality Control
Quality control is a set of methods used by organizations to achieve quality
parameters or quality goals and continually improve the organization's ability to
ensure that a software product will meet quality goals.
It is a reactive process, and the main purpose of this process is to correct all types of
defects before releasing the software.
This process deals with product oriented to find the defect and to improve
the developed software product quality.
The software product testing by executing the application code is the part of
software quality control.
Software Quality Control Activities
The software quality control process mainly deals with software product,
development process and resources. It works on PDCA (Plan Do Check
Action) principle.
Requirements Review
Design Review
Coding Review
Test Plan Review
Test Cases Review
Deployment Review
Cont..
The Review Activity is one type of static testing or verification process of the
software documents to prevent defects.
It is process-oriented to improve the development process performed
without program execution. The requirement document, design review are
part of it.
This is a process level verification to prevent the defect from the software
application documents.
Testing Activities
Unit Testing
Integration Testing
System Testing
Acceptance Testing
Release Testing
Maintenance Testing
Cont..
Plan
Quality Control
Parameter:
Act Products Do
Processes
Resources
Check
Plan
It is the initial stage where the Quality control processes are planned.
Set standard software quality goal and plan accordingly to get it.
Do
Use a defined parameter to develop the quality.
In this phase, start developing the software application according to the project
plan parameters to execute it i.e. work in progress state.
Check
Stage to verify if the quality of the parameters are met.
This phase is dedicated to the static and dynamic testing of the developed
software application to find defects to improve the quality of product.
Validate expected values with actual parameter values
Act
Take corrective action if needed and repeat the work.
Quality Control Approach
1) Walkthrough
The walkthrough is an informal code of analysis techniques.
In this technique after a module has been coded, it is successfully compiled and
all syntax errors are eliminated.
The main objective of the walkthrough is to discover the algorithmic and logical
errors in the code.
Walkthrough brings multiple perspectives.
Discussion should focus on the discovery of errors and not on how to fix the
discovered errors.
2) Formal Technical Reviews
The main objectives of formal technical reviews are to uncover the error in
function, logic, or implementation, to verify that software under review meets its
requirements, to develop software in a uniform manner, to ensure that the
software has been represented according to predefined standards.
People involved in review meetings are producer, review leader, and 2 or 3
reviewers.
Formal technical reviews meeting
Preparation of review meeting
Results of review meeting
Accept the work product without further modifications.
Reject the work product due to errors.
3. Testing
Testing is performed to reveal the presence of bugs in the system as early as possible
and make sure they get fixed.
Testing is a verification and validation process.
4. Inspection
The inspection involves people examining the source representation with the aim of
discovering anomalies and defects.
The inspection is conducted only when the author has made sure that the code is
ready for inspection.
5. Code Review
The code review for the module is carried out after the module is successfully
compiled and all the syntax errors eliminated.
Code reviews are an extremely cost-effective strategy for reduction in coding errors
in order to produce high-quality code.
Software Audit
A software Audit is an internal or external review of a software program to check
its quality, progress or adherence to plans, standards and regulations.
Software audits may be conducted for many reasons, including the following:
to track and report software use, including frequency and who is using the
software;
to verify licensing compliance;
to monitor for quality assurance (QA);
to comply with industry standards; and
to meet legal requirements.
Cont..
Instead of focusing on a software's technical quality, a software audit focuses on
compliance of products or processes.
A software audit is an independent review of software products, processes, and
systems.
Why Audit is necessary?
Internal audits can help an organization improve its efficiency by reducing the
number of inactive or expired licenses and finding problems before they can
become licensing or regulatory issues in a third-party review.
An external, or third-party, review generally focuses on software that is being
used beyond licensed rights and can help identify compliance gaps.
Example, Software Piracy (purchased one s/w license but installed copies of the
software on several devices)
The audits can help ensure the software an organization uses is up to date and is
working as intended.
Cont..
The organization can start a software audit when licensing compliance needs
to be verified, to monitor QA, to ensure licenses are all current and up to date,
and to ensure industry standards are still being complied with.
Software audits also help uncover any unused tools with current licenses.
Removing unused licensed software can help save an organization money.
Benefits of Software Audit
Helps in validating the testing process and identifies ways to optimize the
existing process
It checks for any mismatches between the requirements and the delivered
features. Audits helps in capturing such issues.
Ensures the development progress is as expected with compliance with
regulations and best practices. It can also catch any potential risks to the
product and help mitigate it.
In case any issues are noticed, proper suggestions are given to improve upon
the process or the product
Software audit checklist