Ungewohntes bei verdrahteter Software Objekttechnik: ein kongeniales Verfahren fuer Embedded-Systeme

02.09.1994

Das Interesse an und die Nachfrage nach der Objekttechnologie hat in den letzten beiden Jahren im recht konservativen Markt fuer Embedded-Systeme kontinuierlich zugenommen. Derzeit entfallen auf sie bereits rund 15 Prozent aller Verkaeufe. *Andreas Schleusener erlaeutert die Gruende fuer diesen Trend und gibt einen Ueberblick ueber den Markt fuer Entwicklungs-Tools.

Die Gruende fuer die wachsende Bedeutung der Objekttechnologie in diesem Segment sind:

- Es gibt eine Reihe von Produkten, die die objektorientierten Entwicklungstechniken unterstuetzen (zum Beispiel Klassen-Browser).

- Die Forderung nach zuverlaessigerer Software haelt an.

- Die Nachfrage nach produktiveren Entwicklern steigt.

- Embedded-Systeme werden derzeit in Verbindung mit groesseren, leistungsstaerkeren Prozessorarchitekturen implementiert.

- Die Objekttechnologie bewaehrt sich als systematischer Ansatz zur Bewaeltigung von Komplexitaet: Der militaerische Sektor und die Luftfahrtindustrie machen sich diesen Aspekt schon seit einem Jahrzehnt zunutze.

- Der Wunsch, C++ als ein besseres C zu nutzen, etwa die striktere Typenueberpruefung in C++: foerdert bei vielen Anwendern die Absicht, danach dann auch allmaehlich den Uebergang zur objektorientierten Programmierung zu vollziehen.

- Native C++-Compiler fuer gebraeuchliche Zielplattformen sind in einer hoeheren Zahl verfuegbar: Entwickler von Embedded-Systemen haben eine Aversion gegen den Einsatz von Praeprozessoren wie Cfront.

Der Begriff "Echtzeit" wird oft mit Embedded-Anwendungen in Verbindung gebracht, da die meisten Echtzeit-Anwendungen in eine spezifische Loesung "eingelagert" sind. Embedded-Echtzeit-Software findet sich tagtaeglich als verborgene IC (Integrated Circuit)- Kontrollogik fuer unterschiedlichstes Equipment und Systeme - vom Mikrowellenherd ueber Kraftfahrzeugzuendung, Funktelefone und Laserdrucker bis hin zu den Computerspielen von Nintendo oder Sega.

Embedded-Echtzeit-Systeme muessen deterministisch, schnell und zuverlaessig auf funktionale Anforderungen reagieren. Daraus ergeben sich Performance- und Qualitaetsanforderungen. Es gilt, Performance-Engpaesse auszumachen, die betreffenden Passagen zu isolieren oder in Assembler umzuschreiben, um so eine schnellere und besser kontrollierte Ausfuehrung zu gewaehrleisten.

Soll eine Anwendung eingelagert werden, spielt auch das Hauptspeichermodell eine wichtige Rolle. "Wie Ressourcen-effizient muss das Programm sein, oder welche Kontrolle hat der Programmierer darueber, welche Komponenten an welchen Hauptspeicherstellen abgelegt werden?" sind die entscheidenden Fragen. ROM-faehiger Code muss simultan von mehreren Programmen abrufbar sein. Einige Systemanwendungen erfordern ueberdies ein modulares Softwaredesign.

Da diese Anwendungen haeufig in "Mission-critical"-Systemen

(zur medizinischen Analyse, Steuerung industrieller Prozesse oder nuklearer Druckbehaelter) zum Einsatz kommen, hat der Faktor Zuverlaessigkeit einen hohen Stellenwert. Zudem muss die Laufzeit- Umgebung haeufig einem bestimmten Gewicht, Stromverbrauch und Abmessung genuegen. Dazu weichen die Entwicklungsumgebung - in der Regel ein Host - und die Zielumgebung wesentlich voneinander ab.

Da Echtzeitsysteme haeufig ereignisgesteuert arbeiten, bietet sich die in der Objekttechnologie verwendete Methode der Meldungsuebergabe zwischen kooperierenden Akteuren geradezu als das Entwicklungsparadigma an. Hierbei kann der Programmierer auf einer hoeheren Abstraktionsebene arbeiten. Spezielle Tools unterstuetzen ihn dabei.

Das Produkt "Objectime" etwa basiert auf der objektorientierten Vorgehensweise fuer das Design von Echtzeitsystemen "Rooms". Dieses wurde in den zurueckliegenden vier Jahren von Bell Northern Research entwickelt. Rooms unterstuetzt Modelle diskreter Ereignisse innerhalb von Netzen aus interagierenden simultanen Prozessen in hierarchischen Finite-State-Maschinen und formalen Protokolldefinitionen. Der modulare Charakter der objektorientierten Programmierung und Konzepte wie Kapselung und Wiederverwendung aus Klassenbibliotheken verbessern zudem die Zuverlaessigkeit signifikant.

Anwendungen aus bereits entwickelten, umfassend getesteten Klassen und Objekten, die nicht miteinander in Konflikt treten, tragen dazu bei. Insbesondere zur Bewaeltigung der bei heutigen Embedded- Echzeit-Systemen gegebenen Komplexitaet eignet sich die in der Objekttechik gebraeuchliche Abstraktion und Kapselung.

Somit ergibt sich eine Reihe von Gruenden fuer den verstaerkten Einsatz der Objekttechnologie.

Doch bisher sind die von den Herstellern angebotenen Werkzeuge nur schlecht integriert und unterstuetzen die Objekttechnologie in der Regel kaum. Das wird sich in den naechsten beiden Jahren zum Positiven veraendern (siehe Abbildung 2). Dabei wird die Analyse- und Designphase durch Anbieter von Upper-CASE-Tools abgedeckt, die Programmier- und Testphase faellt hingegen in den Zustaendigkeitsbereich der Lower-CASE-Anbieter. Einige wenige Hersteller wie Cadre, Verilog und IDE (Interactive Development Environment) bieten Tools fuer beide Entwicklungsphasen an.

Die Upper-CASE-Tools unterstuetzen ereignisgesteuerte Designs, State-Transition-Diagramme und Definitionen von Kommunikationsprotokollen. IDE verfuegt hierbei in "Design Through Pictures" ueber seine eigene objektorientierte Designmethode. Das IDE-Produkt generiert C- und C++-Code und unterstuetzt das Reverse- Engineering von C-Code. Cadre basiert - ebenso wie der Newcomer Scientific and Engineering Software - die Schlaer-Mellor- Methodologie von Project Technologies sowie das Reverse- Engineering.

Gegenueber den Upper-CASE-Herstellern haben es die Anbieter von Lower-CASE-Tools mit einer niedrigeren Abstraktionsebene zu tun. Hier gilt es, Programmcode zu generieren, der ohne Unterstuetzung durch das Betriebssystem ausgefuehrt wird und speziell fuer die Prozessorarchitektur der Laufzeit-Umgebung ausgelegt ist.

Wird zudem in anfaenglichen Entwicklungsphasen keine Zielplattform definiert, muessen Low-end-Tools unterschiedliche Debugging- Methoden unterstuetzen koennen. (siehe Abbildung 1: Sie listet die Vor- und Nachteile verschiedener Techniken fuer das Debugging von Embedded-Anwendungen auf.)

Bei der Auswahl von Low-end-Tools sind ausserdem die verschiedenen Compiler und Linker zu beachten, um die Belegung von ausfuehrbarem Programmcode im ROM und Schreib-/Lesespeicher sowie die optionale Verwendung verschiedener Techniken zur Compileroptimierung kontrollieren zu koennen. So koennen Compiler im native mode oder plattformuebergreifend kompilieren.

Wegen der komplexen Anforderungen in diesem Markt suchen viele Anbieter von Lower-CASE-Tools ihr Heil in Allianzen. Borland und Microsoft ueberlassen in dieser Nische bislang Anbietern wie Systems und Software (SSI) und Paradigm das Feld. In aehnlicher Weise laesst Sun Unternehmen wie Microtec, Oasys, Watcom und anderen den Vortritt (siehe Abbildung 3).

Trotz vieler Vorteile bleibt die Objekttechnologie fuer Embedded- Echtzeit-Systeme ein zweischneidiges Schwert. So ist mit der Technik eine beachtliche Lernkurve verbunden und Investitionen amortisieren sich nicht bereits mit dem ersten Projekt. Zudem lassen sich die Vorzuege nur dann vollstaendig ausschoepfen, wenn auch die zugrundeliegende Anwendungsarchitektur voellig objektorientiert ist.

Eine Moeglichkeit, zu einem objektorientierten Design zu gelangen, besteht in der Verwendung einer rein objektorientierten Programmiersprache wie Smalltalk. Noch ist davon abzuraten, die gesamte Smalltalk- oder Clos-Welt auf die Laufzeit-Umgebung der Zielplattform zu uebertragen, da sie zu viel Speicherplatz belegt. Hier werden spezielle Mechanismen benoetigt, die exakt den Teil der Umgebung und des Anwendungscodes extrahieren, der zur Laufzeit benoetigt wird. Andere Bottlenecks entstehen dadurch, dass Sprachen wie Clos und Smalltalk interpretiert werden oder durch sogenannte "Aufraeum-Funktionen".

Allerdings machen die technischen Fortschritte aus den zurueckliegenden Jahren im Bereich der Sprachentwicklung die meisten Befuerchtungen bald gegenstandslos. So lassen sich interpretierte Sprachen heute zur schnelleren Ausfuehrung in Bytecode kompilieren. Zudem verwenden die Produkte jetzt Aufraeum- Funktionen, die in der Regel weniger als drei Prozent der Prozessorzyklen beanspruchen. Ueberdies sorgt ein effizienteres Hauptspeichermanagement fuer eine verbesserte Zuverlaessigkeit der Anwendungen.

Eine von IDC durchgefuehrte Befragung der Hersteller belegt, dass C++ die beliebteste objektorientierte Programmiersprache fuer das Design von Embedded-Echtzeit-Systemen ist. Gleichzeitig raeumten die Hersteller aber auch ein, dass die ueberwaeltigende Mehrheit der C++-Anwender keine objektorientierte Programmierung betreibt. Vielmehr verwenden sie C++ primaer wegen dessen Typenueberpruefung.

Smalltalk dagegen wurde zwar bereits in der Vergangenheit erfolgreich zur Entwicklung von Embedded-Anwendungen eingesetzt, viele Programmdesigner entscheiden sich aber noch immer aus den oben genannten (mittlerweile hinfaelligen) Gruenden gegen ihren Einsatz. So geben auch die Smalltalk-Anbieter Digitalk und Parcplace zu, dass Entwickler von Embedded-Anwendungen nur einen geringen Bruchteil ihres Kundenstamms ausmachen. Dem widerspricht allerdings die Tatsache, dass Object Technologies International rund die Haelfte seines Umsatzes ueber den der Bereich Embedded- Systeme generiert.

Entwicklungsphase: Upper-CASE/Analyse und Design

Hersteller: Cadre (Providence), Interactive Development Environments, (San Franzisko), Objectime (Kanada), Verilog (Dallas), Mark V (Encino), Rational (Santa Clara), Scientific and Engineering Software (Austin).

Repraesentative Hersteller

Entwicklungsphase: Codegenerierung, -kompilierung und -pflege C++

Hersteller: Microtec (Santa Clara), Systems & Software (Irvine), Oasys (Lexington), Watcom (Waterloo), Metaware (Santa Cruz), Symantec - Zortech (Cupertino)

Smalltalk: Object Technologies International (Ottawa).

Entwicklungsphase: Binden und lokalisieren

Hersteller: Systems & Software (Irvine), Paradigm (Endwell).

Entwicklungsphase: Debugging, Qualitaetssicherung

Hersteller: Systems & Software (Irvine), Paradigm (Endwell), Real- Time Innovations (Sunnyvale), Pure Software (Los Altos)

Quelle: International Data Corp.