FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian...
Transcript of FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian...
![Page 1: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/1.jpg)
FeatureIDE: Background
Thomas Thum, Jens MeinickeMarch 4, 2015
![Page 2: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/2.jpg)
Feature-Oriented Programming (FOP)
I Introduced 1997 by Christian PrehoferI Based on Object-Oriented ProgrammingI Features realize functionalitiesI Features are cross-cutting to objectsI Features modularize fragments from certain classesI Fragment contains some methods/fields of a class belonging
to one functionalityI Goals: code traceability, software customization
Thomas Thum, Jens Meinicke FeatureIDE: Background 2
![Page 3: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/3.jpg)
FOP ExampleKästner, Apel, Saake EPMD – Folie 6-48
Komposition durch Überlagerung von Bäumen
package util;class Calc {
int e0 = 0, e1 = 0, e2 = 0;
void enter(int val) {e2 = e1; e1 = e0; e0 = val;
}void clear() { e0 = e1 = e2 = 0;
}String top() {return String.
valueOf(e0);}
}
package util;class Calc {
void add() {e0 = e1 + e0; e1 = e2;
}}
package util;class Calc {
int e0 = 0, e1 = 0, e2 = 0;
void enter(int val) {e2 = e1; e1 = e0; e0 = val;
}void clear() {e0 = e1 = e2 = 0;
}String top() {//...
}void add() {e0 = e1 + e0; e1 = e2;
}}
● =
util
Calc
e0 e2e1 enter cleartop
util
Calc
add
util
Calc
e0 e2e1 enter cleartop add
● =
feature: CalcBase
feature: Add
feature: CalcAdd
http://wwwiti.cs.uni-magdeburg.de/iti_db/lehre/epmd/2009/slides/06_FOP.pdf
Thomas Thum, Jens Meinicke FeatureIDE: Background 3
![Page 4: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/4.jpg)
Composition Engines
Feature Orientated Command-line tools used to compose fileswithin FeatureIDE:
I AHEAD (mixin): .jak (Java 1.4)http://userweb.cs.utexas.edu/˜schwartz/ATS.html
I FeatureC++: .cpp (C++)http://www.fosd.de/fcpp
I FeatureHouse: .java (Java 1.5), .cs (C#), .c/.h (C), .hs(Haskell), .jj (JavaCC), .als (Alloy), .xmi (UML)http://www.fosd.de/fh
Thomas Thum, Jens Meinicke FeatureIDE: Background 4
![Page 5: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/5.jpg)
Composition Engines
Non Feature Orientated Command-line tools used to compose fileswithin FeatureIDE:
I AspectJ(Aspectorientated Java): .aj(Aspect File), .javahttp://www.eclipse.org/aspectj/
I DeltaJ(Deltaoriantated Java): .dj(Core and Delta Modules)http://sourceforge.net/projects/deltaj/
I Munge: Preprocessorhttp://sonatype.github.com/munge-maven-plugin/
I Antenna: Preprocessorhttp://antenna.sourceforge.net/
Thomas Thum, Jens Meinicke FeatureIDE: Background 5
![Page 6: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/6.jpg)
Configuration
I Selection of featuresI Composition of features results in a program variantI Not all combinations are useful
Thomas Thum, Jens Meinicke FeatureIDE: Background 6
![Page 7: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/7.jpg)
Feature Model
I Specifies valid combinations of featuresI Graphically represented by a feature diagramI Created for a particular domainI Describes a software product line (SPL)
GraphLibrary
Edges
Directed Undirected
Algorithms
Number Cycle
Cycle ⇒ Directed
NewCompound1
Layer1 Layer2
And-groupNewCompound1
Layer1 Layer2
Or-groupNewCompound1
Layer1 Layer2
Alternative-groupNewCompound1
Layer1 Layer2Mandatory
NewCompound1
Layer1 Layer2Optional
And-group
MandatoryOptional
Alternative-groupOr-group
Cross-tree constraints
Thomas Thum, Jens Meinicke FeatureIDE: Background 7
![Page 8: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/8.jpg)
Feature Model
I Specifies valid combinations of featuresI Graphically represented by a feature diagramI Created for a particular domainI Describes a software product line (SPL)
GraphLibrary
Edges
Directed Undirected
Algorithms
Number Cycle
Cycle ⇒ Directed
NewCompound1
Layer1 Layer2
And-groupNewCompound1
Layer1 Layer2
Or-groupNewCompound1
Layer1 Layer2
Alternative-groupNewCompound1
Layer1 Layer2Mandatory
NewCompound1
Layer1 Layer2Optional
And-group
MandatoryOptional
Alternative-groupOr-group
Cross-tree constraints
Thomas Thum, Jens Meinicke FeatureIDE: Background 7
![Page 9: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/9.jpg)
Feature Model
I Specifies valid combinations of featuresI Graphically represented by a feature diagramI Created for a particular domainI Describes a software product line (SPL)
GraphLibrary
Edges
Directed Undirected
Algorithms
Number Cycle
Cycle ⇒ Directed
NewCompound1
Layer1 Layer2
And-groupNewCompound1
Layer1 Layer2
Or-groupNewCompound1
Layer1 Layer2
Alternative-groupNewCompound1
Layer1 Layer2Mandatory
NewCompound1
Layer1 Layer2Optional
And-group
Mandatory
Optional
Alternative-groupOr-group
Cross-tree constraints
Thomas Thum, Jens Meinicke FeatureIDE: Background 7
![Page 10: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/10.jpg)
Feature Model
I Specifies valid combinations of featuresI Graphically represented by a feature diagramI Created for a particular domainI Describes a software product line (SPL)
GraphLibrary
Edges
Directed Undirected
Algorithms
Number Cycle
Cycle ⇒ Directed
NewCompound1
Layer1 Layer2
And-groupNewCompound1
Layer1 Layer2
Or-groupNewCompound1
Layer1 Layer2
Alternative-groupNewCompound1
Layer1 Layer2Mandatory
NewCompound1
Layer1 Layer2Optional
And-group
Mandatory
Optional
Alternative-groupOr-group
Cross-tree constraints
Thomas Thum, Jens Meinicke FeatureIDE: Background 7
![Page 11: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/11.jpg)
Feature Model
I Specifies valid combinations of featuresI Graphically represented by a feature diagramI Created for a particular domainI Describes a software product line (SPL)
GraphLibrary
Edges
Directed Undirected
Algorithms
Number Cycle
Cycle ⇒ Directed
NewCompound1
Layer1 Layer2
And-groupNewCompound1
Layer1 Layer2
Or-groupNewCompound1
Layer1 Layer2
Alternative-groupNewCompound1
Layer1 Layer2Mandatory
NewCompound1
Layer1 Layer2Optional
And-group
MandatoryOptional
Alternative-group
Or-group
Cross-tree constraints
Thomas Thum, Jens Meinicke FeatureIDE: Background 7
![Page 12: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/12.jpg)
Feature Model
I Specifies valid combinations of featuresI Graphically represented by a feature diagramI Created for a particular domainI Describes a software product line (SPL)
GraphLibrary
Edges
Directed Undirected
Algorithms
Number Cycle
Cycle ⇒ Directed
NewCompound1
Layer1 Layer2
And-groupNewCompound1
Layer1 Layer2
Or-groupNewCompound1
Layer1 Layer2
Alternative-groupNewCompound1
Layer1 Layer2Mandatory
NewCompound1
Layer1 Layer2Optional
And-group
MandatoryOptional
Alternative-group
Or-group
Cross-tree constraints
Thomas Thum, Jens Meinicke FeatureIDE: Background 7
![Page 13: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/13.jpg)
Feature Model
I Specifies valid combinations of featuresI Graphically represented by a feature diagramI Created for a particular domainI Describes a software product line (SPL)
GraphLibrary
Edges
Directed Undirected
Algorithms
Number Cycle
Cycle ⇒ Directed
NewCompound1
Layer1 Layer2
And-groupNewCompound1
Layer1 Layer2
Or-groupNewCompound1
Layer1 Layer2
Alternative-groupNewCompound1
Layer1 Layer2Mandatory
NewCompound1
Layer1 Layer2Optional
And-group
MandatoryOptional
Alternative-groupOr-group
Cross-tree constraints
Thomas Thum, Jens Meinicke FeatureIDE: Background 7
![Page 14: FeatureIDE: Background · Feature-Oriented Programming (FOP) I Introduced 1997 by Christian Prehofer I Based on Object-Oriented Programming I Features realize functionalities I Features](https://reader034.fdocuments.us/reader034/viewer/2022042022/5e79b2d7ef5c910ae65374fc/html5/thumbnails/14.jpg)
Feature-Oriented Software Development (FOSD)
GraphLibrary
Edges
Directed Undirected
Algorithms
Number Cycle
Cycle ⇒ Directed
Feature Model Feature Modules
Configurations Composer Program Variants
Thomas Thum, Jens Meinicke FeatureIDE: Background 8