Assuring high quality of software is crucial, but a highly complex topic. It is intermingled with most disciplines of software engineering, which have developed their own quality assurance approaches. These include:
1) Checklists and guidelines, which can be found in most disciplines. They describe fine-grained requirements that help satisfying high-level quality objectives. Style guides for source code describe how to write code that is easily understandable and modifiable. Guidelines for designing user interfaces describe principles for achiev- ing high usability. Security checklists describe possi- ble vulnerabilities of the software and how they can be avoided.
2) Static code analysis tools, which search for patterns and possible errors that should be avoided in source code and indicate them to the developer.
3) Dynamic tests, which, in contrast, focus on ensuring the satisfaction of requirements by the software.
4) Quality models, which have been developed with the goal of describing software quality. Quality models like ISO 9126  and its successor ISO 25010  describe high-level quality characteristics of software.
These approaches are rather unconnected and not integrated. They lack a common foundation, which leads to loss of information between the different development phases and requires additional tracking effort.
In this paper we present a general quality model that describes very different concepts related to quality and integrates them with the various concepts found in standards, guidelines, and static code checker rules.
It makes use of a metamodel that describes various aspects that relate of software quality:
1) Product Entities which describe parts of the software product. They may be parts of the source code, like identifiers, classes, and expressions, or more abstract concepts, like the architecture of the software. Components of a graphical user interface, like buttons, textfields, etc. are represented as product entities as well.
2) Activities which describe a behavior that is conducted withor on the system. Examples for activities are business processes that are supported by the system, or activities that modify the system, like maintenance.
3) Environment Entities which describe all other types of entities that are relevant for the quality model; e.g. people conducting maintenance tasks, hardware platform the software runs on, or the tools used to develop the software.
Techniques of collecting data or testing characteristics of objects are modeled using the concept of measures. Functional properties are measured by functional test cases,structural properties can be measured by static code analysisor manual inspections. For measuring environment characteristics arbitrary metrics can be used.
We show that the quality model is able to describe the interrelations of disciplines, like requirements engineering and software test, to software quality. With this quality model, we provide a common foundation for concepts related to software quality, enabling consistency and continuity of quality-related information during software development.
To read this external content in full, download the complete paper from the open online archives at the Technical University of Munich.