IBM®
Skip to main content
    United States change      Terms of use
 
 
Select a scope:    
     Home      Products      Services & industry solutions      Support & downloads      My account     
alphaWorks  >  Java technology  >  

Structural Analysis for Java

A technology that analyzes structural dependencies of Java applications, measures stability, detects structural "anti-patterns," and more.


Date Posted: March 1, 2004
Overview Requirements DownloadFAQsForum Reviews

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.
Back to top Back to top

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.
Back to top Back to top

3. What if I need to change the current configuration?

Click on Options -> Project Config in the menu, make changes, and click on OK.
Back to top Back to top

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.
Back to top Back to top

5. What are the objects in Java?

Classes, interfaces, and packages.
Back to top Back to top

6. How are the relationships formed in Java?

SA4J looks for extends, implements, uses (method argument or returned from the method), and contains relationships.
Back to top Back to top

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.
Back to top Back to top

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.
Back to top Back to top

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.
Back to top Back to top

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.
Back to top Back to top

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.
Back to top Back to top

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.
Back to top Back to top

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.
Back to top Back to top
View screenshots:
Dependency Web Browsing

Download now Download now

Related technologies

For platform(s):
Multi-Platform

For topics:
analysis, antipattern detection, visualization


Related resources

Visualization Research topic

Press Articles

 

    About IBM Privacy Contact