The Notables view provides a way to isolate and investigate key structural characteristics of your project.
At the top right of the Notables view is the drop-down menu of structural characteristics. Each of these choices will present a specific list of items in the project that are excessive or interesting from that structural perspective:
- Split classes: A split class is one whose child dependency graph is disconnected. Disconnected groups may suggest that the class could be divided into more than one class, each with a more clearly defined responsibility. Splitting classes can also reduce coupling.
- class tangles: Large class tangles are very difficult to work on. If they cross container boundaries, those containers will be necessarily tangled. This notable indicates the number of classes in each class tangle, the number of containers they span, the depth of the root container (the higher in the hierarchy, the more disruptive, in general), and the root container ("scope") that contains the class tangle. You can tag the classes in the tangle from the context menu on the relevant scope item in the list. (Tip: another way to identify class tangles is to select the "class slice" and "group tangles" viewing options).
- Split packages: Similar to "split classes", indicates packages which contain disconnected groups of classes.
- Mixed packages: Lists packages that contain a mix of both sub-packages and classes. Some architects like to keep a common level of abstraction at each point of decomposition.
- Unused classes: List all classes in the project that are not used by other classes. This may mean that they are no longer needed - redundant code has a cost. Note that this will not pick up orphan groups of classes - to find these, select the "Group orphans and orphan groups" viewing option and then the class slice.
- Design tangles: Design tangles are cyclic, packages-level dependencies. This notable gives the outer scope of the design tangle, and lists the items in order of depth of the cycle.
- Fattest design: This notable lists the largest containers in terms of fat, showing the largest items first, and giving the item's number of dependencies.
- Fattest packages: This notable lists the largest packages in terms of fat.
- Fattest classes: This notable shows the largest classes in terms of fat.
- package changes: When you have compared the project with a snapshot previously saved in a Structure101 repository, this shows any packages that have changed structurally.
- classes depth: This notable lists the classes which have the deepest derivation depth and also gives the cardinal number of child classes. This can indicate when a inheritance hierarchy has reached an excessive number of levels.
Right-clicking on any item in the main Notables list brings up the item context menu. In this way the item can be tagged, copied or excluded as desired. If the item is a class, it can also be brought up in the LSM view.