Lösungen statt Technik/Embedded Systems aus Entwicklersicht

Wettbewerbsvorteile durch rasches Austauschen von Funktionen

11.06.1999
Von Edgar Schüber und Dirk Weidemann* Zu den wichtigsten Methoden, die Computertechnik vor den Anwendern zu verstecken, gehören Embedded Systems. Hierbei wird Software in Geräte wie Fahrstühle oder Handies eingebaut (siehe auch Menschliche High-Tech: Haushaltsgeräte als Vorbild, Seite 62). Kaum ein Zweig der Software-Branche boomt derzeit mehr.

Embedded Systems sind heute nahezu ein Synomym für einfache Bedieneroberflächen mit viel Technik dahinter. Ursprünglich ging es jedoch vor allem darum, den Herstellern von High-Tech-Geräten raschere Innovationszyklen zu ermöglichen. Zu diesem Zweck wird bei immer mehr Produkten die bisher mit Hardware erzielte Funktionalität durch Software realisiert. Diese Programme lassen sich weit einfacher, schneller und kostengünster entwickeln und an neue Anforderungen anpassen als hardwaremäßig verdrahtete Funktionen. Die dadurch möglichen rascheren Innovationszyklen machen die Entwicklung von Embedded Software zu einer Branche mit Zuwachsraten, von denen andere Bereiche der Softwareindustrie nur träumen können. Die Marktführer erzielen jährliche Wachstumsraten von 40 Prozent und mehr. Branchengrößen wie Microsoft und Sun haben in den letzten Jahren große Anstrengungen unternommen, einen Teil dieses Marktes ins eigene Haus zu holen. Bei Entwicklungen für Embedded Systems und Echtzeitanwendungen spielt konsequente Lösungsorientierung und engste Kooperation mit den Abnehmern naturgemäß eine entscheidende Rolle.

Als Embedded Systems gelten gemeinhin alle mit einer eigenen CPU ausgestatteten Systeme in Geräten oder Maschinen, die dem Benutzer dieser Geräte normalerweise nicht über eine DV-spezifische Benutzer-Schnittstelle zugänglich sind. So kommt das Bedienungstableau eines Aufzugs seit eh und je mit einigen Tasten und einer einfachen Anzeige der jeweiligen Etage aus. Die Computersteuerung des Systems bleibt dem Nutzer verborgen und funktioniert nach den vom Hersteller eingebauten Programmen. Viele dieser eingebetteten Systeme sind als Echtzeitanwendungen mit exakt definierten Reaktionszeiten ausgelegt, aber durchaus nicht alle. Bei einem Mobiltelefon sind die Reaktionszeiten der internen Steuerung noch relativ unkritisch, doch wird die Schnittmenge von Embedded Systems und Echtzeitanwendungen ständig größer, und damit steigen die Anforderungen an Produktsoftware enorm.

Die aktuelle Entwicklung großer Bereiche der Technik ist davon gekennzeichnet, daß immer mehr Produkte eingebaute Steuerungen erhalten und daß die Anforderungen an diese ständig zunehmen. Mechanik wird durch Software und Transport durch Telekommunikation ersetzt, Software und Telekommunikation gemeinsam revolutionieren viele Dienstleistungen. Ein Beispiel sind die vieldiskutierten Wiedergabegeräte für Musikdateien: Anders als etwa beim CD-Player gibt es dort keine Mechanik und keinen materiellen Datenträger mehr - die Funktion beruht vollständig auf DV- und Kommunikationstechnik. Der Handel mit Tonträgern entfällt.

Die Anwendungsfälle für Embedded Software lassen sich grob in drei Bereiche einteilen, zwischen denen freilich vielfache Übergänge bestehen.

1. Steueranlagen für Produk- tion, Medizin und Wissenschaft: Bei Maschinen- und Gerätesteuerungen kommt es primär auf ein hohes Maß an Robustheit und Sicherheit an. Zwänge zum Einsparen von Platz oder anderen Ressourcen treten hinter den Erfordernissen der Sicherheit und der Präzision zurück. Die Lebenszyklen der hier eingesetzten Technik sind teilweise extrem lang - große Druckmaschinen werden beispielsweise 20 Jahre oder länger genutzt. Ein besonderes Beharrungsvermögen läßt sich in der Medizintechnik feststellen - hier zieht jede Änderung ein zeitraubendes Verfahren zur Neugenehmigung nach sich. Die Pflege und Weiterentwicklung von Software über derartige Zeiträume stellen ganz besondere Anforderungen.

2. Kommunikationstechnik (ohne Benutzerendgeräte): In der Kommunikations- und Netzwerktechnik steht Verfügbarkeit im Zentrum des Anforderungsprofils, unmittelbar danach folgt die Performance. Um Ausfallsicherheit unter allen denkbaren Bedingungen zu gewährleisten, sind kritische Komponenten redundant vorzuhalten. Betriebssysteme und Anwendungen müssen so ausgelegt sein, daß Komponententausch und Upgrades bei Hard- und Software ohne Störungen des laufenden Betriebs erfolgen können. In der Kommunikationstechnik werden schwerpunktmäßig klassische Echtzeit-Betriebssysteme wie "Chorus", das vor einem Jahr von Sun übernommen wurde, oder "VxWorks" von Windriver eingesetzt, neuerdings auch Windows NT und Windows CE. Letzterer wird derzeit bei PC-basierten Steuerungssystemen bereits in etwa der Hälfte aller einschlägigen Anwendungen eingesetzt.

3. Steuerungskomponenten für Massenprodukte: In diesem außerordentlich weit gespannten Geschäftsbereich - dazu gehören Kommunikationsendgeräte, Haushaltstechnik, Automobiltechnik, Unterhaltungselektronik und vieles mehr - steht im allgemeinen das Ziel im Vordergrund, eine bestimmte Funktion innerhalb kürzester Zeit zu implementieren: Time to Market ist der entscheidende Faktor. Bei großen Stückzahlen und hart umkämpften Märkten spielt hier auch die Minimierung der Produktionsstückkosten eine wesentliche Rolle.

In jedem der genannten Anwendungsfelder sind zur Bestimmung der jeweils einzusetzenden Techniken und Verfahren besondere Überlegungen anzustellen, die alle Aspekte des Produkts von der Herstellung über die Vermarktung bis zur Anwendung für die Konzeption des Software-Entwicklungsprozesses gleichermaßen berücksichtigen. Bei einer Entwicklung für ein Konsumgerät könnte der Zwang zur Stückkostenminimierung zunächst dazu führen, möglichst preiswerte Bauteile mit einer minimalen Speicherausstattung vorzusehen und deshalb auf C++ hin zu entwickeln. Java verlangt im Vergleich dazu oft aufwendigere Technik wie leistungsfähigere Prozessoren und mehr Speicher. Dafür nimmt eine Entwicklung mit Java vielfach weniger Zeit in Anspruch. Der Codierungsaufwand kann bis um die Hälfte niedriger liegen als bei C++, der Gesamtaufwand immerhin um zehn bis 20 Prozent. Der Java-Einsatz läßt sich also oft durch eine raschere Marktreife des konzipierten Produkts rechtfertigen. Wo hier das Optimum liegt, ist für jedes Projekt neu zu bestimmen. Das bedeutet, daß Gesichtspunkte der Vermarktung und der Entwicklung schon zu einem frühen Projektzeitpunkt geklärt werden - bei Embedded Software früher als bei jeder anderen Entwicklung.

Gegenwärtig ist die Situation hinsichtlich der Software-Entwicklung für Embedded Systems von einem Höchstmaß an Heterogenität geprägt. Im Maschinenbau, wo Embedded Systems wesentlich länger im Einsatz sind als es den Begriff gibt, werden vielfach noch proprietäre Verfahren auf der Basis von Maschinensprachen genutzt. Dabei handelt es sich teilweise um Eigenentwicklungen ohne eigentliches Betriebssystem.

Daneben agieren hier zahlreiche Hersteller von Hardwareplattformen, Prozessoren und Betriebssystemen. Die meisten dieser individuell erstellten Steuerungsanlagen wurden über Jahre hinweg gepflegt und optimiert, so daß sie den aktuellen Anforderungen nach wie vor gerecht werden. Die durch steigenden Innovationsdruck erforderlichen Weiter- und Neuentwicklungen stoßen jetzt aber immer öfter an systembedingte Grenzen.

Hier bieten die neuen Technologien Möglichkeiten zur Funktionserweiterung und Kostensenkung, auf die kein Hersteller längerfristig verzichten kann. Allgemein gilt: Wo massive Innovationen gefordert werden, ist der Übergang zu Hochsprachen und portablen Systemen unumgänglich. Immer häufiger werden Maschinen in Systeme für den Teleservice eingebunden. In solchen Fällen enthalten sie einen Web-Server, der den Spezialisten beim Hersteller oder in einem Servicezentrum alle relevanten Daten zu den Betriebszuständen zur Verfügung stellt - wenn es sein muß, über Entfernungen von mehreren tausend Kilometern. Wenn die interne Technik keine standardisierten Schnittstellen zur Verfügung stellt, kann diese Netzanbindung erhebliche Schwierigkeiten bereiten. Moderne modular aufgebaute Echtzeitbetriebssysteme lassen sich dagegen jederzeit um einen solchen Server erweitern.

Modularität ist im Zusammenhang mit der Entwicklung für Embedded Systems auf allen Ebenen von höchster Wichtigkeit. Das beginnt bereits bei den eingesetzten Betriebssystemen wie Chorus, Java OS oder Windows CE. Sie verwenden einen schlanken Mikrokernel, der sich um die jeweilig benötigten Funktionen ergänzen läßt. Aus Gründen der Wiederverwendung von Modulen gewinnen auch objektorientierte Verfahren und Hochsprachen zunehmend an Bedeutung.

Wiederverwendung von Komponenten

Mit der Entscheidung für eine objektorientierte Entwicklungsumgebung allein ist aber noch gar nichts gewonnen. Programmierer, die sich nicht ausreichend mit dem objektorientierten Verfahren auseinandersetzen, neigen dazu, selbst Java als prozedurale Sprache zu mißbrauchen.

Eine Besonderheit der Entwicklung von Embedded Systems ist, daß sie grundsätzlich nicht auf der Zielplattform stattfindet. In der Praxis ergibt es sich deshalb immer wieder, daß die in den entscheidenden Phasen einer Entwicklung nach objektorientierten Methoden in der Unified Modelling Language (UML) vor sich geht, die Ergebnisse aber anschließend in hochoptimierten prozeduralen Code umgesetzt werden. Diese Art des Entwurfs läßt dem Programmierer die Wahl der Sprache, die schließlich auf dem System implementiert wird. Bei hohen Anforderungen an die Performance wie bei Projekten der Industrieautomatisierung wird man zum Einsatz von Embedded C++ tendieren. Wo es um den schnellen Aufbau von Funktionalität in erweiterbaren Architekturen geht, also bei Massenprodukten und in Teilbereichen der Telekommunikation, liegt Java näher. In der Praxis kommt es meistens zu Mischformen.

Bei den Systemplattformen Windows CE und Java OS ist die Entwicklung überdies derzeit so dynamisch, daß es in vielen Fällen praktisch unmöglich ist, sich bereits zu Projektbeginn auf eine bestimmte Architektur festzulegen. Typischerweise werden die Produkte daher mehrstufig entwickelt, wobei man vielfach wesentliche Parameter der jeweils folgenden Stufen noch gar nicht kennt. Die saubere Kapselung austauschbarer Komponenten ist daher von zentraler Bedeutung. Dieses Verfahren schafft zudem die Möglichkeit, gleichzeitig an einzelnen Modulen zu arbeiten oder auf portierbare Komponenten aus anderen Projekten zurückzugreifen, um so den finanziellen und zeitlichen Aufwand zu reduzieren.

Doch die technischen Hilfsmittel sind nicht alles. Für die optimale Klassenzuweisung und Schnittstellen-Beschreibung der Objekte ist man nach wie vor auf die Qualifikation der Mitarbeiter angewiesen. Unabdingbar sind Abstraktionsvermögen und ein beträchtliches Maß an Intuition, das sich durch Erfahrung und eine enge Kooperation mit dem Auftraggeber gewinnen läßt. Maschinenbauer lassen Entwicklungsdienstleister oft weitgehend selbständig arbeiten, während Hersteller aus der Kommunikationstechnik oft flexible Reaktionen auf Änderungen erwarten.

ANGEKLICKT

Der Markt für Embedded-Software boomt. Hier ringen Java und Windows CE um Marktanteile. Die schlanken Programme und Betriebssysteme sorgen dafür, daß Handies sich Telefonnummern merken und den Terminplan führen. Mindestens so lukrativ ist es für die Lösungsanbieter, Netz- und Telecom-Komponenten sowie Steuerungsanlagen in der Industrie mit ausfallsicherer Software auszustatten.

MARKTTRENDS

Zunehmend komplexere Funktionalität fordert leistungsfähigere Software-Umgebungen, die ihrerseits wieder leistungstärkere Hardware voraussetzen. Durch höhere Stückzahlen sinken die Stückkosten für Hardware und ermöglichen so den Einsatz fortgeschrittener Software.

Die angespannte Personalsituation bei DV-Fachkräften übt einen erheblichen Druck zur Vereinheitlichung bei Produktionssoftware aus. Proprietäre Entwicklung ist teuer; für proprietäre Systeme auszubilden kann sich dagegen niemand leisten.

Der Markt verlangt Standards. Neben den klassischen Echtzeit-Betriebssystemen gewinnen hier Windows CE und Java OS an Be- deutung. Bei der anstehenden Bereinigung der Angebotspalette werden sich auf Dauer nur die Systeme behaupten können, die auf objektorientierter Grundlage eine durchgängige Entwicklungsumgebung für Applikationen auf Workstations, in Embedded Systems und im Internet bieten. Die verwendete Sprache ist demgegenüber oft zweitrangig.

*Edgar Schüber, Geschäftsführer und Vorstand des Dienstleisters Xcc Software AG und Projektleiter Dirk Weidemann.