SATIN - An Adaptable Component System
[about] [documentation] [applications] [javadoc] [downloads] [publications] [metamodel] [project page]
What is SATIN?
SATIN (also known as System Adaptation Targeting Integrated Networks),
is an experimental component meta-model for mobile adaptable
systems. It's implemented as a middleware system. It was designed and
implemented by Stefanos Zachariadis (under the supervision of Cecilia
Mascolo and Wolfgang Emmerich) to perform experiments with, as
part of his PhD thesis. Its implementation uses MiToolkit, an open
source mobile code toolkit developed by Martin Ijaha. MiToolkit is
distributed with SATIN (and is also open-source) with the kind
permission of the author.
What is a Metamodel?
A metamodel is, strictly speaking, a model about a model. SATIN is,
therefore, a model on how to build adaptable component-based systems.
Adaptable?
SATIN was designed and implemented to experiment with the concepts of reflection
and logical mobility. Reflection allows a SATIN system to reason about
what it can actually do at the moment, by checking its repository of
locally available components. Logical mobility allows a SATIN
system to send and receive any part (classes, objects, data and
components are all catered for) of an application (and SATIN has a
very broad definition of what an application is)
dynamically. This allows SATIN systems to adapt.
Component?
A component is a reusable piece of software. Reusable by other
components that is. So, a library is a component, a GUI can be made of
a number of components, etc. Well known component systems include
Microsoft (D)COM, Mozilla.org XPCOM, JavaBeans, etc.
Mobile?
SATIN was designed from the ground up to have a small footprint. It's
implemented in Java 2 Micro Edition (Connected Device Configuration /
Personal Profile), and runs on PDAs, laptops, etc.
What's a SATIN Application?
Any component that is built on top of SATIN is a SATIN
application. We've built everything from encryption tools, HTTP
proxies and audio
players, to a service advertising and discovery framework. All using
SATIN. And all can be dynamically deployed and adapted.
Middleware?
Well it's nice having a metamodel, but you can't do much with it apart
from drawing diagrams. We implemented it into a middleware system. A
middleware system is a sort of mini operating system. It provides a
number of primitives built on top of the network stack and allows
programmers to develop using them. In the case of SATIN, those
primitives are the reconfiguration/adaptation primitives.
Why is it released?
So that more people can use it! I think it's a nice piece of software
- maybe more people can develop cool stuff with it. It's released
under the GNU LGPL.
What have people done with it?
Quite a lot of things, really. It's been used as the basis of the SEINIT (an EU research project)
middleware system. There, it's used to discover, download and deploy
security components (for authentication and encryption).
It's been used in the RUNES (another EU research project),
to reconfigure mobile systems. It's been used by the European Space
Agency as an experimental platform for satellite active networks. It's
been used to implement audio players, program launchers, scripting
frameworks, and more stuff. Some of this software is available for
download from this website.
What can I do with it?
Play around with it! Modify it, develop new software that can adapt at
runtime through it, or even port your existing Java software to run as
a SATIN component! It's quite easy, just have a look at the
documentation. You can also try to email me if you have
any questions/problems.
Who's responsible for this?
This project was primarily developed by Stefanos Zachariadis, as part of his PhD thesis, under the supervision of Cecilia Mascolo and Wolfgang Emmerich. The following people have also kindly participated: Steven Hailes, Licia Capra, Peter Kirstein, Lionel Sacks and Salheem Bhatti. This work has been sponsored by the EPSRC through project GR/R70450, the European Union through projects SEINIT and RUNES and the European Space Agency through contract number 18376/04/NL/AD.
Stefanos Zachariadis
Department of Computer Science
University College London.
August 2005