Component-Based Software Engineering for Consumer Electronics
Component-based software engineering (CBSE) has become widely practiced in the desktop and enterprise computing arenas. Yet despite its applicability, the many benefits of CBSE have remained largely unavailable to many embedded software developers.
Meanwhile, the amount of software contained in modern Consumer Electronics (CE) devices over the past decade has exploded, due largely to the market's move from analogue to digital devices (e.g., VCR to DVD). Modern CE companies have had to change almost overnight from hardware suppliers who provide small amounts of software on their devices, to software suppliers who provide generic digital computing devices (with some specialized I/O peripherals) on which their software is run. Many CE vendors are struggling to cope with this profound transformation, and stand to benefit enormously from the advances brought by CBSE.
Most CE companies now have significant code bases, much of which it is difficult for them to reuse effectively. The challenge is to find a way to reuse effectively this existing code, as well as new code that is written over time. In this paper we argue that CBSE is the best way to achieve this, but explain why we believe currently available component models do not suit the very specific needs of the CE industry.
In this paper, we present our experiences in industry of the applicability of CBSE to Consumer Electronics software, and the problems that so far have prevented its widespread adoption in this field.