Generative Programming and Component Engineering

Model Driven Development and Generative Techniques for Embedded Systems

Bruce Trask, MDE Systems
Angel Roman, MDE Systems

Embedded Systems have many characteristics that make them a unique development target for today's software. Typically these systems involved resource constrained environments, low level programming concerns and artifacts, specialized hardware and peripherals against which the software just be written and run, as well as challenges concerning monitoring, debugging, reprogramming, performance, and configuration. Today's embedded systems are becoming even more complex and challenging due to these systems becoming networked and distributed as well as software centric. This has given rise to a new class of Embedded Systems called Distributed Real-time and Embedded (DRE) Systems. In fact, some of these systems could be described by a list of modifiers including "embedded", "real-time", "high performance", "distributed", "secure", "portable", "multithreaded", "multiprocess", "heterogeneous" and "component based" each term introducing its own set of complexities. Unfortunately the increased complexity of the embedded systems platform has outpaced the ability and viability of the tools and languages used by developers to tackle these complexities. Development tools and languages in the embedded domain have thus reached a complexity ceiling (1). Additionally, due to more demanding time to market expectations from customers and new economic business models, organizations are finding it necessary to exploit families of systems that can be tailored and synthesized quickly rather than develop one off embedded systems from scratch.

Fortunately, there has been a recent confluence of critical innovations in software technologies that can be leveraged to solve these problems. Chief amongst these are Model Driven Development (MDD), Domain Specific Languages (DSL) and Generative Programming (GP) techniques. The complexities of today's embedded systems surrender to the effective application of these techniques. Moreover, it is within such challenging embedded domains that these approaches truly shine. This tutorial will cover how these new critical innovations can be used to tackle the myriad complexities of today's embedded systems. It will include a real example using actual modeling tools, domain specific languages, and generative facilities running on embedded hardware. More specifically, it will cover:

* The basics and anatomy of Model Driven Development * How to apply commonality and variability analysis, abstraction and refinement to complex software systems * How to develop Domain Specific Languages (DSLs) including defining new languages, editors and generators * How to tackle complexity and change by hiding commonalities and configuring variabilities across families of systems while maintaining and in many cases increasing performance and quality. * Demonstration of these techniques running on the PXA270, ATmega128 and 8051 processors and microcontrollers.

Duration: Half-day

Level: Introductory/Intermediate

Required Knowledge: Attendees should be familiar with the basics of Object-Orientation and with programming at different levels of abstraction.

Speaker Profiles

Bruce Trask is the CEO of MDE Systems and has been working on complex Distributed Real-Time Embedded systems for over 20 years specializing in Software Product Line (SPL) and Model Driven Development (MDD) as applied to these systems in the last 6 years. Angel Roman is the Chief Softaware Architect of the MDE Systems SPL/MDD software team and is an expert on the Eclipse Development environment and its application frameworks. Both Mr. Trask and Mr. Roman have extensive experience fielding real-world MDD and Generative Systems using various forms of domain specific languages.