Ensuring software quality is one of the key performance indicators for a software architect. That’s why having a strategy to ensure software quality is an essential aspect of software architect’s key responsibilities.
Essentially you can apply Pareto Principle (80/20 rule) to manage Software Quality:
20 % of your focus on Software Quality can bring 80% of effects in delivering better Software
Use the below three steps to make your software quality management strategy effective and operational.
Step 1 – Plan – What to measure?
There is no prescriptive way of list of metrics – it is applicable as per the context and the environment you are delivering the software. Essentially there are three areas to choose from
- Code/Build Quality Metrics: Ensuring code passes through all standard quality check meeting non-functional requirements
- Delivery Quality Metrics – Ensuring program delivery parameters are being adhered to (for example – if you can’t deliver on time, on budget, it does not help the customer or the organization)
- Functional Quality Metrics – Ensuring functional requirements are being met as per business needs. Even if code quality is top-notch, if it is not meeting the intended business need, it does not help.
Step 2 – Measure – How to measure?
It is not essential that you use automation to ensure your effort is not being spent on measuring it manually. There are plenty of tools or technologies available to measure these metrics such as (note that this is not a comprehensive list of all tools – the idea is to provide you pointers towards it):
- Static Code Analysis — For code quality assessment and can easily be integrated as part of code pipeline with tools such as SonarQube.
- Performance & Load Testing — For measuring performance early either as an independent test or as part of build & release pipeline such as Apache JMeter or Blazemeter, Gatling, or SaaS solutions like Loader.io, Flood.io, Loadstorm, Octoperf, Loadfocus, and the list goes on.
- Observability and Application Performance Monitoring — For Logs, Metrics, and Tracing using Opensource tools such as Apache Skywalking, Elastic or licensed products like New Relic, Dynatrace, Splunk, Datadog, etc.
- User Experience (UI) Performance — For measuring page rendering and perceived user experience performance with tools such as Google Lighthouse , Web.dev , GTMetrix.
- Engineering Dashboard — To provide end-to-end visibility and insights for architecture adherence checks, and structural security findings to prevent outages, data corruption, insider threats, etc. using products like Cast.
Step 3 – Visualize & Act
The last but not the least is to visualize (considering the number of metrics, visualization helps) and then act on metrics not meeting the desired SLA.
Continuous measurement and incremental improvement is key to build the desired software quality
A conceptual software quality dashboard (can be realized by tool/technology):
To conclude, software quality is not an afterthought, and putting the quality strategy since inception helps to build better software. Doing it in a continuous manner and making incremental improvements goes a long way!