Software Quality through Software Process
Software Process Quality
Software process is the set of activities applied to software products throughout the entire software life cycle. This includes requirements acquisition, system specification, software planning and design, implementation, testing, documentation, deployment and maintenance.
A central view of Software Quality Assurance is that the quality of a software product depends largely on the quality of the process used to produce it.
Quality Practices in the Software Process
There are many types of quality practice that may be used to contribute to overall quality assurance in the software process. These practices may be classified along two dimensions.
- Synthetic vs. Analytic. Synthetic tools and techniques produces quality software as a result of their structure, while analytic tools are used to determine quality measures of existing software components.
- Manual vs. Automated. Manual techniques and tools require the software to be interactively involved, while automated tools carry out their activities largely without human intervention.
Synthetic | Analytic | |
---|---|---|
Manual | design methodologies, prototyping, coding standards, templates, documentation standards | walk-throughs, inspections, audits |
Automated | program generators, compilers, development environments, | model checkers, program verifiers, program checkers, unit, integration and system testing |
Quality Plan
A software quality plan is an overall document that describes the quality goals associated with a software project as well as the set of quality practices that will be employed through the project life cycle.
Organizational Software Quality Models
The ISO 9000 series of standards deal with the overall quality management systems that organizations of all kinds can employ to systematically address quality concerns. In the specific area of software, the Software Engineering Institute of Carnegie-Mellon University has developed the Capability Maturity Model Integration (CMMI) that allows organizations to systematically improve the quality of software processes through a series of maturity levels.