Applying patterns to build a lightweight middleware for embedded systems
Résumé
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.