GQM, the acronym for "goal, question, metric", is an approach to software metrics [1] that has been promoted by Victor Basili of the University of Maryland, College Park and the Software Engineering Laboratory at the NASA Goddard Space Flight Center after supervising a Ph.D. thesis by Dr. David M. Weiss. Dr. Weiss' work was inspired by the work of Albert Endres at IBM Germany.
GQM defines a measurement model on three levels:
The open literature typically describes GQM in terms of a six-step process where the first three steps are about using business goals to drive the identification of the right metrics and the last three steps are about gathering the measurement data and making effective use of the measurement results to drive decision making and improvements. Basili described his six-step GQM process as follows:
GQM templates are a structured way of specifying goals [2]. A GQM template contains the following fields:
field | examples |
---|---|
object of study | pair programming, static analysis tool |
purpose | characterize, understand, evaluate, predict, improve |
focus | programmer effort, program reliability |
stakeholder | developer, customer, manager |
context factors | (other important factors that may affect outcomes) |
Here is an example of applying the GQM template to express the goal of a software engineering study:
The purpose of this study is to characterize the effect of pair programming on programmer effort and program quality from the point of view of software managers in the context of a small web-development company.
Although GQM has served the software industry well for several decades, it never provided explicit support for integrating its software measurement model with elements of the larger organization, such as higher-level business goals and strategies. The GQM+Strategies[3] approach was developed by Victor Basili and a group of researchers from the Fraunhofer Institute. It is based on the Goal Question Metric paradigm and adds the capability to create measurement programs that ensure alignment between business goals and strategies, software-specific goals, and measurement goals.