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.


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.


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, XPCOM, JavaBeans, etc.


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.


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.

Hosted on University College LondonDepartment of Computer Science Stefanos Zachariadis
Department of Computer Science
University College London.
August 2005