File dependency analysis - PicInfo sample application
This analysis finds circular file dependencies.
A circular dependency means that a group of files depend on each other so that
all the files are necessary for the other files to compile or run.
Circular dependencies are usual but they have a negative effect on reusability.
If any circular groups are found, consider restructuring the code to remove any
unnecessary dependencies or to split the group into smaller groups
of interdependent files.
| File |
Group |
| Group 1 |
| PicForm.frm |
1 |
| PicMain.bas |
1 |
| Individual files |
| PicBMP.cls |
- |
| PicGIF.cls |
- |
| PicInfo.cls |
- |
Circular file groups
In a circular group, the files are mutually dependent on each other.
Group {PicForm.frm PicMain.bas}
| Files in group |
ReqBy |
DepOn |
Req+Dep |
| PicForm.frm |
1 |
1 |
2 |
| PicMain.bas |
1 |
1 |
2 |
Dependencies into/out of group
ROOT
-> PicInfo.cls, PicGIF.cls, PicBMP.cls
File-level dependencies PicMain.bas
inside group contributing to circularity
<- PicForm.frm
-> PicForm.frm
outside of group
<- None
-> None
File-level dependencies PicForm.frm
inside group contributing to circularity
<- PicMain.bas
-> PicMain.bas
outside of group
<- None
-> PicInfo.cls, PicGIF.cls, PicBMP.cls
Individual files
An individual file doesn't belong to any circular group.
PicInfo.cls
<- PicBMP.cls, PicGIF.cls, Group {PicForm.frm PicMain.bas}
LEAF
PicBMP.cls
<- Group {PicForm.frm PicMain.bas}
-> PicInfo.cls
PicGIF.cls
<- Group {PicForm.frm PicMain.bas}
-> PicInfo.cls
Circular dependency index
| Circular groups |
1 |
| Files in circular groups |
2 |
| Total source files |
5 |
| Circular dependency index CDI |
25% |
CDI = (Files in circular groups - Groups) / (Files - 1)
Dependency tree
| Roots |
1 |
|
| Leafs |
1 |
| Total |
4 |
files or file groups |
Glossary
<- Required by
-> Depends on
ROOT is not required by any other files
LEAF does not depend on other files
Files in groups
ReqBy is the number of files inside the group that require this file (<-).
DepOn is the number of files inside the group that this file depends on (->).
A file with a high ReqBy or DepOn is a central file in the system.
A low DepOn, possibly with a high ReqBy, indicates is potential location
for redesign to break a dependency circle.
Tip
View File dependencies with Enterprise Diagrams to get a better understanding
of the dependency structure.