Quality simply means degree of excellence. High quality software usually conforms to the user requirements. A customers idea of quality may cover a breadth of features. Following are some aspects that help us gauge the measure of quality – conformance to specifications, good performance on platform(s)/configurations. Ensure the software you develop as part of your project completely meets operational requirements (even if not specified!), is compatible to all the end-user equipment and cause no negative impact on existing end-user base.
Quality is often seen as a process and mixed up with testing. Greater reliability contributes to an immeasurable increase in customer satisfaction as well as lower maintenance costs. Because maintenance represents a large portion of all software costs, the overall cost of the project will most likely be lower upon developing quality software applications.
Interesting history reminds the importance of software quality
Let us look into couple of real time incidents to relate better and understand the importance of quality in a deeper sense.
Ariane 5 crash June 4, 1996- Maiden flight of the European Ariane 5 launcher crashed about 40 seconds after takeoff
– Loss in $ value – half a billion dollars
– Cause for explosion – software error
– Uncaught exception due to floating-point error: conversion from a 64-bit integer to a 16-bit signed integer applied to a larger than expected number
– Module was re-used without proper testing from Ariane 4
– No exception handler
Mars Climate Orbiter – September 23, 1999 – Mars Climate Orbiter, disappeared as it began to orbit Mars.
– Cost about $US 125-million Failure due to error in a transfer of information between a team in Colorado and a team in California
– One team used English units (e.g., inches, feet and pounds) while the other used metric units for a key spacecraft operation.
Quality – The forever constant metric
In this growing information age a number of technologies come into play. Organizations may fancy their prospects by offering varied technology solutions and competitive pricing. But quality is the single most important aspect that contributes to return business.
There are a number of Quality processes one organization can adopt based on the projects they are bound to deliver. Some of the popular and successful processes are:
- ISO 9004:2008 — guidelines for performance improvement
- ISO 15504-4: 2005 — information technology — process assessment
- QFD — quality function deployment, also known as the house of quality approach.
- Kaizen — Japanese for change for the better; aka continuous improvement.
- Six Sigma — a statistical process control framework
- PDCA — plan, do, check, act cycle for quality control purposes
- CMMI (Capability Maturity Model Integration)
Above listed processes and more play a critical role in pushing the organizations one notch to thrive their outputs on quality. The approach on how we bring about quality in entire operations of building and delivery software in each of these frameworks may differ, however, they all preach highest quality no matter what.
It is not that you adopt a framework to ensure quality of your deliverables, but it is how you understand your business processes to identify the right framework for your organization. There is no one right or wrong framework – depending on the industry and requirements you cater to analyze which process methodology would best suit in order to achieve top notch quality. Most importantly – means of achieving software quality should not make the software development all the more difficult. Adapt a framework to help you achieve the following:
- Foremost is the – desired level of software quality
- Break the walls of silos and help the teams and team members collaborate seamlessly
- Reduce the overheads and improve the efficiency
Software quality will remain as the most important measure of an organization’s potential. Beyond different approach what matters most for the entire organization is to align its goals, operations and mindset in resonance to the approach you adapt.