This page lays out a set of guidelines for how to extend FuGE. It is expected that developers are familiar with the "Introduction to FuGE" document [link to updated document] and the UML model [link to FuGE m2]. These guidelines refer to the FuGE milestone 2 release.
We recommend that developers of extensions work in UML, and use the AndroMDA cartridge [link] supplied to produce a working XML Schema.Benefits of developing in UML:
FuGE provides certain classes that should be extended, using the inheritence mechanism provided in UML. It is also necessary that if two classes are extended and there is an (abstract) association in FuGE between the two superclasses, the corresponding association between the two new subclasses should also be extended by inheritence.
The following diagram shows a part of FuGE (Protocol and Equipment) and an extension model for a Column and ColumnProtocol.
The diagram above shows that Column extends from Equipment and ColumnProtocol extends from Protocol. The association between ColumnProtocol and Column fulfils the same role as the association from +protocolEquipment association. Therefore, the +column association extends from the +protocolEquipment association.
The importance of extending from associations is demonstrated by the following hypothetical example. The ProtocolApplication class has two associations to Data, for input data and output data. ProtocolApplication is extended to capture Normalization performed on microarrays. The Normanlization protocol takes as input raw data, and produces processed data as output.
In the example above, the new associations do not extend from any FuGE associations. This could cause problems for any FuGE processing software for the new format because it is not clear what are the inputs and outputs to this ProtocolApplication. The following diagram demonstrates the correct method:
Once the inheritence associations have been drawn, they can be deleted from the diagram (but not the model) to make the diagram clearer.
Certain classes should be extended in models developed from FuGE. These classes include: Protocol, ProtocolApplication, Action, Software, Equipment,Parameter, Material, Data, Dimension, DimensionElement and ConceptualMolecule. Follow the links to see a guide for extending each FuGE class.
Note that all these classes are abstract. As a general rule, only abstract classes should be extended, although not all FuGE abstract classes can be extended.