Crossing


Rationale: If a file has both a large number of dependents and depends on many other files, i.e., with both high fan-in and high fan-out, this file is unlikely to follow the Single Responsibility Principle [18]. We observe that if such a file also changes frequently with its dependents and the files it dependents on, it is often the center of error- and change-proneness.  

Description: If a file is changed frequently with its dependents and the files that it depends on, then we consider these files to follow a Crossing anti-pattern (CRS).

Visualization:

Fig. : An example of Crossing

x indicates structural dependencies, such as extend, depend, etc.

The above figure presents an instance of Crossing. We can see that the center file, DefaultErrorHandlerBuilder.java, was changed frequently with its dependents and the files it depends on in the revision history. 

To visualize an instance of Crossing using the DV8 GUI, click "Analysis-> Load Issue File", and select a ".dv8-issue" file.  For a Crossing issue, DV8 will automatically arrange the files so that the center file is placed in the middle of the DSM, and the violation files are highlighted.