Software quality reflects to what extent a software product conforms to certain requirements which are stated depending on a set of criteria determined by the specifics of the field where the software product is intended to be used.
There exists the ISO 9000 family of standards managing general principles of quality assurance in every field. The most important standards related to software development are the following:
- ISO 9000:2000 Quality management systems — Fundamentals and vocabulary;
- ISO 9001:2000 Quality management systems — Requirements. Models for quality assurance in design, development, production, installation, and servicing;
- ISO 9004:2000 Quality management systems — Guidelines for performance improvements;
- ISO/IEC 90003:2004 Software engineering — Guidelines for the application of ISO 9001:2000 to computer software.
Every company may also have its own software quality standards corresponding to the specifics of its work and therefore its requirements.
The following basic characteristics of software quality measurement are defined:
1. Source code quality.
- Conformance to standards;
- A small quantity of compiler warnings.
2. Software product quality.
You can see from these characteristics that requirements to be stated should meet the needs of both developers of software products and their users.
Checking requirements to be set, their completeness as well as correct result estimate is an important aspect. Various methods are used for quality assessment:
- testing (unit-testing, integration testing, system testing, regression testing);
- static code analysis;
- dynamic code analysis;
- Code review.
Metrics acquired through these methods characterize various parameters: program performance, consumed resources (memory, CPU load, etc.), conformance to coding standards, number of errors per certain number of code lines, and many others. All the parameters requirements are set for should be tested.
It should be noted that software quality verification must be performed at all stages of the software development life-cycle. Thus you will be able to provide the highest quality of the program code and, consequently, the end software product. One cannot start developing a poor software product and think of enhancing its quality just before the development process is over.