Date Posted: March 1, 2004
Update: March 31, 2004 Fix Pack 1 contains a bug fix for SA4J's inability to create Report and generate the Skeleton view with certain applications.
Tab navigation
- 1. During installation, what should I do if a get a message saying, "Another instance is running"?
- 2. What must I do in order to analyze my Java code?
- 3. What if I need to change the current configuration?
- 4. How does SA4J build a dependency web?
- 5. What are the objects in Java?
- 6. How are the relationships formed in Java?
- 7. What are the local butterflies?
- 8. What are the local breakables?
- 9. What are the local hubs?
- 10. What are the global butterflies?
- 11. What are the global breakables?
- 12. What are the global hubs?
- 13. What are the tangles?
1. During installation, what should I do if a get a message saying, "Another instance is running"?
Structural Analysis for Java ensures that only one instance is running per machine. If you would like to run multiple SA4J applications, you must install it on a different machine.
2. What must I do in order to analyze my Java code?
Specify the archives and directories in the Your Code tab, then add third-party libraries/classpath archives in the Classpath/Third-Party code tab.
3. What if I need to change the current configuration?
Click on Options -> Project Config in the menu, make changes, and click on OK.
4. How does SA4J build a dependency web?
SA4J looks at the method signatures, fields, and inheritance in order to extract the relationships between classes in your code.
5. What are the objects in Java?
Classes, interfaces, and packages.
6. How are the relationships formed in Java?
SA4J looks for extends, implements, uses (method argument or returned from the method), and contains relationships.
7. What are the local butterflies?
Local butterflies are the objects with many immediate dependents. Typically they would be basic interfaces, abstract base classes, and utilities. Local butterflies are very important, even though they are not necessarily problematic. If you change a local butterfly, the immediate local impact will be significant.
8. What are the local breakables?
Local breakables are the objects with many immediate dependencies. Local breakables are typically undesirable because they "know too much." Refactoring a local breakable into several classes will distribute the dependencies and improve the stability of the system overall.
9. What are the local hubs?
Local hubs are the objects with many immediate dependencies and dependents. In a sense, hubs are both butterflies and breakables. Local hubs are typically undesirable because they act as amplifiers of the change throughout the system. Refactoring a local hub into several classes will distribute the dependencies and improve the stability of the system overall.
10. What are the global butterflies?
Global butterflies are the objects with a large number of global dependents. Generally they are basic interfaces, abstract base classes, and utilities. Global butterflies are very important, even though they are not necessarily problematic. If you change a global butterfly, the overall global impact will be significant.
11. What are the global breakables?
Global breakables are the objects with large number of global dependencies. Global breakables often break when anything in the system is changed. Typically, these would be implementations of the highest-level concepts in your system. Having many global breakables in your system is rather undesirable, because it implies high instability.
12. What are the global hubs?
Global hubs are hybrids of global breakables and global butterflies. As breakables they are often affected when anything is changed, and as butterflies they affect a significant percentage of the system. Global hubs can be very harmful for your system. They indicate that a system is not conceptualized well and that it is highly unstable.
13. What are the tangles?
Tangles are a bunch of intermingled circular dependencies. If any object in a tangle is changed, all of the other objects in that tangle are affected. The bigger the tangle is, the more significant its negative impact will be on the rest of the system. Tangles are first candidates for refactoring. By looking at the weakest links within them, you can break them down into smaller, acyclic parts.
