| Die GoPhone-Fallstudie demonstriert den systematischen Aufbau einer Software-Produktlinie mit Hilfe der PuLSETM- und KobrA-Methoden, die am Fraunhofer Institut für Experimentelles Software Engineering entwickelt wurden. Es handelt sich um eine hypothetische Produktfamilie von Software für mobile Endgeräte mit eingeschränkten Ressourcen wie beispielsweise Mobiltelefone oder Communicators. Die Fallstudie (s. GoPhone - A Software Product Line in the Mobile Phone Domain) zeigt, dass Produktlinien eines der wichtigsten Probleme in der Softwareentwicklung lösen. Das ist die Erfüllung verschiedenartiger Kundenanforderungen. Dies wird möglich durch die Konkretisierung der Gemeinsamkeiten und Unterschiede der Mitglieder einer Produktfamilie und durch die systematische Planung der Wiederverwendung. Dabei wird eine Anfangsinvestition erforderlich, die sich aber mit steigender Komplexität und Produktanzahl rechnet. Dem Leser der GoPhone-Fallstudie wird außerdem klar, dass der Handhabung der Variabilität auf der Architektur- und Codeebene mehr als eine Auswahl von Techniken zugrunde liegt. Die Betrachtung, Abwägung und Kombination unterschiedlicher Technologien ist notwendig. Dazu zählen die modelgetriebene Komponentenentwicklung sowie generative Implementierungstechniken.  | | GoPhone in verschiedenen Handys |
Die GoPhone-Fallstudie beginnt mit der Umfangsdefinition der Produktlinie (s. PL Scoping) anhand einer Gegenüberstellung der geplanten Produkte und Features. Anschließend werden während der Domänenanalyse (s. PuLSE CDA) die Anwendungsbereiche ausgewählt und beschrieben, die besonders von Bedeutung sind. Das sind in diesem Fall die Verwaltung von Kontakten und Nachrichten. Während der Architekturentwicklung kommt das komponentenbasierte Paradigma (s. Component-Based Product Line Engineering with UML: KoBRA) zum Einsatz, um auf der architektonischen Ebene die Variabilität der Produktlinie zu unterstützen. Zu diesem Zweck werden unter anderem bekannte Entwurfsmuster wie beispielsweise Mediator und State umgesetzt (s. Design Patterns. Elements of Reusable Object-Oriented Software). Auf der Code-Ebene kommen generative Implementierungstechniken zum Einsatz, die mit der feingranularen Variabilität umgehen. Horizontale Variabilität, die sich uber mehrere Komponenten streckt, wird mit aspektorientierter Programmierung (s. Aspektorientierte Softwareentwicklung) bewältigt. Generatoren tretten ebenfalls in Aktion. Dabei wird hauptsächlich eine automatisierte und fehlerfreie Umsetzung des State-Entwurfsmusters erzielt. Außerdem kommt aber die Handhabung der Variabilität durch Generatoren auch in Diskussion. Die Implementierung wurde auf Basis der Java 2 Micro Edition und dem Mobile Information Device Profile (siehe Java 2 Platform, Micro Edition (J2ME)) durchgeführt. Nachfolgend können Sie sowohl den Quellcode (ZIP) als auch das ausführbare MIDlet (JAR) herunterladen. Bitte achten Sie auf die Hinweise in der Readme-Datei. |