Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.
For the best experience please use the latest Chrome, Safari or Firefox browser.
University of Lugano (USI)
Faculty of Informatics
- Opened 2004
- 22 Professors
- 100+ PhD/Postdoc researchers
- Research: Software, Systems and Services Engineering
- Award-winning Innovative Teaching Curriculum
Programming in the Large
- Composition
- Coordination
- Communication
Programming in the Small
- Components
- Computation
- Storage
Gio Wiederhold, Peter Wegner, Stefano Ceri, CACM, 35(11):89-99, Nov. 1992
Model the architecture of a software composition
- High abstraction level
- Executable model
Component Abstractions
Component vs. Service
Top Down: Decomposition
- Define a goal and sketch a skeleton of a composition
- Refine it by binding components into it:
- Search for existing components
- Build missing components
- Add glue (e.g., data transformations)
- Run, test and debug the composition within the original modeling environment
- Share and publish it as a reusable component
Bottom up: Recomposition
- Share and publish it as a reusable component
- Run, test and debug the composition within the original modeling environment
- Build a composition model
- Select components from a library:
- Web services and Web resources
- Local components
- Glue components
Iterative Composition
1 Tool
1 Click
1? Language
How to model a composition?
Which primitives?
- Structure
- Architectural Description Languages
- Unified Modeling Language
- Behavior
- Unified Modeling Language
- Data Flow Languages
- Business Process Modeling Languages
Which syntax?
- Visual
- BPMN
- JOpera Visual Composition Language
- Textual
- XML (WS-BPEL)
- Scripting (S)
- Natural Language (NaturalMash)
Which syntax?
Which syntax?
The choice of the syntax depends on the purpose and the user of the meta-model
The challenge of executable modeling does not lie in transforming models between different representations, but in enabling testing and debugging of an executable model within the representation it was originally specified with
Unit of composition
Model any kind of service invocation
Data Flow Interface
Input, Output parameters
Control Flow
Dependencies triggered by task state changes (Finished, Failed, Aborted)
Cycles allowed
Arbitrary synchronization rules possible
Technology Adapter
Mapping to service invocation mechanism and connector (configured by developer)
Natural Language Description
Abstract textual description for the end user
Simple Example
Show 10 Italian restaurants near zip 76092 on the map.
Composition Model: Views
- Component Bindings
- Control Flow
- Data Flow
Control Flow

Data Flow

Less simple Examples
Control Flow
Vote to choose a meeting place based on its geographic location
Demo
JOpera
- Modeling service composition behavior:
- Flow-based visual composition language
- Development and debugging tools for Eclipse
- Composition of any kind of service
- Execution of the composition models:
- Models compiled to Java bytecode
- Multi-core, autonomic execution engine
- Extensible open research platform:
- Plug-in your own adapter for service invocation and composition publishing
- Plug-in your composition generators
NaturalMash
- Modeling service composition behavior:
- Constrained Natural Language
- Event-based interactions
- WYSIWYG
- Execution of the composition models:
- Natural Language transformed to JOpera models
- Results of model execution displayed as the user types
- Research challenges:
- Model autocompletion
- Describing components with natural language
- Incremental model transformation
S
- Modeling service composition behavior:
- Architectural extensions for JavaScript
- Constrained to use only RESTful connectors
- Execution of the composition models:
- S scripts transformed to JavaScript
- Node.JS runtime
- Research challenges:
- Parallelism and Scalability
- Generalize to other (e.g., streaming, message-based) connectors
The S Scripting Language
for Scalable, Stateful, RESTful Services
S: Hello World
service S {
res '/hello' on GET {
respond 'World!';
}
}
Request handlers contain any JavaScript code (with some S extensions)
S: Proxy
service Proxy {
res '/hello1' on GET {
respond get '/hello2';
}
res '/hello2' on GET {
respond get 'http://api.inf.usi.ch/';
}
}
S: Composition
service Composition {
res '/search' on GET {
res a = 'http://www.bing.com/?q=$query';
res b = 'http://www.google.com/?q=$query';
respond a.get + b.get;
}
}
S: Composition
service YahooLocalMap {
res '/ylm' on GET {
res yls = 'http://local.yahooapis.com/search' +
'?query=$query&zip=$zip';
var local = yls.get;
respond render('GoogleMap', local);
}
}
S: Stateful Services
service Stateful {
res '/hello' {
state s = 'World'
on GET {
respond 'Hello ' + s
}
on PUT {
s = $name
}
}
}
S: DoodleMap
service DoodleMap {
res '/doodlemap' {
state i = 0;
state ui_html = [];
on POST {
res yls = 'http://local.yahooapis.com/search' +
'?query=$query&zip=$zip';
res doodle = 'http://doodle-test.com/.../polls'
var local = yls.get;
var pollurl = doodle.post(xml_format(local,$title));
ui_html[i++] = render('GoogleMap', local, pollurl);
res '/:id' {
on GET {
respond ui_html[$id];
}
}
respond { 302: {"Location": "/doodlemap/" + i}}
var timer = setInterval(function() {
var pollState = res(pollurl).get;
var participants = countParticipants(pollState);
if (participants == $maxParticipants) {
res(pollurl).put("closed");
clearInterval(timer);
}
},1000);
}
}
}
Summary
- Executable modeling of software architectures is possible in the case of service composition
- JOpera for Eclipse is an open and extensible research platform for visual service composition
- NaturalMash is an interactive Web mashup tool based on constrained natural language
- S is a scripting language for composing RESTful Web Services based on JavaScript
Executable Modeling
- Executable modeling: replace the code with a model, so what's the difference?
- How to test, debug and optimize the performance of a model?
- Model liveness: if it is executable, why not run it right now?
Modeling and Services
- Executable modeling: replace the code with a model of the service oriented architecture
- Too many standard modeling languages:
WSDL, WADL, WS-BPEL, BPMN, WS-CDL, SCA, SOAML
- Model liveness: services never stop, there is no modeling time vs. run time
Credits
- NaturalMash: Saeed Aghaee
- S: Daniele Bonetta
- Opera: Win Bausch, Claus Hagen, Gustavo Alonso
- JOpera: Thomas Heinis, Biörn Biörnsted, Achille Peternier, Lucia Rusconi,
Mark Pruneri,
Adnan Al Hariri,
Monica Frisoni,
Fabian Pichler,
Jeremie Granat,
Lukas Fuelleman,
Urs Blum,
Sandra Brockmann,
Christoph Schwank,
Dennis Rietmann,
Dominique Schneider,
Patrick Jayet,
Adrian Listyo,
Sven Ruetti,
Michael Lorenzi,
Markus Egli,
Oliver Deak,
Andre Kuennemann,
Jared Schirm,
Patrick Moor,
Nicolas Born,
Philip Frey,
Axel Wathne,
Antonio Caliano,
Markus Haller,
Christian Rupp, Nicos Giuliani, Andrea Reber, Alessio Gambi
References
-
G. Wiederhold, P. Wegner, S. Ceri, Toward Megaprogramming, Communications of the ACM, 35(11):89-99, November 1992
-
A. Peternier, C. Pautasso, W. Binder, D. Bonetta, High Performance Execution of Service Compositions: a Multicore-aware Engine Design, Concurrency and Computation: Practice and Experience (accepted)
- S. Aghaee, C. Pautasso, EnglishMash: usability design for a natural mashup composition environment, Proc. of the 4th International Workshop on Lightweight Integration on the Web (ComposableWeb2012) at ICWE 2012, Berlin, Germany, July 2012
-
Daniele Bonetta, Achille Peternier, Cesare Pautasso, Walter Binder, S: a Scripting Language for High-Performance RESTful Web Services, 17th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2012), New Orleans, LA, USA, February 2012
-
Cesare Pautasso, Erik Wilde, Push-Enabling RESTful Business Processes, 9th International Conference on Service Oriented Computing (ICSOC 2011), Paphos, Cyprus, December 2011
-
Cesare Pautasso, Composing RESTful Services with JOpera, In: Proc. of the International Conference on Software Composition (SC2009), July 2009, Zurich, Switzerland.
-
Cesare Pautasso, RESTful Web Service Composition with BPEL for REST, Data & Knowledge Engineering, Volume 68, Issue 9, September 2009, Pages 851-866
-
Thomas Erl, Benjamin Carlyle, Cesare Pautasso, Raj Balasubramanian, SOA with REST: Principles, Patterns & Constraints for Building Enterprise Solutions with REST, Prentice Hall, 2012
Use a spacebar or arrow keys to navigate