[This post is the eighth of a series defining software quality].
Software vendors spend a huge portion of development budgets on software quality, yet industry news is filled with examples of software failing during implementation. Why can’t the vendors get things right with software quality? Part of the problem is that software products are complex logical systems (especially ERP products) and share a key characteristic with all complex mathematical and logical systems:
if such a system is also capable of proving certain basic facts about the natural numbers, then one particular arithmetic truth the system cannot prove is the consistency of the system itself
To put it in plain language modern software products are complex enough that no quality program can be created which can be proven to remove all errors. This leads some vendors to give lip service to quality and produce good enough software, but most realize that in order to attract and retain customers a serious quality effort is needed.
Even though we cannot create a proven quality program, some approaches to quality are known to be more effective than others:
Quality demands requirements specifications in enough detail that the products produced can be quantitatively measured against those specifications. Many organizations are not capable or willing to expend the effort to produce specifications at the level of detail required.
This is the most important effort in any quality program – requirements document what the customers need and expect from the software product. From this foundation flow a series of quality assurance opportunities. As developers translate the requirements into a product design, quality translates requirements into a test plan, and tech writers draft documentation. These must be compared and corrected before any code is written. As programmers code the design into software, quality prepares test cases and sample data, and a second draft of documentation is written. Once these are completed, quality is able to execute the test plan through automated and manual test cases and quantitatively measure results. The end result is software, supported by documentation, which meets the requirements and performs to expectations in customer environments.
HarrisData’s Aggressive Quality program is based on the idea that documenting customer requirements is the most important thing we do. Effort spent on requirements not only ensures customer satisfaction, it saves valuable time and effort downstream as we transform requirements into software products.