Home
Download
Sourceforge project page

Specification - Plastic

$Header: /cvsroot/ist-plastic/Plastic/web/docs/plastic0_5.html,v 1.1 2006/08/11 14:28:04 jwskene Exp $

$Log: plastic0_5.html,v $

Revision 1.1 2006/08/11 14:28:04 jwskene

Updated with new release

Revision 1.14 2006/08/11 13:41:11 jwskene Documented and compiled.

Revision 1.13 2006/08/11 11:34:40 jwskene Comments done

Revision 1.12 2006/08/10 17:06:18 jwskene More documentation.

Revision 1.11 2006/08/10 16:32:48 jwskene Compiles, 50% documented

Revision 1.10 2006/08/07 16:29:23 jwskene PLASTIC conceptual model as redeveloped by Autili, Di Ruscio and Skene. Some comments done.

Revision 1.9 2006/08/03 09:00:50 jwskene Updates to plastic conceptual model

Revision 1.8 2006/07/04 14:05:02 francoraimondi revision of all comments in conceptualmodel

Revision 1.7 2006/06/28 12:59:39 jwskene Preliminary merge of conceptual model with technology-independent concepts from SLAng.

Revision 1.6 2006/06/28 02:50:14 francoraimondi End of comments from D1.1

Revision 1.5 2006/06/27 01:51:52 francoraimondi More documentation included

Revision 1.4 2006/06/23 16:23:13 francoraimondi Some corrections from latest version of deliverable

Revision 1.3 2006/06/22 15:48:43 francoraimondi Initial documentation

Revision 1.2 2006/06/21 16:29:07 francoraimondi Added CVS fields

This is the EMOF translation of the conceptual model for PLASTIC, based on Deliverable 1.1 (see http://www-c.inria.fr:9098/plastic/deliverable/year-1).

This preamble establishes the basis for interpreting the specification. The specification is written in a combination of three languages: English, a concrete syntax for EMOF, and OCL2.

EMOF and OCL are defined respectively by the following specifications:

- The OMG MOF 2.0 Core Final Adopted Specification

Available: http://www.omg.org/cgi-bin/doc?ptc/2003-10-04

- The OMG UML 2.0 OCL Final Adoped Specification

Available: http://www.omg.org/cgi-bin/doc?ptc/2003-10-14

The relationship between the EMOF concrete syntax and the EMOF abstract syntax is straightforward. It is implemented in the JavaCC grammar contained in the UCL MDA Tools project on sourceforge.net in the file EMOFOCL/uk/ac/ucl/cs/emofocl/parser/emof.jj

The language definition consists of a model of SLAs and the service environment that forms their context. The part of the model that models SLAs defines the abstract syntax of the language. The relationships between the syntactic part of the model and the part of the model modelling services define the semantics of the language.

Disregarding any statement to the contrary made in the MOF or OCL2 specifications, this is a model of real-world objects and relationships, at a particular level of abstraction. The types of services, parties and data described in the model are descriptions of these things as they exist in the real world. The types of specification artifacts such as SLAs, and parts of these artefacts, are descriptions of concrete artefacts in the real world.

This specification offers several things:

1. A model of the commonly understood reference concepts for the Plastic project and architecture.

and 2. A definition of when a scenario can be considered to be an instance of this Plastic model, and therefore a Plastic scenario.

and 3. A definition of how the parties interacting with the Plastic architecture should behave, for example when they are bound by SLAs.

and 4. Informal comments on the use of the model and its meaning, which are not definitive.

A scenario in the real world can be considered to be a Plastic scenario under the following conditions:

1. All objects in the real world relevant to the scenario conform to one of the concrete types defined in this specification, according to the definition of type conformance given below.

For every type of real-world object relevant to scenarios, we offer:

1. A definition of the type in our concrete syntax for EMOF, including a name (in English), properties with names (in English), and a full type definition according to the EMOF specification.

and 2. A comment on the type, in English, that is labelled "Definitive:"

and 3. A comment on each property, in English, that is labelled "Definitive:"

and 4. Possibly one or more type invariants expressed using OCL2, labelled "Wellformedness:". These constraints must always hold true in any situation in which an agreement on a SLAng SLA can be said to exist. The English description accompanying these constraints is not meaningful for the purposes of determining type conformance, but is intended to assist human interpretation of the accompanying OCL constraint.

and 5. Any number of comments on aspects of the type labelled "Informal:". These comments are not definitive of the language, but are intended to aid comprehension of the definitive parts of the specification.

A real-world object under inspection can be interpreted as conforming to a type described in this model if:

a. It is compatible with the definitive description of objects of this type given in this specification.

and b. It has all of the properties of objects of this type, and all those properties are compatible with the definitive descriptions of the properties given in this specification, and the values of those properties conform to the definitions of the types of the respective properties given in this specification, per the definition of compatibility defined here.

and c. It meets all "Wellformedness" constraints on those objects defined in this specification, as per the semantics of OCL2, and the interpretation of all properties as objects conforming to types described in this specification.

How parties should behave:

Parties and their behaviour are construed as objects conforming to types in the model. They should therefore behave according to the descriptions and constraints associated with the model. If parties violate these constraints, for example by refusing to participate in the administration of an SLA, then a scenario may no longer be considered to be a normal Plastic scenario, and the Plastic project will not formally address these cases.

Informal advice:

Non-definitive comments in this specification are labelled as "Informal:".

Contents:

Package - ::types

Informal: Contains types used in both the syntactic or semantic model.

Enumeration - ::types::TimeUnit

Definitive: An enumeration type used to indicate a unit of time associated with some quantity in the model.

  • S

    Definitive: Seconds.

  • mS

    Definitive: Milli-seconds.

  • nS

    Definitive: Nano-seconds.

  • min

    Definitive: Minutes.

  • hr

    Definitive: Hours.

  • day

    Definitive: Days (24 hours).

Enumeration - ::types::AccessDeviceEnum

Definitive: Identifies the type of an AccessDevice.

  • PDA

    Definitive: The access device is a PDA.

Enumeration - ::types::ExecutionEnvironmentEnum

Definitive: Identifies the type of an execution environment.

  • JME

    Definitive: The execution environment is Java Mobile Edition.

Enumeration - ::types::NetworkEnum

Definitive: Identifies the type of a network.

  • WIRELESS
  • LAN
  • GPRS
  • UMTS
  • WAP

Class - ::types::Percentage

Definitive: In the syntactic model, indicates a percentage written in an SLA. In the services model, this is the type of features of an object that can be interpreted as a degree of completeness of some totality.

Properties:

Operations:

Invariants:

  • Wellformedness: Percentages are expressed as a value greater than 0.

    value >= 0

Class - ::types::Duration

Definitive: In the syntactic model a duration is the specification of a length of time. In the services model, a duration is either an actual length of time, or a record of a length of time.

Properties:

  • value : ::types::Real

    Definitive: Interpreted as a number of units of the type specified in the unit property of the duration object, the value is the length of the duration.

  • unit : ::types::TimeUnit

    Definitive: The time unit, by which the value of this duration may be interpreted as an actual duration.

Operations:

  • inMs() : ::types::Real

    Informal: Converts this duration to a number of milliseconds.

    Evaluates to:

    if unit = TimeUnit.mS then value
            else
              if unit = TimeUnit.nS then value / 1000
              else
                if unit = TimeUnit.S then value * 1000
                else
                  if unit = TimeUnit.min then value * 1000 * 60
                  else
                    if unit =
     TimeUnit.hr then value * 1000 * 60 * 60
                    else
                      value * 1000 * 60 * 60 * 24 
                    endif
                  endif
                endif
              endif
            endif
  • eq(s : ::types::Duration) : ::types::Boolean

    Informal: Defines non-object equality for duration objects.

    Evaluates to:

    inMs() = s.inMs()

Invariants:

  • Wellformedness: Durations should never be negative.

    not (value < 0)

Class - ::types::Date

Definitive: In the syntactic model a date is the specification of an instant in time. In the services model, a duration is either an actual instant time, or a record of an instant of time.

Properties:

Operations:

  • inMs() : ::types::Real

    Informal: Converts this date to the number of milliseconds that the date is after 00:00 Jan 1, 2000, UTC+0.

    Evaluates to:

    sinceJan12000.inMs()
  • eq(d : ::types::Date) : ::types::Boolean

    Informal: Defines non-object equality for date objects.

    Evaluates to:

    sinceJan12000.eq(d.sinceJan12000)

Invariants:

Abstract class - ::types::Value

Definitive: A value is a piece of specification information. It may have a unit, allowing it to denote a physical quantity. It may have one of a number of concrete types, extending the abstract notion of value.

Properties:

Operations:

Invariants:

Class - ::types::IntegerValue

Extends: ::types::Value

Definitive: A concrete type of value, expressed as an integer.

Properties:

Operations:

Invariants:

Class - ::types::RealValue

Extends: ::types::Value

Definitive: A concrete type of value, expressed as a real.

Properties:

Operations:

Invariants:

Class - ::types::StringValue

Extends: ::types::Value

Definitive: A concrete type of value, expressed as a string.

Properties:

Operations:

Invariants:

Class - ::types::Unit

Definitive: A user-defined unit. Units may be associated with numerical values to denote a physical quantity.

Properties:

Operations:

Invariants:

Class - ::types::ConversionFormula

Definitive: A user-defined relationship between units.

Properties:

  • conversion : ::types::String

    Definitive: A conversion formula consists of a string describing the means to convert a value with a source unit to one with a target unit.

  • source : ::types::Unit

    Definitive: A conversion formula consists of a string describing the means to convert a value with this source unit to one with a target unit.

  • target : ::types::Unit

    Definitive: A conversion formula consists of a string describing the means to convert a value with a source unit to one with this target unit.

Operations:

Invariants:

Primitive type - ::types::Real

Definitive: In the syntactic model, indicates real numbers written into SLAs. In the service model, this is the type for attributes of an object that can be interpreted as having a value within a continous range.

Equivalent to the OCL real type.

Primitive type - ::types::Boolean

Definitive: In the syntactic model, indicates a value of true or false written into SLAs. In the service model, this is the type for attributes of an object that can be interpreted as being either true or false.

Equivalent to the OCL boolean type.

Primitive type - ::types::Integer

Definitive: In the syntactic model, indicates an whole number written into an SLA. In the service model, this is the type for attributes of an object that can be interpreted as being a natural quantity.

Equivalent to the OCL integer type.

Primitive type - ::types::String

Definitive: In the syntactic model, indicates some text included in an SLA. In the service model, indicates some information present in the domain.

Equivalent to the OCL string type.

Package - ::conceptualmodel

Informal: The conceptualmodel packages groups types from the PLASTIC conceptual model.

Package - ::conceptualmodel::specifications

Informal: The specifications package groups all specification types. Specification types either model documents and their syntactic components in the PLASTIC domain.

Package - ::conceptualmodel::specifications::services

Informal: The service package contains types used to describe services.

Class - ::conceptualmodel::specifications::services::ServiceDescription

Definitive: A service description is the description of a concrete service held in a PLASTIC repository.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::FunctionalServiceSpecification

Definitive: A function service specification defines all invariant aspects of a service.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::SignatureSpecification

Definitive: A signature specification defines the signature of a service interface.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::OperationSpecification

Definitive: An operation specification is part of an interface specification and defines an operation that a particular service exposes.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::ExceptionSpecification

Definitive: An exception specification describes an exception thrown by a service.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::PreAndPostConditions

Definitive: Pre- and post-conditions define conditions on the state of a service that should hold before and after an operation invocation.

Properties:

  • precondition : ::types::String

    Definitive: A pre-condition defines a condition on the state of a service that should hold prior to an operation invocation.

  • postcondition : ::types::String

    Definitive: A post-condition defines a condition on the state of a service that should hold after an operation invocation.

  • langage : ::types::String

    Definitive: Pre- and post-conditions are specified in a formal language which should be explicitly identified in any specification.

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::SemanticsSpecification

Definitive: A semantics specification defines aspects of the semantics of a service using invariant properties.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::ServiceInvariant

Definitive: A service invariant is an observation regarding the state of a service that always holds true in conforming services.

Properties:

  • invariant : ::types::String

    Definitive: A service invariant is an observation regarding the state of a service that always holds true in conforming services.

  • language : ::types::String

    Definitive: Service invariants are expressed in some formal language which must be explicitly identified in any specification.

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::ConsumerSideServiceAdditionalInformation

Definitive: Consumer-side additional information is auxillary service description information maintained by PLASTIC repositories, and contributed by service consumers.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::UsageHistory

TODO: What should usage histories contain? Why are they useful?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::UserProfile

TODO: What should user profiles contain? Why are they useful?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::ServiceRating

TODO: How should service ratings work?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::CapabilitySpecification

Definitive: A capability specification defines a capability of a service in terms of a number of conversations.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::services::ConversationSpecification

Definitive: A conversation specification is the specification of one or more conversations, which are templates for component interaction.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::adaption

Informal: The adaption package contains types describing adaption specifications.

Class - ::conceptualmodel::specifications::adaption::AdaptionSpecification

Definitive: An Adaption Specification defines one way that an adaptive service or component should adapt itself.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::components

Informal: The component packages contains types describing component specifications.

Class - ::conceptualmodel::specifications::components::ComponentSpecification

Definitive: A component specification contains the logical definition of a component.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::components::ComponentInterfaceSpecification

Definitive: A component interface specification defines the the structure of an interface of a conforming component.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::components::ComponentOperationSpecification

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::components::ComponentImplementationSpecification

Definitive: A component implementation specification specifies the implementation of a component.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::sla

Informal: The sla package contains types describing the syntax of SLAs used in the PLASTIC project.

Class - ::conceptualmodel::specifications::sla::ContextAwareSLA

Definitive: A context aware SLA is the concrete record of an agreement between two parties on the performance of some service. In PLASTIC it is the result of accepting an offered SLS.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::context

Informal: The context package contains types describing specifications of the physical and logical context of components and applications.

Abstract class - ::conceptualmodel::specifications::context::ContextSpecification

Definitive: At an abstract level, all context specifications consist of a set of attributes which describe the specifics of the context.

Context specifications may also describe a set of qualities that pertain to the specification itself.

Properties:

Operations:

Invariants:

Abstract class - ::conceptualmodel::specifications::context::ContextAttributeSpecification

Definitive: Context attribute specifications are parts of context specifications that describe particular aspects of a context.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::LocationSpecification

Extends: ::conceptualmodel::specifications::context::ContextAttributeSpecification

Definitive: A location specification specifies a single real location.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::ContextSpecificationQuality

Definitive: Context specification may have any number of qualities that define characteristics of the context specification itself.

Properties:

Operations:

Invariants:

Abstract class - ::conceptualmodel::specifications::context::AvailableResourcesSpecification

Extends: ::conceptualmodel::specifications::context::ContextAttributeSpecification

Definitive: A number of types of context attributes define available resources for an application or service component.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::MemorySpecification

Extends: ::conceptualmodel::specifications::context::AvailableResourcesSpecification

Definitive: A memory specification specifies how much memory is available to a consumer device.

TODO: Add attributes capable of defining some memory. What type of memory is being describe, and for what purpose?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::ProcessorSpecification

Extends: ::conceptualmodel::specifications::context::AvailableResourcesSpecification

Definitive: A processor specification defines a processor made available in a consumer or provider context.

TODO: How should this be defined?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::BatterySpecification

Extends: ::conceptualmodel::specifications::context::AvailableResourcesSpecification

Definitive: A battery specification defines the amount of power available to a consumer application or service.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::ExecutionEnvironmentSpecification

Extends: ::conceptualmodel::specifications::context::ContextAttributeSpecification

Definitive: An execution environment specification defines the execution environment available to a consumer application or service.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::context::consumerside

Informal: The consumerside package contains types that are exclusive to specifying consumer-side context.

Class - ::conceptualmodel::specifications::context::consumerside::ConsumerSideContextSpecification

Extends: ::conceptualmodel::specifications::context::ContextSpecification

Definitive: A consumer-side context specification records details of the context of a consumer application.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::consumerside::ConsumerConnectionSpecification

Extends: ::conceptualmodel::specifications::context::ContextAttributeSpecification

Definitive: A consumer connection specification describes the network link providing access to the consumer.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::consumerside::ScreenSpecification

Extends: ::conceptualmodel::specifications::context::AvailableResourcesSpecification

Definitive: A screen specification defines the characteristics of a screen on a consumer access device.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::consumerside::InputDeviceSpecification

Extends: ::conceptualmodel::specifications::context::AvailableResourcesSpecification

Definitive: An input device specification defines the characteristics of an input device on a consumer access device.

TODO: How should this be specified.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::consumerside::AccessDeviceSpecification

Extends: ::conceptualmodel::specifications::context::ContextAttributeSpecification

Definitive: An access device specification defines the type of device available in a consumer access context.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::context::networkside

Informal: The package networkside contains types exclusive to defining network-side context.

Class - ::conceptualmodel::specifications::context::networkside::NetworkSideContextSpecification

Extends: ::conceptualmodel::specifications::context::ContextSpecification

Definitive: A network-side context specification defines details of a network.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::context::networkside::NetworkSpecification

Extends: ::conceptualmodel::specifications::context::ContextAttributeSpecification

Definitive: A network specification defines the type of network in a network-side context.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::context::providerside

Informal: The providerside package contains types exclusive to defining provider-side context.

Class - ::conceptualmodel::specifications::context::providerside::ProviderSideContextSpecification

Extends: ::conceptualmodel::specifications::context::ContextSpecification

Definitive: A provider-side context specification describes a context in which services may execute.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::testing

Informal: The testing package contains specification elements related to testing services.

Class - ::conceptualmodel::specifications::testing::TestSuite

Definitive: A test suite is the specification of some tests that a service is presumed to be able to execute successfully?

TODO: What should this contain?

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::specifications::sls

Informal: The sls package contains specification elements used to specify service levels.

Abstract class - ::conceptualmodel::specifications::sls::SLS

Informal: A service-level specification is a set of constraints over the performance of a service.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::sls::NonfunctionalServiceSpecification

Informal: A non-functional service specification defines a set of constraints over the performance of a service.

TODO: Maybe NFSS and SLS should be combined?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::sls::VersionSpecification

Definitive: A version specification specifies the version of a service.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::sls::PricingInformation

Definitive: Pricing information is associated with a service offer and SLA. It defines all financial matters related to the use of a service.

TODO: Pricing information should include SLA penalties.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::sls::RequestedSLS

Extends: ::conceptualmodel::specifications::sls::SLS

Definitive: A requested SLS is submitted by a service consumer to a repository in the hope of matching an offered service. It contains both functional and non-functional descriptions of the service on offer.

TODO: This should be called requested SLA because it includes pricing information.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::sls::OfferedSLS

Extends: ::conceptualmodel::specifications::sls::SLS

Definitive: An offered SLS is part of a service description. It defines a set of behavioural constraints on a service that a provider is prepared to guarantee in return for payment.

TODO: This should be called OfferedSLA.

Properties:

Operations:

Invariants:

Abstract class - ::conceptualmodel::specifications::sls::QoSAttributeSpecification

Definitive: QoSAttributeSpecification specify particular constraints on the behaviour of a service.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::sls::MetricValueSpecification

Extends: ::conceptualmodel::specifications::sls::QoSAttributeSpecification

Definitive: A metric value specification specifies the value of some measurement of a service that should always hold for a conforming service.

Properties:

  • name : ::types::String

    Definitive: The name of the metric value should identify the measurement to be taken and the means to take it.

  • value : ::types::Value

    Definitive: The metric value specification specifies the value that the identified metric should return when applied to a conforming service.

  • attributes : ::conceptualmodel::domain::context::ContextAttribute

    Definitive: Any number of real service attributes may conform to the metric value specification. I.e. if measured these attributes would result in the value specified in the specification.

Operations:

Invariants:

Class - ::conceptualmodel::specifications::sls::MatchingPolicySpecification

Definitive: A matching policy defines an approach that a repository may take when matching request SLSs to offered SLSs.

TODO: How should this be specified?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::specifications::sls::CompatibilityWithExistingStandardSpecification

Definitive: Allows compatibility with existing standards to be described, for conforming services.

Properties:

  • description : ::types::String

    Definitive: The compatibility with an existing standard specification describes the standard with which conforming services are compatible.

Operations:

Invariants:

Package - ::conceptualmodel::domain

Informal: The domain package contains types for all objects in the domain that are not used to specify other elements in the domain.

Package - ::conceptualmodel::domain::services

Informal: Contains all types of domain objects that are services or parts of services.

Abstract class - ::conceptualmodel::domain::services::Service

Definitive: The archetypical notion of service.

TODO: Do we really need this as well as adaptive service? And as well as service specification. If two services have the same service specification, then they implement the same archetypical service.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::services::AdaptiveSoftwareService

Definitive: An adaptive software service is a concrete instance of a service, provided in a particular location.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::services::ServiceInterface

Definitive: A service interface is a point of access to a service. It consists of a set of operations.

TODO: How should service interfaces be identified? What different sorts of service interface should be described?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::services::ServiceOperation

Definitive: A service operation is an identified function of a service that can be used on the request of a service consumer.

TODO: Semantics of service operations.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::services::CompositeSoftwareService

Extends: ::conceptualmodel::domain::services::AdaptiveSoftwareService

Definitive: A composite software service is a software service that makes use of other software services to perform parts of its functionality.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::services::Capability

Definitive: A capability of a service is a subset of its functionalities, exploitable by a variety of protocols embodied by conversations.

TODO: Conversations are instances not archetypes. Do we need an architypical conversation type to refer to, rather than a set of concrete conversations?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::services::CompositeCapability

Extends: ::conceptualmodel::domain::services::Capability

Definitive: a composite capability is a capability composed of other capabilities. All conversations of the composed capabilities are conversations of the composite capability.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::components

Definitive: Contains all domain model elements that are components or parts of components.

Class - ::conceptualmodel::domain::components::SoftwareComponent

Definitive: A software component is a unit of functionality deployed in some context.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::components::CompositeComponent

Extends: ::conceptualmodel::domain::components::SoftwareComponent

Definitive: A composite component is a component that uses other components in the same context to provide part of its functionality.

TODO: Components may communicate with each other locally. When does this constitute a composition, and when merely a cooperation?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::components::ComponentInterface

Definitive: A component interface exposes part of the functionality of a component to other components locally, or in order to implement a service operation.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::components::ComponentOperation

Definitive: A component operation is a unit of functionality of a component that can be invoked synchronously and locally by other components or used to implement a service operation.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::context

Informal: Contains all types of domain objects forming consumer, provider or network contexts.

Abstract class - ::conceptualmodel::domain::context::Context

Definitive: A context is an environment in which applications, services, components and elements of the PLASTIC middleware reside, or interact.

Properties:

Operations:

Invariants:

Abstract class - ::conceptualmodel::domain::context::ContextAttribute

Definitive: A characteristic of a context that can be described seperately from other characteristics.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::Location

Extends: ::conceptualmodel::domain::context::ContextAttribute

Definitive: Location is an attribute of some types of context.

TODO: Should contexts have more than one location? What about network contexts?

Properties:

Operations:

Invariants:

Abstract class - ::conceptualmodel::domain::context::AvailableResources

Extends: ::conceptualmodel::domain::context::ContextAttribute

Definitive: The availabilities of certain types of resources are context attributes.

Properties:

Operations:

Invariants:

Abstract class - ::conceptualmodel::domain::context::ContextAttributeValueSource

Definitive: Some domain mechanism may measure a context attribute for the purpose of specifying it in a context specification.

TODO: Need some concrete subtypes here.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::Memory

Extends: ::conceptualmodel::domain::context::AvailableResources

Definitive: The amount of memory available to a processing node is an attribute of consumer and provider contexts.

TODO: Add attributes to define specification semantics.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::Processor

Extends: ::conceptualmodel::domain::context::AvailableResources

Definitive: The type and power of an available processor is an attribute of consumer and provider contexts.

TODO: Add attributes to define specification semantics. Should contexts have multiple processors? What about virtual or threaded execution environments? What is the intent in describing processors in a context?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::Battery

Extends: ::conceptualmodel::domain::context::AvailableResources

Definitive: The remaining battery life of a processing node is an attribute of consumer and provider contexts.

TODO: Useless to know remaining battery life if we can't predict how execution will use power.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::ExecutionEnvironment

Extends: ::conceptualmodel::domain::context::ContextAttribute

Definitive: The execution environment on a processing node is an attribute of consumer and provider contexts.

TODO: Add attributes to define specification semantics. Can nodes have several execution environments?

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::context::consumerside

Informal: Contains all types of domain objects which only ever form part of a consumer-side context.

Class - ::conceptualmodel::domain::context::consumerside::ConsumerSideContext

Extends: ::conceptualmodel::domain::context::Context

Definitive: A consumer-side context is the enviroment in which a consumer application executes.

TODO: Specify attributes for the context attributes that are required.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::consumerside::Screen

Extends: ::conceptualmodel::domain::context::AvailableResources

Definitive: An attribute of a consumer-side context is the screen available to interact with a consumer.

TODO: Can contexts have multiple screens? Refine to describe specification semantics.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::consumerside::InputDevice

Extends: ::conceptualmodel::domain::context::AvailableResources

Definitive: An attribute of a consumer-side context is the input device available for the consumer.

TODO: Multiple devices? Semantics.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::consumerside::AccessDevice

Extends: ::conceptualmodel::domain::context::ContextAttribute

Definitive: An attribute of a consumer-side context is the type of processing node (access device) being used.

TODO: Semantics.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::consumerside::ClientConnection

Extends: ::conceptualmodel::domain::context::ContextAttribute

Definitive: An attribute of a consumer-side context is the first hop network link.

TODO: Should this really be separate from network context? Can we have multiple networking options? Semantics.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::context::networkside

Informal: Contains all types of domain objects which only ever form part of a network-side context.

Class - ::conceptualmodel::domain::context::networkside::NetworkSideContext

Extends: ::conceptualmodel::domain::context::Context

Definitive: The network-side context is the environment that conveys messages between the consumer and the provider.

TODO: Add attributes for context attributes.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::context::networkside::Network

Extends: ::conceptualmodel::domain::context::ContextAttribute

Definitive: The type of a network being used is an attribute of network-side context.

TODO: Semantics. What if there are multiple types of network in sequence? What if there are multiple choices? What if the network provides differentiated services?

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::context::providerside

Informal: Contains all types of domain objects which only ever form part of a provider-side context.

Class - ::conceptualmodel::domain::context::providerside::ProviderSideContext

Extends: ::conceptualmodel::domain::context::Context

Definitive: The provider-side context is the environment in which components implementing services execute.

TODO: Will we eventually find that there is no difference between client and provider-side contexts, because most devices can offer and consume services? Add attributes for context attributes.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::plastic

Informal: Contains all types of domain object contributed by the PLASTIC project.

TODO: Refine all the types in this package as details of the PLASTIC architecture become apparent. Capture protocols in the events package.

Class - ::conceptualmodel::domain::plastic::PLASTICMiddleware

Definitive: The PLASTIC middleware provides runtime support for the deployment and use of PLASTIC services.

TODO: Is this definition archetypical or does it represent running instances of the middleware? Same for provider and consumer-side middlewares.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::plastic::ConsumerSidePLASTICMiddleware

Definitive: Part of the PLASTIC middleware will support the use of services on the consumer's side.

TODO: Archetype or instance?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::plastic::ProviderSidePLASTICMiddleware

Definitive: Part of the PLASTIC middleware will support the use of services on the service provider's side.

TODO: Archetype or instance?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::plastic::ServiceRegistry

Definitive: Service registries will be either a component of the PLASTIC middleware, or a special type of service, that maintains a database of service descriptions, and performs matching between request SLSs, and provided SLSs.

TODO: Archetype or instance? Should be request and provided SLAs. Should this be a subclass of AdaptiveSoftwareService?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::plastic::PLASTICMiddlewareComponentRequirements

Definitive: Using the middleware implies that components must meet some set of requirements.

TODO: This is an archetype and can be removed when the requirements can be expressed directly in this model.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::parties

Class - ::conceptualmodel::domain::parties::Role

Definitive: A role identifies a participant in certain types behaviour.

TODO: Events should refer to parties, not roles. Roles are only useful for defining event types (architypes).

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::parties::Party

Definitive: A party is an individual, agent or organisation that can take action in plastic scenarios.

TODO: Parties should be associated with the events that they perform.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::parties::ServiceProvider

Extends: ::conceptualmodel::domain::parties::Role

Definitive: ServiceProvider is a type of role for parties who provide services.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::parties::ServiceIntegrator

Extends: ::conceptualmodel::domain::parties::Role

Definitive: ServiceIntegrator is a type of role for parties that integrate services (resulting in composite services).

TODO: Why is this not called ServiceComposer, like ComponentComposer?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::parties::ServiceDeveloper

Extends: ::conceptualmodel::domain::parties::Role

Definitive: ServiceDeveloper is a type of role for parties that develop services.

TODO: Should service developers also develop components, as components implement services?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::parties::ServiceConsumer

Extends: ::conceptualmodel::domain::parties::Role

Definitive: ServiceConsumer is a role for parties that consume services.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::parties::ComponentAssembler

Extends: ::conceptualmodel::domain::parties::Role

Definitive: ComponentAssembler is a type of role for parties that assemble components.

TODO: Why should there be seperate roles for implementing components and assembling components? In fact, where is the ComponentDeveloper role?

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::events

Abstract class - ::conceptualmodel::domain::events::Event

Definitive: An event is a change of state in the domain that occurs at a particular time.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::events::negotiation

Informal: The negotiatesla package contains all protocol events related to negotiating an SLA.

Class - ::conceptualmodel::domain::events::negotiation::CreateOffer

Extends: ::conceptualmodel::domain::events::Event

Definitive: The create offer event occurs when an offered SLS is added to a service description in a service registry.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::negotiation::RequestPolicyMatch

Extends: ::conceptualmodel::domain::events::Event

Definitive: A request policy match event occurs when a service consumer provides a requested SLS to a service registry and specifies the policy by which the requested SLS should be matched to offered SLSs in the repository.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::negotiation::PolicyMatch

Extends: ::conceptualmodel::domain::events::Event

Definitive: A policy match event occurs when a registry matches a requested SLS to the SLSs contained in the registry.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::negotiation::Negotiation

Extends: ::conceptualmodel::domain::events::Event

Definitive: A negotiation is a composite event, denoting the culmination of a sequence of offers and requests.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::negotiation::RequestSLS

Extends: ::conceptualmodel::domain::events::Event

Definitive: An SLS request is made directly to a service provider by a consumer. It contains a revised offer SLS that the consumer wishes the provider to offer.

TODO: The whole dichotomy between request and offer SLSs needs to be revisited, as does policy. Requests may contain ranges and options. Offers should eventually contain only concrete values. Both should be associated with functional descriptions but may be considered to be separate from functional descriptions. Both may contain pricing information, so should be considered SLAs, or potential SLAs, not SLSs. SLSs may still be needed in adaption specifications.

Where is the reference to the consumer here?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::negotiation::OfferSLS

Extends: ::conceptualmodel::domain::events::Event

Definitive: An offer made by a service provider directly to a service consumer.

TODO: How are consumer and provider referenced by this event?

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::negotiation::AcceptSLS

Extends: ::conceptualmodel::domain::events::Event

Definitive: AcceptSLS occurs when a client accepts an offered SLS. It results in an SLA.

Properties:

Operations:

Invariants:

Package - ::conceptualmodel::domain::events::conversation

Informal: The conversation package contains all events occuring during a conversation between a consumer application and a service.

TODO: The application isn't explicitly modelled as distinct from the consumer role. This probably needs fixing.

Class - ::conceptualmodel::domain::events::conversation::StartConversation

Extends: ::conceptualmodel::domain::events::Event

Definitive: A conversation is initiated by a consumer.

TODO: Conversations may be initiated by consumer applications.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::conversation::SendConsumerContext

Extends: ::conceptualmodel::domain::events::Event

Definitive: A send consumer context event occurs when the consumer-side middleware inspects the consumer's context in order to produce a consumer-side context specification, which is sent to a service with which a conversation is starting.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::conversation::NotifyConversationStart

Extends: ::conceptualmodel::domain::events::Event

Definitive: The provider-side middleware will notify a service provider that a conversation is about to start, so that the provider has the opportunity to initiate adaptions. In doing so, the middleware will also retrieve specifications of network and provider-side contexts so that these may be used to guide adaption.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::conversation::ContextAwareAdaption

Extends: ::conceptualmodel::domain::events::Event

Definitive: A provider may choose to adapt a service in response to a notification that a conversation will shortly begin.

TODO: Signal to client that conversation is ready to begin (maybe send client adapted components). Adaption may be automatic and managed by middleware.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::conversation::Conversation

Extends: ::conceptualmodel::domain::events::Event

Definitive: A conversation is a sequence of operation usages.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::conversation::OperationUsage

Extends: ::conceptualmodel::domain::events::Event

Definitive: An operation usage consists of a request being sent to a service, processed, and a result returned.

TODO: Refine this with details of parameter values, return values etc. Also need to deal with error cases.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::conversation::SendRequest

Extends: ::conceptualmodel::domain::events::Event

Definitive: A send request event occurs when a consumer submits an event to a service.

TODO: Remodel this to include network events.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::conversation::ServiceRequest

Extends: ::conceptualmodel::domain::events::Event

Definitive: A service request event occurs when a service performs so processing in response to a request.

TODO: Refine. Link to request probably.

Properties:

Operations:

Invariants:

Class - ::conceptualmodel::domain::events::conversation::SendResponse

Extends: ::conceptualmodel::domain::events::Event

Definitive: A send response event occurs when a service returns a response to a client following a request.

TODO: Remodel this to include network events.

Properties:

Operations:

Invariants:


              


The PLASTIC project is funded under grant number 026955 by as a STREP.