17-708 software product lines: concepts and ...ckaestne/17708/18_analysis.pdf17-708 software product...
TRANSCRIPT
![Page 1: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/1.jpg)
17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING
CHRISTIAN KAESTNER
CARNEGIE MELLON UNIVERSITY
INSTITUTE FOR SOFTWARE RESEARCH
1
![Page 2: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/2.jpg)
READING ASSIGNMENT NOV 16
Textbook Chapter 9
Nhlabatsi, Armstrong, Robin Laney, and Bashar Nuseibeh. "Feature interaction: the security threat from within software systems." Progress in Informatics 5 (2008): 75-89.
![Page 3: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/3.jpg)
LEARNING GOALS
Understand the challenge of feature interactions
Understand the challenges from requirements level down to implementations
Implementation vs specification and emergent behavior
Apply mitigation strategies
![Page 4: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/4.jpg)
Printer Firmware
Checking Products
2000 Features 100 Printers 30 New Printers per Year
![Page 5: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/5.jpg)
Linux Kernel
Checking Products
10000 Features ? Products
![Page 6: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/6.jpg)
Linux Kernel
Checking Product Line
Implementation with 10000 Features
#ifdef, Frameworks, FOP, AOP, …
![Page 7: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/7.jpg)
DEAD IFDEF CODE DETECTION: UNDERTAKER
![Page 8: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/8.jpg)
true
PRESENCE CONDITIONS
line 1
#ifdef A
line 2
#ifndef B
line 3
#endif
line 4
#elif defined(X)
line 5
#else
line 6
#endif
A
A ∧ ¬ B
A
¬ A ∧ X
¬ A ∧ ¬ X
![Page 9: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/9.jpg)
true
DEAD CODE
line 1
#ifdef A
line 2
#ifndef A
line 3
#endif
line 4
#elif defined(X)
line 5
#else
line 6
#endif
A
A ∧ ¬ A
A
¬ A ∧ X
¬ A ∧ ¬ X
Cannot be selected
Analysis:
SAT(PC(Block i))
Include feature model in
reasoning!
![Page 10: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/10.jpg)
true
DEAD CODE
line 1
#ifdef A
line 2
#ifdef B
line 3
#endif
line 4
#elif defined(X)
line 5
#else
line 6
#endif
A
A ∧ B
A
¬A ∧ X
not A ^ not X
Analysis:
SAT(FM ∧ PC(Block i))
(A v B) ∧ ¬(A ∧ B)
Analyze feature model and
implementation
Cannot be selected
![Page 11: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/11.jpg)
OTHER QUESTIONS
Which files are never compiled?
Which feature modules cannot be included?
Which plugins/packages always have conflicts?
Which features never influence the source code?
Which code fragments seem optional but are not?
![Page 12: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/12.jpg)
FAMILY-BASED ANALYSIS
![Page 13: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/13.jpg)
TYPE CHECKING
Type errors: referenced variable does not exist, …
#include <stdio.h>
char *msg = "Hello World";
int main() {
printf(msg);
}
Reference
![Page 14: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/14.jpg)
#include <stdio.h>
#ifdef WORLD
char *msg = "Hello World";
#endif
#ifdef BYE
char *msg = "Bye bye!";
#endif
int main() {
printf(msg);
}
VARIABILITY-AWARE TYPE CHECKING
![Page 15: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/15.jpg)
#include <stdio.h>
#ifdef WORLD
char *msg = "Hello World";
#endif
#ifdef BYE
char *msg = "Bye bye!";
#endif
int main() {
printf(msg);
}
VARIABILITY-AWARE TYPE CHECKING
Conflict?
Reference?
![Page 16: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/16.jpg)
#include <stdio.h>
#ifdef WORLD
char *msg = "Hello World";
#endif
#ifdef BYE
char *msg = "Bye bye!";
#endif
int main() {
printf(msg);
}
VARIABILITY-AWARE TYPE CHECKING
Conflict?
Reference?
true
true
WORLD
BYE
Presence conditions:
![Page 17: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/17.jpg)
#include <stdio.h>
#ifdef WORLD
char *msg = "Hello World";
#endif
#ifdef BYE
char *msg = "Bye bye!";
#endif
int main() {
printf(msg);
}
VARIABILITY-AWARE TYPE CHECKING
Conflict?
Reference?
true
true
WORLD
BYE
¬ (WORLD ˄ BYE)
true -> (WORLD v BYE)
true -> true
![Page 18: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/18.jpg)
#include <stdio.h>
#ifdef WORLD
char *msg = "Hello World";
#endif
#ifdef BYE
char *msg = "Bye bye!";
#endif
int main() {
printf(msg);
}
REACHABILITY: PC(SOURCE) -> PC(TARGET) CONFLICTS: ¬(PC(DEF1) ˄ PC(DEF2))
Conflict?
Reference?
true
true
WORLD
BYE
¬ (WORLD ˄ BYE)
true -> (WORLD v BYE)
true -> true
![Page 19: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/19.jpg)
#include <stdio.h>
#ifdef WORLD
char *msg = "Hello World";
#endif
#ifdef BYE
char *msg = "Bye bye!";
#endif
int main() {
printf(msg);
}
INCLUDING THE FEATURE MODEL
Conflict?
Reference?
true
true
WORLD
BYE
FM -> ¬ (WORLD ˄ BYE)
FM -> (true -> (WORLD v BYE))
FM -> (true -> true)
P
WORL
D BYE
![Page 20: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/20.jpg)
20
WORLD BYE
BYE WORLD
AST with Variability Information
Extended Reference lookup mechanism
![Page 21: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/21.jpg)
TYPE SYSTEM IN CIDE http://fosd.net/cide
![Page 22: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/22.jpg)
TYPE SYSTEM IN CIDE
public class Test {
private static String msg_hi = "Hello world!”;
private static String msg_bye = "Bye bye!";
public static void main(String[] args) {
System.out.println(msg_hi);
System.out.println(msg_bye);
}
}
Similar implementations available for FOP, AOP
http://www.fosd.de/fuji
![Page 23: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/23.jpg)
![Page 24: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/24.jpg)
Glue-code module
![Page 25: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/25.jpg)
VARIABILITY ENCODING
![Page 26: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/26.jpg)
Variability-Aware
Analysis
Product Configuration
Conventional
Analysis
Complete Analysis
![Page 27: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/27.jpg)
AST with Variability Information
int a = 1;
int b = 0;
#ifdef A
int c = a;
#else
char c = a;
#endif
if (c) {
c += a;
#ifdef B
c /= b;
#endif
}
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def getType(e: V[Expr]): V[Type]
c: int a =
1;
int b =
0;
VA
int c = a;
char c =
a;
if (c)
c += a;
VB ε
c /= b;
VA
int
char
…
![Page 28: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/28.jpg)
6
8
9
14
11
B
char c = a;
c // if (c)
c += a;
c /= b;
...
CFG with Variability Information
¬B
4 int c = a;
A ¬A
2
1
int b = 0;
int a = 1;
def succ(s: Stmt): List[V[Stmt]]
int a = 1;
int b = 0;
#ifdef A
int c = a;
#else
char c = a;
#endif
if (c) {
c += a;
#ifdef B
c /= b;
#endif
}
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
B
A ¬A
VA
4
6
![Page 29: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/29.jpg)
6
8
9
14
11
B
char c = a;
c // if (c)
c += a;
c /= b;
...
CFG with Variability Information
¬B
4 int c = a;
A ¬A
2
1
int b = 0;
int a = 1;
def live(s: Stmt): List[V[Var]]
int a = 1;
int b = 0;
#ifdef A
int c = a;
#else
char c = a;
#endif
if (c) {
c += a;
#ifdef B
c /= b;
#endif
}
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
B
A ¬A
VB
a
b
ε
![Page 30: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/30.jpg)
ARG with Variability Information
def forw(s: Stmt, p: State): List[V[State]]
int a = 1;
int b = 0;
#ifdef A
int c = a;
#else
char c = a;
#endif
if (c) {
c += a;
#ifdef B
c /= b;
#endif
}
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
a=1
b=0
a=1
b=0
c=1
a=1
b=0
c=1
a=1
b=0
c=1
a=1
b=0
c=1
a=1
b=0
c=1
¬A
¬B B
A
Division by zero
in Line 11
¬B(¬AA)
![Page 31: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/31.jpg)
MODULAR ANALYSIS (FEATURE-BASED)
![Page 32: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/32.jpg)
interface Base;
export class Stack {
void push(int v);
}
interface Undo;
import class Stack {
void push(int v);
void top();
}
export class Stack {
void undo();
}
![Page 33: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/33.jpg)
![Page 34: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/34.jpg)
DISCUSSION
![Page 35: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/35.jpg)
PRINCIPLES
Preserve sharing
Late splitting, early joining
Consider variability during analysis
![Page 36: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/36.jpg)
ANALYSES
Product-based
Family-based
Feature-based
Combinations thereof
Thüm, T., Apel, S., Kästner, C., Schaefer, I., & Saake, G. (2014). A
classification and survey of analysis strategies for software product
lines. ACM Computing Surveys (CSUR), 47(1), 6.
![Page 37: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/37.jpg)
LOAD-TIME VARIABILITY
![Page 38: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/38.jpg)
LOAD-TIME OPTIONS
Read from configuration file/command-line options/…
Assumptions:
• Constant at program start, does not change after
• Used differently from other variables (assigned, used in if statements; not part of computations)
(Tool: LoTrack based on taint analysis)
![Page 39: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/39.jpg)
class ProxyService {
static boolean NATIVE_PROXY_SUPPORTED
= Build.VERSION.SDK_INT >= 12;
public void onSharedPreferenceChanged() {
boolean a = false;
if (!NATIVE_PROXY_SUPPORTED) {
if (Context.getSystemService("bluetooth")) {
a = true;
}}
if (a) {
}
39
Data-flow interactions? S
DK
>=
12
SD
K>
=12
BLU
ET.
BLU
ET.
![Page 40: 17-708 Software Product Lines: Concepts and ...ckaestne/17708/18_analysis.pdf17-708 SOFTWARE PRODUCT LINES: CONCEPTS AND IMPLEMENTATION QUALITY ASSURANCE: SAMPLING CHRISTIAN KAESTNER](https://reader030.vdocument.in/reader030/viewer/2022041108/5f0c0fe37e708231d4338ed4/html5/thumbnails/40.jpg)
FURTHER READING
Krzysztof Czarnecki, Krzysztof Pietroszek: Verifying feature-based model templates against well-formedness OCL constraints. GPCE 2006: 211-220 – origin of whole-product line analysis
Christian Kästner, Sven Apel, Thomas Thüm, and Gunter Saake. 2012. Type checking annotation-based product lines. ACM Trans. Softw. Eng. Methodol. 21, 3, Article 14 (July 2012), 39 pages.
-- application to conditional compilation in Java code
TypeChef papers – application to ifdefs in C code, scaling to Linux
Thüm, T., Apel, S., Kästner, C., Schaefer, I., & Saake, G. (2014). A classification and survey of analysis strategies for software product lines. ACM Computing Surveys (CSUR), 47(1), 6.