Jenseits des Codes

12. Dezember 2012, 16:29 Uhr | Von Tuukka Turunen
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Entwicklungsumgebung und Tools

Benutzeroberfläche eines medizinischen Gerätes
Bild 3. Beispiel für die Benutzeroberfläche eines medizinischen Gerätes.
© Digia Qt

Nachdem der Entwickler alle Anforderungen an die Embedded-Benutzerschnittstelle definiert hat, ist es Aufgabe des Software-Entwicklers, die Schnittstelle zur Realität zu machen. Die Wahl der Entwicklungsumgebung und der dazugehörigen Werkzeuge kann hier entscheidend sein - nicht nur für das fertige Produkt, sondern auch für die Kosten und die Dauer der Projektentwicklung.

Beim GUI-Design ist die Umgebung zwangsläufig aufgeteilt: Grafik auf der einen Seite, Quellcode auf der anderen Seite. Wird beides vereint, lassen sich die Anforderungen beim Design und bei der Entwicklung einer GUI durch vorcodierte Funktionen erfolgreich erfüllen. Eine GUI-Entwicklungsumgebung, die einen grafischen Ansatz für das Design (Ästhetik) und die Entwicklung (Code) unterstützt, ist hier besonders von Vorteil. In solch einer Umgebung werden grafisch dargestellte Anwender-Steuerelemente auch den erforderlichen Code dazu enthalten, um ihn auf der Zielanwendung auszuführen. Auf Entwicklerseite ist damit ein objektorientierter Ansatz erforderlich: Durch die Auswahl eines Elements werden alle dessen Funktionen aufgerufen, und durch diese Inhärenz wird alles, was mit diesen Elementen entwickelt wird, automatisch Zugriff auf die einzelnen Elementfunktionen erhalten. Ein solcher Ansatz ist nicht nur auf die visuellen Elemente beschränkt - jede mit objektorientierter Methodologie entwickelte Komponente enthält automatisch die Funktionen ihrer einzelnen Bestandteile und gibt diese an andere Komponenten in hierarchischer Weise weiter.

Dies unterstreicht die Struktur objektorientierter Programmiersprachen wie C++ und wird vom Konzept her auf grafische Entwicklungsumgebungen erweitert, die eine objektorientierte Programmierung unterstützen. Objektorientierte Software ist von Grund auf portierbar, da Komponenten über ihre Weitergabe alle erforderlichen Funktionen enthalten, um wiederum deren Funktionalität festzulegen. Objektorientierter Code ist daher weniger Hardware-abhängig. In den meisten Fällen ist die Portierung objektorientierter Software einfach: Für eine andere Architektur wird einfach neu compiliert - zumindest solange keine Hardware- oder betriebssystemspezifischen Funktionen verwendet werden. Moderne Frameworks wie Qt bieten hier echten plattformübergreifenden Support, der diesen Prozess noch weiter vereinfacht. Diese Portabilität kann den Entwicklungsaufwand neuer Designs verringern und die Migration bestehender Designs vereinfachen. Gleichzeitig können Embedded-Entwickler damit verschiedene Preispunkte bezüglich der Halbleiterbauelemente bedienen. Qt kann z.B. zur Entwicklung einer Benutzerschnittelle in einem tragbaren medizintechnischen Gerät verwendet werden, das auf einem stromsparenden Prozessor basiert. Der gleiche Code lässt sich dann auf ein größeres Gerät wie einen CAT- oder MRI-Scanner portieren, der mit einem leistungsfähigeren Prozessor ausgestattet ist.

C++ ist heute eine der führenden objektorientierten Programmiersprachen. Auf der Basis der C-Sprache ist C++ eine Weiterentwicklung für Programmierer, die objektorientiert arbeiten wollen. Mit einem objektorientierten Ansatz ist es möglich, ein Entwicklungs-Framework zu erstellen, in dem modulare Bibliotheken „Komponenten“ (oder „Klassen“) für GUI Widgets wie Taster, Slider, Fenster, Zifferblätter enthalten sowie andere Funktionselemente, die in Embedded-Systemen erforderlich sind, z.B. Netzwerkanbindung, Support für Medien-Codecs und Internationalisierung (Sprachen).

Framework-Funktion

passend zum Thema

Ältere vs. moderne Benutzeroberfläche
Bild 4. Ältere vs. moderne Benutzeroberfläche: Die Grafik wird anspruchsvoller, die Effekte erfordern mehr Rechenleistung.
© Digia Qt

Von besonderem Nutzen sowohl für den Designer als auch den Programmierer ist, wenn die Umgebung eine Vielzahl vorgefertigter und anpassbarer Komponenten für die Benutzerschnittstelle enthält, zusammen mit Klassen und Modulen, die gängige Funktionen in Betriebssystemen abstrahieren. Werden z.B. Klassen für XML, Netzwerkanbindung, Interprozess-Kommunikation (IPC), 2D- und 3D-Grafik mit Hardware-Beschleunigung, Threading, SQL, Internationalisierung und Multimedia bereitgestellt, hat der Entwickler Zugriff auf ein Applikations-Framework, das die Implementierung wichtiger Funktionen beschleunigt und es ihm ermöglicht, sich auf seine Kernkompetenzen zu konzentrieren.

Die Qt-Anwendung und das GUI-Framework sind im Bereich Desktop-Applikationsentwicklung gut etabliert und wurden so angepasst, dass sie die gleichen Vorteile auch in Embedded-Systemen bieten. Das Framework besteht aus Entwicklungs-Tools und Klassenbibliotheken und ermöglicht Entwicklern und Programmierern, zusammen an einer GUI zu arbeiten und Komponenten zu verwenden, die sich einfach anpassen lassen - von der Farbpalette bis hin zur Reaktion auf Ereignisse.

Mit der Qt-Entwicklungsumgebung werden die grafischen Elemente einer Benutzeroberfläche wie in einem Grafikprogramm angeordnet, wobei Qt den dazu nötigen Code generiert. Leistungsfähiges Text-Rendering oder vorgerenderte Bitmap-Schriften mindern den Rechenaufwand, während spezielle Web-Tools Echtzeit-Webinhalte in die Oberfläche einbinden. Für Anwendungen, die in mehreren Sprachen erscheinen sollen, gibt es ein eigenes Linguistik-Tool, das das Übersetzen und Anpassen von Applikationen in verschiedene Sprachen unterstützt.

Portabilität

Einer der wesentlichen Vorteile von Qt ist die plattformübergreifende Programmierschnittstelle, die Bedienoberflächen und Anwendungen auf verschiedenen Betriebssystemen ablaufen lässt - und das mit minimalem zusätzlichem Aufwand. So lässt sich Quellcode von einem Target, z.B einer Desktop-PC-Umgebung, auf ein Embedded-Betriebssystem portieren, ohne den Code erneut schreiben zu müssen. Dies ermöglicht nicht nur mehrere Bereitstellungen aus einem einzelnen Entwicklungsprojekt, sondern macht den Code auch zukunftssicher für kommende Plattformänderungen - ein wichtiger Aspekt in einem Bereich, in dem Betriebssysteme selbst oft Änderungen unterworfen sind und wo Produktlebenszyklen manchmal nur Monate dauern.

Der Autor:

Tuukka Turunen
ist Direktor für Forschung bei Digia Qt und damit verantwortlich für die Planung, Entwicklung, Verifikation und Auslieferung des Produktes Qt Commercial.  Er hat sein Studium der Computerwissenschaften mit einem Master of Science (Eng.) und einem Diplom abgeschlossen.

  1. Jenseits des Codes
  2. Entwicklungsumgebung und Tools

Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!