Embedded GUI Best Practices der toolgestützten Entwicklung

Tipps zur Implementierung II

Instant-Prototyping – Wurde die Middleware vom eigentlichen UI getrennt und nutzt dieses eine Abstraktionsschicht zur Zielplattform, so können Prototypen mit wenig Aufwand realisiert werden. Es ist hilfreich das Host-System als Prototyping-Plattform einzusetzen. So können schnell Vorabversionen der Benutzeroberfläche für Nicht-Entwickler wie Designer, Produktmanager oder Mitarbeiter der Marketing-Abteilung erstellt werden. GUI-Änderungen sind damit schneller kommuniziert.

RAM-Optimierung – Den Verbrauch von Arbeitsspeicher bei GUI-Applikationen bestimmen hauptsächlich die gewählte Auflösung, das verwendete Farbformat (True Color, High Color, Index8, etc.) und die Anzahl und Art der benutzten Ressourcen wie Schriftarten oder Bitmaps. Ist die Auflösung nicht reduzierbar und wurde bereits die Auswahl der Schriftarten und Bitmaps optimiert, so ist die Reduktion des Farbformats oft das Mittel der Wahl, um den Verbrauch von Arbeitsspeicher signifikant zu minimieren. Demzufolge sollte ein GUI-Tool bzw. eine GUI-Bibliothek die Möglichkeit bieten, das Farbformat ohne große Einbußen beim Design zu ändern.

Flash-Optimierung – Ähnlich wie bei der Optimierung des RAM-Verbrauchs, bestimmen im Wesentlichen die verwendeten Ressourcen und der eigentliche Programmcode die Größe der resultierenden Applikation im Flash-Speicher. Da bei optimaler Software-Architektur selten signifikante Änderungen am Code möglich sind, die den Flash-Footprint wesentlich beeinflussen, sollten die verwendeten Ressourcen optimiert werden. Dabei ist es entscheidend, ob diese statisch (zur Compile-Zeit) oder dynamisch (zur Laufzeit) erfolgen. So kann beispielsweise der Wechsel von der statischen zur dynamischen Verwendung große Auswirkungen haben. Sollen nur wenige Schriftzeichen in einer bestimmten Größe dargestellt werden, sollte das verwendete GUI-Tool die Option anbieten, auch nur diese Selektion statisch im Programmcode einzubetten. Damit muss nicht die ganze Schriftart eingebunden werden und der Speicherverbrauch wird gesenkt.

Performance-Steigerung - Gilt es nicht den Speicherverbrauch, sondern die Performance von Benutzeroberflächen zu verbessern, sollten zunächst die eigentlichen Zeichenoperationen optimiert werden.

Bessere GUI-Tools bringen  daher nur veränderliche Bereiche, sog. Dirty Areas, zur Darstellung. Dies spart Rechenzeit und die Anzahl der Frames pro Sekunde (FPS) steigt. Eine weitere Möglichkeit, die FPS bei vollflächigen Animationen zu verbessern, besteht im intelligentes Caching: einmal zusammengesetzte UI-Elemente wie Buttons, Sliders, Text-Views, etc. werden vor der Animation eingefroren, dupliziert und zu einem statischen Abbild zusammengefügt. Im Anschluss wird die vollflächige Animation mit dem temporären Abbild durchgeführt und dieses wieder aus dem System entfernt. Dadurch muss die Animation nur noch auf einem zwischengespeicherten Objekt anstatt auf vielen kleineren Objekten durchgeführt werden. Das spart Rechenzeit fordert aber zusätzlichen Speicher.

Integration - Die Projektlaufzeit beinhaltet typischerweise mehrere Sitzungen, bei denen die neu entwickelten Software-Komponenten zusammengebracht und auf der Zielplattform integriert werden. Werden dabei bestimmte Animationen oder Übergänge nicht zufriedenstellend dargestellt, ist es vorteilhaft, die gesamte Kette zu beherrschen. Folglich sollten keine Unbekannte im System existieren: von der Applikation selbst über das GUI-Tool bzw. der GUI-Bibliothek bis hin zum grafischen Subsystem sollte der Entwickler Bescheid wissen.

Einsteiger im Bereich der GUI-Entwicklung können unter Berücksichtigung der genannten Best Practices viel Zeit, Kosten und auch Nerven einsparen.

Der anfängliche Mehraufwand - genaue Konzeption, Architektur, Plattformunabhängigkeit, etc. - zahlt sich immer dann aus, wenn Mehrfachentwicklungen vermieden werden können. Natürlich erwarten Marketing und Management, dass der Prototyp schon in der ersten Version die gesamte Funktionspalette des zu bedienenden Gerätes abbildet.

Jedoch sollte gerade zu Beginn der Funktionsumfang reduziert sein, damit die Softwarequalität verstärkt betrachtet werden kann. Die genannten Aspekte sind somit auch eine Argumentationshilfe, für einen effektiven, vernünftigen und pragmatischen Entwicklungsweg. So gelingen benutzerfreundliche, termingerechte und nachhaltige HMI-Projekte. (ct)