Applying patterns to build a lightweight middleware for embedded systems

Today, patterns are used in several domains (distributed applications, security, software requirements, architecture...). Our purpose is double: first, to know if existing patterns can be applied in the particular domain of embedded systems middleware, second, to establish the grounding towards a patterns language for that domain. In this paper, we describe how to design and build a lightweight middleware for embedded systems with well known patterns such as Composite, Proxy, Visitor, Observer, Publish/Subscribe, Leasing, Evictor or Configurator. The patterns we selected and implemented allow keeping the memory footprint reduced. Yet, they were relevant to address the need of creating topology views of Networked Embedded Systems (NES), to monitor and to manage them. As a result, the middleware is modular, flexible, extensible, and lightweight (< 128 kb) according to targeted embedded systems requirements. In addition, this paper describes a concrete case study, illustrating how to select appropriate patterns to build a dedicated middleware in order to interconnect numerous small devices.

[1]  D. Schmidt,et al.  Virtual Component A Design Pattern for Memory-Constrained Embedded Applications , 2002 .

[2]  Prashant Jain,et al.  Dynamically Configuring Communication Services with the Service Configurator Pattern , 1998 .

[3]  Douglas C. Schmidt,et al.  Applying a pattern language to develop extensible ORB middleware , 2001 .

[4]  Bruce Powell Douglass,et al.  Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems , 2002 .

[5]  Jean-Michel Douin,et al.  A Pattern Oriented Lightweight Middleware for Smartcards , 2004, CARDIS.

[6]  David Harel,et al.  Modeling Reactive Systems With Statecharts : The Statemate Approach , 1998 .

[7]  Jean-Michel Douin,et al.  Collaboration patterns for networked embedded servers , 2003, EFTA 2003. 2003 IEEE Conference on Emerging Technologies and Factory Automation. Proceedings (Cat. No.03TH8696).

[8]  Peter Sommerlad,et al.  Security Patterns: Integrating Security and Systems Engineering , 2006 .

[9]  Richard Zurawski,et al.  Embedded Systems Handbook , 2004 .

[10]  Frank Eliassen,et al.  Next generation middleware: requirements, architecture, and prototypes , 1999, Proceedings 7th IEEE Workshop on Future Trends of Distributed Computing Systems.

[11]  Mark Grand Java Enterprise design patterns , 2001 .

[12]  António Rito Silva,et al.  Component Configurer: A Design Pattern for Component-Based Configuration , 1997 .

[13]  Wil M. P. van der Aalst,et al.  On the Notion of Coupling in Communication Middleware , 2005, OTM Conferences.

[14]  Patrick Th. Eugster,et al.  OS support for P2P programming: a case for TPS , 2002, Proceedings 22nd International Conference on Distributed Computing Systems.

[15]  Steve Vinoski,et al.  Chain of Responsibility , 2002, IEEE Internet Comput..

[16]  Prashant Jain,et al.  Pattern Oriented Software Architecture: Patterns for Resource Management , 2007, 2007 Working IEEE/IFIP Conference on Software Architecture (WICSA'07).

[17]  Peter Honeyman,et al.  Webcard: a Java Card Web Server , 2001, CARDIS.

[18]  Edward A. Lee,et al.  What's Ahead for Embedded Software? , 2000, Computer.

[19]  Felix C. Freiling,et al.  Supporting Mobility in Content-Based Publish/Subscribe Middleware , 2003, Middleware.

[20]  Tarana R. Damania,et al.  A Configurable Middleware Framework for Small Embedded Systems that Supports Multiple Quality of Service Properties ∗ , 2003 .

[21]  Raymond Klefstad,et al.  Adaptive techniques for minimizing middleware memory footprint for distributed, real-time, embedded systems , 2003, 2002 14th International Conference on Ion Implantation Technology Proceedings (IEEE Cat. No.02EX505).

[22]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[23]  Bobby Woolf,et al.  Enterprise Integration Patterns , 2003 .

[24]  Hans-Arno Jacobsen,et al.  Refactoring Middleware with Aspects , 2003, IEEE Trans. Parallel Distributed Syst..

[25]  Peter Triantafillou Content-based publish-subscribe over structured P2P networks , 2004, ICSE 2004.

[26]  B. F. Castro Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael. Pattern-oriented software architecture: a system of patterns, John Wiley & Sons Ltd, 1996 , 1997 .

[27]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[28]  Stephen A. Stelting,et al.  Applied Java Patterns , 2002 .

[29]  Reinhard Gotzhein,et al.  Developing Reliable Systems with SDL Design Patterns and Design Components , 2004 .

[30]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[31]  Prashant Jain,et al.  Service Configurator: A Pattern for Dynamic Configuration of Services , 1997, COOTS.

[32]  Uwe Zdun,et al.  Remoting Patterns , 2004, IEEE Internet Comput..

[33]  Gregor Hohpe,et al.  Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions , 2003 .

[34]  Chris Britton,et al.  IT Architectures and Middleware: Strategies for Building Large, Integrated Systems (2nd Edition) , 2000 .