Component based Software Engineering for Embedded Systems
Although attractive, CBD has not been widely adopted in domains of embedded systems. The main reason is inability of these technologies to cope with the important concerns of embedded systems, such as resource constraints, real-time or dependability requirements. However an increasing understanding of principles of CBD makes it possible to utilize these principles in implementation of different component-based models more appropriate for embedded systems. The aim of this tutorial is to point to the opportunity of applying this approach for development and maintenance of embedded systems. The tutorial gives insights into basic principles of CBD, the main concerns and characteristics of embedded systems and possible directions of adaptation of component-based approach for these systems. Different types of embedded systems and approaches for applying CBD are presented and illustrated by examples from research and practices. Also, challenges and research directions of CBD for embedded systems are discussed.
Component-based development (CBD) is of great interest to the software engineering community and has achieved considerable success in many engineering and application domains. CBD has been extensively used for several years in desktop environments, office applications, e-business and in general in Internet- and web-based distributed applications. In many other domains, for example embedded and real-time systems, CBD is utilized to a lesser degree. It has been experienced that it is difficult to use the same component technology in different domains because of different system requirements and constraints. The latest trends show that different component technologies are being developed for different domains. Similarly to object-oriented paradigm that is exploited in different OO languages, a component-based paradigm based on certain common principles is slowly built and used in different component technologies [1,2,3]. The aim of this tutorial is give an overview of principles of component-based software engineering and their utilization in development of embedded systems. The intention is to show that the component-based approach can successfully be used in development of embedded systems although the different concerns, requirements and limitations are valid then for systems that successfully have used CBD. Direct use of general-purpose component-based technologies is usually not feasible; rather specific adoptions are required, or new component models that explicitly address the main concerns of embedded systems must be developed.
Embedded systems are computer systems that are part of larger systems and they perform some of the requirements of these systems. Some examples of such systems are automobile control systems, industrial processes control systems, mobile phones, or small sensor controllers. Embedded systems cover a large range of computer systems from ultra small computer-based devices to large systems monitoring and controlling complex processes. The overwhelming number of computer systems belongs to embedded systems: 99% of all computing units belong to embedded systems today.
Most of such embedded systems are also characterized as realtime systems, which means that the real-time properties such as response time, worse case execution time, etc., are important design concerns. These systems usually must meet stringent specifications for safety, reliability, availability and other attributes of dependability. Due to small size and requirements for mobility, but also extremely low production costs these systems require small and controlled resource consumption, and have limited hardware capacity . The increased complexity of embedded real-time systems leads to increasing demands with respect to requirements engineering, high-level design, early error detection, productivity, integration, verification and maintenance, which increases the importance of an efficient management of life-cycle properties such as maintainability, portability, and adaptability.