Embedded Control Systems Design/Model driven engineering

Model-Driven Engineering (MDE) is an approach for developing complex, reliable and highly reusable systems. This is achieved with a set of tools which allow creation and subsequent transformation of models to the final system. Importantly, the efforts are concentrated on the definition of models and transformation facilities instead of hand-writing and iterative debugging of low level code. MDE is already successfully employed in a broad range of application domains such as controller design (e.g. Simulink), integrated circuit design and increasingly in software development.

Standards
The Model Driven Architecture (MDA) is an upcoming standard to obtain reusability, portability and interoperability developed by the Object Management Group (OMG). Implementation of this standard leads to modeling languages, which can be multi-domain like Modelica (under development) or domain-specific like AUTOSAR for the automotive industry, Unified Modeling Language (UML) for software engineering and Systems Modeling Language (SysML) for systems engineering. The Architecture Analysis & Design Language (AADL) is a language for modeling complex, distributed real-time systems and has been successfully used for model driven control system design

Discussion
One of the most important advantages of standardisation is the boost it can give to the development of a new technology (e.g. the GSM standard for mobile phones and HTML for the World Wide Web). However most companies (e.g. Mathworks) currently have their own de facto standard, which makes interoperability and the creation of an industry-wide standard difficult. When overall complexity of models increases, the creation of subsystems (or basic components) with a simple in-out structure can facilitate a higher level design. Nowadays domain-specific libraries exist in various software tool chains, with a level of abstraction suited for the applications.

The current software toolchains are still underdeveloped at a number of levels, therefore some considerations should be made before choosing a MDE-based control design method:


 * The reusability of a model, even within the original platform. Current modeling languages contain flaws, reused code usually requires debugging for a new application.
 * The ability of a model to operate on a number of platforms (portability), caused by the lack of standardisation and the huge variety in hardware and software platforms.
 * The time consumption of the testing period: the process of deriving platform dependent code is time intensive in most domains.
 * Domain-specific libraries with the inherent choice of level of abstraction. Creating or refining a model from scratch is time intense and might not even be possible.
 * The hardware constraint satisfaction, hardware limitations of the target platform and the physical system are abstracted. Future modelling 	toolchains could provide methods to configure this abstraction.
 * Predictability. The behaviour of a composite system usually differs from the subsystem behaviour. For example, by combining a mass and a spring component model, the resonance phenomenon can occur as a new, composite level, behaviour that was not present in each of the individual components. Also failure modes or the possibility and impact of a component failure for the global system are much more difficult to trace and interpret, because of the multitude of interactions that can occur between components.
 * It is important to point out that all of the current standards and tools target applications of the C1 and C2 complexity classes and none address aspects specifically relevant to C3.

Some control design methods rely on model-based testing, e.g. Rapid Control Prototyping, where the control algorithm is developed in simulation environment and validated afterwards with the real system using automatically generated platform dependent code.