Fakultät für Informatik Arbeitsgruppe Datenbanken
 

Laborpraktikum FeatureIDE

Kontext

FeatureIDE ist eine Eclipse-basierte Entwicklungsumgebung fuer die featureorientierte Softwareentwicklung. Dazu gibt es u.a. eine Java-aehnliche Programmiersprache mit der man Feature implementieren kann und ein Modellierungsansatz mit dem man Produktlinien in Baeumen visualisiert.

screenshot

another screenshot

Eine Grundversion der Entwicklungsumgebung existiert bereits mit Funktionen wie Syntaxhighlighting und Integration eines Compilers. Eine Uebersicht und downloadbare Version gibt es auf der Seite des Projektes: FeatureIDE Webseite, sowie in einem Paper zur IDE:
  • Thomas Leich and Sven Apel and Laura Marnitz and Gunter Saake. Tool Support for Feature-Oriented Software Development - FeatureIDE: An Eclipse-Based Approach. In Proceedings of OOPSLA Workshop on Eclipse Technology eXchange (ETX), San Diego, USA, October 2005. [PDF]
    Software program families have a long tradition and will gain momentum in the future. Today's research tries to move software development to a new quality of industrial production. Several solutions concerning different phases of the software development process have been proposed in order to cope with different problems of program family development. A major problem of program family engineering is still the missing tool support. The vision is an IDE that brings all phases of the development process together consistently and in a user-friendly manner. This paper focuses on AHEAD, a prominent design methodology and architectural model for feature-based program families. We present our first results on developing an Eclipse-based IDE that supports building program families following the AHEAD architecture model. Starting from current weaknesses and pitfalls in implementing program families we outline several challenges of the feature-based development process. Thereupon, we present our ideas to face these challenges and a resulting integrated tool chain based on Eclipse.


Fuer ein Grundverstaendniss der featureorientierten Programmierung empfehlen wir eins der folgenden Paper:
  • D. Batory, J.N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement, IEEE Transactions on Software Engineering (IEEE TSE), June 2004. [PDF]
    Step-wise refinement is a powerful paradigm for developing a complex program from a simple program by adding features incrementally. We present the AHEAD (Algebraic Hierarchical Equations for Application Design) model that shows how step-wise refinement scales to synthesize multiple programs and multiple noncode representations. AHEAD shows that software can have an elegant, hierarchical mathematical structure that is expressible as nested sets of equations. We review a tool set that supports AHEAD. As a demonstration of its viability, we have bootstrapped AHEAD tools from equational specifications, refining Java and non-Java artifacts automatically; a task that was accomplished only by ad hoc means previously.
  • D. Batory. A Tutorial on Feature Oriented Programming and the AHEAD Tool Suite, Proc. Summer School on Generative and Transformation Techniques in Software Engineering, Braga, Portugal, R. Laemmel, J. Saraiva, and J. Visser, ed., Vol 4143, Lecture Notes in Computer Science, Springer-Verlag, 2006. [PDF]
    Feature oriented programming (FOP) is the study of feature modularity and its use in program synthesis. AHEAD is a theory of FOP that is based on a fundamental concept of generative programming that functions map programs. This enables the design of programs to be expressed compositionally as algebraic expressions, which are suited for automated analysis, manipulation, and program synthesis. This paper is a tutorial on FOP and AHEAD. We review AHEAD's theory and the tool set that implements it.
Das Laborpraktikum bietet sich auch als Ergaenzung zur Vorlesung Erweiterte Programmierkonzepte für maßgeschneiderte Datenhaltung an.

Aufgabenstellung

Im Rahmen des Laborpraktikums soll die bestehende Entwicklungsumgebung erweitert werden. Im Vordergrund stehen vor allem Visualisierungen des Projektes, es sind aber auch technischere Teilaufgaben moeglich. So sollen beispielsweise Views implementiert werden, die darstellen welche Methoden wo erweitert werden. Aehnlich sollen Navigationshilfen fuer Entwickler bereitgestellt werden. Beispiele sind auch die Abbildungen 5 und 6 im oben zitierten Paper.

Zu Beginn des Projektes werden wir gemeinsam die Probleme erarbeiten und die zu bearbeitenden Aufgaben definieren. Fuer die Implementierungen koennen dann frei eigene Ideen zur Realisierung verwirklicht werden. Es besteht viel Raum zum Experimentieren.

Technisches

Implementiert wird das Projekt komplett als Eclipse-Plugin. Programmiersprache ist daher Java. Im Rahmen des Projektes werden die Teilnehmer sich intensiv mit der Eclipsearchitektur beschaeftigen (muessen), wozu aber vielfaeltige Dokumentationen verfuegbar sind.

Erfahrungen in der Programmierung sind sehr hilfreich. Erfahrungen mit Eclipse als Benutzer sind auch nuetzlich.

Organisatorisches

Betreut wird das Praktikum von Christian Kästner.
Ausgeschrieben ist es fuer das Sommersemester 08 und sollte auch bis spaetestens zum 31.9.2008 beendet sein.
Mindestteilnehmerzahl ist 3, Aufwand 4 bis 8 SWS, je nach Studiengang. Abgeschlossen wird es mit einem Schein.
Zudem erstellen die Teilnehmer eine Startpraesentation zu der die Ziele fixiert werden und eine Endpraesentation bei der die Ergebnisse vorgestellt werden.
Interessenten melden sich bitte per Email oder direkt im Buero (G29-108), idealerweise schon als Gruppe.
<Webmaster> - webmaster@iti.cs.uni-magdeburg.de
Last modified: Jul. 3rd 2007