Software quality in software engineering

In Software engineering, quality is defined as building software correctly and meeting specifications; basically, what the customer has requested.

There are different ways to define quality. William Edwards Deming, also known as the father of the quality movement. He was highly influential in the post World War II and created Total Quality Management. Deming defines quality as “Quality is defined by customers’ requirements.”

Seth Godin describes quality as meeting specs. Simple as that. If a vehicle does what it says it will do, it is quality. If a door opens and closes a million times and it was specified in advance as such, it is quality.

What is software quality?

In Software engineering, quality is defined as building software correctly and meeting specifications; basically, what the customer has requested.

Furthermore, requirements can be functional or non-functional. Functional requirements relate to what the software is able to do. For example, users should be able to create an order in the system, or users should be able to pay using credit cards. Non-functional requirements relate to software attributes that are expected such as performance, security, usability, maintainability, etc. For instance, the customer has requested the software to have response times under 2 seconds for a subset of operations in the User Interface.

Software quality standards

ISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission) form the specialized system for worldwide standardization defines Software quality standards. In particular, the ISO/IEC 25010 standard defines:

The quality model is the cornerstone of a product quality evaluation system. The quality model determines which quality characteristics will be taken into account when evaluating the properties of a software product.

The quality of a system is the degree to which the system satisfies the stated and implied needs of its various stakeholders, and thus provides value. Those stakeholders’ needs (functionality, performance, security, maintainability, etc.) are precisely what is represented in the quality model, which categorizes the product quality into characteristics and sub-characteristics.

ISO/IEC 25010

The following diagram describes the 8 software quality characteristics or attributes:

In subsequent articles, we will dive into each of the software quality attributes:

  • Functional stability
  • Performance efficiency
  • Compatibility
  • Usability
  • Reliability
  • Maintainability
  • Portability
  • Security

Benefits of quality standards

In software development, quality standards offer the following benefits:

Cost reduction and speed to market

Having clear standards that allow software engineers to consistently deliver software according to specifications, reduces development lifecycle costs and accelerates the delivery process. If new features are delivered faster, business can have an advantage compared to competitors. And this competitive advantage will provide higher return of investments and will inevitably translate into better and more profitable business.

Risk reduction

Vulnerabilities can expose a real threat for business continuity. By not taking shortcuts, and having software supported in all environments, it ensures security vulnerabilities are reduced to a minimum.

Customer satisfaction

When all requirements are met, customers are happy. It makes sense. That’s how quality manifests.

Example: Alexa Skill Quality Score (SQS)

One characteristic of a good engineering platform is that it “enforces” certain quality standards. I mentioned “enforces” between quotes because if the platform makes it easier to follow the standard and it provides better software, then it becomes the best choice that developers will follow with no hesitation.

An example of this point, PentaTech Alexa voice applications run on top of Alexa and AWS. AWS provides a Well-Architected framework that is advisable to follow as per mentioned benefits. Furthermore, AWS Lambda offers guidelines about code quality and best practices for each of the different languages that can be used to develop the functions. So, you can see how each layer in the whole stack has quality standards that either implicit or explicit, and following them is advantageous for the reasons we have been discussing in this article.

Furthermore, Alexa has a Skill Quality Coach that automatically executes quality standards against skills to provide a metric to understand how well you are doing and what to improve. The Skill Quality Score (SQS) is a number between 0 and 5, and measures the skill quality. Being 0 the lowest and 5 the maximum. And this number is calculated based on skill design features and customer experience.

Scores three and above can be interpreted as high. In order to maximize the SQS, a skill needs to score well on both the skill design and customer experience facets.