...
Info |
---|
Impact Analysis is probably the most powerful functionality of Kiuwan Architecture. Basically, Impact Analysis lets you to deeply inspect your application for whatever criteria you need, allowing you to discover unknown paths between your components. |
Impact Analysis will provide provides insights on quite different, but important, questions such as:
...
Info |
---|
Impact Analysis “discovers” connections (paths) between source(s) and target(s) componentscomponents of your source code. |
For example, let’s suppose you want to know how your J2EE application is accessing the database, i.e. which Java classes are accessing data tables.
If you don’t know internally the application, you might be interested to know is if the app is using some core classes or freely accessing the database.
Or even more, you could be imposing the use of some core classes to access the database, but you want to discover if there’s any class that is not using those core classes and it’s going goes directly to the database (something that you probably consider as an architecture violation).
...
Kiuwan lets you fully specify conditions on strainf starting and impacted components.
...
In order to make an Impact Analysys, Kiuwan' Analysis Impact page looks as follows.
Let's go through every step.
Starting Components Selectors
Info |
---|
First, you must specify Starting (sources) component(s). |
...
This dialog lets you to specify the starting (source) component(s) for your query.
To select these starting components, clicking on Add button will open a components selector.
We will use our above example in this guide.
Just open, the dialog will display all the components of the application.
Info |
---|
Starting Components Selector dialog lets you to specify starting components in two ways:
|
...
So you specify “Table” as component type, click on Apply button and Kiuwan will display the list of components that match that filter.
Instead, if you were looking for some subset of specific tables, you specify Table as component type (as before), but you should click on "
After clicking on Apply button you will get your starting set of components.
Difference is clear:
- In the 1st case (filter), paths will be searched for all the tables in the application.
- In the 2nd case (hand-picked) , only paths from those tables will be searched.
...
Next, we should define Navigation Constraints. Next section will show to you how to do it.
Navigation Constraints
Info |
---|
Besides to specify starting components, you can also specify constraints about how to navigate through the relationships. By default, Kiuwan will find any path of any type, but you can restrict those paths. |
Relations
Any relation between components belongs to a certain type.
You can specify what relations should be considered when searching for path between components. Kiuwan shows all the different relations found in your code.
Direction
Besides of a relation type, any relation has a direction: Incoming or Outgoing.
- By Incoming, we mean those relations “ending” at the Starting (source) components
- By Outgoing, we mean relations “starting” from the Starting (source) components.
In our example, we are looking for Java classes that are accessing Tables. In this case,usual relations of a java class with a table (insert, delete, etc) go from the java class to the table, so in this case, we could select “Incoming”.
...
In case of doubt, select “Any” and reduce afterwards your search after inspecting the results.
Depth
A pair of components (A and C) can be connected directly (A-C) or indirectly (through intermediate components, A-B-C).
...
If you do not specify any filter, most probable Kiuwan will show to you a huge amount of results. To further concrete your query you can use this dialog.
Info |
---|
This dialog let you compound any filter that will act against the result set. It works exactly as the Component search filter of Components page. Please visit Components Search Criteria |
...
Kiuwan will show the total number of components as well as a list of them.
Info |
---|
Most important aspect of this listing is that it allows you to get a full detail on the found paths. You can click on icon of any component to open a window where you can see the details. |
...
For example, next image shows how org.owasp.webgoat.session.UserDatabase class is accessing three tables (ROLES, USER_ROLES and USERS)
This graphic is quite simple because depth=1, but in case of higher values that graph will be very valuable to your goals.
Example for depth=2
and depth=3
As you can guess, as we increase the dept value, the number of paths exponentially increases.
...