An Introduction to Software Quality Attributes for Non-Technical Founders

As a founder, you’re probably thinking about how tech can better serve your customers, help you scale, and increase your revenue, but have you ever wondered what keeps your engineers up at night?

While casting your vision to your technical team is vital to creating effective technology, there are many other factors your tech team navigates behind the scenes to make sure that useful tech is also high-quality.

What is Software Quality

Software quality is about defining what it means when we say that software is “working” or “working well.”

Quality should always be assessed in view of the current software’s purpose, industry, buyer expectations, and the capabilities of the competition, therefore measurements of software quality are subjective. This means the context of how the software is applied affects how we measure its quality. That’s why we call it an application.

The state of the quality does change over time (the highest quality software of the 90s is no longer a match for modern expectations of quality). Even through change, we can craft an adaptable framework for assessing quality that cuts across industries and time.

Quality attributes are different areas of quality to consider when building applications. The specific ways we measure and assess quality may change, but in many ways these quality attributes are timeless: maintainability, performance, scalability, accessibility, usability, security.

ThinkNimble’s Software Quality Attributes

Whenever we’re building software, these 6 primary attributes ensure we’re not just delivering an app that does what the client wants today, but sets them up for success as they grow and build upon that foundation tomorrow.

Maintainability

Maintainability refers to how easy it is to change, repair, or enhance your software (the faster we can test, iterate, and change the better). It includes things like modularity, clarity of code, documentation, and ease of understanding the system's structure. This is important because it impacts how quickly new (or more junior) devs can learn the code base and contribute changes.

If your code base is complicated, then only the senior dev who originally built it can work on it, and having institutional knowledge like that in one person’s head is not what you want. Being able to bring in new devs who can onboard quickly is super valuable and tightly linked to how maintainable your code base is.

I’ve been on teams where we got stuck in a vicious cycle. Deploying was slow and hard. Any bugs found in production were also met with tons of anger from management. So….we moved slower. We took more time to “Get it right” before deploying. This meant that code would back up. So any time we deployed we’ve be deploying a LOT of changes. This meant that when we found a bug, it would take longer to figure out which of the many changes introduced that bug. All of this led to the team progressively moving slower….and slower…….annnnd sloooower…..as all the extra process (fear driven) drove that vicious cycle. And then management wonders why we cannot move fast or iterate.
— ThinkNimble Tech Lead, Ed Romano

Scalability

Scalability refers to the software system's ability to handle increased workloads or accommodate growing demands on the software without impacting your app’s performance. It measures how well the system can adapt and support increased user or data loads by adding resources or scaling horizontally or vertically.

If your app can’t scale along with your growing user base, you’ll run into issues like decline in speed, responsiveness, and efficiency of your app compared to its previous or expected performance levels.

💡 12-Factor App is a great resource ThinkNimble has integrated into our own product development philosophies around maintenance and scale.

Performance

Performance relates to the responsiveness and efficiency of a software system in executing its tasks. We look at speed, throughput, and resource utilization of the system. Performance focuses on minimizing response times, maximizing processing speed, and optimizing resource consumption to ensure optimal software execution.

If a software system lacks performance optimization, it can result in slow response times, high resource consumption, and poor scalability. This can lead to a negative user experience, decreased productivity, and limited ability to handle growing workloads.

Accessibility

Accessibility looks at the ability of a software system to be used by individuals with disabilities or impairments. We want to make sure system user interfaces, content, and functionality are accessible and usable by a diverse range of users, including those with visual, auditory, motor, or cognitive disabilities.

If a software system lacks accessibility, it can create barriers for individuals with disabilities - and we want to lower barriers, not create them.

Usability

Usability measures how easily users can interact with a software system to accomplish their tasks and goals. It focuses on factors such as user interface design, intuitiveness, ease of learning, efficiency, and user satisfaction. Usability aims to enhance the overall user experience.

A system lacking usability is not only frustrating to use, but it encourages a lack of user adaption. Complex navigation, confusing layouts, unclear instructions, and unintuitive interactions can hinder users' ability to accomplish tasks and use your product altogether.

Security

Security relates to protecting software and its data from unauthorized access, breaches, or malicious activities. It involves implementing measures to ensure confidentiality, integrity, authentication, and authorization. Security addresses vulnerabilities, threats, and risks to safeguard the software and its users' information.

If a software system lacks robust security measures, it becomes vulnerable to various threats such as hacking, data leaks, and unauthorized access. This can result in compromised user data, reputational damage, legal liabilities, and financial losses.

Adapting Software Quality to Your Business

Defining software quality attributes is just the first step. Not every attribute matters to every company at a particular stage of business. When building your software, your engineers ought to be taking into account how the business measures its success. Which quality attributes are most important to its purpose? Its users? Its industry? This particular moment in human history?

Aligning Your Engineers

One of the best ways to ensure you’re building with software quality best practices is working with engineers who value these principles. Ask your engineers to provide quality attribute reports. If you’re working with less experienced engineers, work together to identify the quality attributes that matter to you and your organization and begin tracking them together.

In our engineering organization, our senior engineers consistently coach our team on how to build with quality in view. When we hire in-house engineers for our clients, we evaluate their capacity for quality implementation.

Product Scoring

For both our own projects and pre-existing products that come to us, we use a Product Quality Scorecard to evaluate how a software product measures up to best practices. We’ll score the product based on our 6 software quality attributes. It answers questions like:

  • Is there a plan in place to scale the application?

  • Is your app easy to use?

  • Does it work across all devices?

This combination of team/coaching and the accountability of a product scorecard have scaled our ability to produce consistent, quality work.

How to Measure Your Own Software Quality Attributes

If you’re not already talking to your development team about your own software quality attributes, it might be time to start.

ThinkNimble has created a quality scorecard we use with clients to evaluate the state of their technology. Some other sources and frameworks to explore are ISO 25010, Boehm’s Quality Model, and FURPS, and Quality Attribute Workshop.

After evaluating hundreds of software applications, we know there is a right pressure to apply to certain quality attributes based on where you are in your business growth. We created miniCTO to help founders better understand their tech.

miniCTO is a suite of tools and frameworks backed by software quality specialists and summarized for you in monthly CTO reports so you can build better tech.

If you would like to build with software best practices, understand vulnerabilities, and plan for the future, reach out and we will provide your first Product Quality Scorecard for just $500.


Enjoy this article? Sign up for more CTO Insights delivered right to your inbox.

Previous
Previous

Why is your app always behind schedule?

Next
Next

What is technical debt?