When dealing with software structure, dependency analysis becomes a central topic. For nontrivial applications, it's almost impossible to understand or even control how classes, packages and package trees interact with each other by just examining source code.
However, understanding how things depend on each other is crucial for making the right design decisions during development. We cannot expect to have a good design if we don't know it!
What we really want is to look at our artifacts, see what they need and what needs them. Given this, we can make better decisions and will end up with a better design. Sometimes we discover the need for refactoring to improve our design. Sometimes we just want to discuss some design issues. Instead of stumbling through the code, isn't it much better to look at a dependency graph?
Unfortunately, it's impossible to look at everything at once. To get useful graphs, we have to carefully select the perspectives and scopes. Otherwise we'll end up with very big and clumsy graphs. For example, we may want to look at an artifact to see how its contained artifacts interact or how the artifact itself interacts with the rest of the application.
Another issue is graph layout. Without sophisticated layout capabilities, even rather small graphs cannot be put into a picture we want to look at. At the same time, graph layout is a complex task and much effort has been put into STAN's graph layout engine to obtain good and fast results.
STAN shows dependency graphs for all levels of abstraction. Generally, nodes denote artifacts and edges denote dependencies. An edge's weight reflects the dependency's strength, which is the number of underlying code dependencies. Selecting an edge will show you those dependencies.
Graphs may be zoomed, narrowed and their orientation may be flipped to get optimal insight into the dependency relations of the artifact under consideration.
|< Prev||Next >|