Deprecated
- there are no deprecated versions of this component
Architecture
Service Construction & Software Landscape Metamodel
The Service Construction Metamodel (SCM) is motivated by the need to store and manage information about services inside the SLA@SOI framework. ServiceManagers? have to provide data about the types of services offered, about alternative realizations of these service types, and about the service instances that have already been provisioned. Furthermore, SLAManagers require information about the dependencies of a service on other services, about features of the service itself, and about features of its associated monitoring system. Based on this information, SLAManagers can plan and negotiate SLAs with their customers and acquire other (external) services that are required.
The Service Construction Metamodel is driven by the information necessary to create, evaluate, and maintain services and their associated SLAs. As such, it is an essential part for the communication of SLAManagers, ServiceEvaluation?, and (Software-)ServiceManagers?. With the SCM, (Software-)ServiceManagers? can maintain information about provided and required service types, available service implementations, and running service instances. SLAManagers and ServiceEvaluation? can retrieve information about service dependencies, about features of the service, and about its monitoring system. Furthermore, they can resolve dependencies to external services and provide particular configurations of the service and its monitoring system in a generic way. ServiceManagers? instantiate services that have been negotiated by the SLAManager based on their configuration. In the following, we introduce the basic elements of the SCM and describe their purpose.
Service Hierarchy
During its life-cycle, a service exists in different aggregate states that have to be reflected inside the SLA@SOI framework. The service hierarchy shown in Figure 1 reflects the different states a service can assume: ServiceType, ServiceImplementation, and ServicesInstance?.
A ServiceType describes the functionality that a service provides. For example, it contains pointers to the WSDL definitions of the service’s interfaces. The same ServiceType can be realized by multiple ServiceImplementations?.
A ServiceImplementation consists of a set of ImplementationArtefacts? (such as software components, or appliances for virtual machines) that are required to instantiate the service. Each ImplementationArtefact? has a set of Dependencies to other services. For example, a software service that is realized by an appliance depends on an infrastructure service that is able to host that particular appliance. Similar to the relation of implementation and instance in object-oriented languages, an arbitrary number of ServiceInstance can be created for each ServiceImplementation.
A ServiceInstance describes the properties of a service that is (about to be) provisioned and accessible. For example, a ServiceInstance contains the endpoint of a particular service. The endpoint either refers to a running service instance or points to the location where the service will be available according to the time constraints defined in the corresponding SLA.
In order to instantiate a service for a customer, various degrees of freedom have to be resolved. For example, all dependencies of an implementation on other services need to be bound to offers of an external service provider or of another SLA Manager. The ServiceBuilder provides a generic way to resolve service dependencies and provide custom configurations for a service and its associated monitoring system. For each dependency, the ServiceBuilder holds a ServiceBinding? that maps the Dependency to an SLATemplate or one of its specializations (SLA and BusinessProduct?). The SLATemplate contains all information necessary to assess and access a service outside of the current SLAManager's domain. It includes quality constraints and, after the SLA has been agreed, endpoints of the service.
Follow the link in order to see a description of how the elements introduced above are maintained inside a SoftwareLandscape. Even though this can be considered an implementation detail of ServiceManagers?, it supports the understanding of the overall model.
Example
In the following, we give a simple example of ServiceImplementations, Dependencies, ServiceBuilders?, ServiceBindings? and their usage in the overall system.
In the figure above, the dependency is resolved by a ServiceBinding? that links the Dependency to an SLATemplate of an external provider. The SLATemplate contains the specification of interface "IExternal". The external service type can again be realised by a ServiceImplmentation?.
In the following, we illustrate how the ServiceBuilders? can be used for communication between SLAManagers, (Software-)ServiceManagers?, and ServiceEvaluation?.
- The SLAManager requests the ServiceImplementations? of a particular ServiceType from the ServiceManager?
- For each ServiceImplementation
- The SLAManager creates a ServiceBuilder
- The SLAManager resolves the dependencies of the ServiceImplementation using available SLATemplates, SLAs, and BusinessProducts?
- When all dependencies have been resolved, the ServiceBuilder is passed to ServiceEvaluation? which assesses the expected quality of the setting given by the ServiceBuilder.
- Steps 1, 2 and 3 may be repeated several times
- When a particular ServiceBuilder is to be instantiated, the SLAManager (tries to) agree on the selected SLATemplates (or SLAs) of the depending services and adds the corresponding Endpoints to the SLATemplates. The resulting object is passed to the ServiceManager? which instantiates the requested service based on the settings given in the ServiceBuilder.
How to Use & Interact With
SCM Editor
Getting the Editor
You can download the editor here.
Starting Editor and Creating New Project
In the directory "scmEditor/eclipse/" you can find an executable named scmEditor. After starting this executable you will see that scmEditor behaves in the same way as normal Eclipse. Thus you have to select a workspace first. Before a model instance (of a landscape, builder, ...) can be created you have to create a project in the same way as in eclipse. In order to do this select "File -> New -> Project...", which will lead you to "new Project wizard" where you should select "General -> Project" and click on the "next"-button. Now type a project name into the corresponding field and finish the project creation.
Creating New Model Instance
For creation of a new model instance right-click in the "Project Explorer" view on the project you want the instance to create in and than select "New -> Other..." in the context menu. In the popped up windows select "Example EMF Model Creation Wizards" and then the desired meta-model you'd like to create (for example "ServiceConstructionModel Model").
Example: Creating SoftwareLandscape
Inorder to creat a software landscape model instance select "ServiceConstructionModel Model" in the window seen on the the image and click "Next". Now type a file name for the model file and then proceed.
In the field "Model Object" select the entry Landscape and click in the "finish" button. Now there should be a new model file in your project. Selecting this file by double-click shows up an editor, which enables you to create and configure your landscape instance.
New child-objects or sibling-objects of an object in the editor can be created by right-clicking on the object and selecting the "New child -> ..." or "New Sibling -> ...". In the context menu which will popup the type of the new object can be selected.The list under "New Child" shows only the types wich are valid for the selected parent object. In the example shown by the image we are creating an object of type "ServiceType" for the association "Provided Types" which stands for the service types which are provided by our landscape.
By creating childrens for selected objects you can setup your desired landscape step by step. To configure the attributes and properties of a certain object right-click on the object and select "Show Properties View". In the properties view all attributes of the selected object will be listed.
Note: For the most objects the value of the attribute "ID" is generated automatically and is not changeable.
In order to set a refernce R from an object A to an object B (both have to be present in the model instance) you have to select B in the list of valid reference-objects which you get from the drop-down menu of the field (named like the refernce R) in the properties-view of object A. The example shown in the image illustrates how to set a reference from ServiceImplementation A to the ServiceType B.
If you want to add elements to attributes of list-types (or container in general), you will have to push the button "..." near the corresponding attribute field of the properties view, what will make a window pop up. In that window elements can be added to the list.
Java Doc
- javaDocs and further generated component information can be found here: http://sla-at-soi.sourceforge.net/doc/scm/
Deployment Guide
Detail how a user can install your system/component and what pre-requisites must be satisfied.
Attachments
-
ServiceConstructionModel.png
(19.3 KB) - added by alexanderwert
18 months ago.
Service heirarchy and the relations of the different layers
-
ServiceConstructionModel.2.png
(19.3 KB) - added by alexanderwert
18 months ago.
Service heirarchy and the relations of the different layers
- Example.png (9.3 KB) - added by alexanderwert 18 months ago.
- creating_child.png (143.4 KB) - added by alexanderwert 18 months ago.
- list_elements.png (133.1 KB) - added by alexanderwert 18 months ago.
- new_model_window.PNG (35.1 KB) - added by alexanderwert 18 months ago.
- SCMWizard.png (180.8 KB) - added by alexanderwert 18 months ago.
- set_reference.png (149.6 KB) - added by alexanderwert 18 months ago.





