Ein Erweiterbarer Compiler Zum Feature-orientierten .

Transcription

Ein erweiterbarer Compiler zumfeature-orientierten Programmieren in JavaSergiy KolesnikovSPL Group, Universität PassauFOSD Treffen Dresden10.03.2011Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau1 / 13

ritte3Erweiterung von Fuji4Zu meinem ForschungsgebietFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau2 / 13

MotivationBis jetzt: Source-to-Source-Compiler wie AHEAD oderFeatureHouseFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau3 / 13

MotivationBis jetzt: Source-to-Source-Compiler wie AHEAD oderFeatureHouseNachteile:Kein entwickeltes TypsystemFOP-spezifische Typchecks sind nicht möglichVerschiedene Analysen nur beschränkt möglichFehlermeldungen beziehen sich auf den ZwischencodeFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau3 / 13

Fuji ArchitekturFuji basiert auf JastAddJDer Hauptakzent bei JastAddJ liegt auf der ErweiterbarkeitFuji ist eine Erweiterung des JastAddJ-FrontendsFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau4 / 13

Fuji ArchitekturFuji basiert auf JastAddJDer Hauptakzent bei JastAddJ liegt auf der ErweiterbarkeitFuji ist eine Erweiterung des JastAddJ-FrontendsFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau4 / 13

Kompilierungsschritt: Repräsentation von SPL StrukturFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau5 / 13

Kompilierungsschritt: Repräsentation von SPL StrukturFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau5 / 13

Kompilierungsschritt: Repräsentation von SPL StrukturFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau5 / 13

Kompilierungsschritt: Repräsentation von SPL StrukturFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau5 / 13

Kompilierungsschritt: Repräsentation von SPL StrukturFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau5 / 13

Kompilierungsschritt: Repräsentation von SPL StrukturFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau5 / 13

Kompilierungsschritt: Repräsentation von SPL StrukturFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau5 / 13

Kompilierungsschritt: Repräsentation von SPL StrukturFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau5 / 13

Kompilierungsschritt: Superimposition von ASTsFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau6 / 13

Kompilierungsschritt: Superimposition von ASTsFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau6 / 13

Kompilierungsschritt: Superimposition von ASTsFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau6 / 13

Kompilierungsschritt: Superimposition von ASTsFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau6 / 13

Erweiterung von Fuji (JastAdd Workflow)Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau7 / 13

Erweiterung von Fuji (JastAdd Workflow)Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau7 / 13

Erweiterung von Fuji (JastAdd Workflow)Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau7 / 13

Erweiterung von Fuji (JastAdd Workflow)Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau7 / 13

Erweiterung von Fuji (JastAdd Workflow)Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau7 / 13

Erweiterung von Fuji (JastAdd Workflow)Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau7 / 13

Erweiterung von Fuji (JastAdd Workflow)Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau7 / 13

Erweiterung von Fuji (JastAdd Workflow)http://fosd.de/fujiFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau7 / 13

Fuji. Einige uperimopsitionsalgorithmus ist leicht austauschbarSource-to-Source Übersetzung mit TypechecksFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau8 / 13

FOP-ModifiersOOP-Modifiers:Fuji, FOP Java Compiler::privateSergiy Kolesnikov(default)::publicSPL Group, Universität Passau9 / 13

FOP-ModifiersOOP-Modifiers:Fuji, FOP Java Compiler::privateSergiy Kolesnikov(default)::publicSPL Group, Universität Passau9 / 13

FOP-ModifiersOOP-Modifiers:FOP-Modifiers:Fuji, FOP Java Compiler::privatefeatureSergiy Kolesnikov(default)subsequent::publicprogramSPL Group, Universität Passau9 / 13

ature(default)subsequentpublicprogramErweiterungen an:SyntaxTypsystemFuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau9 / 13

FOP-Modifiers. Analyse10 SPLs verschiedener Komplexität und ausverschiedenen Domänen.In 80% der Fällen konnte die Sichtbarkeit von Membersweiter eingeschränkt werden.In 76% der Fällen konnte die Sichtbarkeit auf featureeingeschränkt werden.Schlussfolgerung: Es gibt Potential für Datenkapselung aufder Feature-Ebene.Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau10 / 13

Evaluation. Example tsNotepadGPLEPLDomainSPL configuration toolUML editorobject persistence lib.Jabber clientZIP librarystrategic gamesoftware analysis tooltext editorgraph libraryexpression evaluationFuji, FOP Java Compiler::Sergiy 33520283013226891646105Compilation 1.36SPL Group, Universität Passau11 / 13

Zu meinem ForschungsgebietSPL Group, Uni. PassauNicht-Funktionale Eigenschaften von SPLs:PerformanzSpeicherbedarfEnergiebedarfZiel: NF-Eigenschaften einzelner Produkte möglichstgenau vorauszusagen.Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau12 / 13

Zu meinem ForschungsgebietSPL Group, Uni. PassauNicht-Funktionale Eigenschaften von SPLs:PerformanzSpeicherbedarfEnergiebedarfZiel: NF-Eigenschaften einzelner Produkte möglichstgenau vorauszusagen.TU Dortmund: Olaf Spinczyk, Matthias Meier. . .Friedrich-Alexander Uni. Erlangen: Julio Sincero,Reinhard Tartler, Daniel Lohmann. . .Uni. Magdeburg: Norbert Siegmund. . .Philipps-Uni. Marburg: Christian Kästner. . .Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau12 / 13

Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau13 / 13

AspekteAspectFoo.jrag:1 aspect AspectFoo {23/ Does t h e c o m p i l a t i o n u n i t s r e p r e s e n t a r o l e ? /4public boolean Program . i s R o l e ( C o m p i l a t i o n U n i t cu ) {5r e t u r n r o l e s . c o n t a i n s ( cu ) ;6}78/ I s t h e c u r r e n t m o d i f i e r an FOP ’ f e a t u r e ’ m o d i f i e r ? /9syn l a z y boolean M o d i f i e r s . i s F e a t u r e ( ) 10numModifier ( ” f e a t u r e ” ) ! 0 ;1112/ Semantic check : how many FOP m o d i f i e r s are s p e c i f i e d ? /13r e f i n e M o d i f i e r s void M o d i f i e r s . c h e c k M o d i f i e r s ( ) {14refined () ;15i f ( numFOPModifiers ( ) 1 ) e r r o r ( ” Too many FOP m o d i f i e r s ! ” ) ;16}1718/ Class d e f i n i t i o n . /19public class ComposeVisitor { / . . . / }20 }Fuji, FOP Java Compiler::Sergiy Kolesnikov::SPL Group, Universität Passau1/1

Violet UML editor 88 7194 20.18 Prevayler object persistence lib. 6 5268 18.62 PKJab Jabber client 8 3373 12.53 ZipMe ZIP library 13 3520 07.09 TankWar strategic game 15 2830 07.34 AJStats software analysis tool 20 13226 05.78 Notepad text editor 10 891 05.59 GPL graph library 9 646 04.53 EPL expression evaluation 11 105 01.36 Fuji, FOP Java Compiler :: Sergiy Kolesnikov :: SPL Group .