Software Quality

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

KCA035:SOFTWARE QUALITY ENGINEERING

UNIT-1

SOFTWARE QUALITY

Software quality engineering (SQE) is the process of implementing quality checks


throughout the entire development cycle. SQE plays a key role in ensuring fast-paced agile
and DevOps teams produce high-quality software. When software quality engineering is
integrated into workflows, it can improve agility, productivity, and ROI.

Quality engineering (QE) is a process that applies rigorous quality checks to each stage of
product development. It does this through analysis, development, management, and maintenance
of quality assurance (QA) protocols. QA is often continued after a product has been delivered.

The goal of QE is to ensure the quality of a product from the beginning, minimizing potential
losses caused by defects.

SOFTWARE QUALITY ATTRIBUTES AND SPECIFICATION:

Functionality: This attribute determines the conformity of a software-driven system with the
defined requirements and specifications.
Performance: It can be understood as the ability of a software-driven system to conform to
timing requirements.

Reliability: Reliability is to check if the application or the testing product with different
combinations to see if it withstands its nature and produces the expected result.

Testability: It indicates how well the application allows software testers to perform tests in line
with the predefined criteria.

Availability: It can be defined as a ratio of the system’s available time to the required time it is
expected to perform.

Interoperability: Interoperability is the ability of the system to interact with other systems to
exchange the required information via certain interfaces.

Security: security attribute measures the ability of a system to protect and block malicious or
unauthorized actions that could negatively impact the user or destroy the system.

Security also includes authorization and authentication techniques, protection against network
attacks, data encryption, and other risks.

Flexibility: the system should be flexible enough or should be able to modify accordingly.

Efficiency: to check the level of system resource usage.

Usability: all software-driven systems are designed with ease of use.


COST OF QUALITY: Cost of quality is a method for calculating the costs companies incur
ensuring that products meet quality standards, as well as the costs of producing goods that
fail to meet quality standards.
This two-pronged approach to quality can be categorized as “control” (good quality) vs. “failure
of control” (bad quality).

Appraisal Costs:

Measurement and inspection activities during operations to determine conformance to quality


requirements.

Examples include inspection, testing, process or service audits, calibration of measuring and test
equipment.

Prevention Costs:

Activities planned and designed before operations to guarantee good quality and prevent bad
quality products or services.

Examples include new product review, quality planning, supplier surveys, process reviews,
quality improvement teams, education and training.

Internal Failure Costs:

Expenses incurred to remedy defects discovered before the delivery of a product or service.

Examples include scrap, rework, re-inspection, re-testing, material review, material downgrades.

External Failure Costs:


Expenses incurred to remedy defects discovered by customers after the customer receives the
product or service.

Examples include processing customer complaints, customer returns, warranty claims, product
recalls.

Defects, Faults, Failures:

A failure is the inability of a software system or component to perform its required functions
within specified performance requirements. When a defect reaches the end customer it is called a
Failure. During development, Failures are usually observed by testers. When the faults in a
software product gets executed, they turns into Failures.

Fault: An incorrect step, process or data definition in a computer program that causes the
program to perform in an unintended or unanticipated manner. A fault is introduced into the
software as the result of an error. It is an anomaly in the software that may cause it to behave
incorrectly, and not according to its specification. It is the result of the error.

BUG:

A bug is the result of a coding error. An Error found in the development environment before the
product is shipped to the customer. When an error is found during the development phase
and is accepted by developers is called as Bug.

An error is a mistake, misconception, or misunderstanding on the part of a software developer.


In the category of the developer, we include software engineers, programmers, analysts, and
testers.

When the functionality of the software products gets changed i.e. mistake made while
coding are called as Errors. For example : Wrong syntax and infinite loops can cause
errors.

Defect: a Defect is a difference between expected and actual results in the context of testing.
It is the deviation of the customer requirement.
Software Reliability : Introduction

 Software Reliability can be defined as the ability of a software product to perform


consistently and be trustworthy to its users i.e. The software product must perform
as required and should not deviate from its goal.
 Reliability means trustworthy or consistent.
 Reliability of a software product is an important aspect as it shows the actual ability
of the software product.

Software Metrics

 Software metrics are the standards of measurement for a software product for
certain properties and functionalities. Software metrics can be broadly classified
into three categories. These are listed below :

Software Metrics : Software Reliability

1. Process Metrics
o The Process Metric are used for the improvement of the development and
maintenance of a software product. It mainly measures the efficiency of the
software product.
2. Product Metrics
o The Product Metric are used for demonstrating the software product
characteristics and features such as the performance and its quality.
3. Project Metrics
o The Project Metrics are used for demonstrating the characteristics of whole
software project which includes the total time, total cost, productivity and
teams.

Defect Rate

 Defect Rate can be defined as the number of defect detected per unit the number of
test cycles.

Defect Rate = (No of Defects Detected* 100) / (No of Test Cycles)


Defect Density

 Defect density is defined as the number of defects arrived during a specific period of
time per unit the size of software/module.

Defect Density = (Defect Count) / (Size of module or software)

 The defect density is counted per thousand lines of code and is called as KLOC.
 The standard for defect density is not fixed. But, one defect per thousand lines of
code is considered as good quality of the project.

Defect Prevention

 Defect Prevention is a plan made out to reduce the number of defects in a software
product by identifying the cause of defect and preventing them to cause other
problems in the software.
 The strategy of defect prevention is to analyse the phases of the software product
where the defects were arrived previously and preventing the occurrence of those
defects in future.
 Defect Prevention causes an increase in productivity and effort reduction.

Methods of Defect Prevention :


For defect prevention, there are different methods that are generally used over a long period of
time. These methods or activities are given below :

1. Software Requirement Analysis :


The main cause of defects in software products is due to error in software requirements and
designs. Software requirements and design both are important, and should be analyzed in an
efficient way with more focus. Software requirement is basically considered an integral part
of Software Development Life Cycle (SDLC). These are the requirements that basically
describes features and functionalities of target product and also conveys expectations or
requirement of users from software product.
Therefore, it is very much needed to understand about software requirements more carefully,
If requirements are not understood well by tester and developers, then there might be chance
of occurring of issue or defect in further process. Therefore, it is essential to analyze and
evaluate requirements in more appropriate and proper manner.
2. Review and Inspection :
Review and inspection, both are essential and integral part of software development. They are
considered as powerful tools that can be used to identify and remove defects if present before
there occurrence and impact on production. Review and inspection come in different levels or
stages of defect prevention to meet different needs. They are used in all software
development and maintenance methods. There are two types of review i.e. self-review and
peer-review.
3. Defect Logging and Documentation :
After successful analysis and review, there should be records maintained about defects to
simply complete description of defect. This record can be further used to have better
understanding of defects. After getting knowledge and understanding of defect, then only one
can take some effective and required measures and actions to resolve particular defects so
that defect cannot be carried further to next phase.
4. Root Cause Analysis :
Root cause analysis is basically analysis of main cause of defect. It simply analysis what
triggered defect to occur. After analyzing main cause of defect, one can find best way to
simply avoid occurrence of such types of defects next time.
The root cause analysis of a defect is driven by three key principles:

 Reducing the defects to improve the quality: The analysis should lead to implementing
changes in processes that help prevent defects and ensure their early detection.
 Applying local expertise: The people who really understand what went wrong are the
people present when the defects were inserted – members of the software engineering
team. They can give the best suggestions for how to avoid such defects in the future.
 Targeting the systematic errors: There may be many errors or defects to be handled in
such an analysis forum; however, some mistakes tend to be repeated. These systematic
errors account for a large portion of the defects found in the typical software project.
Identifying and preventing systematic errors can have a big impact on quality (in terms of
defects) for a relatively small investment.

The first measure to reduce defect prevention is Education and training. Education provides
people with the right tools to detect error and avoid them. This training can be done at various
levels:

 Product and domain specific level: People developing a product for a specific area should be
as familiar as possible with that area.
 Software development expertise: This is probably the most intuitive of all. The objective is to
develop a software product, thus, expertise on development techniques are fundamental.
 Knowledge about methodology, technology and tools: Using the right tools and methodology
have an impact on the quality of a product.
 Development process knowledge: The development process should be understood in detail by
all team members. Misunderstanding in some of the procedures will sure increase the
possibility of errors occurring and deriving into failures.

Defect reduction is a task that aims at covering 100% of all possible behaviour, knowing that
reaching that mark is impossible. Thus, the strategy is to try to explore as much as possible of the
entire behaviour space and hope that most of the defects are detected. The difficulty of these
techniques is that to cover all aspects of a product, sometimes an equally complex testing
infrastructure is needed.

Defect Containment

 It is a strategy, an attempt to increase the software quality and reducing the cost of
the software product simultaneously.
 Defect containment is reported usually as a percentage of defects captured in the
phase in which they are originated.
 Also, it is a process of displaying the information about the issues and problems
occurred and reported for a software system.
 Defect containment refers to the ability of a software product to detect a failure and
maintain its effect within some reasonable bounds that still allow the product to proceed.
The approach in this stage is different. Not all faults can be detected, thus, some
additional measures need to be put in place for when a failure occurs, to minimize its
impact. The techniques to contain the effect of a failure are usually referred also a s“fault
tolerance”.

Inspection in Software Quality

 Inspection in software project often leads to verification of quality of that software


product.
 With a goal of identifying the defects, Inspection refers to peers review of a software
product done by individuals in order to look for defects using certain well defined
processes.
 The stages of inspection of software quality includes:
1. Planning.
2. Overview Meetings.
3. Preparation.
4. Inspection Meeting.
5. Follow Up.
6. Rework.

Software Reviews : Introduction

 Software Reviews is a process of assessing a software product either in a formal


manner or in an informal manner. The software review can include or can be done
in the presence of customers, users, managers etc.
 Software reviews are generally categorized into three:

Software Reviews

Software Reviews : Software Peer Reviews

 Code Review: A code review is a process of analyzing the computer source code for
defects.
 Pair Programming: An inspection is an advanced form of code review in which a
pair of programmers develops code for a software product on same work system.
 Inspection: An inspection is the most formal type of software peer review in which
defects are found using well defined processes.
 Walk-through: A walk-through a form of peer review in which the leader
demonstrates the work of the software product and the participants are asked to
comment on the defects.
 Technical Review: A technical review is a peer review in which the software product
is checked for its functionality by a team of professionals for its use and identifies
any vulnerabilities.

Software Reviews : Software Management Review

 The management study of a software project about its resource allocation is called
as software management review.
 The software management reviews are carried out by the management of the
governing body of that software project.
 Also, the goal of software management reviews is to identify the consistency and
deviation of software project from its original path.

Software Reviews : Software Audit Review

 A Software audit is a process of scrutiny a software product for its functionalities


and specifications.
 A software audit review is a type of software review in which auditing of software
product is done by members other than the development team.
 The goal of software audit review is to assess the specification and compliance of a
software product.

Software Measurement: A measurement is a manifestation of the size, quantity, amount, or


dimension of a particular attribute of a product or process. Software measurement is a titrate
impute of a characteristic of a software product or the software process. It is an authority within
software engineering. The software measurement process is defined and governed by ISO
Standard.
In Software Engineering, Software Measurement is done based on some Software Metrics where
these software metrics are referred to as the measure of various characteristics of a Software.

Software Measurement Principles:

The software measurement process can be characterized by five activities-


1. Formulation: The derivation of software measures and metrics appropriate for the
representation of the software that is being considered.
2. Collection: The mechanism used to accumulate data required to derive the formulated
metrics.
3. Analysis: The computation of metrics and the application of mathematical tools.
4. Interpretation: The evaluation of metrics resulting in insight into the quality of the
representation.
5. Feedback: Recommendation derived from the interpretation of product metrics transmitted to
the software team.

Need for Software Measurement:

Software is measured to:


 Create the quality of the current product or process.
 Anticipate future qualities of the product or process.
 Enhance the quality of a product or process.
 Regulate the state of the project in relation to budget and schedule.

Classification of Software Measurement:

There are 2 types of software measurement:


1. Direct Measurement: In direct measurement, the product, process, or thing is measured
directly using a standard scale.
2. Indirect Measurement: In indirect measurement, the quantity or quality to be measured is
measured using related parameters i.e. by use of reference.

There is a number of metrics available based on which software quality is measured. But among
them, there are few most useful metrics which are most essential in software quality
measurement. They are –

1. Code Quality
2. Reliability
3. Performance
4. Usability
5. Correctness
6. Maintainability
7. Integrity
8. Security

Metrics:

A metric is a measurement of the level at which any impute belongs to a system product or
process.
Software metrics will be useful only if they are characterized effectively and validated so that
their worth is proven. There are 4 functions related to software metrics:
1. Planning
2. Organizing
3. Controlling
4. Improving

Characteristics of software Metrics:

1. Quantitative: Metrics must possess quantitative nature. It means metrics can be expressed in
values.
2. Understandable: Metric computation should be easily understood, and the method of
computing metrics should be clearly defined.
3. Applicability: Metrics should be applicable in the initial phases of the development of the
software.
4. Repeatable: The metric values should be the same when measured repeatedly and consistent
in nature.
5. Economical: The computation of metrics should be economical.
6. Language Independent: Metrics should not depend on any programming language.

Classification of Software Metrics:

There are 3 types of software metrics:


1. Product Metrics: Product metrics are used to evaluate the state of the product, tracing risks
and undercover prospective problem areas. The ability of the team to control quality is
evaluated.
2. Process Metrics: Process metrics pay particular attention to enhancing the long-term process
of the team or organization.
3. Project Metrics: The project matrix describes the project characteristic and execution
process.
 Number of software developer
 Staffing patterns over the life cycle of software
 Cost and schedule
 Productivity

Advantages of Software Metrics :

1. Reduction in cost or budget.


2. It helps to identify the particular area for improvising.
3. It helps to increase the product quality.
4. Managing the workloads and teams.
5. Reduction in overall time to produce the product,.
6. It helps to determine the complexity of the code and to test the code with resources.
7. It helps in providing effective planning, controlling and managing of the entire product.
Disadvantages of Software Metrics :

1. It is expensive and difficult to implement the metrics in some cases.


2. Performance of the entire team or an individual from the team can’t be determined. Only the
performance of the product is determined.
3. Sometimes the quality of the product is not met with the expectation.
4. It leads to measure the unwanted data which is wastage of time.
5. Measuring the incorrect data leads to make wrong decision making.

You might also like