SlideShare a Scribd company logo
1 of 24
Download to read offline
root F0 F1 F2 F3 A1 A2
Yes Yes Yes No Yes 3 0
Yes Yes No Yes Yes 2 2
Yes Yes Yes No No 2 0
Yes Yes No Yes No 0 8
Synthesis
root
F1
F3
F2F0
A1 A2
A2 < 8 => A1 >= 2
A1 > 0 => A2 <= 2
Guillaume Bécan, Razieh Behjati, Arnaud Gotlieb, Mathieu Acher
Synthesis of Attributed Feature Models
From Product Descriptions
Notes
● Slides have been presented at SPLC'15
(Nashville, USA)
● Guillaume Bécan has made the vast
majority of the slides
● Some slides were previously presented at
FOSD'15 meeting
● Paper here:
https://hal.inria.fr/hal-01178454
Synthesis of Attributed Feature Models: Foundations 3
Product Lines/Highly configurable systems
config NR_CPUS
int "Maximum number of CPUs" if SMP && !MAXSMP
range 2 8 if SMP && X86_32 && !X86_BIGSMP
range 2 512 if SMP && !MAXSMP && !CPUMASK_OFFSTACK
range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64
default "1" if !SMP
default "8192" if MAXSMP
default "32" if SMP && X86_BIGSMP
default "8" if SMP
---help---
This allows you to specify the maximum number of CPUs which this
kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum
supported value is 4096, otherwise the maximum value is 512. The
minimum value which makes sense is 2.
This is purely to save memory - each supported CPU adds
approximately eight kilobytes to the kernel image.
Linux kernel
Synthesis of Attributed Feature Models: Foundations 4
● 2000+ options in about:config
● 3 types: boolean, integers, string
Firefox
Product Lines/Highly configurable systems
Synthesis of Attributed Feature Models: Foundations 5
Product Lines
Product comparison matrices
Comparison of digital SLRs
Synthesis of Attributed Feature Models: Foundations 6
Modeling and Synthesis
● Boolean feature models (FMs) are nice but options are not only
boolean. Languages/operations have been defined on top of
attributed FMs; so where are attributed feature models?
● Numerous works address the synthesis of Boolean feature models,
eg [Czarnecki et al. SPLC'07, Andersen et al. SPLC'12, Davril et al.
FSE'13, Becan et al. ESE'15] but none of them consider attributes
●
We introduce for the first time an algorithmic and
parameterizable approach for synthesizing attributed
FMs from product descriptions
Synthesis of Attributed Feature Models: Foundations 7
From Configuration Matrix to AFM
#2 synthesis procedure
#3 scalability evaluation
#1
semantics
Synthesis of Attributed Feature Models: Foundations 8
Attributed Feature Model (AFM)
● AFM = attributed feature diagram + an arbitrary constraint
● Attributed feature diagram =
– Hierarchy of features
– Attributes: placed in features, they take a value in a domain
– Domain = set of values, null value and a partial order
– A set of human readable constraints
Synthesis of Attributed Feature Models: Foundations 9
Formalizing the AFM Synthesis Problem
● Configuration matrix = intermediate representation of a
set of configurations
● Given a configuration matrix, synthesize an AFM which is
– Maximal = the feature diagram contains as much as
possible information
– Sound and Complete = represent exactly the set of
configurations
Synthesis of Attributed Feature Models: Foundations 10
Formalizing the AFM Synthesis Problem
● Theoretical contributions (more details in the paper)
– Over-approximation of the attributed feature diagram
– Several AFMs are possible for one configuration matrix
root F0 F1 F2 F3 A1 A2
Yes Yes Yes No Yes 3 0
Yes Yes No Yes Yes 2 2
Yes Yes Yes No No 2 0
Yes Yes No Yes No 0 8
root
F1
F3
F2F0
A1 A2
root
F1
F3F2F0
A1
A2
excludes
Synthesis
Synthesis of Attributed Feature Models: Foundations 11
Synthesis algorithm
● Input: Configuration Matrix + Domain Knowledge ( )
● Output: AFM which is maximal, sound and complete
= user input + default heuristics
Tool name : FOReverSE
Synthesis of Attributed Feature Models: Foundations 12
Synthesis algorithm
● Extract feature, attributes and their domains
Features
● Root
● F0
● F1
● F2
● F3
Attributes
● A1 : {0,2,3}, 0
● A2 : {0,2,8}, 0
root F0 F1 F2 F3 A1 A2
Yes Yes Yes No Yes 3 0
Yes Yes No Yes Yes 2 2
Yes Yes Yes No No 2 0
Yes Yes No Yes No 0 8
● Compute binary implications
root F0 F1 F2 F3 A1 A2
Yes Yes Yes No Yes 3 0
Yes Yes No Yes Yes 2 2
Yes Yes Yes No No 2 0
Yes Yes No Yes No 0 8
...
F2 => ¬ F1
¬ F2 => F1
F2 => A1 ∈ {0,2}
¬ F2 => A1 ∈ {2,3}
F2 => A2 ∈ {2,8}
¬ F2 => A2 ∈ {0}
…
A1 = 2 => A2 ∈ {0,2}
Synthesis of Attributed Feature Models: Foundations 13
Synthesis algorithm
● Define hierarchy (feature tree + place of attributes)
Binary implications
...
F2 => ¬ F1
¬ F2 => F1
F2 => A1 ∈ {0,2}
¬ F2 => A1 ∈ {2,3}
F2 => A2 ∈ {2,8}
¬ F2 => A2 ∈ {0}
...
root
F1
F3
F2F0
Binary implication graph
(all possible hierarchies)
root
F1
F3
F2F0
Hierarchy
Possible places for attributes
¬ f => ( a = null value of a )
A1 : root, F0
A2 : root, F0, F2
A1 A2
Synthesis of Attributed Feature Models: Foundations 14
Synthesis algorithm
● Compute variability information (mandatory features, features groups)
– Only based on features
– Reuse existing algorithms (She et al., Inform Software Tech, 2014)
Xor: {F1, F2}
root
F1
F3
F2 F0
Mutex graph
Solver
Binary implications
Possible
feature groups
(Mutex, Or, Xor)
root
F1
F3
F2F0
A1 A2
+
+
Binary implication graph Hierarchy+ Mandatory
features
Synthesis of Attributed Feature Models: Foundations 15
Synthesis algorithm
● Compute readable constraints
Readable constraints
A1 > 0 => A2 <= 2
A2 < 8 => A1 >= 2
Interesting values
for attributes
A1 → 0
A2 → 8
Binary implications
...
A1 = 0 => A2 ∈ {8}
A1 = 2 => A2 ∈ {0,2}
A1 = 3 => A2 ∈ {0}
A2 = 0 => A1 ∈ {2,3}
A2 = 2 => A1 ∈ {2}
A2 = 8 => A1 ∈ {0}
…
Merge
constraints
Grammar of readable constraints
Synthesis of Attributed Feature Models: Foundations 16
User Effort
Domain knowledge =
● user input
● default heuristics
No user effort
Arbitrary choices
Fully automated algorithm
More user effort => better AFM
● Feature or attribute?
● Interpretation of the cells (“Yes”
= true)
● Hierarchy (F3 below F0)
● Overlapping feature groups
● Bounds in constraints (“0” is an
interesting value for A1)
Synthesis of Attributed Feature Models: Foundations 17
Scalability
Random dataset
● Generator of configuration matrices
– Number of variables (features + attributes)
– Number of configurations
– Maximum domain size (number of distinct values in a column)
● Execution time of or-group computation
● 1000 configurations
● max domain size of 10
Timeout always reached with
more than 60 variables
Or groups do not scale !
= default heuristics only
Synthesis of Attributed Feature Models: Foundations 18
Scalability
Random dataset
● Execution time (no or-groups)
● Up to 2,000 variables
● 1,000 configurations
● Max domain size of 10
● 100 variables
● Up to 200,000 configurations
● Max domain size of 10
● 10 variables
● 10,000 configurations
● Up to 6000 distinct values
= default heuristics only
On all experiments:
Average: 2.6 min
Max: 62 min
Synthesis of Attributed Feature Models: Foundations 19
Scalability
Best Buy dataset
Execution time of 2.1s for the most challenging matrix:
● 77 variables
● 185 configurations
● Maximum domain size of 185
Execution time is similar to the random dataset
● 242 matrices
● < 25% of empty cells
● Interpretation of empty cells = default heuristics only
Synthesis of Attributed Feature Models: Foundations 20
Conclusion
We introduce for the first time an algorithmic and
parameterizable approach for synthesizing attributed FMs
from product descriptions
Three key contributions:
● Semantics of attributed feature models/configuration
matrix (over- approximation, equivalence)
● We designed and implemented a tool-supported synthesis
algorithm
● We empirically evaluated the scalability of the synthesis
algorithm on random and real-world matrices.
Synthesis of Attributed Feature Models: Foundations 21
Future Work
● Empirical experiments provide evidence that the number
of constraints can be huge
– Random dataset: 237 constraints in average, 8906 max
– Best Buy dataset: 6821 constraints in average, 28300 max
● How to address the problem?
– Minimization, prioritization, user-specified
– Combination thereof
● Opencompare.org
– More empirical studies on realistic matrices (beyond Best
Buy)
Synthesis of Attributed Feature Models: Foundations 22
Future Work
● Take a set of constraints as input (rather
than a set of configurations)
– arbitrary propositional formula
– require the use of SMT/CP solvers
● Develop other operations on attributed
feature models: aggregate, merge, slice...
– Instance of synthesis problem
Synthesis of Attributed Feature Models: Foundations 23
Questions?
root F0 F1 F2 F3 A1 A2
Yes Yes Yes No Yes 3 0
Yes Yes No Yes Yes 2 2
Yes Yes Yes No No 2 0
Yes Yes No Yes No 0 8
Synthesis
root
F1
F3
F2F0
A1 A2
A2 < 8 => A1 >= 2
A1 > 0 => A2 <= 2
Synthesis of Attributed Feature Models: Foundations 24
Product Lines
{
"name": "Luke Skywalker",
"height": "1.72 m",
"mass": "77 Kg",
"hair_color": "Blond",
"skin_color": "Caucasian",
"eye_color": "Blue",
"birth_year": "19 BBY",
"gender": "Male",
"homeworld":
"http://swapi.co/api/planets/1/",
"films": [
"http://swapi.co/api/films/1/",
"http://swapi.co/api/films/2/",
"http://swapi.co/api/films/3/"
],
...
}
The Star Wars API (http://swapi.co/)
{
"name": "Darth Vader",
"height": "202",
"mass": "136",
"hair_color": "none",
"skin_color": "white",
"eye_color": "yellow",
"birth_year": "41.9BBY",
"gender": "male",
"homeworld":
"http://swapi.co/api/planets/1/",
"films": [
"http://swapi.co/api/films/6/",
"http://swapi.co/api/films/3/",
"http://swapi.co/api/films/2/",
"http://swapi.co/api/films/1/"
],
...
}

More Related Content

What's hot

CIS110 Computer Programming Design Chapter (7)
CIS110 Computer Programming Design Chapter  (7)CIS110 Computer Programming Design Chapter  (7)
CIS110 Computer Programming Design Chapter (7)Dr. Ahmed Al Zaidy
 
PUMConf: A Tool to Configure Product Specific Use Case and Domain Models in a...
PUMConf: A Tool to Configure Product Specific Use Case and Domain Models in a...PUMConf: A Tool to Configure Product Specific Use Case and Domain Models in a...
PUMConf: A Tool to Configure Product Specific Use Case and Domain Models in a...Lionel Briand
 
Programming Logic and Design: Working with Data
Programming Logic and Design: Working with DataProgramming Logic and Design: Working with Data
Programming Logic and Design: Working with DataNicole Ryan
 
CIS110 Computer Programming Design Chapter (13)
CIS110 Computer Programming Design Chapter  (13)CIS110 Computer Programming Design Chapter  (13)
CIS110 Computer Programming Design Chapter (13)Dr. Ahmed Al Zaidy
 
Decision table
Decision tableDecision table
Decision tablejeebala
 
CIS110 Computer Programming Design Chapter (10)
CIS110 Computer Programming Design Chapter  (10)CIS110 Computer Programming Design Chapter  (10)
CIS110 Computer Programming Design Chapter (10)Dr. Ahmed Al Zaidy
 
Logic Formulation 3
Logic Formulation 3Logic Formulation 3
Logic Formulation 3deathful
 

What's hot (9)

CIS110 Computer Programming Design Chapter (7)
CIS110 Computer Programming Design Chapter  (7)CIS110 Computer Programming Design Chapter  (7)
CIS110 Computer Programming Design Chapter (7)
 
PUMConf: A Tool to Configure Product Specific Use Case and Domain Models in a...
PUMConf: A Tool to Configure Product Specific Use Case and Domain Models in a...PUMConf: A Tool to Configure Product Specific Use Case and Domain Models in a...
PUMConf: A Tool to Configure Product Specific Use Case and Domain Models in a...
 
Programming Logic and Design: Working with Data
Programming Logic and Design: Working with DataProgramming Logic and Design: Working with Data
Programming Logic and Design: Working with Data
 
Thai
ThaiThai
Thai
 
CIS110 Computer Programming Design Chapter (13)
CIS110 Computer Programming Design Chapter  (13)CIS110 Computer Programming Design Chapter  (13)
CIS110 Computer Programming Design Chapter (13)
 
spss Help
spss Helpspss Help
spss Help
 
Decision table
Decision tableDecision table
Decision table
 
CIS110 Computer Programming Design Chapter (10)
CIS110 Computer Programming Design Chapter  (10)CIS110 Computer Programming Design Chapter  (10)
CIS110 Computer Programming Design Chapter (10)
 
Logic Formulation 3
Logic Formulation 3Logic Formulation 3
Logic Formulation 3
 

Similar to Synthesis of Attributed Feature Models From Product Descriptions

Designing Architecture-aware Library using Boost.Proto
Designing Architecture-aware Library using Boost.ProtoDesigning Architecture-aware Library using Boost.Proto
Designing Architecture-aware Library using Boost.ProtoJoel Falcou
 
matlab-130408153714-phpapp02_lab123.ppsx
matlab-130408153714-phpapp02_lab123.ppsxmatlab-130408153714-phpapp02_lab123.ppsx
matlab-130408153714-phpapp02_lab123.ppsxlekhacce
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIJörn Guy Süß JGS
 
Mat lab workshop
Mat lab workshopMat lab workshop
Mat lab workshopVinay Kumar
 
Ehsan parallel accelerator-dec2015
Ehsan parallel accelerator-dec2015Ehsan parallel accelerator-dec2015
Ehsan parallel accelerator-dec2015Christian Peel
 
Hierarchical free monads and software design in fp
Hierarchical free monads and software design in fpHierarchical free monads and software design in fp
Hierarchical free monads and software design in fpAlexander Granin
 
How to create a high performance excel engine in java script
How to create a high performance excel engine in java scriptHow to create a high performance excel engine in java script
How to create a high performance excel engine in java scriptViktor Turskyi
 
Introduction to matlab lecture 1 of 4
Introduction to matlab lecture 1 of 4Introduction to matlab lecture 1 of 4
Introduction to matlab lecture 1 of 4Randa Elanwar
 
Parallel program design
Parallel program designParallel program design
Parallel program designZongYing Lyu
 
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia KazakovaC++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakovacorehard_by
 
Query Optimization - Brandon Latronica
Query Optimization - Brandon LatronicaQuery Optimization - Brandon Latronica
Query Optimization - Brandon Latronica"FENG "GEORGE"" YU
 
MADlib Architecture and Functional Demo on How to Use MADlib/PivotalR
MADlib Architecture and Functional Demo on How to Use MADlib/PivotalRMADlib Architecture and Functional Demo on How to Use MADlib/PivotalR
MADlib Architecture and Functional Demo on How to Use MADlib/PivotalRPivotalOpenSourceHub
 
Automatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSELAutomatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSELJoel Falcou
 
Madeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareMadeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareESUG
 
Archi Modelling
Archi ModellingArchi Modelling
Archi Modellingdilane007
 
Accelerating the Development of Efficient CP Optimizer Models
Accelerating the Development of Efficient CP Optimizer ModelsAccelerating the Development of Efficient CP Optimizer Models
Accelerating the Development of Efficient CP Optimizer ModelsPhilippe Laborie
 

Similar to Synthesis of Attributed Feature Models From Product Descriptions (20)

Designing Architecture-aware Library using Boost.Proto
Designing Architecture-aware Library using Boost.ProtoDesigning Architecture-aware Library using Boost.Proto
Designing Architecture-aware Library using Boost.Proto
 
matlab-130408153714-phpapp02_lab123.ppsx
matlab-130408153714-phpapp02_lab123.ppsxmatlab-130408153714-phpapp02_lab123.ppsx
matlab-130408153714-phpapp02_lab123.ppsx
 
Matlab basic and image
Matlab basic and imageMatlab basic and image
Matlab basic and image
 
A Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its APIA Brief Conceptual Introduction to Functional Java 8 and its API
A Brief Conceptual Introduction to Functional Java 8 and its API
 
Mat lab workshop
Mat lab workshopMat lab workshop
Mat lab workshop
 
Ehsan parallel accelerator-dec2015
Ehsan parallel accelerator-dec2015Ehsan parallel accelerator-dec2015
Ehsan parallel accelerator-dec2015
 
Hierarchical free monads and software design in fp
Hierarchical free monads and software design in fpHierarchical free monads and software design in fp
Hierarchical free monads and software design in fp
 
How to create a high performance excel engine in java script
How to create a high performance excel engine in java scriptHow to create a high performance excel engine in java script
How to create a high performance excel engine in java script
 
Introduction to matlab lecture 1 of 4
Introduction to matlab lecture 1 of 4Introduction to matlab lecture 1 of 4
Introduction to matlab lecture 1 of 4
 
Parallel program design
Parallel program designParallel program design
Parallel program design
 
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia KazakovaC++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
 
Calfem34
Calfem34Calfem34
Calfem34
 
Java 8
Java 8Java 8
Java 8
 
Query Optimization - Brandon Latronica
Query Optimization - Brandon LatronicaQuery Optimization - Brandon Latronica
Query Optimization - Brandon Latronica
 
MADlib Architecture and Functional Demo on How to Use MADlib/PivotalR
MADlib Architecture and Functional Demo on How to Use MADlib/PivotalRMADlib Architecture and Functional Demo on How to Use MADlib/PivotalR
MADlib Architecture and Functional Demo on How to Use MADlib/PivotalR
 
Automatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSELAutomatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSEL
 
Madeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareMadeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable Hardware
 
Archi Modelling
Archi ModellingArchi Modelling
Archi Modelling
 
Seminar on MATLAB
Seminar on MATLABSeminar on MATLAB
Seminar on MATLAB
 
Accelerating the Development of Efficient CP Optimizer Models
Accelerating the Development of Efficient CP Optimizer ModelsAccelerating the Development of Efficient CP Optimizer Models
Accelerating the Development of Efficient CP Optimizer Models
 

More from University of Rennes, INSA Rennes, Inria/IRISA, CNRS

More from University of Rennes, INSA Rennes, Inria/IRISA, CNRS (20)

A Demonstration of End-User Code Customization Using Generative AI
A Demonstration of End-User Code Customization Using Generative AIA Demonstration of End-User Code Customization Using Generative AI
A Demonstration of End-User Code Customization Using Generative AI
 
24 Reasons Why Variability Models Are Not Yet Universal (24RWVMANYU)
24 Reasons Why Variability Models Are Not Yet Universal (24RWVMANYU)24 Reasons Why Variability Models Are Not Yet Universal (24RWVMANYU)
24 Reasons Why Variability Models Are Not Yet Universal (24RWVMANYU)
 
On Programming Variability with Large Language Model-based Assistant
On Programming Variability with Large Language Model-based AssistantOn Programming Variability with Large Language Model-based Assistant
On Programming Variability with Large Language Model-based Assistant
 
Generative AI for Reengineering Variants into Software Product Lines: An Expe...
Generative AI for Reengineering Variants into Software Product Lines: An Expe...Generative AI for Reengineering Variants into Software Product Lines: An Expe...
Generative AI for Reengineering Variants into Software Product Lines: An Expe...
 
Tackling Deep Software Variability Together
Tackling Deep Software Variability TogetherTackling Deep Software Variability Together
Tackling Deep Software Variability Together
 
On anti-cheating in chess, science, reproducibility, and variability
On anti-cheating in chess, science, reproducibility, and variabilityOn anti-cheating in chess, science, reproducibility, and variability
On anti-cheating in chess, science, reproducibility, and variability
 
Feature Subset Selection for Learning Huge Configuration Spaces: The case of ...
Feature Subset Selection for Learning Huge Configuration Spaces: The case of ...Feature Subset Selection for Learning Huge Configuration Spaces: The case of ...
Feature Subset Selection for Learning Huge Configuration Spaces: The case of ...
 
Machine Learning and Deep Software Variability
Machine Learning and Deep Software VariabilityMachine Learning and Deep Software Variability
Machine Learning and Deep Software Variability
 
Mastering Software Variability for Innovation and Science
Mastering Software Variability for Innovation and ScienceMastering Software Variability for Innovation and Science
Mastering Software Variability for Innovation and Science
 
Transfer Learning Across Variants and Versions: The Case of Linux Kernel Size
Transfer Learning Across Variants and Versions: The Case of Linux Kernel SizeTransfer Learning Across Variants and Versions: The Case of Linux Kernel Size
Transfer Learning Across Variants and Versions: The Case of Linux Kernel Size
 
Reproducible Science and Deep Software Variability
Reproducible Science and Deep Software VariabilityReproducible Science and Deep Software Variability
Reproducible Science and Deep Software Variability
 
Software Variability and Artificial Intelligence
Software Variability and Artificial IntelligenceSoftware Variability and Artificial Intelligence
Software Variability and Artificial Intelligence
 
Teaching Software Product Lines: A Snapshot of Current Practices and Challenges
Teaching Software Product Lines: A Snapshot of Current Practices and ChallengesTeaching Software Product Lines: A Snapshot of Current Practices and Challenges
Teaching Software Product Lines: A Snapshot of Current Practices and Challenges
 
Exploiting the Enumeration of All Feature Model Configurations: A New Perspec...
Exploiting the Enumeration of All Feature Model Configurations: A New Perspec...Exploiting the Enumeration of All Feature Model Configurations: A New Perspec...
Exploiting the Enumeration of All Feature Model Configurations: A New Perspec...
 
Assessing Product Line Derivation Operators Applied to Java Source Code: An E...
Assessing Product Line Derivation Operators Applied to Java Source Code: An E...Assessing Product Line Derivation Operators Applied to Java Source Code: An E...
Assessing Product Line Derivation Operators Applied to Java Source Code: An E...
 
From Basic Variability Models to OpenCompare.org
From Basic Variability Models to OpenCompare.orgFrom Basic Variability Models to OpenCompare.org
From Basic Variability Models to OpenCompare.org
 
Pandoc: a universal document converter
Pandoc: a universal document converterPandoc: a universal document converter
Pandoc: a universal document converter
 
Metamorphic Domain-Specific Languages
Metamorphic Domain-Specific LanguagesMetamorphic Domain-Specific Languages
Metamorphic Domain-Specific Languages
 
3D Printing, Customization, and Product Lines
3D Printing, Customization, and Product Lines3D Printing, Customization, and Product Lines
3D Printing, Customization, and Product Lines
 
WebFML: Synthesizing Feature Models Everywhere (@ SPLC 2014)
WebFML: Synthesizing Feature Models Everywhere (@ SPLC 2014)WebFML: Synthesizing Feature Models Everywhere (@ SPLC 2014)
WebFML: Synthesizing Feature Models Everywhere (@ SPLC 2014)
 

Recently uploaded

Pests of Blackgram, greengram, cowpea_Dr.UPR.pdf
Pests of Blackgram, greengram, cowpea_Dr.UPR.pdfPests of Blackgram, greengram, cowpea_Dr.UPR.pdf
Pests of Blackgram, greengram, cowpea_Dr.UPR.pdfPirithiRaju
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
《Queensland毕业文凭-昆士兰大学毕业证成绩单》
《Queensland毕业文凭-昆士兰大学毕业证成绩单》《Queensland毕业文凭-昆士兰大学毕业证成绩单》
《Queensland毕业文凭-昆士兰大学毕业证成绩单》rnrncn29
 
User Guide: Capricorn FLX™ Weather Station
User Guide: Capricorn FLX™ Weather StationUser Guide: Capricorn FLX™ Weather Station
User Guide: Capricorn FLX™ Weather StationColumbia Weather Systems
 
Microphone- characteristics,carbon microphone, dynamic microphone.pptx
Microphone- characteristics,carbon microphone, dynamic microphone.pptxMicrophone- characteristics,carbon microphone, dynamic microphone.pptx
Microphone- characteristics,carbon microphone, dynamic microphone.pptxpriyankatabhane
 
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingBase editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingNetHelix
 
Transposable elements in prokaryotes.ppt
Transposable elements in prokaryotes.pptTransposable elements in prokaryotes.ppt
Transposable elements in prokaryotes.pptArshadWarsi13
 
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxLIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxmalonesandreagweneth
 
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptxSTOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptxMurugaveni B
 
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCRCall Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCRlizamodels9
 
Pests of safflower_Binomics_Identification_Dr.UPR.pdf
Pests of safflower_Binomics_Identification_Dr.UPR.pdfPests of safflower_Binomics_Identification_Dr.UPR.pdf
Pests of safflower_Binomics_Identification_Dr.UPR.pdfPirithiRaju
 
Speech, hearing, noise, intelligibility.pptx
Speech, hearing, noise, intelligibility.pptxSpeech, hearing, noise, intelligibility.pptx
Speech, hearing, noise, intelligibility.pptxpriyankatabhane
 
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...D. B. S. College Kanpur
 
Functional group interconversions(oxidation reduction)
Functional group interconversions(oxidation reduction)Functional group interconversions(oxidation reduction)
Functional group interconversions(oxidation reduction)itwameryclare
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
GenBio2 - Lesson 1 - Introduction to Genetics.pptx
GenBio2 - Lesson 1 - Introduction to Genetics.pptxGenBio2 - Lesson 1 - Introduction to Genetics.pptx
GenBio2 - Lesson 1 - Introduction to Genetics.pptxBerniceCayabyab1
 
Harmful and Useful Microorganisms Presentation
Harmful and Useful Microorganisms PresentationHarmful and Useful Microorganisms Presentation
Harmful and Useful Microorganisms Presentationtahreemzahra82
 
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptxTHE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptxNandakishor Bhaurao Deshmukh
 
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)Columbia Weather Systems
 
Davis plaque method.pptx recombinant DNA technology
Davis plaque method.pptx recombinant DNA technologyDavis plaque method.pptx recombinant DNA technology
Davis plaque method.pptx recombinant DNA technologycaarthichand2003
 

Recently uploaded (20)

Pests of Blackgram, greengram, cowpea_Dr.UPR.pdf
Pests of Blackgram, greengram, cowpea_Dr.UPR.pdfPests of Blackgram, greengram, cowpea_Dr.UPR.pdf
Pests of Blackgram, greengram, cowpea_Dr.UPR.pdf
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
《Queensland毕业文凭-昆士兰大学毕业证成绩单》
《Queensland毕业文凭-昆士兰大学毕业证成绩单》《Queensland毕业文凭-昆士兰大学毕业证成绩单》
《Queensland毕业文凭-昆士兰大学毕业证成绩单》
 
User Guide: Capricorn FLX™ Weather Station
User Guide: Capricorn FLX™ Weather StationUser Guide: Capricorn FLX™ Weather Station
User Guide: Capricorn FLX™ Weather Station
 
Microphone- characteristics,carbon microphone, dynamic microphone.pptx
Microphone- characteristics,carbon microphone, dynamic microphone.pptxMicrophone- characteristics,carbon microphone, dynamic microphone.pptx
Microphone- characteristics,carbon microphone, dynamic microphone.pptx
 
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingBase editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
 
Transposable elements in prokaryotes.ppt
Transposable elements in prokaryotes.pptTransposable elements in prokaryotes.ppt
Transposable elements in prokaryotes.ppt
 
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxLIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
 
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptxSTOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
 
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCRCall Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
Call Girls In Nihal Vihar Delhi ❤️8860477959 Looking Escorts In 24/7 Delhi NCR
 
Pests of safflower_Binomics_Identification_Dr.UPR.pdf
Pests of safflower_Binomics_Identification_Dr.UPR.pdfPests of safflower_Binomics_Identification_Dr.UPR.pdf
Pests of safflower_Binomics_Identification_Dr.UPR.pdf
 
Speech, hearing, noise, intelligibility.pptx
Speech, hearing, noise, intelligibility.pptxSpeech, hearing, noise, intelligibility.pptx
Speech, hearing, noise, intelligibility.pptx
 
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
 
Functional group interconversions(oxidation reduction)
Functional group interconversions(oxidation reduction)Functional group interconversions(oxidation reduction)
Functional group interconversions(oxidation reduction)
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
GenBio2 - Lesson 1 - Introduction to Genetics.pptx
GenBio2 - Lesson 1 - Introduction to Genetics.pptxGenBio2 - Lesson 1 - Introduction to Genetics.pptx
GenBio2 - Lesson 1 - Introduction to Genetics.pptx
 
Harmful and Useful Microorganisms Presentation
Harmful and Useful Microorganisms PresentationHarmful and Useful Microorganisms Presentation
Harmful and Useful Microorganisms Presentation
 
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptxTHE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
THE ROLE OF PHARMACOGNOSY IN TRADITIONAL AND MODERN SYSTEM OF MEDICINE.pptx
 
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
 
Davis plaque method.pptx recombinant DNA technology
Davis plaque method.pptx recombinant DNA technologyDavis plaque method.pptx recombinant DNA technology
Davis plaque method.pptx recombinant DNA technology
 

Synthesis of Attributed Feature Models From Product Descriptions

  • 1. root F0 F1 F2 F3 A1 A2 Yes Yes Yes No Yes 3 0 Yes Yes No Yes Yes 2 2 Yes Yes Yes No No 2 0 Yes Yes No Yes No 0 8 Synthesis root F1 F3 F2F0 A1 A2 A2 < 8 => A1 >= 2 A1 > 0 => A2 <= 2 Guillaume Bécan, Razieh Behjati, Arnaud Gotlieb, Mathieu Acher Synthesis of Attributed Feature Models From Product Descriptions
  • 2. Notes ● Slides have been presented at SPLC'15 (Nashville, USA) ● Guillaume Bécan has made the vast majority of the slides ● Some slides were previously presented at FOSD'15 meeting ● Paper here: https://hal.inria.fr/hal-01178454
  • 3. Synthesis of Attributed Feature Models: Foundations 3 Product Lines/Highly configurable systems config NR_CPUS int "Maximum number of CPUs" if SMP && !MAXSMP range 2 8 if SMP && X86_32 && !X86_BIGSMP range 2 512 if SMP && !MAXSMP && !CPUMASK_OFFSTACK range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64 default "1" if !SMP default "8192" if MAXSMP default "32" if SMP && X86_BIGSMP default "8" if SMP ---help--- This allows you to specify the maximum number of CPUs which this kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum supported value is 4096, otherwise the maximum value is 512. The minimum value which makes sense is 2. This is purely to save memory - each supported CPU adds approximately eight kilobytes to the kernel image. Linux kernel
  • 4. Synthesis of Attributed Feature Models: Foundations 4 ● 2000+ options in about:config ● 3 types: boolean, integers, string Firefox Product Lines/Highly configurable systems
  • 5. Synthesis of Attributed Feature Models: Foundations 5 Product Lines Product comparison matrices Comparison of digital SLRs
  • 6. Synthesis of Attributed Feature Models: Foundations 6 Modeling and Synthesis ● Boolean feature models (FMs) are nice but options are not only boolean. Languages/operations have been defined on top of attributed FMs; so where are attributed feature models? ● Numerous works address the synthesis of Boolean feature models, eg [Czarnecki et al. SPLC'07, Andersen et al. SPLC'12, Davril et al. FSE'13, Becan et al. ESE'15] but none of them consider attributes ● We introduce for the first time an algorithmic and parameterizable approach for synthesizing attributed FMs from product descriptions
  • 7. Synthesis of Attributed Feature Models: Foundations 7 From Configuration Matrix to AFM #2 synthesis procedure #3 scalability evaluation #1 semantics
  • 8. Synthesis of Attributed Feature Models: Foundations 8 Attributed Feature Model (AFM) ● AFM = attributed feature diagram + an arbitrary constraint ● Attributed feature diagram = – Hierarchy of features – Attributes: placed in features, they take a value in a domain – Domain = set of values, null value and a partial order – A set of human readable constraints
  • 9. Synthesis of Attributed Feature Models: Foundations 9 Formalizing the AFM Synthesis Problem ● Configuration matrix = intermediate representation of a set of configurations ● Given a configuration matrix, synthesize an AFM which is – Maximal = the feature diagram contains as much as possible information – Sound and Complete = represent exactly the set of configurations
  • 10. Synthesis of Attributed Feature Models: Foundations 10 Formalizing the AFM Synthesis Problem ● Theoretical contributions (more details in the paper) – Over-approximation of the attributed feature diagram – Several AFMs are possible for one configuration matrix root F0 F1 F2 F3 A1 A2 Yes Yes Yes No Yes 3 0 Yes Yes No Yes Yes 2 2 Yes Yes Yes No No 2 0 Yes Yes No Yes No 0 8 root F1 F3 F2F0 A1 A2 root F1 F3F2F0 A1 A2 excludes Synthesis
  • 11. Synthesis of Attributed Feature Models: Foundations 11 Synthesis algorithm ● Input: Configuration Matrix + Domain Knowledge ( ) ● Output: AFM which is maximal, sound and complete = user input + default heuristics Tool name : FOReverSE
  • 12. Synthesis of Attributed Feature Models: Foundations 12 Synthesis algorithm ● Extract feature, attributes and their domains Features ● Root ● F0 ● F1 ● F2 ● F3 Attributes ● A1 : {0,2,3}, 0 ● A2 : {0,2,8}, 0 root F0 F1 F2 F3 A1 A2 Yes Yes Yes No Yes 3 0 Yes Yes No Yes Yes 2 2 Yes Yes Yes No No 2 0 Yes Yes No Yes No 0 8 ● Compute binary implications root F0 F1 F2 F3 A1 A2 Yes Yes Yes No Yes 3 0 Yes Yes No Yes Yes 2 2 Yes Yes Yes No No 2 0 Yes Yes No Yes No 0 8 ... F2 => ¬ F1 ¬ F2 => F1 F2 => A1 ∈ {0,2} ¬ F2 => A1 ∈ {2,3} F2 => A2 ∈ {2,8} ¬ F2 => A2 ∈ {0} … A1 = 2 => A2 ∈ {0,2}
  • 13. Synthesis of Attributed Feature Models: Foundations 13 Synthesis algorithm ● Define hierarchy (feature tree + place of attributes) Binary implications ... F2 => ¬ F1 ¬ F2 => F1 F2 => A1 ∈ {0,2} ¬ F2 => A1 ∈ {2,3} F2 => A2 ∈ {2,8} ¬ F2 => A2 ∈ {0} ... root F1 F3 F2F0 Binary implication graph (all possible hierarchies) root F1 F3 F2F0 Hierarchy Possible places for attributes ¬ f => ( a = null value of a ) A1 : root, F0 A2 : root, F0, F2 A1 A2
  • 14. Synthesis of Attributed Feature Models: Foundations 14 Synthesis algorithm ● Compute variability information (mandatory features, features groups) – Only based on features – Reuse existing algorithms (She et al., Inform Software Tech, 2014) Xor: {F1, F2} root F1 F3 F2 F0 Mutex graph Solver Binary implications Possible feature groups (Mutex, Or, Xor) root F1 F3 F2F0 A1 A2 + + Binary implication graph Hierarchy+ Mandatory features
  • 15. Synthesis of Attributed Feature Models: Foundations 15 Synthesis algorithm ● Compute readable constraints Readable constraints A1 > 0 => A2 <= 2 A2 < 8 => A1 >= 2 Interesting values for attributes A1 → 0 A2 → 8 Binary implications ... A1 = 0 => A2 ∈ {8} A1 = 2 => A2 ∈ {0,2} A1 = 3 => A2 ∈ {0} A2 = 0 => A1 ∈ {2,3} A2 = 2 => A1 ∈ {2} A2 = 8 => A1 ∈ {0} … Merge constraints Grammar of readable constraints
  • 16. Synthesis of Attributed Feature Models: Foundations 16 User Effort Domain knowledge = ● user input ● default heuristics No user effort Arbitrary choices Fully automated algorithm More user effort => better AFM ● Feature or attribute? ● Interpretation of the cells (“Yes” = true) ● Hierarchy (F3 below F0) ● Overlapping feature groups ● Bounds in constraints (“0” is an interesting value for A1)
  • 17. Synthesis of Attributed Feature Models: Foundations 17 Scalability Random dataset ● Generator of configuration matrices – Number of variables (features + attributes) – Number of configurations – Maximum domain size (number of distinct values in a column) ● Execution time of or-group computation ● 1000 configurations ● max domain size of 10 Timeout always reached with more than 60 variables Or groups do not scale ! = default heuristics only
  • 18. Synthesis of Attributed Feature Models: Foundations 18 Scalability Random dataset ● Execution time (no or-groups) ● Up to 2,000 variables ● 1,000 configurations ● Max domain size of 10 ● 100 variables ● Up to 200,000 configurations ● Max domain size of 10 ● 10 variables ● 10,000 configurations ● Up to 6000 distinct values = default heuristics only On all experiments: Average: 2.6 min Max: 62 min
  • 19. Synthesis of Attributed Feature Models: Foundations 19 Scalability Best Buy dataset Execution time of 2.1s for the most challenging matrix: ● 77 variables ● 185 configurations ● Maximum domain size of 185 Execution time is similar to the random dataset ● 242 matrices ● < 25% of empty cells ● Interpretation of empty cells = default heuristics only
  • 20. Synthesis of Attributed Feature Models: Foundations 20 Conclusion We introduce for the first time an algorithmic and parameterizable approach for synthesizing attributed FMs from product descriptions Three key contributions: ● Semantics of attributed feature models/configuration matrix (over- approximation, equivalence) ● We designed and implemented a tool-supported synthesis algorithm ● We empirically evaluated the scalability of the synthesis algorithm on random and real-world matrices.
  • 21. Synthesis of Attributed Feature Models: Foundations 21 Future Work ● Empirical experiments provide evidence that the number of constraints can be huge – Random dataset: 237 constraints in average, 8906 max – Best Buy dataset: 6821 constraints in average, 28300 max ● How to address the problem? – Minimization, prioritization, user-specified – Combination thereof ● Opencompare.org – More empirical studies on realistic matrices (beyond Best Buy)
  • 22. Synthesis of Attributed Feature Models: Foundations 22 Future Work ● Take a set of constraints as input (rather than a set of configurations) – arbitrary propositional formula – require the use of SMT/CP solvers ● Develop other operations on attributed feature models: aggregate, merge, slice... – Instance of synthesis problem
  • 23. Synthesis of Attributed Feature Models: Foundations 23 Questions? root F0 F1 F2 F3 A1 A2 Yes Yes Yes No Yes 3 0 Yes Yes No Yes Yes 2 2 Yes Yes Yes No No 2 0 Yes Yes No Yes No 0 8 Synthesis root F1 F3 F2F0 A1 A2 A2 < 8 => A1 >= 2 A1 > 0 => A2 <= 2
  • 24. Synthesis of Attributed Feature Models: Foundations 24 Product Lines { "name": "Luke Skywalker", "height": "1.72 m", "mass": "77 Kg", "hair_color": "Blond", "skin_color": "Caucasian", "eye_color": "Blue", "birth_year": "19 BBY", "gender": "Male", "homeworld": "http://swapi.co/api/planets/1/", "films": [ "http://swapi.co/api/films/1/", "http://swapi.co/api/films/2/", "http://swapi.co/api/films/3/" ], ... } The Star Wars API (http://swapi.co/) { "name": "Darth Vader", "height": "202", "mass": "136", "hair_color": "none", "skin_color": "white", "eye_color": "yellow", "birth_year": "41.9BBY", "gender": "male", "homeworld": "http://swapi.co/api/planets/1/", "films": [ "http://swapi.co/api/films/6/", "http://swapi.co/api/films/3/", "http://swapi.co/api/films/2/", "http://swapi.co/api/films/1/" ], ... }