In previous posts, I have written why the quality of your software is so important to your business, from software being easier to maintain to lowering your business risks. I do realize that I keep harping on the importance of software quality but it seems that some businesses still view software quality as a ‘nice to have’ – something that can be sacrificed for faster time to market or lower costs and are shocked when they later have to pay a heavy price for these sacrifices.
So how do you go about ensuring that your software is being developed and managed with high quality? Simple really: adopt a process and discipline mindset into your software development activities.
Quality assurance is about processes.
Firstly, let me start off by explaining what the software quality assurance process is. The sole objective of the software quality assurance process is to ensure that the software being developed is an asset to the company and that it generates a positive return on investment over time. Typically this is done by establishing processes that ensure the software being developed meets identified requirements, and adheres to corporate guidelines which include code quality policies, and then manage, monitor, and report on adherence throughout the software development lifecycle.
The whole point of having a software quality process in place is to manage the quality of your software and measure your software development, and like any good process, you need a “plan” of attack – a Software Quality Assurance Plan to be exact. To ensure quality, it is extremely important to make sure that a Software Quality Assurance Plan is associated and followed on all software development projects, across in-house development teams, outsourced development teams, and software provided by third party suppliers.
Based on the IEEE Standard for Software Quality Assurance Plans, the plans should have the following elements:
- Reference documents;
- Standards, practices, conventions, and metrics;
- Reviews and audits;
- Problem reporting and corrective action;
- Tools, techniques, and methodologies;
- Code control;
- Media control;
- Supplier control;
- Records collection, maintenance, and retention;
- Risk management.
Testing is not quality assurance.
A bit of advice, you will need to start worrying if people start using “quality assurance” and “testing” as interchangeable terms. Testing is also a method used within the quality assurance process and every change should be tested. As explained before, a quality control process measures all products to verify they meet a standard of quality; meaning that everything that goes out must be tested.
Achieving the Software Quality Assurance Process.
The importance of having Software Quality Assurance Process in the development lifecycle cannot be emphasized enough. The process requires discipline and execution. These 2 simple characteristics will result in reliable, maintainable software. Yes, continuously ensuring quality does require buy in and direction that is driven from the top, but it is ultimately up to the software development organization to adopt and execute on that mindset. I’m not taking about just once, but time and again.
Establishing a quality-oriented mindset and process enables you to continuously measure and increase software quality and therefore to raise your software’s reliability, stability and usability. The business will reap the extensive benefits of better software quality
- Pay less for endless bug fixing sessions and warranty issues;
- Identify issues before they become critical;
- Reduce risk, and eliminating rework;
- Increase stability of the software, and raise customer satisfaction;
- Gain greater levels of productivity, motivation and innovation across software delivery teams by enabling them to produce high quality software rather than fixing defects.
It is important to mention here that software quality improvement is an iterative process. You are not going to accomplish everything right away, start off small. Every small change will make a difference; include quality-oriented activities in all phases of your software development lifecycle. Remember, continuously ensuring quality will always cost you less in the long run.
*Image Credit: James Hupp