Software practitioners make technical and business decisions based on their understanding of software projects. This understanding is grounded in their own experiences, but can be augmented by studying various kinds of software development artifacts, including source code, bug reports, version control meta-data, test cases, usage logs, etc.