This step involves checking that the dependencies settings are correct for all your technologies. Dependencies are configured at Application level for each technology and are configured between individual Analysis Units/groups of Analysis Units. Move to the Console screen if you are not already there:
Now click the Config option in the left hand panel, expand each Technology and locate the Dependencies section:
When a dependency is configured, during the analysis process source code corresponding to the Analysis Units in the Source column (highlighted in the image below) is scanned for references to objects in source code corresponding to the Analysis Units in the Target column (highlighted in the image below). If any matches are found, then a link between the two objects will be created:
Click to enlarge
References are traced using search strings which is less selective than parser based technology used for other links traced by the analyzer. This technology detects a reference to an object wherever its name is mentioned, regardless of the context in which this reference occurs. As a result, incorrect links may be traced if a string happens to match a given name even if it is not logically related to the corresponding object. As a result you may have to intervene to filter incorrect references - see Validate Dynamic Links.
Incorrect dependency settings may result in missing links - missing inter-technology dependencies - or in a large number of Dynamic Links - incorrect dependencies. This can have a knock on effect on Quality Rule results and on Transaction flow.
There are three types of dependencies, explained below:
Default dependency rules are created automatically by Console between Analysis Units and groups of Analysis Units. If no dependency rules are "discovered" (during the source code delivery process), then Console will create a "default" rule. The default rules are as follows:
- dependencies will be created between all "client" Analysis Unit groups and all Analysis Units/groups of Analysis Units contain SQL (whether legacy PL/SQL / T-SQL or Universal SQL analysis units)
- dependencies will be created between all JEE Analysis Unit groups and all Mainframe Analysis Unit groups
In the screen shot below, no dependencies were "discovered" between any JEE Analysis Units and PL/SQL Analysis Units during the source code delivery - as such a default rule has been created by Console to ensure links are created where references exist:
Discovered dependency rules are also created automatically by Console - these rules are directly "discovered" from the source code. Rules that have been "discovered" are always between individual Analysis Units since they are based on dependencies between projects (i.e. a classpath, for example for JEE, .NET, C/C++ etc.):
If there were no "missing project/dependencies" alerts as outlined in Validate using the Overview panel, then you can be confident that all "discovered" dependencies are correct. If you do have "missing project/dependency" alerts, you should always try to fix these first and if this is not possible you can then create a custom dependency.
Custom dependency rules are those that have been created manually. Typically these are created to cover a situation which the automatic Default and Discovered dependency rules do not take into account - you will need to examine the source code manually to determine what dependencies you should create.
One example where a custom rule might be necessary is in cross technology situations where code in Analysis Unit Technology A relies on code in Analysis Unit Technology B:
Another example would be where a "discoverer" does not exist for a technology and you are forced to create custom Analysis Units - in this case dependency rules must be created manually. Where several client technologies (for instance Java and C/C++) or several database schemas exist, the correct dependencies must be set, overriding the default settings if necessary.
Manual permanent dependencies
It is possible to force Console to create a dependency between specific languages/technologies and which is valid for every single application managed on a specific Node in Console - in other words, once this is configured, it will no longer be necessary to manually create the dependencies when Console has not automatically created them.
This can be achieved using a file called
dependencies-matrix.xml located on the Node. See Application - Config - Analysis - Manual dependency configuration for more information.