September 2nd, 2019
"In an industry like financial services, we're working with a platform that manages billions of dollars worth of retail investments. Our software needs to be adequately designed, well-tested and rock-solid so users can rely on it."
Delivering quality software is something William Bolivar is particularly passionate about. William is one of our senior software engineers involved in the architecture and development for the Chelmer Software Suite (CSS). With 20+ years' experience developing solutions for the financial services industry, he's seen the long-term value in prioritising quality, and become an expert at balancing quality, cost and speed of delivery.
He says the key to delivering high-quality software is to consistently apply quality to each phase of the Software Development Life Cycle (SDLC), but it's easier said than done. However, when software users, business analysts, software developers and testers all understand, follow and respect this process, there's a high chance of success.
William discusses what quality in software is, how to achieve it, and the long-term value in establishing a quality-focused development culture.
What does quality in software mean?
When it comes to software, quality is in the eye of the user. A quality solution is reliable, easy to use, secure, and most importantly meets user requirements and expectations.
From a technical point of view, it's about sticking to a process that enables you to develop consistently high-quality, robust solutions as quickly as possible, and deliver on time.
Achieving this starts with applying quality to each of the SDLC phases. The application is in fact, pure common sense – like applying well-established best practices like specification by example (SBE) and test-driven development (TDD). It's straightforward in theory, but when time and cost pressures come into play and quality is no longer the focus, teams risk delivering a solution that's totally different to what the user requested.
Prioritising quality throughout the SDLC
The SDLC defines the steps involved in the development of software: Designing, coding, testing and maintenance.
In the Design phase, quality stems from defining a clear picture of what the user wants. In the financial services industry, every firm is different, and we custom-configure and continuously evolve our core software (CSS) to meet our clients' unique business needs and processes. Therefore, before we develop or evolve a feature or component, clearly understanding end-user requirements is a critical first step, and can make or break a solution.
Our business analysts play a critical role in this phase, liaising with our clients and end users, then defining the technical specifications and what the end result will look like. This may take some to-ing and fro-ing between users, business analysts and developers, but taking the time to nail the specifications and get everyone on the same page is essential for a successful outcome.
The Coding is a phase where you can either move very quickly or waste a lot of time. Clear specifications from the Design phase can save time and effort. Developers can more easily identify whether they need to develop code from scratch or adapt a coded solution that already exists. There's no point reinventing the wheel.
In both cases, following proven, best practice software design standards and frameworks is a common sense method to avoid error and ensure code is robust and reliable.
Testing, testing and retesting. Testing evaluates the functionality of the software to ensure it meets the specified requirements and will operate defect-free. Diligently and methodologically going through the various layers in a testing cycle - and repeating if necessary - is essential for a high-quality outcome. When testing fails, find out what went wrong and document it so you can learn from your mistakes.
In best practice, software is rigorously tested until it's 100% certain to work as specified when released. In the real world however, this critical phase can be cut short by time and cost pressures. To balance these factors, consider how critical the update is and what the users' expectations are, and prioritise accordingly. In an industry like financial services for example, we're working with a platform that manages billions of dollars worth of retail investments. Our software needs to be adequately architected, well-tested and rock-solid so users can rely on it. Whereas users in fast-moving, agile industries may prioritise innovation and getting the latest updates, fast, without the expectation that it’ll be perfect.
Once in operation, Maintenance involves analysing the software and issuing repairs and upgrades to resolve any issues and ensure optimal performance. One of the biggest tangible benefits of applying quality throughout the SDLC is lowering the frequency and cost of maintenance.
A quality-focused development culture
Quality-focused software development creates value: It saves time, reduces costs, builds trust and stronger relationships between technology providers and their clients.
Cultivating a development culture where this is the norm takes a long-term, consistent approach. Teams can start by standardising and following quality-focused development processes and communicating the value to everyone involved.
The key is that everyone (users, business analysts, testers and developers) cares about achieving a quality outcome and is focused on driving it.
Is quality in software a priority for your team? What does quality software mean to you?
Share your thoughts on our LinkedIn post.
About the Author: William Bolivar, Senior Software Engineer
William has over 20 years' experience in the analysis, design and implementation of software solutions for the financial services industry and has been part of our team for 14 years. Some note-worthy projects include developing the original architecture of the Chelmer Software Suite performance and tax reporting modules; creating the audit system for our cash management module; and developing the core communication software to connect our software suite with the NZX.