SPELL stands for Software Process
Evo Lutionary Language [C+92]
It is the Process Modelling
Language of EPOS. It allows to model the three classes of process entities
just presented (i.e. activities, products and relations).
SPELL conforms to the Object-Oriented paradigm. A task, for example, can model many different kinds of activities: the compilation of a source module as well as an high-level ``testing'' activity. The corresponding modelling types are the subtypes of a common TaskEntity root type. Quite similarly, a source code module and a design document have a common DataEntity ancestor which contains the set of common properties.
Figure 1.4 shows some system-defined and predefined types.
Figure 1.4: Part of the EPOS type hierarchy.
Entity is a system-defined root type. It has two subtypes:
Meta-types can be described as ``the type of the types'', in that
normal types are instances of them. From a practical
point of view, meta-types can be handled as any other type in EPOS and
could theoretically be used to model different domains of application of the
system, i.e. by providing EPOS with domain knowledge. Meta-types can
be refined through subtyping, but this does not mean that every type
possesses its own meta-type (the default semantics when a new type is
created, is to have it ``inherit'' the meta-type of its
PM_Entity is the class of any process element, and only acts as a
container of the two basic types TaskEntity and
DataEntity. The meta-types of these two are TaskDescriptor and
DataDescriptor, which are, in practice, also the meta-types of
all the subtypes of the two types just mentioned.
Before we provide a more detailed view of SPELL,we must clarify the inheritance mechanism exploited by EPOS and the difference between type-level and instance-level attributes. To these subjects we dedicate the next two paragraphs.