All service-elements share some common structure
and behaviour; for example each service-element:
is either an initiator or a responder,
has its own state,
uses services provided by other service-elements,
provides services to other service-elements, and
interacts with other service-elements by sending
operations.
The abstract class abstract-service-element captures
these commonalities and is the superclass of all
the service-elements. For example, ACSE, ROSE and
the Session-Entity are all concrete subclasses of the
abstract-service-element.
A service-element is created (instantiated) when
its user (either a layer-entity or an ASE) sends a connection-
request operation to it, and is destroyed when
its connection with its peer is terminated.
A service-element has a relationship with the
service-elements it uses and the service-elements it
provides services to. In the general framework, these
relationships are called provide.-sewice.-for and uses
services-of. These are modelled as class relationships
between the abstract-service-element and itself, as
shown in Figure 6.