Unifying hardware and software components for embedded system development
Model-driven and component-based software development, using the UML, has become one of the dominant development paradigms, particularly in business and web application engineering. Unfortunately, model-driven and UML-based development methods are still inferior to conventional software development approaches when it comes to component-based embedded system development. One important aspect is the heterogeneity of embedded systems: they contain both, hardware and software components. Although, component-based development in embedded systems (with hardware components) has a long tradition, there is still a problem of combining it with component-based software development. One reason is the inability of contemporary component technologies to cope with the specific non-functional requirements of embedded systems (e.g., timing, resource consumption). Thus, the major question is how both approaches can be successfully combined. The goal of this chapter is to discuss the problems of embedded systems engineering in the context of a component-based development approach, and to identify specific requirements for a development process under this paradigm. In addition, the chapter proposes an approach to specify software and hardware components in a uniform way, concerning their functional and non-functional properties, so that they can be applied in embedded system development. The method proposed is not yet solving all the problems associated with component-based embedded systems development, but it addresses important issues like hardware/software integration, and how timing and resource issues can be dealt with.