What is software quality? And where do you get it?
What is software quality? And where do you get it?
Software quality is not just about your programmer’s code errors. It is made up of many factors, from usability design to network redundancy.

Divide and conquer

Software quality is not just about your programmer’s code errors. It is made up of many factors, from usability design to network redundancy.

And, in order to manage software quality, you need to identify each of the critical factors and be able to define the required level of quality expected for each.

The following is a list of software quality factors of you might consider in for a typical software project:

  • Concept / UX design
  • UI implementation
  • Functionality
  • Performance (speed)
  • Availability under load
  • Redundancy
  • Security
  • Maintainability

Ownership

The definition of quality expectations is something that I have seen is often missed.

Scrum methodology promotes self-forming teams. And I am all for that, but it is critical that grey areas of responsibility are not missed by everybody. To some, focusing on software quality is as enticing as cleaning up after a party.

I recommend that the project’s solutions architect, as designer of end-to-end technical solution, is the best person to assume accountability for ensuring that all aspects of quality expectations are identified, defined and articulated to the team. The solutions architect is typically the only person on the team with the technical knowledge and broad vision of the project to take on this responsibility.

Whatever your solution, the critical thing is that you understand who is responsible for setting the quality expectations for the project.

If you can’t measure it, you can’t manage it

Quality is not always easy to quantify, particularly factors like usability and even functionality. But once you have identified each factor of software quality that is important to the project, you will find that each has it’s own testing methods against which you can devise quantifiable targets or criteria.

For example, in regards to usability testing, one executive stated that a user should be able to complete a transaction before they needed to open their parachute - having jumped from an airplane at 12,000 feet (I’m not sure if this was the actual test method was used).

There are now some great tools to assist less technical stakeholders to understand or visualize the level of quality of software solutions. Tools like Jira or Bugzilla for bug tracking a quite well know. But I’d like to highlight here below a couple of tools that are seemingly less known and yet very powerful.

SonarQube

SonarQube is a free open source visual tool that provides reports on bugs, code smells, and security vulnerabilities for 20+ programming languages. SonarQube offers reports on duplicated code, coding standards, unit tests, code coverage, code complexity, comments, bugs, and security vulnerabilities.

All in all it gives a universal view of the quality of code regardless of programming language or platform, using globally standard rules to evaluate the quality of the code. There is a bit of investment in setting it up, which needs to be done by programmers and/or network engineers, but it is worth the effort.

Don’t be surprised if you don’t like what it initially uncovers about the quality of your code. It’s better to know than not know! And plans can be made to address issues highlighted by SonarQube over a period of time.

OWASP

The Open Web Application Security Project (OWASP) is an online community that produces freely-available articles, methodologies, documentation, tools, and technologies in the field of web application security.

In this current era when security is of great importance to many, things like the OWASP Top 10 is an amazingly valuable resource that not only explains what the major securities currently are, but also how to fix them.

Bring it all together

So, you want to deliver as much business value, as quickly and cheaply as possible. With regards to software quality, work with your the experts in your team to:

  1. Identify the most important software quality factors for your situation - maybe performance, usability and/or security. Don’t be afraid to descale things that just won’t have a significant impact on the business value that you are looking to deliver.
  2. Define quantifiable quality metrics that your team can work to.
  3. Deploy and develop the tools and processes that you need to create meaningful reports on quality.
  4. Actively discuss quality reports with your team and engage them on how to best achieve the business value you are targeting as quickly and cheaply as possible.