4.2. Relationship of the subsystems

Each subsystem that is used by other subsystems provide two ways for other subsystems to use them:

Notice that the Facade is normally a part of the API or a simplified version of the API.

For each subsystem X in ArgoUML that uses the subsystem Y, the designer of the subsystem X must decide if he wants to use the API of Y when using the subsystem Y (putting a set of import org.argouml.Y.internals.blabla.*; statements in each file of subsystem X that uses subsystem Y) or use the Facade class of subsystem Y (putting only one import org.argouml.Y.YFacade; in each file in the subsystem X that uses subsystem Y).

The API solution makes the subsystem X depending on the subsystem Y meaning that when we change the API of the subsystem Y we must also change subsystem X. The facade calls solution doesn't make the subsystem X depending on the API of subsystem Y but just the Facade of subsystem Y.

The choice between the usage of the API or the Facade shall be stated in the Cookbook's description of subsystem X in the list of used subsystems.