Prozessorientierte Konstruktion von
Transcrição
Prozessorientierte Konstruktion von
Fachthema Oberflächlich mit System Prozessorientierte Konstruktion von Benutzeroberflächen Jan Christian Krause, Kai Benjamin Joneleit Die POC-UI-Methode ist ein leichtgewichtiges Verfahren zur softwaretechnischen Strukturierung von grafischen Oberflächen. Sie ist in JavaProjekten des Teams Trading & Plant Employment von Vattenfall Europe Information Services GmbH entwickelt worden und ergänzt die bestehenden Architekturmuster für grafische Benutzeroberflächen um einen Entwurfsprozess. Mit Hilfe dieser Vorgehensweise konnte bei der Vattenfall Europe Information Services GmbH die Effizienz des Entwicklungsprozesses spürbar optimiert werden. Einführung Die Entwicklung moderner Softwaresysteme ist häufig durch E hohe Komplexität und hohe Kosten geprägt. Beides steht oft in proportionalem Verhältnis zueinander. Erfahrungsgemäß tragen die Aufwände zur Entwicklung grafischer Benutzeroberflächen signifikant zur Kostenentwicklung eines Projektes bei. Dieser Artikel stellt mit der POC-UI-Methode (Process Oriented Construction of User Interfaces) einen Konstruktionsleitfaden für den software-technischen Entwurf grafischer Benutzeroberflächen vor. Ziel ist es, den Entwurfsprozess von Oberflächen durch Konventionen zu standardisieren und dadurch Entwicklungs- und Wartungskosten zu senken. Die POC-UI-Methode ist in Java-Projekten des Teams Trading & Plant Employment von Vattenfall Europe Information Services GmbH über anderthalb Jahre entwickelt und in mehreren Projekten international erfolgreich angewandt worden. Vattenfall Europe Information Services ist IT-Full-Service-Anbieter für die Energiewirtschaft. Das Leistungsspektrum reicht von der strategischen Beratung, der Konzeption von IT-Systemen, der Entwicklung und Implementierung von IT-Lösungen bis hin zum Outsourcing der gesamten IT-Infrastruktur. Bestehende Ansätze zur software-technischen Konstruktion von Oberflächen Grafische Oberflächen werden je nach Kunden und Organisationsform des Projektes auf verschiedene Arten, wie z. B. durch Anwendungsfälle, grafische Skizzen oder Story- bzw. Taskcards spezifiziert. Bei fehlenden Konventionen unterscheiden sich die Implementierungen derselben Spezifikation oft nach Erfahrungen, Vorlieben und fachlichem Verständnis der Entwickler. Dies kann zu wiederkehrenden hohen Einarbeitungs- und Wartungsaufwänden für Programmierer führen. Meist existieren Konventionen in Projekten auf hohen technischen Detailebenen, z. B. für Methoden- bzw. Klassenbezeichner oder Klammersetzungen. Jedoch zeigt die Praxis, dass der Entwurf und die Struktur von Klassenmodellen selten vollständig durch Konventionen definiert sind. Dieses Problem ist unabhängig von den verwendeten Grafikbibliotheken (z. B. das Standard Widget Toolkit [SWT], Swing usw.) oder speziellen Oberflächen-Editoren (z. B. [Jigloo], [Matisse] usw.). In der Literatur finden sich diverse software-technische Architekturvorschläge für grafische Oberflächen, aus denen sich Klassenmodelle ableiten lassen. Fowler identifiziert vier verschiedene Architekturtypen und grenzt diese anhand der Lokalisierung des Codes für Layout, Daten und Logik sowie für den Datenfluss voneinander ab [Fowl06]. Bei allen Vorschlägen wird die Software-Komplexität auf den beiden technischen Ebenen „Steuerelement“ (hoher Detailgrad) und „Formular/Bildschirm“ (niedriger Detailgrad) behandelt. Ebenen zwischen beiden Extrema sind mit technisch-orientierter Argumentation unscharf abgrenzbar. Züllighoven et al. zerlegen die Formular-/Bildschirm-Ebene deshalb anhand von fachlichen Kriterien rekursiv in Teil-Formulare (Prinzip „Teileund-Herrsche“) [Züll98]. Diese Abgrenzung orientiert sich an den fachlichen Objekten, die in der jeweiligen Teil-Oberfläche bearbeitet werden. Teil-Oberflächen werden als Werkzeuge zur Bearbeitung der Objekte verstanden. Jedoch bleibt die Frage unbeantwortet, wie ein Entwickler aus Spezifikationen wie Anwendungsfällen, grafischen Skizzen usw. die jeweilige Architektur ableiten kann und welche Rollen an diesem Prozess beteiligt sind. Züllighoven et al. beschreiben die Identifikation von Werkzeugen anhand fachlicher Szenarien in Textform. Dieses Vorgehen impliziert jedoch viel kreative Entwurfsarbeit seitens des Entwicklers. Zudem definiert keiner der Architekturtypen die verschiedenen Zustände der beteiligten Komponenten sowie deren Übergänge ineinander (z. B. einer View in einer Model-View-Controller-Architektur). In der Praxis ist ein definierter Lebenszyklus sehr nützlich, beispielweise bei der Eingrenzung von Fehlern oder bei der Auswahl einer geeigneten Stelle für Erweiterungen im Quelltext. Standardisierter Oberflächenentwurf mit der POC-UI-Methode Die POC-UI-Methode wird anhand eines einfachen Beispiels erläutert: eine grafische Oberfläche ist in das bestehende Kundenverwaltungssystem eines Energieversorgers zu implementieren. Die Oberfläche dient der Anzeige der Vertragsdaten (u. a. Bankverbindung, Stromtarif), der Anschrift und des Bemerkungstextes zu einem Privatkunden. Ein Kunde wird über seine Kundennummer oder seinen Namen gefunden (Vor- oder Nachname als Volltextsuchkriterium). Das Anklicken des Kunden in der Trefferliste führt zum Visualisieren der zugehörigen Kundendaten. Sollte der Kunde nicht im System vorhanden sein, so wird dem Mitarbeiter ein Fehler angezeigt. Aus Platzgründen wird in diesem Artikel kein Quelltext diskutiert. Eine Implementierung dieses Beispiels in Java/Swing steht auf der Internetseite von POC-UI zum Download bereit [POC-UI]. Beschreibung des Entwurfsprozesses Die POC-UI-Methode ist ein software-technischer Konstruktionsleitfaden für grafische Oberflächen. Sie hilft Architekten und Kunden bzw. Fachabteilungen beim Entwurf eines Benutzungsmodells sowie Programmierern bei der Strukturierung des Quelltextes auf dessen Basis. Abbildung 1 zeigt den Entwicklungsprozess nach der POCUI-Methode. Insgesamt sind drei Rollen an dem Prozess beteiligt: der Kunde/die Fachabteilung, der Architekt und der Programmierer. Ausgangspunkt des Prozesses ist die Spezifikation NUR für Abonnenten: Haben Sie schon Ihren Log-In für den kostenlosen Download aller Artikel-pdfs? Kontakt: [email protected] 27 Fachthema ändert der Kunde zunächst die Spezifikation. Anschließend wird der Prozess in Phase 1 fortgesetzt. Fehlerhafte Implementierungen werden vom Programmierer gemäß Spezifikation korrigiert (Phase 2). Definition des Benutzungsmodells Abb. 1: Entwurfsprozess nach der POC-UI-Methode des Kunden. Da der Entwurfsprozess nicht auf eine bestimmte Form der Kundenspezifikation ausgerichtet ist, kann die POCUI-Methode problemlos in verschiedene Vorgehensmodelle wie das Wasserfallmodell, das V-Modell oder agile Ansätze wie Scrum, XP usw. integriert werden. Der Entwurfsprozess gliedert sich nach klassischer iterativer Vorgehensweise in drei Phasen: Phase 1: Definition des Benutzungsmodells Zunächst definiert der Architekt gemeinsam mit dem Kunden das Benutzungsmodell der zu implementierenden Oberfläche. Dieses besteht aus: Heinem Prozessmodell, welches die fachlichen Aufgaben enthält, die mit der Oberfläche bearbeitet werden können. Ferner definiert es die logische Ausführungsreihenfolge der Aufgaben. Heiner Spezifikation des Layouts, der zu verwendenden Steuerelemente (Knöpfe, Tabellen, Checkboxes, ...) und deren Interaktion. Das Prozessmodell und die Layoutspezifikation werden in direkter Wechselwirkung erstellt. Phase 2: Implementierung des Benutzungsmodells Anschließend leitet der Programmierer aus dem Benutzungsmodell ein Klassenmodell ab und programmiert das Layout sowie das Verhalten der Oberfläche. Phase 3: Verifikation des Benutzungsmodells Abschließend prüft der Kunde, ob die Implementierung seinen Bedarf deckt. Sollten Änderungen an der Implementierung erforderlich sein, die nicht aus der Spezifikation hervorgehen, Abb. 2: Einordnung des Benutzungsmodells 28 Das Benutzungsmodell ist das Bindeglied zwischen Spezifikation und Implementierung (s. Abb. 2). Es transformiert die fachliche Spezifikation der Anforderungen in explizite Vorgaben zur Implementierung. Die Erfahrung zeigt, dass diese Transformation in der Praxis meist implizit durch den Programmierer vorgenommen wird. Während dieser Phase treten häufig erst sehr viel später erkannte Missverständnisse auf, die zur negativen Beeinflussung der Entwicklungskosten beitragen. Die dargestellte Dreiteilung hat sich beim Entwurf von Datenmodellen für Datenbanken bewährt und ist auf den Entwurf grafischer Oberflächen übertragbar (Aufteilung in konzeptuelles, logisches und physisches Modell). Das Benutzungsmodell besteht aus einem Prozessmodell und einer Layoutspezifikation. In der Layoutspezifikation legen Kunde und Architekt die zu verwendenden Steuerelemente und deren Anordnung fest. Das Prozessmodell enthält die Aufgaben, welche über die Oberfläche bearbeitet werden können, sowie deren logische Reihenfolge. Aufgaben, die durch das Backend oder den Benutzer allein ausgeführt werden, sind nicht enthalten. Aufgaben können in Teilaufgaben aufgespalten werden (repräsentiert durch Subprozesse). Diese Aufgabenspezifikation bildet die Grundlage des Klassenmodells. Der Programmieraufwand kann zwischen den Aufgaben aus dem Prozessmodell variieren. Aus diesem Grund muss der Architekt software-technisch komplexe Aufgaben erkennen und deren fachliche Zerlegung in Teilaufgaben gemeinsam mit dem Kunden herbeiführen. Ebenso muss er den Kunden vor der, aus software-technischer Sicht, zu detaillierten Formulierung von Aufgaben bremsen. Der Hauptzweck des Prozessmodells ist die fachliche Reduktion der Aufgabenkomplexität durch den Kunden. Es beschreibt deshalb unter anderem nicht alle möglichen Durchläufe des Benutzers durch die Oberfläche oder Rücksprünge zwischen den Aufgaben. Für detaillierte Entwurfsleitlinien wird auf die POC-UI-Internetseite verwiesen [POC-UI]. Das Prozessmodell für das vorab erläuterte Beispiel ist in Abbildung 3 enthalten. Als Notation wird die Business Process Modelling Notation (kurz BPMN) verwendet, welche sich insbesondere aufgrund der Notationselemente Pool und Lane sehr gut für das Modellieren der Prozesse nach der POC-UI-Methode eignet. Diese repräsentieren jeweils die Applikation und den Container einer Oberfläche. Grundsätzlich sind aber auch andere Notationen wie UML-Aktivitätsdiagramme nutzbar. Abb. 3: Prozessmodell für die Beispielanwendung NUR für Abonnenten: Haben Sie schon Ihren Log-In für den kostenlosen Download aller Artikel-pdfs? Kontakt: [email protected] Fachthema Ableitung des Klassenmodells aus dem Benutzungsmodell Aus dem Prozessmodell des Benutzungsmodells leiten sich die beteiligten Klassen und ihre Beziehungen untereinander ab. Die beteiligten Klassen lassen sich in drei verschiedene Kategorien einteilen: HContainer repräsentieren den äußeren Rahmen einer Oberfläche, z. B. als einfacher Dialog, Seite eines Assistenten oder ViewPart. Über Container werden die Oberflächen in die umgebende Applikation integriert. HComposites kapseln das Layout und das Verhalten der Oberfläche (Benennung nach dem Kompositum-Muster, s. [GoF95]). HSelections repräsentieren den fachlichen Zustand eines Composites. Dieser Zustand ist die Aggregation der Zustände aller enthaltenen Steuerelemente und Sub-Composites. Die Bezeichnung Selection ist in Anlehnung an den Begriff Selektion (eines Elements aus dem Wertebereich des Steuerelements) gewählt worden. Eine Oberflächen-Implementierung nach der POC-UI-Methode besteht im einfachsten Fall aus einem Container, einem Composite und einer Selection. Durch die Trennung von Container und Composites wird der Austausch von Containern ermöglicht. So können Composites ohne die Applikation über Testcontainer gestartet und manuell getestet werden. Dies minimiert den Zeitaufwand für Compile-Debug-Zyklen erheblich. Der ViewBegriff der Model-View-Controller- und Model-View-Presenter-Architekturen sieht diese Unterscheidung nicht vor. Die POC-UI-Methode definiert, dass für jede Aufgabe aus dem Prozessmodell ein korrespondierendes Composite mit eigenem Selection-Typ existiert. So ergibt sich aus der Aufgabenhierarchie im Prozessmodell eine analoge Composite-Hierarchie im Klassenmodell. Eine Composite-Klasse kapselt alle zu einer Aufgabe minimal benötigten Steuerelemente und SubComposites. Die zu verwendenden Steuerelemente sind in der Layoutspezifikation definiert. Abbildung 4 zeigt alle am Beispiel beteiligten Composites und ihre Aggregation. Da Container zu Testzwecken austauschbar sein sollen, dürfen sie selbst kein Verhalten der Oberfläche im- plementieren. Folglich kann der Container nur genau ein Composite referenzieren, welches die gesamte Oberfläche kapselt. Diese Überlegung spiegelt sich in der Aufgabenhierarchie des Prozessmodells wider, weil diese immer ein Baum mit einer Wurzel-Aufgabe bzw. einem Wurzel-Composite ist. Hier wird die Erstellung des Prozessmodells als eine software-technische Modellierungsleistung des Architekten deutlich erkennbar. Lebenszyklus eines Composites Grundsätzlich durchläuft ein Composite zunächst die Initialisierungs-, dann die Nutzungs- und abschließend die Finalisierungsphase. Die Klasse AbstractComposite der Beispielimplementierung realisiert diesen Lebenszyklus als Superklasse jedes Composites [POC-UI]. Sie definiert die Methoden für die Übergänge zwischen den Zuständen. Der Composite-Lebenszyklus wird durch das Zustandsdiagramm in Abbildung 5 gezeigt. Da vor allem Initialisierungsmethoden sehr lang und unübersichtlich werden können, wird die Initialisierungsphase in die Layout-, die Verhaltens- und die Wertinitialisierung unterteilt. So ist die semantische Eindeutigkeit der einzelnen Methoden gewährleistet und der Programmierer kann exakt zuordnen, welcher Code in welcher Methode zu platzieren ist. Die einzelnen Initialisierungsmethoden werden dadurch kürzer und übersichtlicher. Tabelle 1 gibt einen kurzen Überblick über die Semantik der Methoden. Abb. 5: Lebenszyklus eines Composites Abb. 4: Analogie zwischen Aufgabenhierarchie und Composite-Hierarchie NUR für Abonnenten: Haben Sie schon Ihren Log-In für den kostenlosen Download aller Artikel-pdfs? Kontakt: [email protected] 29 Fachthema Methodenname Kurzbeschreibung void initGUI() In initGUI() werden Layout, Steuerelemente und Sub-Composites instanziiert void initListener() In der Methode Composites void setSelection Über diese Methode werden Selections an das Composite übergeben und auf dessen Steuerelemente und Sub-Composites abgebildet. Dies ist die einzige Stelle im Composite, an der Datenübergaben an Steuerelemente oder Sub-Composites implementiert sind (ISelection selection) void cleanUp() initListener() werden alle Beobachter instanziiert, z. B. für Steuerelemente oder Sub- Diese Methode repräsentiert die Finalisierung des Composites, z. B. wenn dessen Container geschlossen worden ist. Hier werden z. B. Beobachter von den Steuerelementen und Sub-Composites wieder abgemeldet Tabelle 1: Kurzübersicht wichtiger Methoden der Klasse AbstractComposite Fehlerkategorie Einstiegsmethode Layoutfehler initGUI() Falsch angezeigte Werte setSelection() Unerwartetes Verhalten initListener Finalisierungsfehler cleanUp() Tabelle 2: Fehlerkategorien und Einstiegsmethoden in der Klasse AbstractComposite In jeder der hier abgebildeten Phasen können spezifische Fehlersituationen auftreten, welche sich in Kategorien einteilen lassen. Die zugehörigen Methoden der Zustandsübergänge bieten Einstiegspunkte in den Code, wodurch es dem Programmierer möglich wird, Fehler schnell einzugrenzen. Es ist dabei irrelevant, welcher Programmierer den Quelltext geschrieben hat, da der Methodenaufbau und der Lebenszyklus bei allen Composites auf dieselbe Weise definiert sind. Tabelle 2 enthält identifizierte Fehlerkategorien und die jeweilige Einstiegsmethode zur Fehlerlokalisierung. Modellierung des Datenflusses Die POC-UI-Methode definiert, dass sich alle technischen Zustände eines Composites ausschließlich aus der zugehörigen Selection ableiten müssen. Der Datenfluss folgt immer demselben Schema: HSchritt 1: Zuweisung neuer Werte an die Selection-Instanz. HSchritt 2: Übergabe der Selection-Instanz an das Composite mittels Aufruf von setSelection(). In der Methode setSelection() ist die Zuweisung der SelectionAttribute auf die einzelnen Steuerelemente und Sub-Composites implementiert. So wird beim Aufruf dieser Methode die gesamte Sub-Composite-Hierarchie je nach Bedarf aktualisiert. Es ist irre- levant, ob die Selection Composite-intern (z. B. durch einen ModifyListener eines Textfeldes) oder Composite-extern durch ein hierachisch übergeordnetes Composite verändert worden ist. Gemäß der Composite-Hierarchie melden Super-Composites an ihren Sub-Composites Beobachter an. Die Beobachter werden benachrichtigt, sobald eine modellierte Aufgabe abgeschlossen ist. Abbildung 6 zeigt dieses Prinzip anhand der Aufgabe „Öffne Kundendatensatz“ aus dem Prozessmodell des Beispiels in Abbildung 3. Nachdem der Benutzer den Namen eines Kunden eingegeben hat, klickt er auf den Knopf „Suchen“. Dadurch ist eindeutig definiert, dass die Aufgabe „Erfasse Suchkriterium“ abgeschlossen ist. Das Composite „Erfasse Suchkriterium“ feuert das entsprechende Ereignis (Schritt 1). Das hierarchisch nächsthöhere Composite hat jeweils einen Beobachter an seinen Sub-Composites registriert und kann so auf deren Zustandsänderungen reagieren. Sobald ein Suchkriterium erfasst ist, startet dieser Beobachter die Kundensuche und setzt die gefundenen Kunden in die Selection des „Öffne Kundendatensatz“-Composites. Der anschließende Aufruf von setSelection() führt dazu, dass beide Sub-Composites, falls notwendig, aktualisiert werden (Schritt 2). Das Benutzungsmodell des Beispiels definiert, dass die Aufgabe „Öffne Kundendatensatz“ erst abgeschlossen ist, wenn ein gefundener Kunde aus der Trefferliste selektiert worden ist. Aus diesem Grund wird das Ereignis nicht weiter nach oben in der Hierarchie propagiert. Während der Erstellung des Prozessmodells definiert der Architekt gemeinsam mit dem Kunden für jede Aufgabe, nach welchen Ereignissen diese abgeschlossen ist. Das Sequenzdiagramm in Abbildung 7 zeigt das skizzierte Beispiel im Detail. Composites feuern Ereignisse ausschließlich nach Abschluss einer modellierten Aufgabe. Diesen software-technischen Aspekt muss der Architekt beim Entwurf des Prozessmodells berücksichtigen. Sobald mehrere Ereignistypen notwendig werden, liegt erfahrungsgemäß ein Modellierungsproblem im Prozessdiagramm vor. Durch den einheitlichen Lebenszyklus Abb. 6: Datenfluss während der Kundensuche in der Beispielanwendung 30 Abb. 7: Datenfluss zur Suche eines Kunden im Beispiel NUR für Abonnenten: Haben Sie schon Ihren Log-In für den kostenlosen Download aller Artikel-pdfs? Kontakt: [email protected] Fachthema und die daraus resultierenden einheitlichen Schnittstellen sind Composites als in sich geschlossene Komponenten zu verstehen. Bei Programmerweiterungen oder bei der Fehlersuche können diese Komponenten als Blackboxes betrachtet werden und damit die Komplexität des zu betrachtenden Quelltextes reduzieren. Außerdem sind die Komponenten in verschiedenen Oberflächen wiederverwendbar. Erfahrungen mit der POC-UI-Methode Über die vergangenen anderthalb Jahre konnten Erfahrungen in den Planungs-, Entwicklungs- und Wartungsphasen verschiedener Projekte der Vattenfall Europe Information Services GmbH gesammelt werden. In der Planungsphase wird über das Benutzungsmodell explizit definiert, wie die zu implementierende Oberfläche in fachlich und software-technisch identisch strukturierte Teilprobleme zu zerlegen ist. Auf diese Weise entstand bei allen Beteiligten ein gemeinsames Verständnis und daraus resultierend eine weniger aufwändige, dafür präzisere Kommunikation. Entwickler konnten Aufwandschätzungen für einzelne Teilprobleme abgeben, die vom Projektleiter gemäß der Aufgabenhierarchie des Prozessmodells aggregiert wurden. Der Aufwand für die so abgegrenzten Teilprobleme konnte einfacher und meist auch präziser als für die gesamte Oberfläche geschätzt werden. Während der Entwicklungsphase wurden spürbare Produktivitätsgewinne erzielt. Aufgrund des klar strukturierten Prozessund Klassenmodells arbeiteten mehrere Entwickler zeitgleich an einem Dialog. Dies geschah praktisch ohne Integrationsaufwand durch z. B. Merge-Konflikte in der Versionskontrolle. Des Weiteren wurde viel Entwurfszeit gespart, da kein Entwickler ein umfangreiches Klassenmodell inklusive Lebenszyklus der Komponenten und deren Datenfluss neu konzipieren musste. In der Wartungsphase machten sich das iterativ dokumentierte Benutzungs- und Klassenmodell, der definierte Lebenszyklus und das Datenflusskonzept bezahlt. Entwickler fanden sich sowohl in eigenem als auch in fremdem Quelltext sehr schnell zurecht. So wurde die verfügbare Zeit größtenteils in die Lösungsimplementierung und weniger in das Verständnis, beispielsweise des Klassenmodells, investiert. Durch strukturierten Quelltext und Lebenszyklen waren Seiteneffekte durch Änderungen an fremdem Quelltext für Entwickler abseh- und eingrenzbarer. Dies ist ein nicht zu unterschätzender Gewinn, da viele Entwickler vor Änderungen an fremdem Code gehemmt sind. Der durch diese Hemmungen verursachte Zeitverlust wird durch den Einsatz der POC-UI-Methode minimiert. Außerdem führte der Einsatz der POC-UI-Methode meist automatisch zu einfacher zu bedienenden Oberflächen, da alle Steuerelemente und Sub-Composites zur Bearbeitung einer fachlichen Aufgabe in einem eigenen Composite zusammengefasst werden. Dies impliziert, dass diese nah beieinander in der Oberfläche platziert sind. Nach dem Gesetz der Nähe aus der Gestaltpsychologie ist es für den Benutzer so einfacher, einen inhaltlichen Bezug zwischen den Komponenten herzustellen [Wert23]. Dies bedeutet aber auch, dass die Steuerelemente und Sub-Composites nicht völlig frei auf dem Bildschirm platziert werden können, ohne die Konventionen zu verletzen. Einige Entwickler bevorzugen Systeme mit wenigen, dafür aber längeren Klassen. Es muss jedoch erwähnt werden, dass die POC-UI-Methode ungeeignet für diese Entwickler ist. Ihr Einsatz führt meist zu mehreren kürzeren Klassen. Des Weiteren wird der Mehrwert durch Einsatz der POC-UI-Methode in eingespielten Teams mit ähnlich umfassenden Konventionen gering sein. Hier bietet es sich an, einzelne POC-UI-Konzepte bei Bedarf in die bestehende Menge an Konventionen zu übernehmen. Fazit Dieser Artikel stellt mit der POC-UI-Methode ein leichtgewichtiges Verfahren zur software-technischen Strukturierung von grafischen Oberflächen vor. Sie ergänzt die bestehenden Architekturmuster um einen Entwurfsprozess, welcher die fachliche Zerlegung der Oberfläche in Komponenten vorgibt und zeigt, wie diese in eine einheitlich strukturierte Implementierung überführt werden können. Ferner führt ein definierter Lebenszyklus der Komponenten zur schnelleren Lokalisierung von Fehlern und geeigneten Stellen für Erweiterungen im Quelltext der Oberfläche. Durch den Einsatz dieser Vorgehensweise konnte bei Vattenfall Europe Information Services die Effizienz des Entwicklungsprozesses spürbar optimiert werden. Die POC-UI-Methode wird durch eine sehr kleine Klassenbibliothek für Java/Swing unterstützt (für Download siehe [POC-UI]). Die Methode ist im Kern von der Technologie unabhängig und lässt sich mit geringem Zeitaufwand portieren. Neben den hier beschriebenen Aspekten bietet sie Konventionen für den Umgang mit Ressourcen (Bilder, Farben usw.), die Integration von Containern in die Applikation und die Kapselung von Geschäftslogik. Als zukünftige Entwicklungsperspektiven sind die Portierung auf andere Programmiersprachen sowie die stärkere Integration der Applikation und der eventuell vorhandenen Server in die POC-UI-Methode zu nennen. Literatur und Links [Fowl06] M. Fowler, GUI Architectures, 2006; http://martinfowler.com/eaaDev/uiArchs.html [GoF95] E. Gamma, et al., Design Patterns – Elements of Reuseable Object-Oriented Software, Addison-Wesley, 1995 [Jigloo] Jigloo SWT/Swing GUI Builder for Eclipse and WebSphere, http://www.cloudgarden.com/jigloo/ [Matisse] Matisse GUI Editor, http://www.netbeans.org/kb/articles/matisse.html [POC-UI] Sourceforge-Projekt Process-Oriented-Construction of User Interfaces, http://pocui.sourceforge.net [SWT] The Standard Widget Toolkit, http://www.eclipse.org/swt/ [Wert23] M. Wertheimer, Untersuchungen zur Lehre von der Gestalt, in: Psychologische Forschung: Zeitschrift für Psychologie und ihre Grenzwissenschaften 4, Seite 301-350, 1923 [Züll98] H. Züllighoven, et al., Das objektorientierte Konstruktionshandbuch nach dem Werkzeug & Material-Ansatz, dpunkt Verlag, 1998 Jan Christian Krause ist Diplom-Wirtschaftsinformatiker (FH) und Berater beim Hamburger ConsultingHaus AKRA GmbH. Er verfügt über umfangreiche Erfahrungen im Bereich der Rich-Client-Entwicklung, insbesondere auf Basis der Eclipse RCP. Neben dem Engagement in Projekten verfasst er seine Dissertation im Kontext serviceorientierter Architekturen und maschineller Sprachverarbeitung an der Universität Hamburg. E-Mail: [email protected]. Kai Benjamin Joneleit ist Diplom-Medieninformatiker (FH) und arbeitet als Berater bei der CS Consulting AG in Hamburg. Er hat langjährige Erfahrung in der Entwicklung von Enterprise-Applikationen, insbesondere in der GUI-Entwicklung im Java-Umfeld. E-Mail: [email protected]. NUR für Abonnenten: Haben Sie schon Ihren Log-In für den kostenlosen Download aller Artikel-pdfs? Kontakt: [email protected] 31