Entwicklung von Benutzeroberflächen

Entwicklung von Benutzeroberflächen

Die Brücke vom
Design zur Umsetzung

Embedded Software spielt eine immer wichtigere Rolle in Geräten wie Haushaltstechnik, industriellen Steuerungen, Kfz-Armaturenbrettern, Fernsehgeräten und Smartphones. Die Erwartungen an deren Benutzeroberflächen steigen permanent. Eine hochqualitative Benutzerschnittstelle ist daher entscheidend für den Produkterfolg. Dazu gehören Erscheinungsbild, Benutzerfreundlichkeit und die Funktionen. Doch der Entwurf und die Programmierung der Benutzerschnittstelle sind zwei verschiedene Disziplinen und traditionell schwer vereinbar. Hier gilt es, einen geeigneten Übergang zwischen beiden Teilen herzustellen.

Das neue, qualitativ hochwertige Kfz-User-Interface-Design (UI) von Qt (Bild: Digia, Qt)

Das neue, qualitativ hochwertige Kfz-User-Interface-Design (UI) von Qt (Bild: Digia, Qt)


Der erste Schritt eines guten User-Interface-Designs (UI) ist die Definition der Anwenderanforderungen, das heißt eine Analyse, wie der Anwender die erforderlichen Aufgaben ausführt. Hieraus wird die Priorisierung der wichtigsten Funktionen abgeleitet. Dabei hilft, Anwender zu beobachten, wie sie ähnliche Aufgaben in bestehenden Systemen lösen. Probleme und bekannte Schwachstellen sollten Designer dabei ebenfalls berücksichtigen. Nach dem Verständnis der erforderlichen Funktionalität sollten Optik und Haptik, der Schnittstelle und der zugrunde liegende Workflow berücksichtigt werden. Storyboards und Prototypen sind ein übliches Medium, um Konzepte gemeinsam mit Anwendern zu überprüfen und für Verbesserungen zu sorgen. Entwickler sollten dabei eine Schnittstelle schaffen, die klar und übersichtlich, intuitiv und konsistent in Form und Funktion ist. Die Einbindung dieses Arbeitsschritts in eine wiederverwendbare UI-Implementierung lässt sich mit geeigneten Tools vollziehen. Aktuelle UI-Design-Tools ermöglichen eine schnelle Prototypen-Entwicklung, sodass die erzielten Ergebnisse direkt in das Endprodukt einfließen können. Auf gleiche Art ermöglichen moderne Tools die Umgestaltung und Änderung in einer späteren Implementierungsphase. Damit sind Präsentation und Implementierung zwar verbunden, aber weiterhin trennbar. Während die Anforderungen der Anwender und die Aufgabenanalyse wichtige Erwägungen sind, gilt es auch andere Faktoren bei der Entwicklung von Benutzerschnittstellen zu berücksichtigen. Dazu zählen die Bewertung der Betriebsumgebung, wie das zu erwartende Umgebungslicht, spezielle Anforderungen – wie die Bedienung mit Handschuhen – und die Portabilität über Hardware- und Software-Plattformen hinweg. Faktoren wie die Unterstützung verschiedener Sprachen oder die Integration von Web-Funktionen sollten in dieser Phase ebenfalls mit berücksichtigt werden. Ein geeignetes Entwicklungs-Framework, das Best-Practice-Prinzipien unterstützt, sollte beide Aktivitäten umfassen und das Zusammenspiel zwischen beiden Domänen ermöglichen.

Komponenten oder Klassen für Fenster und Tastaturen

Sorgfältige Überlegungen vor der Programmierung ermöglichen es dem Entwicklungsteam, eine durchdachte Beschreibung der geforderten Benutzerschnittstelle zu generieren. Das Software-Team muss diese dann in die Realität umsetzen. Dies wird erleichtert, wenn die Programmierer die Prototypen-UIs des Entwurfsteams in ihrer Implementierung verwenden können. Die Wahl der Entwicklungsumgebung und zugehörigen Tools kann einen erheblichen Unterschied machen – nicht nur beim fertigen Produkt, sondern auch bei den Projektkosten und der Produkteinführungszeit. Eine Entwicklungsumgebung, die den ästhetischen Entwurfsprozess und die Programmierung der grafischen Benutzeroberfläche überbrücken kann, trägt zu schnelleren und besseren Ergebnissen bei. Neben der Unterstützung dieser beiden Anforderungen muss das Framework das Team auch dazu befähigen, die passende Grafik-Qualität, optimierte Performance bei eingeschränkter Hardware und die schnelle Portierung der Lösung auf verschiedene Plattformen zu gewährleisten. Traditionell erfolgt die Programmierung von Embedded Systemen mit einer Low Level-Programmiersprache wie C. Das Schreiben von Code für ein Konzept aus dem wirklichen Leben, wie die Steuerung einer Benutzerschnittstelle, erfordert einen hohen Abstraktionsgrad, objektorientierte Programmierung und eine Programmiersprache wie C++, die robuster und einfacher anzuwenden ist. Für jede grafisch dargestellte Funktion gibt es ein einzigartiges Objekt auf Code-Ebene, das alle Funktionen enthält. Die Umsetzung ist als Ansammlung von Objekten, deren Verbindungen und Interaktionen konzipiert. Spezielle neue Objekte können einfach hinzugefügt werden, indem neue Funktionen aus bestehenden Funktionen erstellt werden. Der objektorientierte Ansatz ist nicht auf visuelle Elemente beschränkt: jede Komponente, die über die objektorientierte Methodologie entwickelt wird, übernimmt die Funktionen ihrer Bestandteile und gibt diese an andere Komponenten in hierarchischer Weise weiter. Objektorientierte Software ist von Grund auf portierbar und damit Hardware-unabhängig. Das Portieren objektorientierter Software erfolgt in den meisten Fällen über das einfache Neukompilieren für eine andere Architektur, vorausgesetzt, dass keine Hardware oder Betriebssystem-spezifische Funktion verwendet wird. Durch den objektorientierten Ansatz ist es möglich, ein Entwicklungs-Framework zu erstellen, in dem modulare Bibliotheken Komponenten oder Klassen für Grafische Benutzeroberfläche-Widgets (GUI) wie Tasten, Slider, Fenster oder Tastaturen enthalten – genauso wie andere Funktionselemente, die für Embedded Anwendungen erforderlich sind. Darunter fallen Netzwerkfunktionen, Multimedia-Codecs und Support für mehrere Sprachen, was eine Internationalisierung erlaubt. Im Falle moderner Frameworks, die echten plattformübergreifenden Support bieten, wie z.B. Qt, kann diese Portabilität den Entwicklungsaufwand für neue Designs minimieren und die Migration bestehender Designs vereinfachen. Gleichzeitig besteht die Freiheit, verschiedene integrierte Schaltkreise (ICs) und deren Kosten zu berücksichtigen. So kann Qt zur Entwicklung einer Benutzerschnittstelle für tragbare medizintechnische Geräte verwendet werden, die einen stromsparenden, kostengünstigen Prozessor enthalten sollen. Der gleiche Code kann aber auch in fortschrittlichen Geräten wie Computertomografie- oder Magnetresonanztomografie-Scannern zum Einsatz kommen, die mit wesentlich leistungsfähigeren Prozessoren ausgestattet sind. C++ ist eine der führenden objektorientierten Programmiersprachen, die heute zum Einsatz kommt und eine Weiterentwicklung für Programmierer, die mit C vertraut sind und eine objektorientierte Methodologie anwenden wollen.

Rasche Implementierung wichtiger Funktionen

Um sowohl die Entwurfs- als auch Programmieraktivitäten zu unterstützen, sollte die Entwicklungsumgebung eine Vielzahl vorgefertigter, anpassbarer Benutzerschnittstellen-Komponenten enthalten, zusammen mit Klassen und Modulen, die allgemeine Funktionen in Betriebssystemen abstrahieren. Idealerweise wird dabei mehr als nur die GUI geboten, sondern auch Klassen für XML, Networking, Inter Process-Kommunikation (IPC), 2D- und 3D-Grafik mit Hardwarebeschleunigung, Threading, SQL, Internationalisierung und Multimedia. Damit steht ein Anwendungs-Framework bereit, dass die Implementierung wichtiger Funktionen beschleunigt und einen größeren Schwerpunkt auf die Differenzierungsmerkmale legt. Das Qt Applikations- und UI-Framework besteht sowohl aus Entwicklungstools und Klassenbibliotheken. Es ermöglicht Entwicklern und Programmieren, zusammen zu arbeiten und Komponenten zu nutzen, die sich leicht anpassen lassen – von der Farbpalette bis zur Handhabung von Ereignissen. Die Umgebung ermöglicht auch die schnellere Entwicklung grafischer Elemente, z.B. durch Drag-and-Drop bei der UI-Erstellung und beim Schreiben von Code. Hinzu kommen Text-Rendering und vorgerenderte Fonts, mit denen sich der Datenverarbeitungsaufwand verringert. Spezielle Web-Tools tragen zur Entwicklung von Benutzerschnittstellen bei, die Echtzeit-Webinhalte und -Dienste enthalten. Für den weltweiten Einsatz stehen spezielle Sprachtools bereit, die das Übersetzen und Anpassen der Anwendungen in verschiedene Sprachen unterstützen, einschließlich asiatische Schriftzeichen und Rechts-nach-Links-Schreibung. Ein besonderer Vorteil des Frameworks liegt in seiner Top-Level-, plattformübergreifenden Anwendungs-Programmierschnittstelle oder Application-Programming Interface (API), die die Umsetzung von GUI-Designs und Anwendungen mit minimalem Mehraufwand über verschiedene Softwareplattformen hinweg ermöglicht. Quellcode von einem Gerät, wie einer Desktop-PC-Umgebung, kann ohne erneutes Schreiben des Codes auf ein Embedded Betriebssystem portiert werden. Damit sind nicht nur mehrere Implementierungen auf Basis eines einzigen Entwicklungsprojekts möglich, es minimieren sich auch die Auswirkungen zukünftiger Änderungen bei der Plattform selbst. Dies zeigt sich besonders vorteilhaft, wenn Betriebssysteme ständigen Revisionen und bestimmten Lebenszyk-len unterworfen sind. Das Projekt wird damit zukunftssicher für strategische Änderungen in späteren Phasen. Die Wahl der Zielplattform bleibt flexibel und lässt sich später ändern bzw. erweitern, ohne eine Neuentwicklung durchführen zu müssen. Die Funktionen des Frameworks ermöglichen es Entwicklern, grafikreiche und ruckfreie 2D- und 3D-Animationen sowie Übergänge für Benutzerschnittstellen zu entwickeln und umzusetzen. Qt-Anwendungen laufen auf Highend-Architekturen, wie auch auf Geräten mit begrenzter Performance. Aktuelle Verbesserungen des Frameworks unterstützen C++11-Funktionen und HTML5, eine verbesserte QML-Engine, neue APIs und Support für die Grafikentwicklung mit OpenGL ES – der Grafik-API, die speziell für Embedded Systeme und Mobilgeräte entwickelt wurde.

Digia, Qt
qt.digia.com

Das könnte Sie auch Interessieren