How to integrate quality into software production processes?

How to ensure the quality of the software? How to ensure quality production processes? How to make it so, what to change so that the processes and the product itself have built-in quality?

These are the questions asked by almost all software companies and it is important for them to deliver value to the customer without defects.

With this article, I begin a series on embedded quality and how we changed processes in our company.

What is quality?

First, let’s define what is quality? How to guarantee the quality? How to control and manage it?

There are many international standards such as ISO9000, ISO9126 (superseded by ISO / IEC 25010: 2011), etc. that provide some definitions for quality and processes.

So, for example, according to ISO9000. Quality is the degree to which the set of inherent characteristics of an object meets the requirements.

Hmm … Okay. Looks clever. How about software? This is answered by the ISO 9126 standard.

Software quality is

  • The ability of a software product, under specified conditions, to meet specified or implied requirements.

  • The entire scope of features and characteristics of programs that relate to their ability to meet established or implied requirements.

  • The degree to which a system, component, or process meets the requirements or expectations of a customer or user.

As you can see from the definitions, quality and requirements are closely related and any object (be it jewelry or software) that is considered to be of good quality must meet the established requirements.

According to the same ISO9126 standard, software quality has internal and external characteristics. Each characteristic is detailed with subcharacteristics.

External quality characteristics include:

  • Functionality (Functionality) – A set of attributes that affect the existence of a set of functions and their specified properties. Features are characteristics of the software that satisfy stated or implied needs.

  • Reliability (Reliability) A set of attributes that affect the ability of a software to maintain its level of performance under specified conditions for a specified period of time.

  • Usability (Usability) – A set of attributes that affect the effort required to use and the individual assessment of such use by a stated or implied set of users.

  • Efficiency (Efficiency) – A set of attributes that affect the relationship between the level of software performance and the amount of resources used under specified conditions

  • Portability (Portability) – A set of attributes that affect the ability to transfer software from one environment to another.

Internal qualities include:

  • Maintainability — A set of attributes affecting the effort required to make a specific change.

  • Testability — A set of attributes affecting the effort required to test software after a modification is made.

These seven characteristics are sufficient for the software to be considered good quality.

But how can you guarantee the quality? How to control and manage? What processes are responsible for this?

But how can you guarantee the quality?

In general, when most people hear the word quality, they mean testing, a testing team that sits and tests software all day. But in reality, everything is much more complicated and interesting.

There is at least a four-tiered system of processes that together can ensure, guarantee quality. These processes begin their work from the moment of contact with the customer and end … and, although no, they do not end, they work constantly along the entire value stream for the customer.

4-level quality assurance system
4-level quality assurance system

Quality Management (QM) or quality management is the process of overseeing all the activities and tasks required to maintain a desired level of quality. Quality management includes the definition of a quality policy, the creation and implementation of quality planning and assurance (QA), and quality control (QC) and quality improvement. Quality management requires all business stakeholders to work together to improve the processes, products, services and culture of the company itself.

Quality Assurance (QA) is the part of quality management aimed at providing confidence (assurance) that quality requirements will be met.

Quality management (QC) is work methods and activities aimed at fulfilling quality requirements.

Testing includes various tasks and approaches to identifying and detecting errors and defects in a product.

As you can see, there is a difference between QA, QC and testing. Yes, they are about the same thing – about quality, but they work with it from different levels.

QA
QA

So, QA is involved in the process verification and allows you to get an answer to the question – Am I creating the product correctly? QA has a process orientation and continuous improvement. Therefore, QA is a proactive process aimed at preventing defects by gradually improving production processes, policies and procedures. The QA is responsible for developing standards and methodologies, auditing, training, etc.

QC
QC

But QC is involved in the process validation and allows you to get an answer to the question – Am I creating the right product? Unlike QA, QC is product-oriented and is a reactive process that seeks to efficiently identify defects in software prior to release and shipping to customers. QC follows the standards and regulations, methodologies for which the QA is responsible.

Summing up, I would like to note that in order to ensure quality in software, one must start with an audit of production processes, revise all the regulations and standards that are used and, if you want to improve the quality, start changing them, introduce new methodologies and approaches. Otherwise, we will get the same result. As Einstein said: The biggest nonsense is to do the same and hope for a different result.

In the following publications on quality, we will talk about flexible approaches to ensuring embedded quality.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *