ASCoDT Component Specification

From Sccswiki
Revision as of 08:05, 14 September 2012 by Atanasoa (talk | contribs)
Jump to navigation Jump to search

For the specification of components, ports and interfaces we use a simplified version of SIDL. The grammar for the simplified language can be downloaded from File:Grammer.doc. The language in our implementation is meant only for prototyping purposes. It supports only a small set of types, which are crucial for scientific applications.

SIDL - Short Introduction

A component in ASCoDT is an autonomous soft- ware entity with a state and an interface. Multiple instances of one component may exist. Hence, a component is similar to an object of a class, and we use class as synonym for component definitions. Our components can be distributed among different computers running in processes or applications, respectively, of their own. The static structure of our applications consists of interfaces and classes, i.e. components interacting due to these interfaces. Both are organised in packages mirroring the namespace concept of C++ and Java. Interfaces prescribe a signature, i.e. comprise methods, and they can extend other interfaces. A class implements interfaces and uses interfaces. Whenever a class implements an interface, the class has a provides port. The port’s type is given by the interface. Whenever a class uses another interface, the class has a uses port. The port’s type is given by the interface. This static structure in our case is written down in a simplified scientific interface definition language (simplified SIDL).

Interfaces

An interface in sidl includes a set of operations. The operations correspond to void function from the c language. Two types of parameters are supported: the input parameters and input/output parameters. The first is parameter with read-only semantics and seconds allows the realisation of return semantics. We support the following atomic types and 1D- arrays from them:

  • int
  • double
  • bool
  • String

<syntaxhighlight lang=java> package pa{

 package pb{
   interface Interface1{
     foo(in int a, inout double[]b);
   } 
 }

} </syntaxhighlight>

Components

Targets

Uses-ports

Provides-ports