SlideShare a Scribd company logo
1 of 59
Download to read offline
1
From Concepts to
Implementation:
Why I Missed My First Paper
Submission Deadline
Miguel Velez
Software Engineering Ph.D. student
From Concepts to
Engineering (Problems)
Research Overview
2
Research Overview
3
Efficiently Measure Performance of Highly
Configurable Systems
4
Execution Time
5
Configuration Performance
A=0 B=0 C=0 D=0 6s
A=0 B=0 C=1 D=1 6s
A=1 B=0 C=0 D=1 9s
… …
T	=	6	+	3A	+	1AB
Ideally
6
Identify what configurations to measure
Not measure all configurations
Our Proposal: Exploit Structure and
Behavior of the Program to Measure
Performance
7
White-Box Analysis
8
Approach: Combine Static Taint Analysis
with Dynamic Analysis
9
Goal
10
Static Taint Analysis
11
Static Taint Analysis
12
Static Taint Analysis
13
Static Taint Analysis
14
Static Taint Analysis
15
Static Taint Analysis
16
Static Taint Analysis
17
Static Taint Analysis
18
Static Taint Analysis
19
Static Taint Analysis
20
Regions and Options
21
22
Regions and Options
Dynamic Analysis
23
Transform AST
24
25
Building Performance Table
26
Building Performance Table
27
Building Performance Table
28
Building Performance Table
29
Building Performance Table
30
Building Performance Table
31
Overview of the Approach
Program
Workload
Identify
Regions
Compress
Configurations Instrument
and
Execute
Build
Performance
Model
PM
From Concepts to Engineering (Problems)
32
Timeline
33
Fall
Survey
January
Idea
March
Sleep Implementation
FOSD Meeting
Timeline
34
April
Java Implementation
Paper Outline
Aim for GPCE 2017
July 2nd
GPCE Paper
Deadline
Timeline
35
April
Java Implementation
Paper Outline
Aim for GPCE 2017
July 2nd
GPCE Paper
Deadline
Late June
36
Program
Workload
Identify
Regions
Compress
Configurations Instrument
and
Execute
Build
Performance
Model
PM
37
Goal
38
Identify
Regions
Tracking Load-time Configuration Options
Max Lillack
University of Leipzig, Germany
Christian Kästner
Carnegie Mellon University, USA
Eric Bodden
Fraunhofer SIT &
TU Darmstadt, Germany
ABSTRACT
Highly-configurable software systems are pervasive, although
configuration options and their interactions raise complexity
of the program and increase maintenance e↵ort. Especially
load-time configuration options, such as parameters from
command-line options or configuration files, are used with
standard programming constructs such as variables and if
statements intermixed with the program’s implementation;
manually tracking configuration options from the time they
are loaded to the point where they may influence control-
flow decisions is tedious and error prone. We design and
implement Lotrack, an extended static taint analysis to
automatically track configuration options. Lotrack derives
a configuration map that explains for each code fragment un-
der which configurations it may be executed. An evaluation
on Android applications shows that Lotrack yields high
accuracy with reasonable performance. We use Lotrack to
empirically characterize how much of the implementation of
Android apps depends on the platform’s configuration op-
tions or interactions of these options.
Categories and Subject Descriptors
K.6.3 [Software Management]: Software maintenance
Keywords
Variability mining; Configuration options; Static analysis
1. INTRODUCTION
Software has become increasingly configurable to support
di↵erent requirements for a wide range of customers and
market segments. Configuration options can be used to
support alternative hardware, cater for backward compat-
ibility, enable extra functionality, add debugging facilities,
and much more. While configuration mechanisms allow end
users to use the software in more contexts, they also raise the
software’s complexity for developers, adding more function-
ality that needs to be tested and maintained. Even worse,
Permission to make digital or hard copies of all or part of this work for personal or
classroom use is granted without fee provided that copies are not made or distributed
for profit or commercial advantage and that copies bear this notice and the full citation
on the first page. Copyrights for components of this work owned by others than the
author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or
republish, to post on servers or to redistribute to lists, requires prior specific permission
and/or a fee. Request permissions from permissions@acm.org.
ASE’14, September 15-19, 2014, Vasteras, Sweden.
Copyright is held by the owner/author(s). Publication rights licensed to ACM.
ACM 978-1-4503-3013-8/14/09 ...$15.00.
http://dx.doi.org/10.1145/2642937.2643001.
configuration options may interact in unanticipated ways
and subtle behavior may hide in specific combinations of
options that are di cult to discover and understand in the
exponentially growing configuration space. Configuration
options raise challenges since they vary and thus complicate
the software’s control and data flow. As a result, develop-
ers need to trace configuration options through the software
to identify which code fragments are a↵ected by an option
and where and how options may interact. Overall, making
changes becomes harder because developers need to under-
stand a larger context and may need to retest many config-
urations.
There are many strategies to implement configuration op-
tions, but particularly common and problematic is to use
load-time parameters (command-line options, configuration
files, registry entries, and so forth): Parameters are loaded
and used as ordinary values within the program at runtime,
and configuration decisions are made through ordinary con-
trol statements (such as if statements) within a common im-
plementation. The implementation of configuration options
with plugins or conditional compilation provide some static
traceability of an option’s implementation which is miss-
ing in load-time configuration options. Identifying the code
fragments implementing an option requires tedious manual
e↵ort and, as our evaluation confirms, is challenging to get
right even in medium-size software systems.
In this work, we propose Lotrack,1
a tool to statically
track configuration options from the moment they are loaded
in the program to the code that is directly or indirectly af-
fected. Specifically, Lotrack aims at identifying all code
that is included if and only if a specific configuration option
or combination of configuration options is selected. The re-
covered traceability can support developers in many main-
tenance tasks [11], but, in the long run, can also be used
as input for further automated tasks, such as removing a
configuration option and its use from the program, translat-
ing load-time into compile-time options, or guaranteeing the
absence of interactions among configuration options. In con-
trast to slicing [32], which determines whether a statement’s
execution depends on a given value, Lotrack determines
under which configurations, i.e., a set of selected configura-
tion options, a given statement is executed.
To track configuration options precisely, we exploit the na-
ture of how configuration options are typically implemented.
Although a na¨ıve forward-slicing algorithm can identify all
code potentially a↵ected by a configuration option, directly
or indirectly, in practice, it will frequently return slices that
1
https://github.com/MaxLillack/Lotrack
Lotrack
39
Identify
Regions
Tracking Load-time Configuration Options
Max Lillack
University of Leipzig, Germany
Christian Kästner
Carnegie Mellon University, USA
Eric Bodden
Fraunhofer SIT &
TU Darmstadt, Germany
ABSTRACT
Highly-configurable software systems are pervasive, although
configuration options and their interactions raise complexity
of the program and increase maintenance e↵ort. Especially
load-time configuration options, such as parameters from
command-line options or configuration files, are used with
standard programming constructs such as variables and if
statements intermixed with the program’s implementation;
manually tracking configuration options from the time they
are loaded to the point where they may influence control-
flow decisions is tedious and error prone. We design and
implement Lotrack, an extended static taint analysis to
automatically track configuration options. Lotrack derives
a configuration map that explains for each code fragment un-
der which configurations it may be executed. An evaluation
on Android applications shows that Lotrack yields high
accuracy with reasonable performance. We use Lotrack to
empirically characterize how much of the implementation of
Android apps depends on the platform’s configuration op-
tions or interactions of these options.
Categories and Subject Descriptors
K.6.3 [Software Management]: Software maintenance
Keywords
Variability mining; Configuration options; Static analysis
1. INTRODUCTION
Software has become increasingly configurable to support
di↵erent requirements for a wide range of customers and
market segments. Configuration options can be used to
support alternative hardware, cater for backward compat-
ibility, enable extra functionality, add debugging facilities,
and much more. While configuration mechanisms allow end
users to use the software in more contexts, they also raise the
software’s complexity for developers, adding more function-
ality that needs to be tested and maintained. Even worse,
Permission to make digital or hard copies of all or part of this work for personal or
classroom use is granted without fee provided that copies are not made or distributed
for profit or commercial advantage and that copies bear this notice and the full citation
on the first page. Copyrights for components of this work owned by others than the
author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or
republish, to post on servers or to redistribute to lists, requires prior specific permission
and/or a fee. Request permissions from permissions@acm.org.
ASE’14, September 15-19, 2014, Vasteras, Sweden.
Copyright is held by the owner/author(s). Publication rights licensed to ACM.
ACM 978-1-4503-3013-8/14/09 ...$15.00.
http://dx.doi.org/10.1145/2642937.2643001.
configuration options may interact in unanticipated ways
and subtle behavior may hide in specific combinations of
options that are di cult to discover and understand in the
exponentially growing configuration space. Configuration
options raise challenges since they vary and thus complicate
the software’s control and data flow. As a result, develop-
ers need to trace configuration options through the software
to identify which code fragments are a↵ected by an option
and where and how options may interact. Overall, making
changes becomes harder because developers need to under-
stand a larger context and may need to retest many config-
urations.
There are many strategies to implement configuration op-
tions, but particularly common and problematic is to use
load-time parameters (command-line options, configuration
files, registry entries, and so forth): Parameters are loaded
and used as ordinary values within the program at runtime,
and configuration decisions are made through ordinary con-
trol statements (such as if statements) within a common im-
plementation. The implementation of configuration options
with plugins or conditional compilation provide some static
traceability of an option’s implementation which is miss-
ing in load-time configuration options. Identifying the code
fragments implementing an option requires tedious manual
e↵ort and, as our evaluation confirms, is challenging to get
right even in medium-size software systems.
In this work, we propose Lotrack,1
a tool to statically
track configuration options from the moment they are loaded
in the program to the code that is directly or indirectly af-
fected. Specifically, Lotrack aims at identifying all code
that is included if and only if a specific configuration option
or combination of configuration options is selected. The re-
covered traceability can support developers in many main-
tenance tasks [11], but, in the long run, can also be used
as input for further automated tasks, such as removing a
configuration option and its use from the program, translat-
ing load-time into compile-time options, or guaranteeing the
absence of interactions among configuration options. In con-
trast to slicing [32], which determines whether a statement’s
execution depends on a given value, Lotrack determines
under which configurations, i.e., a set of selected configura-
tion options, a given statement is executed.
To track configuration options precisely, we exploit the na-
ture of how configuration options are typically implemented.
Although a na¨ıve forward-slicing algorithm can identify all
code potentially a↵ected by a configuration option, directly
or indirectly, in practice, it will frequently return slices that
1
https://github.com/MaxLillack/Lotrack
Lotrack
40
Identify
Regions
Implements a static taint analysis for Java!
Problems with Lotrack
41
Identify
Regions
Lack of documentation
Collaborator graduated
Lengthy and complicated installation process
Assumptions, bugs, and scalability issues
Output is not what I expected
42
Affected Components
Program
Workload
Identify
Regions
Compress
Configurations Instrument
and
Execute
Build
Performance
Model
PM
Lessons Learned
43
Do not reinvent the wheel (if you can)
Research tools are difficult to use and have
limitations
People are willing to help
TODO
NAME
44
Program
Workload
Identify
Regions
Compress
Configurations Instrument
and
Execute
Build
Performance
Model
PM
45
ASM 4.0
A Java bytecode engineering library
Eric Bruneton
Bytecode Manipulation
46
Instrument
and
Execute
Lessons Learned
47
Attend SSSG talks
Ask help from research group and more senior
students
Instrument
and
Execute
48
Program
Workload
Identify
Regions
Compress
Configurations Instrument
and
Execute
Build
Performance
Model
PM
49
Compression Algorithm
50
Researchers at FOSD Meeting developed an
algorithm
Limited to pairwise sampling
Compress
Configurations
Lessons Learned
51
Network with other researchers
Compress
Configurations
Other Factors
52
Class Report
53
Using Domain Knowledge and Data Analysis to Predict
Configuration Validity in Highly Configurable Systems
Miguel Velez
Institute for Software Research
mvelezce@cs.cmu.edu
Abstract
Highly configurable systems provide a large number of at-
tributes and features that we can tune to customize the sys-
tem to our specific needs. However, there are some config-
urations in the system that make it crash or not satisfy its
functional or non-functional requirements. It is important to
identify and specify the distinction between valid and invalid
configurations since it allows to check that the system com-
plies with its requirements and that we do not spend a long
time executing the system for it to eventually crash or not
function properly. In this paper, we propose to use domain
knowledge and data analysis techniques to predict the con-
figuration validity in highly configurable systems. The rule-
based model generated using the JRip classifier after our data
analysis yielded a performance of 0.828 and correctly classi-
fied 91.45% of instances on a new set. The model generated
in this project will allow us to reduce the cost of running
experiments on a robotics system.
1. Introduction
Configurable software systems, including web servers, robots,
and compilers, allow stakeholders to make customizations
and adjustments to satisfy various functional and non-
functional requirements depending on specific tasks and
needs. The hundreds or thousands of options in these highly
configurable systems create an exponential configuration
space that make it difficult to analyze and understand their
influence on the behavior and performance of the system.
While some configurations produce different functional-
ity and behavior, other configurations violate the state of the
system or make it not behave as expected. These valid and
invalid configurations, respectively, determine the outcome
of executing the system using those settings. Valid config-
urations make the system complete the task that the sys-
tem was assigned, such as compiling a program or making a
robot go to a specific point on a map. Invalid configurations,
on the other hand, prevent the system from completing the
assigned task or completing it without satisfying the com-
pletion requirements. This might be due to a violation of the
internal state of the system, such as selecting options that
should not be selected concurrently, or a configuration that
does not make the system behave as expected, such as reply-
ing to an HTTP request after several seconds.
Previous work on specifying and identifying configura-
tion validity in highly configurable systems is limited and
narrow. In Feature-Oriented Programming (FOP) [2] and
Software Product Lines (SPL) [3], feature models are usu-
ally included with the systems, which specify the valid con-
figurations of the system. However, they are used sparsely
and might only cover invalid configurations that produce in-
valid states of the system. Other systems use other methods
to report invalid configurations [11]. However, they are also
rarely used in practice. There are several static and dynamic
approaches to analyze configurations in highly configurable
systems [6, 7, 9]. However, their focus is not on identify-
ing configuration validity, but rather on understanding other
aspects of the system.
In this project, we propose a solution to predict the
validity of configurations in highly configurable systems.
With data collected for performance analysis of the local-
ization algorithm of the TurtleBot [10]; a highly config-
urable robotics system, we used domain knowledge of the
system and applied data analysis techniques to generate a
rule-based model using the JRip classifier implementation in
Weka1
. The model we learned using our modeling assump-
tions yielded a performance of 0.828 and correctly classified
91.45% of configurations on a new set. This model will re-
duce the cost of running experiments on this system since
invalid configurations will not be executed in the real robot.
2. Configuration Validity in Configurable
Systems
In this paper, we define the validity of a configuration as the
outcome of assigning a task to the system. A valid configu-
ration allows the system to complete its assigned task within
a specified time limit, while an invalid configuration hinders
the system from completing its task within the time limit or
makes the system crash.
Our goal is to determine the configuration validity in
highly configurable systems. That is, we want to know what
1 http://www.cs.waikato.ac.nz/ml/weka/
Class Report
54
“Failing a class is not
as bad as not being
productive on your
research” -Anonymous
Ph.D. student
Using Domain Knowledge and Data Analysis to Predict
Configuration Validity in Highly Configurable Systems
Miguel Velez
Institute for Software Research
mvelezce@cs.cmu.edu
Abstract
Highly configurable systems provide a large number of at-
tributes and features that we can tune to customize the sys-
tem to our specific needs. However, there are some config-
urations in the system that make it crash or not satisfy its
functional or non-functional requirements. It is important to
identify and specify the distinction between valid and invalid
configurations since it allows to check that the system com-
plies with its requirements and that we do not spend a long
time executing the system for it to eventually crash or not
function properly. In this paper, we propose to use domain
knowledge and data analysis techniques to predict the con-
figuration validity in highly configurable systems. The rule-
based model generated using the JRip classifier after our data
analysis yielded a performance of 0.828 and correctly classi-
fied 91.45% of instances on a new set. The model generated
in this project will allow us to reduce the cost of running
experiments on a robotics system.
1. Introduction
Configurable software systems, including web servers, robots,
and compilers, allow stakeholders to make customizations
and adjustments to satisfy various functional and non-
functional requirements depending on specific tasks and
needs. The hundreds or thousands of options in these highly
configurable systems create an exponential configuration
space that make it difficult to analyze and understand their
influence on the behavior and performance of the system.
While some configurations produce different functional-
ity and behavior, other configurations violate the state of the
system or make it not behave as expected. These valid and
invalid configurations, respectively, determine the outcome
of executing the system using those settings. Valid config-
urations make the system complete the task that the sys-
tem was assigned, such as compiling a program or making a
robot go to a specific point on a map. Invalid configurations,
on the other hand, prevent the system from completing the
assigned task or completing it without satisfying the com-
pletion requirements. This might be due to a violation of the
internal state of the system, such as selecting options that
should not be selected concurrently, or a configuration that
does not make the system behave as expected, such as reply-
ing to an HTTP request after several seconds.
Previous work on specifying and identifying configura-
tion validity in highly configurable systems is limited and
narrow. In Feature-Oriented Programming (FOP) [2] and
Software Product Lines (SPL) [3], feature models are usu-
ally included with the systems, which specify the valid con-
figurations of the system. However, they are used sparsely
and might only cover invalid configurations that produce in-
valid states of the system. Other systems use other methods
to report invalid configurations [11]. However, they are also
rarely used in practice. There are several static and dynamic
approaches to analyze configurations in highly configurable
systems [6, 7, 9]. However, their focus is not on identify-
ing configuration validity, but rather on understanding other
aspects of the system.
In this project, we propose a solution to predict the
validity of configurations in highly configurable systems.
With data collected for performance analysis of the local-
ization algorithm of the TurtleBot [10]; a highly config-
urable robotics system, we used domain knowledge of the
system and applied data analysis techniques to generate a
rule-based model using the JRip classifier implementation in
Weka1
. The model we learned using our modeling assump-
tions yielded a performance of 0.828 and correctly classified
91.45% of configurations on a new set. This model will re-
duce the cost of running experiments on this system since
invalid configurations will not be executed in the real robot.
2. Configuration Validity in Configurable
Systems
In this paper, we define the validity of a configuration as the
outcome of assigning a task to the system. A valid configu-
ration allows the system to complete its assigned task within
a specified time limit, while an invalid configuration hinders
the system from completing its task within the time limit or
makes the system crash.
Our goal is to determine the configuration validity in
highly configurable systems. That is, we want to know what
1 http://www.cs.waikato.ac.nz/ml/weka/
Stress
55
“Don’t feel bad”
“Your Ph.D. is not a sprint;
it is a marathon”
“You cannot work everyday
for that long”
Summary
56
Efficiently measure performance of highly
configurable systems
A lot work from concepts to implementation
Have fun!
WARNING:
Challenges
Ahead
57
Overview of the Approach
Program
Workload
Identify
Regions
Compress
Configurations Instrument
and
Execute
Build
Performance
Model
PM
Wanted a Production Level Program
58
Attempted to develop the perfect
product
Had to be fully automated
Complicated
Modularized components
Saved intermediate results
Additional
59
Keenan Crane (kmcrane@cs.cmu.edu)

More Related Content

What's hot

Reengineering framework for open source software using decision tree approach
Reengineering framework for open source software using decision tree approachReengineering framework for open source software using decision tree approach
Reengineering framework for open source software using decision tree approachIJECEIAES
 
Software Engineering unit 4
Software Engineering unit 4Software Engineering unit 4
Software Engineering unit 4Abhimanyu Mishra
 
Software Engineering
Software Engineering Software Engineering
Software Engineering JayaKamal
 
SE18_Lec 13_ Project Planning
SE18_Lec 13_ Project PlanningSE18_Lec 13_ Project Planning
SE18_Lec 13_ Project PlanningAmr E. Mohamed
 
EFFECTIVE IMPLEMENTATION OF AGILE PRACTICES – OBJECT ORIENTED METRICS TOOL TO...
EFFECTIVE IMPLEMENTATION OF AGILE PRACTICES – OBJECT ORIENTED METRICS TOOL TO...EFFECTIVE IMPLEMENTATION OF AGILE PRACTICES – OBJECT ORIENTED METRICS TOOL TO...
EFFECTIVE IMPLEMENTATION OF AGILE PRACTICES – OBJECT ORIENTED METRICS TOOL TO...ijseajournal
 
A controlled experiment in assessing and estimating software maintenance tasks
A controlled experiment in assessing and estimating software maintenance tasks A controlled experiment in assessing and estimating software maintenance tasks
A controlled experiment in assessing and estimating software maintenance tasks sadique_ghitm
 
Performance Evaluation using Blackboard Technique in Software Architecture
Performance Evaluation using Blackboard Technique in Software ArchitecturePerformance Evaluation using Blackboard Technique in Software Architecture
Performance Evaluation using Blackboard Technique in Software ArchitectureEditor IJCATR
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering JayaKamal
 
CS8494 SOFTWARE ENGINEERING Unit-4
CS8494 SOFTWARE ENGINEERING Unit-4CS8494 SOFTWARE ENGINEERING Unit-4
CS8494 SOFTWARE ENGINEERING Unit-4SIMONTHOMAS S
 
SE2_Lec 20_Software Testing
SE2_Lec 20_Software TestingSE2_Lec 20_Software Testing
SE2_Lec 20_Software TestingAmr E. Mohamed
 
Software Engineering
Software Engineering Software Engineering
Software Engineering JayaKamal
 
View Alignment Techniques
View Alignment TechniquesView Alignment Techniques
View Alignment TechniquesJIGAR MAKHIJA
 
SE18_Lec 01_Introduction to Software Engineering
SE18_Lec 01_Introduction to Software EngineeringSE18_Lec 01_Introduction to Software Engineering
SE18_Lec 01_Introduction to Software EngineeringAmr E. Mohamed
 
Ch25-Software Engineering 9
Ch25-Software Engineering 9Ch25-Software Engineering 9
Ch25-Software Engineering 9Ian Sommerville
 
Dependence flow graph for analysis
Dependence flow graph for analysisDependence flow graph for analysis
Dependence flow graph for analysisijseajournal
 
Sa 006 modifiability
Sa 006 modifiabilitySa 006 modifiability
Sa 006 modifiabilityFrank Gielen
 

What's hot (20)

Reengineering framework for open source software using decision tree approach
Reengineering framework for open source software using decision tree approachReengineering framework for open source software using decision tree approach
Reengineering framework for open source software using decision tree approach
 
A03720106
A03720106A03720106
A03720106
 
Software Engineering unit 4
Software Engineering unit 4Software Engineering unit 4
Software Engineering unit 4
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
SE18_Lec 13_ Project Planning
SE18_Lec 13_ Project PlanningSE18_Lec 13_ Project Planning
SE18_Lec 13_ Project Planning
 
EFFECTIVE IMPLEMENTATION OF AGILE PRACTICES – OBJECT ORIENTED METRICS TOOL TO...
EFFECTIVE IMPLEMENTATION OF AGILE PRACTICES – OBJECT ORIENTED METRICS TOOL TO...EFFECTIVE IMPLEMENTATION OF AGILE PRACTICES – OBJECT ORIENTED METRICS TOOL TO...
EFFECTIVE IMPLEMENTATION OF AGILE PRACTICES – OBJECT ORIENTED METRICS TOOL TO...
 
A controlled experiment in assessing and estimating software maintenance tasks
A controlled experiment in assessing and estimating software maintenance tasks A controlled experiment in assessing and estimating software maintenance tasks
A controlled experiment in assessing and estimating software maintenance tasks
 
Performance Evaluation using Blackboard Technique in Software Architecture
Performance Evaluation using Blackboard Technique in Software ArchitecturePerformance Evaluation using Blackboard Technique in Software Architecture
Performance Evaluation using Blackboard Technique in Software Architecture
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering
 
CS8494 SOFTWARE ENGINEERING Unit-4
CS8494 SOFTWARE ENGINEERING Unit-4CS8494 SOFTWARE ENGINEERING Unit-4
CS8494 SOFTWARE ENGINEERING Unit-4
 
SE2_Lec 20_Software Testing
SE2_Lec 20_Software TestingSE2_Lec 20_Software Testing
SE2_Lec 20_Software Testing
 
Ijcatr04051006
Ijcatr04051006Ijcatr04051006
Ijcatr04051006
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
View Alignment Techniques
View Alignment TechniquesView Alignment Techniques
View Alignment Techniques
 
SE18_Lec 01_Introduction to Software Engineering
SE18_Lec 01_Introduction to Software EngineeringSE18_Lec 01_Introduction to Software Engineering
SE18_Lec 01_Introduction to Software Engineering
 
Ch25-Software Engineering 9
Ch25-Software Engineering 9Ch25-Software Engineering 9
Ch25-Software Engineering 9
 
Se
SeSe
Se
 
ct-acd32093-2
ct-acd32093-2ct-acd32093-2
ct-acd32093-2
 
Dependence flow graph for analysis
Dependence flow graph for analysisDependence flow graph for analysis
Dependence flow graph for analysis
 
Sa 006 modifiability
Sa 006 modifiabilitySa 006 modifiability
Sa 006 modifiability
 

Similar to From Concepts to Implementation: Why I Missed My First Paper Submission Deadline

Software Engineering Important Short Question for Exams
Software Engineering Important Short Question for ExamsSoftware Engineering Important Short Question for Exams
Software Engineering Important Short Question for ExamsMuhammadTalha436
 
Configurability for Cloud-Native Applications: Observability and Control
Configurability for Cloud-Native Applications: Observability and ControlConfigurability for Cloud-Native Applications: Observability and Control
Configurability for Cloud-Native Applications: Observability and ControlCognizant
 
Software Process Models
 Software Process Models  Software Process Models
Software Process Models MohsinAli773
 
Quality Attribute: Testability
Quality Attribute: TestabilityQuality Attribute: Testability
Quality Attribute: TestabilityPranay Singh
 
A Comparative Study of Forward and Reverse Engineering
A Comparative Study of Forward and Reverse EngineeringA Comparative Study of Forward and Reverse Engineering
A Comparative Study of Forward and Reverse Engineeringijsrd.com
 
1. PERFORMANCE TESTING ON WEB APPLICATION THROUGH HP LOAD1
1. PERFORMANCE TESTING ON WEB APPLICATION THROUGH HP LOAD11. PERFORMANCE TESTING ON WEB APPLICATION THROUGH HP LOAD1
1. PERFORMANCE TESTING ON WEB APPLICATION THROUGH HP LOAD1Jatin Aggarwal
 
1. performance testing on web application through hp load1
1. performance testing on web application through hp load11. performance testing on web application through hp load1
1. performance testing on web application through hp load1Jatin Aggarwal
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkRed Hat Developers
 
term paper for cbd models
term paper for cbd modelsterm paper for cbd models
term paper for cbd modelsSukhdeep Singh
 
3Audit Software & Tools.pptx
3Audit Software & Tools.pptx3Audit Software & Tools.pptx
3Audit Software & Tools.pptxjack952975
 
System analsis and design
System analsis and designSystem analsis and design
System analsis and designRizwan Kabir
 
Testing-as-a-Service (TaaS) – Capabilities and Features for Real-Time Testing...
Testing-as-a-Service (TaaS) – Capabilities and Features for Real-Time Testing...Testing-as-a-Service (TaaS) – Capabilities and Features for Real-Time Testing...
Testing-as-a-Service (TaaS) – Capabilities and Features for Real-Time Testing...AIRCC Publishing Corporation
 
TESTING-AS-A-SERVICE (TAAS) – CAPABILITIES AND FEATURES FOR REAL-TIME TESTING...
TESTING-AS-A-SERVICE (TAAS) – CAPABILITIES AND FEATURES FOR REAL-TIME TESTING...TESTING-AS-A-SERVICE (TAAS) – CAPABILITIES AND FEATURES FOR REAL-TIME TESTING...
TESTING-AS-A-SERVICE (TAAS) – CAPABILITIES AND FEATURES FOR REAL-TIME TESTING...ijcsit
 
Top 8 Trends in Performance Engineering
Top 8 Trends in Performance EngineeringTop 8 Trends in Performance Engineering
Top 8 Trends in Performance EngineeringConvetit
 
Improved Strategy for Distributed Processing and Network Application Developm...
Improved Strategy for Distributed Processing and Network Application Developm...Improved Strategy for Distributed Processing and Network Application Developm...
Improved Strategy for Distributed Processing and Network Application Developm...Editor IJCATR
 
Improved Strategy for Distributed Processing and Network Application Development
Improved Strategy for Distributed Processing and Network Application DevelopmentImproved Strategy for Distributed Processing and Network Application Development
Improved Strategy for Distributed Processing and Network Application DevelopmentEditor IJCATR
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introductionVishal Singh
 

Similar to From Concepts to Implementation: Why I Missed My First Paper Submission Deadline (20)

Software Engineering Important Short Question for Exams
Software Engineering Important Short Question for ExamsSoftware Engineering Important Short Question for Exams
Software Engineering Important Short Question for Exams
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Waterfall model
Waterfall modelWaterfall model
Waterfall model
 
Configurability for Cloud-Native Applications: Observability and Control
Configurability for Cloud-Native Applications: Observability and ControlConfigurability for Cloud-Native Applications: Observability and Control
Configurability for Cloud-Native Applications: Observability and Control
 
Software Process Models
 Software Process Models  Software Process Models
Software Process Models
 
Quality Attribute: Testability
Quality Attribute: TestabilityQuality Attribute: Testability
Quality Attribute: Testability
 
A Comparative Study of Forward and Reverse Engineering
A Comparative Study of Forward and Reverse EngineeringA Comparative Study of Forward and Reverse Engineering
A Comparative Study of Forward and Reverse Engineering
 
1. PERFORMANCE TESTING ON WEB APPLICATION THROUGH HP LOAD1
1. PERFORMANCE TESTING ON WEB APPLICATION THROUGH HP LOAD11. PERFORMANCE TESTING ON WEB APPLICATION THROUGH HP LOAD1
1. PERFORMANCE TESTING ON WEB APPLICATION THROUGH HP LOAD1
 
1. performance testing on web application through hp load1
1. performance testing on web application through hp load11. performance testing on web application through hp load1
1. performance testing on web application through hp load1
 
Extra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech TalkExtra micrometer practices with Quarkus | DevNation Tech Talk
Extra micrometer practices with Quarkus | DevNation Tech Talk
 
term paper for cbd models
term paper for cbd modelsterm paper for cbd models
term paper for cbd models
 
3Audit Software & Tools.pptx
3Audit Software & Tools.pptx3Audit Software & Tools.pptx
3Audit Software & Tools.pptx
 
System analsis and design
System analsis and designSystem analsis and design
System analsis and design
 
Testing-as-a-Service (TaaS) – Capabilities and Features for Real-Time Testing...
Testing-as-a-Service (TaaS) – Capabilities and Features for Real-Time Testing...Testing-as-a-Service (TaaS) – Capabilities and Features for Real-Time Testing...
Testing-as-a-Service (TaaS) – Capabilities and Features for Real-Time Testing...
 
TESTING-AS-A-SERVICE (TAAS) – CAPABILITIES AND FEATURES FOR REAL-TIME TESTING...
TESTING-AS-A-SERVICE (TAAS) – CAPABILITIES AND FEATURES FOR REAL-TIME TESTING...TESTING-AS-A-SERVICE (TAAS) – CAPABILITIES AND FEATURES FOR REAL-TIME TESTING...
TESTING-AS-A-SERVICE (TAAS) – CAPABILITIES AND FEATURES FOR REAL-TIME TESTING...
 
Top 8 Trends in Performance Engineering
Top 8 Trends in Performance EngineeringTop 8 Trends in Performance Engineering
Top 8 Trends in Performance Engineering
 
Improved Strategy for Distributed Processing and Network Application Developm...
Improved Strategy for Distributed Processing and Network Application Developm...Improved Strategy for Distributed Processing and Network Application Developm...
Improved Strategy for Distributed Processing and Network Application Developm...
 
Improved Strategy for Distributed Processing and Network Application Development
Improved Strategy for Distributed Processing and Network Application DevelopmentImproved Strategy for Distributed Processing and Network Application Development
Improved Strategy for Distributed Processing and Network Application Development
 
Slcm sharbani bhattacharya
Slcm sharbani bhattacharyaSlcm sharbani bhattacharya
Slcm sharbani bhattacharya
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 

Recently uploaded

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Recently uploaded (20)

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

From Concepts to Implementation: Why I Missed My First Paper Submission Deadline

  • 1. 1 From Concepts to Implementation: Why I Missed My First Paper Submission Deadline Miguel Velez Software Engineering Ph.D. student
  • 2. From Concepts to Engineering (Problems) Research Overview 2
  • 4. Efficiently Measure Performance of Highly Configurable Systems 4
  • 5. Execution Time 5 Configuration Performance A=0 B=0 C=0 D=0 6s A=0 B=0 C=1 D=1 6s A=1 B=0 C=0 D=1 9s … … T = 6 + 3A + 1AB
  • 6. Ideally 6 Identify what configurations to measure Not measure all configurations
  • 7. Our Proposal: Exploit Structure and Behavior of the Program to Measure Performance 7
  • 9. Approach: Combine Static Taint Analysis with Dynamic Analysis 9
  • 31. 31 Overview of the Approach Program Workload Identify Regions Compress Configurations Instrument and Execute Build Performance Model PM
  • 32. From Concepts to Engineering (Problems) 32
  • 34. Timeline 34 April Java Implementation Paper Outline Aim for GPCE 2017 July 2nd GPCE Paper Deadline
  • 35. Timeline 35 April Java Implementation Paper Outline Aim for GPCE 2017 July 2nd GPCE Paper Deadline Late June
  • 37. 37
  • 39. Tracking Load-time Configuration Options Max Lillack University of Leipzig, Germany Christian Kästner Carnegie Mellon University, USA Eric Bodden Fraunhofer SIT & TU Darmstadt, Germany ABSTRACT Highly-configurable software systems are pervasive, although configuration options and their interactions raise complexity of the program and increase maintenance e↵ort. Especially load-time configuration options, such as parameters from command-line options or configuration files, are used with standard programming constructs such as variables and if statements intermixed with the program’s implementation; manually tracking configuration options from the time they are loaded to the point where they may influence control- flow decisions is tedious and error prone. We design and implement Lotrack, an extended static taint analysis to automatically track configuration options. Lotrack derives a configuration map that explains for each code fragment un- der which configurations it may be executed. An evaluation on Android applications shows that Lotrack yields high accuracy with reasonable performance. We use Lotrack to empirically characterize how much of the implementation of Android apps depends on the platform’s configuration op- tions or interactions of these options. Categories and Subject Descriptors K.6.3 [Software Management]: Software maintenance Keywords Variability mining; Configuration options; Static analysis 1. INTRODUCTION Software has become increasingly configurable to support di↵erent requirements for a wide range of customers and market segments. Configuration options can be used to support alternative hardware, cater for backward compat- ibility, enable extra functionality, add debugging facilities, and much more. While configuration mechanisms allow end users to use the software in more contexts, they also raise the software’s complexity for developers, adding more function- ality that needs to be tested and maintained. Even worse, Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from permissions@acm.org. ASE’14, September 15-19, 2014, Vasteras, Sweden. Copyright is held by the owner/author(s). Publication rights licensed to ACM. ACM 978-1-4503-3013-8/14/09 ...$15.00. http://dx.doi.org/10.1145/2642937.2643001. configuration options may interact in unanticipated ways and subtle behavior may hide in specific combinations of options that are di cult to discover and understand in the exponentially growing configuration space. Configuration options raise challenges since they vary and thus complicate the software’s control and data flow. As a result, develop- ers need to trace configuration options through the software to identify which code fragments are a↵ected by an option and where and how options may interact. Overall, making changes becomes harder because developers need to under- stand a larger context and may need to retest many config- urations. There are many strategies to implement configuration op- tions, but particularly common and problematic is to use load-time parameters (command-line options, configuration files, registry entries, and so forth): Parameters are loaded and used as ordinary values within the program at runtime, and configuration decisions are made through ordinary con- trol statements (such as if statements) within a common im- plementation. The implementation of configuration options with plugins or conditional compilation provide some static traceability of an option’s implementation which is miss- ing in load-time configuration options. Identifying the code fragments implementing an option requires tedious manual e↵ort and, as our evaluation confirms, is challenging to get right even in medium-size software systems. In this work, we propose Lotrack,1 a tool to statically track configuration options from the moment they are loaded in the program to the code that is directly or indirectly af- fected. Specifically, Lotrack aims at identifying all code that is included if and only if a specific configuration option or combination of configuration options is selected. The re- covered traceability can support developers in many main- tenance tasks [11], but, in the long run, can also be used as input for further automated tasks, such as removing a configuration option and its use from the program, translat- ing load-time into compile-time options, or guaranteeing the absence of interactions among configuration options. In con- trast to slicing [32], which determines whether a statement’s execution depends on a given value, Lotrack determines under which configurations, i.e., a set of selected configura- tion options, a given statement is executed. To track configuration options precisely, we exploit the na- ture of how configuration options are typically implemented. Although a na¨ıve forward-slicing algorithm can identify all code potentially a↵ected by a configuration option, directly or indirectly, in practice, it will frequently return slices that 1 https://github.com/MaxLillack/Lotrack Lotrack 39 Identify Regions
  • 40. Tracking Load-time Configuration Options Max Lillack University of Leipzig, Germany Christian Kästner Carnegie Mellon University, USA Eric Bodden Fraunhofer SIT & TU Darmstadt, Germany ABSTRACT Highly-configurable software systems are pervasive, although configuration options and their interactions raise complexity of the program and increase maintenance e↵ort. Especially load-time configuration options, such as parameters from command-line options or configuration files, are used with standard programming constructs such as variables and if statements intermixed with the program’s implementation; manually tracking configuration options from the time they are loaded to the point where they may influence control- flow decisions is tedious and error prone. We design and implement Lotrack, an extended static taint analysis to automatically track configuration options. Lotrack derives a configuration map that explains for each code fragment un- der which configurations it may be executed. An evaluation on Android applications shows that Lotrack yields high accuracy with reasonable performance. We use Lotrack to empirically characterize how much of the implementation of Android apps depends on the platform’s configuration op- tions or interactions of these options. Categories and Subject Descriptors K.6.3 [Software Management]: Software maintenance Keywords Variability mining; Configuration options; Static analysis 1. INTRODUCTION Software has become increasingly configurable to support di↵erent requirements for a wide range of customers and market segments. Configuration options can be used to support alternative hardware, cater for backward compat- ibility, enable extra functionality, add debugging facilities, and much more. While configuration mechanisms allow end users to use the software in more contexts, they also raise the software’s complexity for developers, adding more function- ality that needs to be tested and maintained. Even worse, Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from permissions@acm.org. ASE’14, September 15-19, 2014, Vasteras, Sweden. Copyright is held by the owner/author(s). Publication rights licensed to ACM. ACM 978-1-4503-3013-8/14/09 ...$15.00. http://dx.doi.org/10.1145/2642937.2643001. configuration options may interact in unanticipated ways and subtle behavior may hide in specific combinations of options that are di cult to discover and understand in the exponentially growing configuration space. Configuration options raise challenges since they vary and thus complicate the software’s control and data flow. As a result, develop- ers need to trace configuration options through the software to identify which code fragments are a↵ected by an option and where and how options may interact. Overall, making changes becomes harder because developers need to under- stand a larger context and may need to retest many config- urations. There are many strategies to implement configuration op- tions, but particularly common and problematic is to use load-time parameters (command-line options, configuration files, registry entries, and so forth): Parameters are loaded and used as ordinary values within the program at runtime, and configuration decisions are made through ordinary con- trol statements (such as if statements) within a common im- plementation. The implementation of configuration options with plugins or conditional compilation provide some static traceability of an option’s implementation which is miss- ing in load-time configuration options. Identifying the code fragments implementing an option requires tedious manual e↵ort and, as our evaluation confirms, is challenging to get right even in medium-size software systems. In this work, we propose Lotrack,1 a tool to statically track configuration options from the moment they are loaded in the program to the code that is directly or indirectly af- fected. Specifically, Lotrack aims at identifying all code that is included if and only if a specific configuration option or combination of configuration options is selected. The re- covered traceability can support developers in many main- tenance tasks [11], but, in the long run, can also be used as input for further automated tasks, such as removing a configuration option and its use from the program, translat- ing load-time into compile-time options, or guaranteeing the absence of interactions among configuration options. In con- trast to slicing [32], which determines whether a statement’s execution depends on a given value, Lotrack determines under which configurations, i.e., a set of selected configura- tion options, a given statement is executed. To track configuration options precisely, we exploit the na- ture of how configuration options are typically implemented. Although a na¨ıve forward-slicing algorithm can identify all code potentially a↵ected by a configuration option, directly or indirectly, in practice, it will frequently return slices that 1 https://github.com/MaxLillack/Lotrack Lotrack 40 Identify Regions Implements a static taint analysis for Java!
  • 41. Problems with Lotrack 41 Identify Regions Lack of documentation Collaborator graduated Lengthy and complicated installation process Assumptions, bugs, and scalability issues Output is not what I expected
  • 43. Lessons Learned 43 Do not reinvent the wheel (if you can) Research tools are difficult to use and have limitations People are willing to help TODO NAME
  • 45. 45
  • 46. ASM 4.0 A Java bytecode engineering library Eric Bruneton Bytecode Manipulation 46 Instrument and Execute
  • 47. Lessons Learned 47 Attend SSSG talks Ask help from research group and more senior students Instrument and Execute
  • 49. 49
  • 50. Compression Algorithm 50 Researchers at FOSD Meeting developed an algorithm Limited to pairwise sampling Compress Configurations
  • 51. Lessons Learned 51 Network with other researchers Compress Configurations
  • 53. Class Report 53 Using Domain Knowledge and Data Analysis to Predict Configuration Validity in Highly Configurable Systems Miguel Velez Institute for Software Research mvelezce@cs.cmu.edu Abstract Highly configurable systems provide a large number of at- tributes and features that we can tune to customize the sys- tem to our specific needs. However, there are some config- urations in the system that make it crash or not satisfy its functional or non-functional requirements. It is important to identify and specify the distinction between valid and invalid configurations since it allows to check that the system com- plies with its requirements and that we do not spend a long time executing the system for it to eventually crash or not function properly. In this paper, we propose to use domain knowledge and data analysis techniques to predict the con- figuration validity in highly configurable systems. The rule- based model generated using the JRip classifier after our data analysis yielded a performance of 0.828 and correctly classi- fied 91.45% of instances on a new set. The model generated in this project will allow us to reduce the cost of running experiments on a robotics system. 1. Introduction Configurable software systems, including web servers, robots, and compilers, allow stakeholders to make customizations and adjustments to satisfy various functional and non- functional requirements depending on specific tasks and needs. The hundreds or thousands of options in these highly configurable systems create an exponential configuration space that make it difficult to analyze and understand their influence on the behavior and performance of the system. While some configurations produce different functional- ity and behavior, other configurations violate the state of the system or make it not behave as expected. These valid and invalid configurations, respectively, determine the outcome of executing the system using those settings. Valid config- urations make the system complete the task that the sys- tem was assigned, such as compiling a program or making a robot go to a specific point on a map. Invalid configurations, on the other hand, prevent the system from completing the assigned task or completing it without satisfying the com- pletion requirements. This might be due to a violation of the internal state of the system, such as selecting options that should not be selected concurrently, or a configuration that does not make the system behave as expected, such as reply- ing to an HTTP request after several seconds. Previous work on specifying and identifying configura- tion validity in highly configurable systems is limited and narrow. In Feature-Oriented Programming (FOP) [2] and Software Product Lines (SPL) [3], feature models are usu- ally included with the systems, which specify the valid con- figurations of the system. However, they are used sparsely and might only cover invalid configurations that produce in- valid states of the system. Other systems use other methods to report invalid configurations [11]. However, they are also rarely used in practice. There are several static and dynamic approaches to analyze configurations in highly configurable systems [6, 7, 9]. However, their focus is not on identify- ing configuration validity, but rather on understanding other aspects of the system. In this project, we propose a solution to predict the validity of configurations in highly configurable systems. With data collected for performance analysis of the local- ization algorithm of the TurtleBot [10]; a highly config- urable robotics system, we used domain knowledge of the system and applied data analysis techniques to generate a rule-based model using the JRip classifier implementation in Weka1 . The model we learned using our modeling assump- tions yielded a performance of 0.828 and correctly classified 91.45% of configurations on a new set. This model will re- duce the cost of running experiments on this system since invalid configurations will not be executed in the real robot. 2. Configuration Validity in Configurable Systems In this paper, we define the validity of a configuration as the outcome of assigning a task to the system. A valid configu- ration allows the system to complete its assigned task within a specified time limit, while an invalid configuration hinders the system from completing its task within the time limit or makes the system crash. Our goal is to determine the configuration validity in highly configurable systems. That is, we want to know what 1 http://www.cs.waikato.ac.nz/ml/weka/
  • 54. Class Report 54 “Failing a class is not as bad as not being productive on your research” -Anonymous Ph.D. student Using Domain Knowledge and Data Analysis to Predict Configuration Validity in Highly Configurable Systems Miguel Velez Institute for Software Research mvelezce@cs.cmu.edu Abstract Highly configurable systems provide a large number of at- tributes and features that we can tune to customize the sys- tem to our specific needs. However, there are some config- urations in the system that make it crash or not satisfy its functional or non-functional requirements. It is important to identify and specify the distinction between valid and invalid configurations since it allows to check that the system com- plies with its requirements and that we do not spend a long time executing the system for it to eventually crash or not function properly. In this paper, we propose to use domain knowledge and data analysis techniques to predict the con- figuration validity in highly configurable systems. The rule- based model generated using the JRip classifier after our data analysis yielded a performance of 0.828 and correctly classi- fied 91.45% of instances on a new set. The model generated in this project will allow us to reduce the cost of running experiments on a robotics system. 1. Introduction Configurable software systems, including web servers, robots, and compilers, allow stakeholders to make customizations and adjustments to satisfy various functional and non- functional requirements depending on specific tasks and needs. The hundreds or thousands of options in these highly configurable systems create an exponential configuration space that make it difficult to analyze and understand their influence on the behavior and performance of the system. While some configurations produce different functional- ity and behavior, other configurations violate the state of the system or make it not behave as expected. These valid and invalid configurations, respectively, determine the outcome of executing the system using those settings. Valid config- urations make the system complete the task that the sys- tem was assigned, such as compiling a program or making a robot go to a specific point on a map. Invalid configurations, on the other hand, prevent the system from completing the assigned task or completing it without satisfying the com- pletion requirements. This might be due to a violation of the internal state of the system, such as selecting options that should not be selected concurrently, or a configuration that does not make the system behave as expected, such as reply- ing to an HTTP request after several seconds. Previous work on specifying and identifying configura- tion validity in highly configurable systems is limited and narrow. In Feature-Oriented Programming (FOP) [2] and Software Product Lines (SPL) [3], feature models are usu- ally included with the systems, which specify the valid con- figurations of the system. However, they are used sparsely and might only cover invalid configurations that produce in- valid states of the system. Other systems use other methods to report invalid configurations [11]. However, they are also rarely used in practice. There are several static and dynamic approaches to analyze configurations in highly configurable systems [6, 7, 9]. However, their focus is not on identify- ing configuration validity, but rather on understanding other aspects of the system. In this project, we propose a solution to predict the validity of configurations in highly configurable systems. With data collected for performance analysis of the local- ization algorithm of the TurtleBot [10]; a highly config- urable robotics system, we used domain knowledge of the system and applied data analysis techniques to generate a rule-based model using the JRip classifier implementation in Weka1 . The model we learned using our modeling assump- tions yielded a performance of 0.828 and correctly classified 91.45% of configurations on a new set. This model will re- duce the cost of running experiments on this system since invalid configurations will not be executed in the real robot. 2. Configuration Validity in Configurable Systems In this paper, we define the validity of a configuration as the outcome of assigning a task to the system. A valid configu- ration allows the system to complete its assigned task within a specified time limit, while an invalid configuration hinders the system from completing its task within the time limit or makes the system crash. Our goal is to determine the configuration validity in highly configurable systems. That is, we want to know what 1 http://www.cs.waikato.ac.nz/ml/weka/
  • 55. Stress 55 “Don’t feel bad” “Your Ph.D. is not a sprint; it is a marathon” “You cannot work everyday for that long”
  • 56. Summary 56 Efficiently measure performance of highly configurable systems A lot work from concepts to implementation Have fun! WARNING: Challenges Ahead
  • 57. 57 Overview of the Approach Program Workload Identify Regions Compress Configurations Instrument and Execute Build Performance Model PM
  • 58. Wanted a Production Level Program 58 Attempted to develop the perfect product Had to be fully automated Complicated Modularized components Saved intermediate results