ASGs are used to provide a visual representation of the program units (packages, tasks and subprograms) in an Ada software system.
The structure of Ada software elements is essentially a hierarchy. ASGs allow the software structure to be shown by more than a single hierarchy, by using two forms of decomposition:
where both of these forms of decomposition have the common concept that a symbol contains the other symbols, and the containment is shown graphically by one level of diagram, or several.
Both of these forms of decomposition can be used in a model. Both forms of decomposition can be used for the same Ada program elements in the same model. This means that there can be several symbols all referring to the same piece of Ada software structure.
ASGs only appear in the Implementation Domain.
The identities of ASGs (their diagram numbers) can contain alphanumeric characters. Also, they are not forced to be uppercase.
The decomposition of symbols is indicated by a . between their identities, so if C is part of B which is part of A, then the complete Number attribute of C will be A.B.C and is termed the fully qualified form of its identity. The identity of C is shown in ASGs as either C or A.B.C depending on the situation. The fully qualified identity is the true identity of a symbol and its corresponding description.
As an example of the two forms of decomposition, consider:
In this example:
but there is also an alternative route to the lowest-level ASG A.B.C:
So this means that there will be opportunities for many references to the same entity in an Ada program structure, as in the above example where:
An ASG AA symbol A in ASG A
A symbol B inside a symbol A in ASG AAn ASG A.BA symbol A.B in ASG A.B
A symbol C inside a symbol B inside a symbol A in ASG AA symbol C inside a symbol A.B in ASG A.BAn ASG A.B.CA symbol A.B.C in ASG A.B.C
These principles extend to the descriptions of diagram symbols, such as the package specification items that are one of the forms of description of the Package symbol (the other being an ASG). Extending the above example to include these package specifications produces:
The comments from the previous example apply here also, together with:
The Context ASG will contain the top-level packages in the system, each of which will have their identity in their Number attribute, such as:
Any of the packages in the Context ASG may contain other packages or tasks, where only the final part of their fully qualified identity will be shown in their symbols:
If any of these symbols are expanded into their own ASG, the Number attribute of the new ASG will be set to the fully qualified identity of the originating symbols and the new ASG will have a copy of the originating symbol which will be shown with its fully qualified identity, e.g.:
The above may be summarised as the following rules for the numbering of ASG symbols and diagrams:
The fully qualified identity of the symbol containing the symbol andThe identity of the symbol itself
One symbol in one ASGMultiple symbols in one ASGOne symbol in multiple ASGsMultiple symbols in multiple ASGs
So the Number attribute of an ASG will not be used as the basis for:
You can control whether the full Number attribute values are shown in ASGs in the same way that this is controlled for other notations:
but the defaults for ASG symbols will be as indicated in this section and its example figures.
An example ASG is:
The symbols available in ASGs are:
The Off-Page Connector and Generic Connector symbols provide convenient navigation links between ASGs, so that an Off-Page Connector and Generic Connector symbol can be expanded into the ASG whose identity is the same as the connector. Therefore, Off-Page Connector and Generic Connector symbols will always have a fully qualified identity in their Number attributes and will always display this complete fully qualified identity in the symbol shown in the ASG.