Source: http://www.cs.umd.edu/projects/SoftEng/ESEG/papers/82.73.pdf