ETI Dave Arney Overview ● ● ● ● ● ETI Web Platform Tool Integration Tool Coordinatition Using ETI's service Integrating with ETI ETI Overview ETI =Electronic Tool Integration Associated with STTT (Software Tools for Technology Transfer) Tools published in STTT get integrated into ETI www.eti-service.org http://eti.cs.uni-dortmund.de Motivation Too Many Tools! Hard to find the right one ●Trying tools is time consuming ●Comparison of tools ● Levels of tools... intro to next slide. Existing ETI Sites University of Dortmund, Germany http://eti.cs.uni-dortmund.de/ Public Kansas State University, USA under construction John Hatcliff IT-Center Dortmund, Germany ITC internal Hans-Jürgen Kottmann Tool Coordination ● ● ● Overview of tool coordination HLL Coordination Language SLTL Language HLL HLL = High Level Language “High Level” refers to its pragmatics No powerful language constructs Used to generate sequences of actions SLTL Semantic Linear-time Temporal Logic Used to loosely coordinate type / action sequences. Integration Layered integration process GUI communication coordination integration encapsulation tool repository Integration Process The encapsulation layer wraps the functionality and data formats of the tool into data structures known to ETI. GUI communication coordination integration encapsulation tool repository Integration Process The integration layer makes the objects created by encapsulation accessible from the HLL coordination language. GUI communication coordination integration encapsulation tool repository Integration Process The coordination layer provides an environment for automatic synthesis of coordination sequences. GUI communication coordination integration encapsulation tool repository Integration Process The communication layer connects the coordination layer with the GUI. The communication layer is provided by ETI. GUI communication coordination integration encapsulation tool repository Integration Process Three steps to integrating your tool with ETI Taxonomy Extension HLL Extension Tool Encapsulation GUI communication coordination integration encapsulation tool repository Integration Process We really do this in the opposite order. 1. Tool Encapsulation 2. HLL Extension 3. Taxonomy Extension GUI communication coordination integration encapsulation tool repository 1. Tool Encapsulation We define: classes that represent tool's data types ● a class to access the tool's functionality ● methods to convert from this tool's data types into types available in ETI ● Black Box Encapsulation Ignores the internal operation of the tool. Only has access to its functional behavior and external data representations. Define classes representing external data types of the tool (files) ● Implement a class with methods to invoke the tool ● Type Transformers Type transformers link tools together by providing data type conversions. They may be simple converting int to real Or complex Pascal program to Fortran May contain abstractions More detail to come! Encapsulation Questions What are the external data types the tool uses? What operations can be performed on those types? What type transformations are needed? Encapsulation Details Will show the details of encapsulating a single functionality of the tool CAESAR. Note that this is a simple example. A more complicated example showing ETIs support for labeled directed graphs is in one of the papers. Encapsulation Details Encapsulation Details class LOTOSFile represents in ETI the contents of a file type .lotos which contains a LOTOS program. class CAESAROperations encapsulates the functionality of CAESAR. includes a method caesarAUT which translates a LOTOS program into a FSA. class AUTFile represents file type .aut which contains a labled transition system. Implementing Type Transformers In order to transform class A to class B, create a class ABTransformer which contains all the methods needed to transform an object of class A into an object of class B. 2. Integration Layer When encapsulation is done, we have a collection of C++ classes. The next step is to make these methods accessible to the coordination mechanism via HLL. Integration Layer Integration Layer Adapter Code Adapter Specification Encapsulation Layer Encapsulation Code Tool Repository Tool Adapter Specification ETI found that writing the HLL adapter code was tedious and prone to error. Now they write adapter specifications in MFI (MetaFrame intermediate integration language) Soon they hope to completely automate it. Sample HLL definition // The HLL type AUTGraph is realized by // a pointer to a C++ AUTGraph object %type AUTGraph // HLL type name { AUTGraph *value; // C++ realization } HLL function definition in MFI // declaring and defining a HLL procedure caeserAUT that takes a // reference to a HLL LOTOSFile and delivers a corresponding // HLL AUTFile object in the autFile argument %procedure caeserAUT(ref LOTOSFile: lotosFile: lotosFile, ref AUTFile: autFile) { // check for uninitialized LOTOSFile and AUTFile objects if(lotosFile.value == NULL || autFile.value == NULL) cout << “CADP.caesarAUT: uninitialized LOTOSFile or AUTFile object” << endl; else { // converting the HLL objects into the corresponding C++ objects // and calling the corresponding function of the Caesar/Aldebaran // functional module ETIApplInfo* i CAESAROperations::caesarAUT(*lotosFile.value,*autFile.value); i->show(); }} // passing obtained runtime information to the GUI Type / Action Taxonomies At this point, users could write their own coordination programs in HLL. However, a goal is to support users not familiar with HLL. A solution is to offer support for loose coordination specifications which are then automagically synthesized into HLL. Type / Action Taxonomies In order to synthesize HLL from loose specifications, we must create type and action taxonomies. Using ETI We'll walk through the steps of using ETI to solve this informal problem: Given a benchmark system in KRONOS format, compute an equivalent minimal system and display it on screen. Using ETI From browsing the taxonomy: Timed Graphs in Kronos KronosSystem minimization activities visualize graphs on screen minimizer displayGraph Using ETI Given a benchmark system in KRONOS format, compute an equivalent minimal system and display it on screen. ((KronosSystem<minimizer) < displayGraph) Using ETI Using ETI Given a benchmark system in KRONOS format, compute an equivalent minimal system and display it on screen. ((KronosSystem<minimizer) < displayGraph)