1. Historical dependencies are visible in the evolution of a system only, and not in its structure, and are therefore the most troublesome since they are not visible to the developers while coding. Violating these dependencies can lead to maintenance problems and generate bugs.
2. Software maintenance aims at keeping the quality of software at a good level. Software defects are a tangible effect of bad software quality, and thus they are a measure of the maintenance cost of a system. Defect information is helpful to detect the problematic parts of a software system.
3. Several sources of information can be used to study the evolution of a software. However, the final goal of using them is to ease software maintenance activities, by detecting problems in the source code. The benefits of historical dependencies and defects, over other data sources such as mailing list archives, is that they can be directly linked to the source code. Historical dependencies are between software artifacts and defects affect certain parts of the source code.