Impact Analysis
Impact analysis means finding dependencies between objects: which object depends on which other object, or vice-versa: if one object is modified or deleted, which other objects are affected? For example, if a web service interface changes, which callers must be adapted?
In JAXR, dependencies between objects are established via associations. There are a variety of pre-defined association types, and moreover a JAXR-based client can create its own association types. Although the names of the association types - for example HasChild or HasMember - suggest a certain semantic, JAXR itself does not imply any semantics with the association types. CentraSite supports the following conventions for associations.
If there is a dependency between two objects, each of which can exist on its own, then this dependency should be expressed by a Uses association. Example: one web service calls another web service. Remember that JAXR-based associations are directed: the association's source object should be the caller/user (in general, the object that depends on another object), and the association's target is the called/used object.
If there is an object C that cannot exist without another object P, then C should have a HasParent association to P. Example: A table object cannot exist without a database object, hence there is a HasParent association from each table to the corresponding database.
The reason for preferring HasParent over the “inverse” HasChild association is as follows: CentraSite tries to maintain referential integrity; this means, among other things, that is not possible to delete an object that is still the target of an association. Hence associations should be directed in such a way that an object cannot be deleted if someone else still depends on it: an object should not be deleted if it still has children, or if it is still in use by someone else.