Most people think of Software Quality in terms of the
lack of bugs or problems – how infrequently the application fails or crashes. However, a broader definition includes how well the software works – does it do what it is supposed to do, does it
perform fast enough, can it support the expected number of uses at one time, can customer figure out how to use it, does it always provide correct results.
All aspects of the SDLC impact the quality of
software:
- The more clearly and well documented the product requirements are, the more likely the final product actually does what
it is supposed to do.
- Using appropriate technologies can dramatically impact quality and performance. The greater the miss-match of the chosen
technology to the product, the more likely the product will have problems, perform poorly and be difficult to maintain (increasing the risk that subsequent fixes will either not work or have
unexpected and unwanted side effects).
- An appropriate, understandable and adaptable design is the starting point for the software development effort. Without a
good design, quality, functionality, reliability, ease of use, security, performance, maintainability and time-to-market all suffer – just like a home is more likely to leak or the walls crack if the
architects design is bad or even if the blue prints are too hard to read.
- Appropriate, clear and adaptable detailed designs and implementations impact everything from number of bugs, security,
performance and ease of use. Just like building a bridge, even if the design is solid, if not enough bolts are used or they aren’t tightened enough, the bridge will still fail.
- Testing is as much as integral part of quality as all the above processes. When properly integrated into the overall
quality, testing can not only identify and remove defects, but also provide an assessment of the overall quality and readiness of the product. However, too many organization attempt to ‘test-in’
quality – relying on testing to discover issues, rather than following good overall processes throughout the SDLC to reduce the introduction of problems.
In addition to all the processes and methods defined by
the SDLC, talented engineers make all the difference. No amount of process can make up for less capable engineers. There are many articles discussing the range of capabilities among software
engineers – many suggest it varies as much as a factor of 10 or more. In Glass, Robert L. Facts and Fallacies of Software Engineering, Boston: Pearson Education, Inc. Print states "The best
programmers are up to 28 times better than the worst..."
For more information: