MAY Terminology » Historique » Révision 15
Révision 14 (Frédéric Migeon, 15/10/2014 16:36) → Révision 15/17 (Anonyme, 15/10/2014 17:21)
h1. Terminology
{{>toc}}
h2. MAY
MAY is a tool to build software components with SpeADL and Java. It stands for "Make Agent Yourself".
h2. Software Component
The term A software component is used ambiguisly to designate sometimes types at the same time the type of components, a component, an implementation of such a type, or a runtime this type and an instance of such the implementation that exposes the type.
h3. Component Class
A component class is at the same time a type and an implementation.
With MAY, there are h3. Component Instance
A component descriptions in SpeADL, component implementations in Java instance is a runtime entity that exposes the type of its class and component instances at runtime. realise this type using the implementation of its class.
h2. Interface
In Java, interfaces are collections of methods.
An interface has a name and is located in a Java package.
h2. Namespace
A namespace plays the same role as a package in Java except that it is not tied to a particular directory hierarchy.
h2. SpeADL Component Definition
A component definition is a SpeADL definition of a component type and optionally of a component implementation in the form of a configuration.
It is located in a namespace.
h3. Component Type
A component type is identified by has a name and contains a collection of ports.
It represents a component from the exterior: this is all that can be externally accessed from a component instance.
In SpeADL, component types are not explicitly defined: a component definition implies the definition of a type (it is similar to Java where defining a class implies the definition of its type).
h3. Component Port
A port in a component is identified by has a name and has an interface.
If it is provided, it must answer call to the operations of the interface.
If it is required, it can be used from within the component to call operations of the interfaces without knowing who provides them.
h3. Configuration
A configuration is a composition of component parts.
A configuration acts as an implementation for a component.
A configuration must be valid and it is when all the required ports of its part are bound (bindings) to other ports with the correct interface.
h3. Component Part
A part is a member of a component and that is itself a component.
It is identified by has a name and has a type denoted by its name. component type.
Its required ports must be connected to a port providing the interface, and its provided ports are available from within the containing component.
h2. Component Java Implementation
A component implementation is a Java implementation of a component definition.
It is located in a package as a normal Java class.
It contains implementations for the provided ports, definitions of the Java implementations for the parts and optionally implementation of the initialisation of the component.
h2. Component Instance
A component instance is a runtime entity that exposes a component the type of its class and realise this type using a component definition exposing this type and a component the implementation implementing this definition. of its class.
A component instance contains a component instance for each of its parts.
A component instance is created from the component implementation.
h2. Ecosystem
An ecosystem is a component with species.
h3. Ecosystem Definition
See [[SpeADL Terminology#Component Definition|Component Definition]].
On top of that, it contains also species.
h3. Ecosystem Java Implementation
See [[SpeADL Terminology#Component Java Implementation|Component Java Implementation]].
On top of that it contains definitions of the Java implementations for the species.
h2. Species
A species is a component that can only be defined inside an ecosystem.
h3. Species Definition
See [[SpeADL Terminology#Component Definition|Component Definition]].
On top of that, it can have parameters (separated by commas) and contain uses.
h3. Species Parameter
A species parameter has a name and a Java type.
h3. Use
A use is a part that can only be defined inside a species.
A use has a name but the only component type it can have must be a species declared in one of the parts of the ecosystem containing its species.
If the type of the use has parameters, then arguments for these parameters must be passed to it.
h3. Species Implementation
See [[SpeADL Terminology#Component Java Implementation|Component Java Implementation]].
Contrary to parts, a use implementation don't have to be defined as they are already defined in the implementation of the ecosystem containing the species of the use.
h3. Species Instance
A species can be instantiated only from within the ecosystem that defines it.