SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
EXTRACTING FEATURE MODEL
CHANGES FROM THE LINUX
KERNEL WITH FMDIFF
The 8th International Workshop on Variability
Modeling of Software-intensive Systems
Nicolas Dintzner
Delft University of Technology
Netherlands
N.J.R.Dintzner@tudelft.nl

Arie van Deursen
Delft University of Technology
Netherlands
Arie.vanDeursen@tudelft.nl

Martin Pinzger
University of Klagenfurt
Austria
martin.pinzger@aau.at
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Linux kernel feature model changes

FMDiff

Feature changes
2
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Feature model changes
•  Major changes in a S.P.L. are mirrored by changes in its

feature model

•  Details of the evolution of the Linux feature model are not

available

•  Can changes in a feature models can give insights on

how the implementation changes ?
3
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Questions
1.  What types of changes can be applied to a FM ?

2.  How can we automate the extraction of feature changes

from a large scale FM?

3.  How does a large scale FM change over time ?

4
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Linux kernel
•  Very large feature model: 13k+ features

•  Long history: 20+ years of existence

•  Feature driven development: model “correctness”

5
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

A feature in a Kconfig file
if ACPI

Name

config ACPI_AC
tristate "AC Adapter"
default y if ACPI
depends X86
select POWER_SUPPLY
help
This driver supports the AC Adapter object ,(...).

Type & Prompt
Default
Depends
Select

endif

(help text)
Kconfig file

Additional
structures
6
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Linux feature changes
if ACPI

if ACPI

config ACPI_AC
tristate "AC Adapter"
default y if ACPI
depends X86
select POWER_SUPPLY

config ACPI_AC
boolean "AC Adapter”
default y if ACPI
default n if AIX
depends X86 || AMD
select POWER_SUPPLY

endif

endif

V1

V2

7
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Change classification
CHANGE
CATEGORY

CHANGE SUBCATEGORY

CHANGE TYPE

Feature
Add Remove Modify

Attribute

Depends

Default

Select

Add Remove Modify

Add Remove Modify

Add Remove Modify

Type
Prompt

Expression
References

Default value
Condition
References

Select
Condition
References

Add Remove Modify

Add Remove Modify

Add Remove Modify

Add Remove Modify

Add Remove Modify

8
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Classifying changes
if ACPI
config ACPI_AC
boolean "AC Adapter"
default y if ACPI
default n if AIX
depends X86 || AMD
select POWER_SUPPLY
endif
Rev.

Feature

Change type

Change
category

Change
subcategory

Old
value

New value

2

ACPI_AC

Modification

Change Attr.

Change type

“Tristate”

“Boolean”

2

ACPI_AC

Modification

Add default

Add default value

n

2

ACPI_AC

Modification

Add default

Add def. condition

AIX

2

ACPI_AC

Modification

Modify depends

Modify depends

X86

X86||AMD
9
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

FMDiff: getting the changes
Linux repository

Feature model translation
X86
v1

X86
v2

X86
v…

FMDiff
Feature model reconstruction (EMF)
Feature model comparison (EMF Compare)
Feature change classification

Feature change repository
10
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

From Kconfig to Kdump
1- Kconfig (original)

2- Hierarchy flattening

if ACPI
config ACPI_AC
tristate "AC Adapter"
default y if ACPI
depends X86 && ACPI
select POWER_SUPPLY

config ACPI_AC
tristate "AC Adapter"
default y if ACPI
depends X86
select POWER_SUPPLY
endif

3- Depends propagation

4- Kdump format (what we use)

config ACPI_AC
tristate "AC Adapter"
default y if X86 && ACPI
depends X86 && ACPI
select POWER_SUPPLY if X86 && ACPI

Item ACPI_AC tristate
Prompt ACPI_AC 1
Default ACPI_AC "y" "X86 && ACPI"
Depends ACPI_AC "X86 && ACPI"
ItemSelects ACPI_AC POWER_SUPPLY "X86 && ACPI”

Credits to

for Undertaker and the translation process

11
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Rebuilding
Kdump
Feature Model
v1

Kdump
Feature Model
v2

Feature model reconstruction (EMF)

Feature Model
(Ecore)

EMF Feature
model
Instance
v1

EMF Feature
model
Instance
v2
12
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Meta model
FeatureModel
Architecture (string)
Revision (string)
"contains"

0
*

Feature
Type (string)
Prompt (boolean)
Depends (string)
DependsReferences (list of strings)

Select Statement
"contains"

0

*

"contains"

0

*

Target (string)
Condition (string)
SelectConditionReferences (list of strings)
Default Statement
DefaultValue (string)
Condition (string)
DefaultValueReferences (list of strings)
DefaultValueConditionReferences (list of strings)

13
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Example
V1
Item ACPI_AC tristate
Depends ACPI_AC "X86 && ACPI"
…

V2
Item ACPI_AC tristate
Depends ACPI_AC “(X86 || AMD) && ACPI"
…

Feature Meta-Model
(Ecore)

Feature Model
Architecture: X86
Revision: 1

Feature Model
Architecture: X86
Revision: 2
Feature
Name: ACPI_AC
Depends: “X86 && ACPI”
Depends references:
[X86,ACPI]

Feature
Name: ACPI_AC
Depends: “(AMD || X86) && ACPI”
Depends references:
[X86,ACPI,AMD]
14
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

EMF Compare

Differencing

Matching

Feature Model
Architecture: X86
Revision: 1

Feature
Name: ACPI_AC
Depends: “X86 && ACPI”
Depends references:
[X86,ACPI]

Feature Model
Architecture: X86
Revision: 1

Feature
Name: ACPI_AC
Depends: “X86 && ACPI”
Depends references:
[X86,ACPI]

Feature
Name: ACPI_AC
Depends: “(AMD || X86) && ACPI”
Depends references:
[X86,ACPI,AMD]

Architecture
Name

Feature
Name

Feature Model
Architecture: X86
Revision: 2

Feature Model
Architecture: X86
Revision: 2

Feature
Name: ACPI_AC
Depends: “(AMD || X86) && ACPI”
Depends references:
[X86,ACPI,AMD]

Feature Model
Architecture: X86

Attribute change: “Revision” “1”à“2”

Feature
Name: ACPI_AC

Attribute change; “Depends”; “X86 && ACPI”à“(AMD||X8…”
Attribute change; “Depends Ref.”; added “AMD”

15
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Feature model changes
Feature Model
Architecture: X86

Attribute change; “Revision”; 1 à 2

Feature
Name: ACPI_AC

Attribute change; “Depends”; “X86 && ACPI” à “(AMD||X86)
Attribute change; “Depends Ref”; added “AMD”

Feature change classification

Rev.

Feature

Change type

Change
category

Change
subcategory

Old
value

New value

2

ACPI_AC

Modification

Modify depends

modify depends

X86

X86||AMD

2

ACPI_AC

Modification

Modify depends

add depends ref.

…

…

…

…

…

AMD
…

…
16
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Linux kernel dataset
•  10 releases (from v2.6.38 to v3.8)
•  Between 10,000 and 13,000 features in each release
•  22 to 26 architectures
•  Approximately 7000 feature per architecture specific F.M.
•  1,8+ million feature change recorded

•  Tool and data available
•  https://github.com/NZR/Software-Product-Line-Research
17
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Add and remove
493	

 772	


397	

 1740	

 612	

 493	


750	


609	

 1068	

 544	


Percentage of changes (architecture average)	


100%	

90%	

80%	

70%	

60%	

50%	


MODIFIED	

REMOVED	


40%	


ADDED	

30%	

20%	

10%	

0%	

v2.6.39	

 v3.0	


v3.1	


v3.2	


v3.3	

 v3.4	

 v3.5	

Linux releases	


v3.6	


v3.7	


v3.8	

18
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Spread over architectures (modifications)
Series1
25
25	


Series2

number of impacted architectures	


Series3
Series4
Series5

20
20	


Series6
Series7
Series8

15
15	


Series9
Series10
Series11

10
10	


Series12
Series13
Series14

5
5	


Series15
Series16
Series17

0
0

2.6.39	


2
3.0	


3.1	


4
3.2	


3.3	


6
3.4	


Linux releases	


3.5	


8
3.6	


3.7	


10
3.8	


19
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Questions
1.  What types of changes can be applied to a FM ?

Change classification for Kconfig
2.  How can we automate the extraction of feature changes

from a large scale FM?
We used Undertaker and EMF Compare
3.  How does a large scale SPL FM change over time ?

Dataset available…

20
Extracting feature model changes from the Linux kernel with FMDiff

-

Nicolas Dintzner

Extracting feature model changes from the
Linux Kernel using FMDiff
Change classification

Tool and approach

Feature model change

Add Feature

CHANGE CATEGORY

Remove Feature

Modify Feature

Change Category
Attribute
CHANGE
SUB-CATEGORY Add

Remove Modify

Depends
Add Remove Modify

Type
Prompt
CHANGE TYPE

Add Remove Modify

Default
Add Remove Modify

Default Value
Condition
References

Expression
References
Add

Remove Modify

Add

Remove Modify

Select
Add Remove Modify

Target
Condition
References
Add Remove Modify

Tool and dataset at your disposal

https://github.com/NZR/Software-Product-LineResearch

Nicolas Dintzner
Pr. Arie Van Deursen
Pr. Martin Pinzger
Contact: Nicolas Dintzner
N.J.R.Dintzner@tudelft.nl

21

Weitere ähnliche Inhalte

Andere mochten auch

BIOS, Linux and Firmware Test Suite in-between
BIOS, Linux and  Firmware Test Suite in-betweenBIOS, Linux and  Firmware Test Suite in-between
BIOS, Linux and Firmware Test Suite in-betweenAlex Hung
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLinaro
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)shimosawa
 
Hardware Probing in the Linux Kernel
Hardware Probing in the Linux KernelHardware Probing in the Linux Kernel
Hardware Probing in the Linux KernelKernel TLV
 
High Performance Storage Devices in the Linux Kernel
High Performance Storage Devices in the Linux KernelHigh Performance Storage Devices in the Linux Kernel
High Performance Storage Devices in the Linux KernelKernel TLV
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)shimosawa
 
Power aware operating system
Power aware operating systemPower aware operating system
Power aware operating systemRajan Kumar Yadav
 
BUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open SourceBUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open SourceLinaro
 

Andere mochten auch (9)

BIOS, Linux and Firmware Test Suite in-between
BIOS, Linux and  Firmware Test Suite in-betweenBIOS, Linux and  Firmware Test Suite in-between
BIOS, Linux and Firmware Test Suite in-between
 
Las16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need itLas16 200 - firmware summit - ras what is it- why do we need it
Las16 200 - firmware summit - ras what is it- why do we need it
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
Hardware Probing in the Linux Kernel
Hardware Probing in the Linux KernelHardware Probing in the Linux Kernel
Hardware Probing in the Linux Kernel
 
High Performance Storage Devices in the Linux Kernel
High Performance Storage Devices in the Linux KernelHigh Performance Storage Devices in the Linux Kernel
High Performance Storage Devices in the Linux Kernel
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
 
UEFI presentation
UEFI presentationUEFI presentation
UEFI presentation
 
Power aware operating system
Power aware operating systemPower aware operating system
Power aware operating system
 
BUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open SourceBUD17-TR01: Philosophy of Open Source
BUD17-TR01: Philosophy of Open Source
 

Ähnlich wie Extracting Linux kernel feature model changes with FMDiff

09 21-11%20 ieee%20nfpa%2072%202010%20
09 21-11%20 ieee%20nfpa%2072%202010%2009 21-11%20 ieee%20nfpa%2072%202010%20
09 21-11%20 ieee%20nfpa%2072%202010%20Ramon Mendoza Pantoja
 
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSAzure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSazuredayit
 
Tech Webinar: Angular 2, Introduction to a new framework
Tech Webinar: Angular 2, Introduction to a new frameworkTech Webinar: Angular 2, Introduction to a new framework
Tech Webinar: Angular 2, Introduction to a new frameworkCodemotion
 
DockerCon 2017 - General Session Day 1 - Solomon Hykes
DockerCon 2017 - General Session Day 1 - Solomon HykesDockerCon 2017 - General Session Day 1 - Solomon Hykes
DockerCon 2017 - General Session Day 1 - Solomon HykesDocker, Inc.
 
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...azuredayit
 
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Anne Nicolas
 
Track 2 session 2 - st dev con 2016 - stm32 open development environment
Track 2   session 2 - st dev con 2016 - stm32 open development  environmentTrack 2   session 2 - st dev con 2016 - stm32 open development  environment
Track 2 session 2 - st dev con 2016 - stm32 open development environmentST_World
 
SHARE 2014, Pittsburgh CICS scalability
SHARE 2014, Pittsburgh CICS scalabilitySHARE 2014, Pittsburgh CICS scalability
SHARE 2014, Pittsburgh CICS scalabilitynick_garrod
 
SHARE 2014, Pittsburgh CICS scalability
SHARE 2014, Pittsburgh CICS scalabilitySHARE 2014, Pittsburgh CICS scalability
SHARE 2014, Pittsburgh CICS scalabilitynick_garrod
 
OSGi Community Event 2010 - Dependencies, dependencies, dependencies
OSGi Community Event 2010 - Dependencies, dependencies, dependenciesOSGi Community Event 2010 - Dependencies, dependencies, dependencies
OSGi Community Event 2010 - Dependencies, dependencies, dependenciesmfrancis
 
b_MDS_NX-OS_Recommended_Releases 2023 Jan.pdf
b_MDS_NX-OS_Recommended_Releases 2023 Jan.pdfb_MDS_NX-OS_Recommended_Releases 2023 Jan.pdf
b_MDS_NX-OS_Recommended_Releases 2023 Jan.pdfaaajjj4
 
A Self-Adaptive Deployment Framework for Service-Oriented Systems
A Self-Adaptive Deployment Framework for Service-Oriented SystemsA Self-Adaptive Deployment Framework for Service-Oriented Systems
A Self-Adaptive Deployment Framework for Service-Oriented SystemsSander van der Burg
 
Autonomic Application Delivery with Tonomi
Autonomic Application Delivery with TonomiAutonomic Application Delivery with Tonomi
Autonomic Application Delivery with TonomiVictoria Livschitz
 
Constructing DSMLs
Constructing DSMLsConstructing DSMLs
Constructing DSMLsmiso_uam
 
OVNC 2015-Software-Defined Networking: Where Are We Today?
OVNC 2015-Software-Defined Networking: Where Are We Today?OVNC 2015-Software-Defined Networking: Where Are We Today?
OVNC 2015-Software-Defined Networking: Where Are We Today?NAIM Networks, Inc.
 
Containers and Kubernetes -Notes Leo
Containers and Kubernetes -Notes LeoContainers and Kubernetes -Notes Leo
Containers and Kubernetes -Notes LeoLéopold Gault
 
Moby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at Kiratech
Moby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at KiratechMoby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at Kiratech
Moby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at KiratechKiratech
 

Ähnlich wie Extracting Linux kernel feature model changes with FMDiff (20)

09 21-11%20 ieee%20nfpa%2072%202010%20
09 21-11%20 ieee%20nfpa%2072%202010%2009 21-11%20 ieee%20nfpa%2072%202010%20
09 21-11%20 ieee%20nfpa%2072%202010%20
 
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKSAzure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
Azure Day Rome Reloaded 2019 - Deconstructing Kubernetes using AKS
 
Tech Webinar: Angular 2, Introduction to a new framework
Tech Webinar: Angular 2, Introduction to a new frameworkTech Webinar: Angular 2, Introduction to a new framework
Tech Webinar: Angular 2, Introduction to a new framework
 
SPLC Presentation
SPLC PresentationSPLC Presentation
SPLC Presentation
 
Unikernel Linux
Unikernel LinuxUnikernel Linux
Unikernel Linux
 
DockerCon 2017 - General Session Day 1 - Solomon Hykes
DockerCon 2017 - General Session Day 1 - Solomon HykesDockerCon 2017 - General Session Day 1 - Solomon Hykes
DockerCon 2017 - General Session Day 1 - Solomon Hykes
 
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
Azure Day Rome 2019 Reloaded - Strangle(r pattern) your legacy application ru...
 
Ansible for networks
Ansible for networksAnsible for networks
Ansible for networks
 
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
Kernel Recipes 2018 - 10 years of automated evolution in the Linux kernel - J...
 
Track 2 session 2 - st dev con 2016 - stm32 open development environment
Track 2   session 2 - st dev con 2016 - stm32 open development  environmentTrack 2   session 2 - st dev con 2016 - stm32 open development  environment
Track 2 session 2 - st dev con 2016 - stm32 open development environment
 
SHARE 2014, Pittsburgh CICS scalability
SHARE 2014, Pittsburgh CICS scalabilitySHARE 2014, Pittsburgh CICS scalability
SHARE 2014, Pittsburgh CICS scalability
 
SHARE 2014, Pittsburgh CICS scalability
SHARE 2014, Pittsburgh CICS scalabilitySHARE 2014, Pittsburgh CICS scalability
SHARE 2014, Pittsburgh CICS scalability
 
OSGi Community Event 2010 - Dependencies, dependencies, dependencies
OSGi Community Event 2010 - Dependencies, dependencies, dependenciesOSGi Community Event 2010 - Dependencies, dependencies, dependencies
OSGi Community Event 2010 - Dependencies, dependencies, dependencies
 
b_MDS_NX-OS_Recommended_Releases 2023 Jan.pdf
b_MDS_NX-OS_Recommended_Releases 2023 Jan.pdfb_MDS_NX-OS_Recommended_Releases 2023 Jan.pdf
b_MDS_NX-OS_Recommended_Releases 2023 Jan.pdf
 
A Self-Adaptive Deployment Framework for Service-Oriented Systems
A Self-Adaptive Deployment Framework for Service-Oriented SystemsA Self-Adaptive Deployment Framework for Service-Oriented Systems
A Self-Adaptive Deployment Framework for Service-Oriented Systems
 
Autonomic Application Delivery with Tonomi
Autonomic Application Delivery with TonomiAutonomic Application Delivery with Tonomi
Autonomic Application Delivery with Tonomi
 
Constructing DSMLs
Constructing DSMLsConstructing DSMLs
Constructing DSMLs
 
OVNC 2015-Software-Defined Networking: Where Are We Today?
OVNC 2015-Software-Defined Networking: Where Are We Today?OVNC 2015-Software-Defined Networking: Where Are We Today?
OVNC 2015-Software-Defined Networking: Where Are We Today?
 
Containers and Kubernetes -Notes Leo
Containers and Kubernetes -Notes LeoContainers and Kubernetes -Notes Leo
Containers and Kubernetes -Notes Leo
 
Moby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at Kiratech
Moby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at KiratechMoby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at Kiratech
Moby and linux kit, what to expect - Lorenzo Fontana, DevOps Expert at Kiratech
 

Kürzlich hochgeladen

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Extracting Linux kernel feature model changes with FMDiff

  • 1. EXTRACTING FEATURE MODEL CHANGES FROM THE LINUX KERNEL WITH FMDIFF The 8th International Workshop on Variability Modeling of Software-intensive Systems Nicolas Dintzner Delft University of Technology Netherlands N.J.R.Dintzner@tudelft.nl Arie van Deursen Delft University of Technology Netherlands Arie.vanDeursen@tudelft.nl Martin Pinzger University of Klagenfurt Austria martin.pinzger@aau.at
  • 2. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Linux kernel feature model changes FMDiff Feature changes 2
  • 3. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Feature model changes •  Major changes in a S.P.L. are mirrored by changes in its feature model •  Details of the evolution of the Linux feature model are not available •  Can changes in a feature models can give insights on how the implementation changes ? 3
  • 4. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Questions 1.  What types of changes can be applied to a FM ? 2.  How can we automate the extraction of feature changes from a large scale FM? 3.  How does a large scale FM change over time ? 4
  • 5. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Linux kernel •  Very large feature model: 13k+ features •  Long history: 20+ years of existence •  Feature driven development: model “correctness” 5
  • 6. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner A feature in a Kconfig file if ACPI Name config ACPI_AC tristate "AC Adapter" default y if ACPI depends X86 select POWER_SUPPLY help This driver supports the AC Adapter object ,(...). Type & Prompt Default Depends Select endif (help text) Kconfig file Additional structures 6
  • 7. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Linux feature changes if ACPI if ACPI config ACPI_AC tristate "AC Adapter" default y if ACPI depends X86 select POWER_SUPPLY config ACPI_AC boolean "AC Adapter” default y if ACPI default n if AIX depends X86 || AMD select POWER_SUPPLY endif endif V1 V2 7
  • 8. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Change classification CHANGE CATEGORY CHANGE SUBCATEGORY CHANGE TYPE Feature Add Remove Modify Attribute Depends Default Select Add Remove Modify Add Remove Modify Add Remove Modify Type Prompt Expression References Default value Condition References Select Condition References Add Remove Modify Add Remove Modify Add Remove Modify Add Remove Modify Add Remove Modify 8
  • 9. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Classifying changes if ACPI config ACPI_AC boolean "AC Adapter" default y if ACPI default n if AIX depends X86 || AMD select POWER_SUPPLY endif Rev. Feature Change type Change category Change subcategory Old value New value 2 ACPI_AC Modification Change Attr. Change type “Tristate” “Boolean” 2 ACPI_AC Modification Add default Add default value n 2 ACPI_AC Modification Add default Add def. condition AIX 2 ACPI_AC Modification Modify depends Modify depends X86 X86||AMD 9
  • 10. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner FMDiff: getting the changes Linux repository Feature model translation X86 v1 X86 v2 X86 v… FMDiff Feature model reconstruction (EMF) Feature model comparison (EMF Compare) Feature change classification Feature change repository 10
  • 11. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner From Kconfig to Kdump 1- Kconfig (original) 2- Hierarchy flattening if ACPI config ACPI_AC tristate "AC Adapter" default y if ACPI depends X86 && ACPI select POWER_SUPPLY config ACPI_AC tristate "AC Adapter" default y if ACPI depends X86 select POWER_SUPPLY endif 3- Depends propagation 4- Kdump format (what we use) config ACPI_AC tristate "AC Adapter" default y if X86 && ACPI depends X86 && ACPI select POWER_SUPPLY if X86 && ACPI Item ACPI_AC tristate Prompt ACPI_AC 1 Default ACPI_AC "y" "X86 && ACPI" Depends ACPI_AC "X86 && ACPI" ItemSelects ACPI_AC POWER_SUPPLY "X86 && ACPI” Credits to for Undertaker and the translation process 11
  • 12. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Rebuilding Kdump Feature Model v1 Kdump Feature Model v2 Feature model reconstruction (EMF) Feature Model (Ecore) EMF Feature model Instance v1 EMF Feature model Instance v2 12
  • 13. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Meta model FeatureModel Architecture (string) Revision (string) "contains" 0 * Feature Type (string) Prompt (boolean) Depends (string) DependsReferences (list of strings) Select Statement "contains" 0 * "contains" 0 * Target (string) Condition (string) SelectConditionReferences (list of strings) Default Statement DefaultValue (string) Condition (string) DefaultValueReferences (list of strings) DefaultValueConditionReferences (list of strings) 13
  • 14. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Example V1 Item ACPI_AC tristate Depends ACPI_AC "X86 && ACPI" … V2 Item ACPI_AC tristate Depends ACPI_AC “(X86 || AMD) && ACPI" … Feature Meta-Model (Ecore) Feature Model Architecture: X86 Revision: 1 Feature Model Architecture: X86 Revision: 2 Feature Name: ACPI_AC Depends: “X86 && ACPI” Depends references: [X86,ACPI] Feature Name: ACPI_AC Depends: “(AMD || X86) && ACPI” Depends references: [X86,ACPI,AMD] 14
  • 15. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner EMF Compare Differencing Matching Feature Model Architecture: X86 Revision: 1 Feature Name: ACPI_AC Depends: “X86 && ACPI” Depends references: [X86,ACPI] Feature Model Architecture: X86 Revision: 1 Feature Name: ACPI_AC Depends: “X86 && ACPI” Depends references: [X86,ACPI] Feature Name: ACPI_AC Depends: “(AMD || X86) && ACPI” Depends references: [X86,ACPI,AMD] Architecture Name Feature Name Feature Model Architecture: X86 Revision: 2 Feature Model Architecture: X86 Revision: 2 Feature Name: ACPI_AC Depends: “(AMD || X86) && ACPI” Depends references: [X86,ACPI,AMD] Feature Model Architecture: X86 Attribute change: “Revision” “1”à“2” Feature Name: ACPI_AC Attribute change; “Depends”; “X86 && ACPI”à“(AMD||X8…” Attribute change; “Depends Ref.”; added “AMD” 15
  • 16. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Feature model changes Feature Model Architecture: X86 Attribute change; “Revision”; 1 à 2 Feature Name: ACPI_AC Attribute change; “Depends”; “X86 && ACPI” à “(AMD||X86) Attribute change; “Depends Ref”; added “AMD” Feature change classification Rev. Feature Change type Change category Change subcategory Old value New value 2 ACPI_AC Modification Modify depends modify depends X86 X86||AMD 2 ACPI_AC Modification Modify depends add depends ref. … … … … … AMD … … 16
  • 17. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Linux kernel dataset •  10 releases (from v2.6.38 to v3.8) •  Between 10,000 and 13,000 features in each release •  22 to 26 architectures •  Approximately 7000 feature per architecture specific F.M. •  1,8+ million feature change recorded •  Tool and data available •  https://github.com/NZR/Software-Product-Line-Research 17
  • 18. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Add and remove 493 772 397 1740 612 493 750 609 1068 544 Percentage of changes (architecture average) 100% 90% 80% 70% 60% 50% MODIFIED REMOVED 40% ADDED 30% 20% 10% 0% v2.6.39 v3.0 v3.1 v3.2 v3.3 v3.4 v3.5 Linux releases v3.6 v3.7 v3.8 18
  • 19. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Spread over architectures (modifications) Series1 25 25 Series2 number of impacted architectures Series3 Series4 Series5 20 20 Series6 Series7 Series8 15 15 Series9 Series10 Series11 10 10 Series12 Series13 Series14 5 5 Series15 Series16 Series17 0 0 2.6.39 2 3.0 3.1 4 3.2 3.3 6 3.4 Linux releases 3.5 8 3.6 3.7 10 3.8 19
  • 20. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Questions 1.  What types of changes can be applied to a FM ? Change classification for Kconfig 2.  How can we automate the extraction of feature changes from a large scale FM? We used Undertaker and EMF Compare 3.  How does a large scale SPL FM change over time ? Dataset available… 20
  • 21. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Extracting feature model changes from the Linux Kernel using FMDiff Change classification Tool and approach Feature model change Add Feature CHANGE CATEGORY Remove Feature Modify Feature Change Category Attribute CHANGE SUB-CATEGORY Add Remove Modify Depends Add Remove Modify Type Prompt CHANGE TYPE Add Remove Modify Default Add Remove Modify Default Value Condition References Expression References Add Remove Modify Add Remove Modify Select Add Remove Modify Target Condition References Add Remove Modify Tool and dataset at your disposal https://github.com/NZR/Software-Product-LineResearch Nicolas Dintzner Pr. Arie Van Deursen Pr. Martin Pinzger Contact: Nicolas Dintzner N.J.R.Dintzner@tudelft.nl 21