extracting examples for api usage patterns
TRANSCRIPT
![Page 1: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/1.jpg)
Extracting Examples for API Usage Patterns
Hudson Silva Borges(Msc Student)
Marco Túlio Valente(Advisor)
March 20th, 2014
![Page 2: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/2.jpg)
Agenda
(1) Introduction
(2) Proposed Solution
(3) Evaluation
(4) Conclusions
2March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 3: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/3.jpg)
Introduction
3March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 4: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/4.jpg)
Introduction
● Systems often reuse functionality provided by APIs
● Reusing APIs generally requires a non-trivial effort
● Learning resources are a major obstacle● Documentation is the most severe obstacle
4March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 5: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/5.jpg)
5March 20th, 2014 Extracting Examplesfor API Usage Patterns
Motivation
● Rely on client usage data to improve APIs learning resources
![Page 6: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/6.jpg)
6March 20th, 2014 Extracting Examplesfor API Usage Patterns
Why Examples?
Robillard e DeLine, Empirical Software Engineering – 2011
“code examples are an essential element of API learning”
![Page 7: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/7.jpg)
7March 20th, 2014 Extracting Examplesfor API Usage Patterns
APIMiner 1.0
● Examples for single API methods
![Page 8: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/8.jpg)
8March 20th, 2014 Extracting Examplesfor API Usage Patterns
Problem
Robillard e DeLine, Empirical Software Engineering – 2011
“Small examples that nevertheless demonstrate API usage patterns involving
more than one method call will be more useful than single-call examples”
![Page 9: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/9.jpg)
Proposed Solution
9March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 10: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/10.jpg)
APIMiner 2.0 – Overview
10March 20th, 2014 Extracting Examplesfor API Usage Patterns
Extends APIMiner 1.0 to consider usage patterns and readability improvements to provide
better source code examples
![Page 11: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/11.jpg)
Usage Patterns
● Set of API methods frequently called together
● Example:
open() ⇒ close()
11March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 12: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/12.jpg)
APIMiner 2.0 – Architecture
12March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
![Page 13: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/13.jpg)
Architecture: Source Code Analyzer
13March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
![Page 14: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/14.jpg)
Architecture: Source Code Analyzer
14March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
Client System Method API Calls
A ma1
m1, m
10
A ma2
...
B mb1
m22
B mb2
m2, m
3, m
11
...
![Page 15: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/15.jpg)
Architecture: Patterns Analyzer
15March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
● API Usage Pattern
● Implications of the form X Y⇒
open() ⇒ close()
![Page 16: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/16.jpg)
Patterns Analyzer – Association Rules
16March 20th, 2014 Extracting Examplesfor API Usage Patterns
Client System Method API Calls
A ma1
m1, m
10
A ma2
...
B mb1
m22
B mb2
m2, m
3, m
11
...
● Usage Data
![Page 17: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/17.jpg)
Patterns Analyzer – Association Rules
17March 20th, 2014 Extracting Examplesfor API Usage Patterns
Transaction Items
t1
m1, m
10
t2
...
tn
m22
tn+1
m2, m
3, m
11
...
● Input to the algorithm
![Page 18: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/18.jpg)
Patterns Analyzer – Association Rules
18March 20th, 2014 Extracting Examplesfor API Usage Patterns
Transaction Items
t1
m1, m
3, m
10
t2
m1, m
10
t3
m2, m
3, m
10
t4
m1
t5
m1, m
5, m
8, m
10
t6
m10
● m1, m10
● m1 m⇒ 10
● Algorithm
![Page 19: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/19.jpg)
Patterns Analyzer – Association Rules
19March 20th, 2014 Extracting Examplesfor API Usage Patterns
Transaction Items
t1
m1, m
3, m
10
t2
m1, m
10
t3
m1, m
3, m
9
t4
m2
t5
m1, m
5, m
8, m
10
t6
m10
● m1, m10
● 3 transactions
● m1 m⇒ 10
● Support = 3● Confidence = ( 3 / 4 ) = 75%
● Algorithm
![Page 20: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/20.jpg)
Architecture: Example Extractor
20March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
● For each client's method:
1. Identifies calls to API methods
2. Extracts examples for single API calls
3. Extracts examples for usage patterns
4. Removes similar examples
![Page 21: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/21.jpg)
Architecture: Example Extractor
21March 20th, 2014 Extracting Examplesfor API Usage Patterns
● For each client's method:
1. Identifies calls to API methods
2. Extracts examples for single API calls
3. Extracts examples for usage patterns
4. Removes similar examples
Slicing algorithm
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
![Page 22: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/22.jpg)
Extracting Examples – Readability improvements
22March 20th, 2014 Extracting Examplesfor API Usage Patterns
(1) Variables not identified
![Page 23: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/23.jpg)
Extracting Examples – Readability improvements
23March 20th, 2014 Extracting Examplesfor API Usage Patterns
(1) Variables not identified
![Page 24: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/24.jpg)
Extracting Examples – Readability improvements
24March 20th, 2014 Extracting Examplesfor API Usage Patterns
(1) Variables not identified
Original Extraction
Improved
![Page 25: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/25.jpg)
Extracting Examples – Readability improvements
25March 20th, 2014 Extracting Examplesfor API Usage Patterns
(2) Empty blocks
![Page 26: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/26.jpg)
Extracting Examples – Readability improvements
26March 20th, 2014 Extracting Examplesfor API Usage Patterns
(2) Empty blocks
?
![Page 27: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/27.jpg)
Extracting Examples – Readability improvements
27March 20th, 2014 Extracting Examplesfor API Usage Patterns
(2) Empty blocks
![Page 28: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/28.jpg)
Architecture: Example Extractor
28March 20th, 2014 Extracting Examplesfor API Usage Patterns
JavaDoc
● For each client's method:
1. Identifies calls to API methods
2. Extracts examples for single API calls
3. Extracts examples for usage patterns
4. Removes similar examples
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
![Page 29: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/29.jpg)
Architecture: Ranking Engine
29March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
● Ranking examples● Completeness● Lines of Code● Users Feedback
● Ranking usage patterns● Lift● Number of methods in the association rule
![Page 30: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/30.jpg)
Architecture: JavaDoc Weaver
30March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
![Page 31: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/31.jpg)
Architecture: JavaDoc Weaver
31March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 32: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/32.jpg)
Architecture: JavaDoc Weaver
32March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 33: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/33.jpg)
Evaluation
33March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 34: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/34.jpg)
Android APIMiner 2.0
34March 20th, 2014 Extracting Examplesfor API Usage Patterns
www.apiminer.org
![Page 35: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/35.jpg)
Android APIMiner 2.0
● Version 4.1.2-r1
● 26,540 methods● 2,968 classes
● 17,303 (65.2%) methods with JavaDoc annotation● 2,575 (86.76%) classes with JavaDoc annotation
35March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 36: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/36.jpg)
Mining Dataset
● Script to automatically search and download in Github
● Criteria:● Java Programming language ● Minimum of 50 commits● Not a fork
● Some projects inserted manually
36March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 37: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/37.jpg)
● Numbers:● 396 projects● 57,658 classes ● 450,762 methods● 362,900 calls to API methods.
● Highlight:● CyanogenMod● Astrid● Wordpress
37March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Dataset
![Page 38: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/38.jpg)
● Rigid strategy
● Clients selected based on their popularity among the Android developers community
● Example Dataset Mining Dataset⊆
● Results:● 151 projects● 287,263 examples
38March 20th, 2014 Extracting Examplesfor API Usage Patterns
Example Dataset
![Page 39: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/39.jpg)
Transactions
● Number of method calls in the useful transactions
39March 20th, 2014 Extracting Examplesfor API Usage Patterns
010
2030
API methods calls
% o
f use
ful t
rans
actio
ns
2 4 6 8 10 14 18 22 26 30 34 38
Median of 3
Mean of 4.6
![Page 40: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/40.jpg)
Transactions
● Intra-class and Inter-class calls in useful transactions
40March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 41: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/41.jpg)
Association Rules
● Problem: What values to use for support and confidence?
● Our strategy:● A not very large number of rules● Maximize the API methods coverage
● Tests varying the values of support and confidence
41March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 42: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/42.jpg)
Association Rules
● Number of rules by varying the minimum support value
42March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 43: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/43.jpg)
Association Rules
● API methods coverage by varying the minimum support value
43March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 44: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/44.jpg)
Association Rules
● Used values:● Support = 21● Confidence = 70%
● Results:● 38,661 rules● 1,952 rules with antecedent size equal one● Coverage of 624 API methods; 191 API classes
44March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 45: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/45.jpg)
Examples
45March 20th, 2014 Extracting Examplesfor API Usage Patterns
● 151 Android client systems
● 287,263 examples● 102,442 examples for single API methods ● 184,821 examples for the usage patterns
● Coverage:● 3,915 Android API methods (14.75%) ● 549 Android API classes (18.5%)
![Page 46: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/46.jpg)
Examples
46March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Size of the examples
● For single API methods● 50% have at most three lines of code
● For usage patterns● 50% have at most 14 lines of code
![Page 47: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/47.jpg)
Ranking
47March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Activity.findViewById(int)
● API method with more examples
● Top 20 examples analyzed
● Examples size equal 1
● No compilation problems
![Page 48: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/48.jpg)
Activity.findViewById(int)
48March 20th, 2014 Extracting Examplesfor API Usage Patterns
● To return a value
● In an assignment
● As a target
● In a casting
![Page 49: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/49.jpg)
Usage Patterns
49March 20th, 2014 Extracting Examplesfor API Usage Patterns
● MediaRecorder.prepare()
● First usage patterns recommended:
MediaRecorder.prepare()
MediaRecorder.start()
MediaRecorder.setAudioSource(int)
MediaRecorder.setOutputFile(String)
![Page 50: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/50.jpg)
MediaRecorder.prepare()
50March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 51: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/51.jpg)
MediaRecorder.prepare()
51March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 52: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/52.jpg)
MediaRecorder.prepare()
52March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 53: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/53.jpg)
MediaRecorder.prepare()
53March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 54: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/54.jpg)
MediaRecorder.prepare()
54March 20th, 2014 Extracting Examplesfor API Usage Patterns
● http://developer.android.com/reference/android/media/MediaRecorder.html
![Page 55: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/55.jpg)
MediaRecorder.prepare()
55March 20th, 2014 Extracting Examplesfor API Usage Patterns
● http://developer.android.com/reference/android/media/MediaRecorder.html
![Page 56: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/56.jpg)
Field Study
56March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 57: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/57.jpg)
Field Study
57March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Period of 13th May 2013 to 11th October 2013 (five months)
● No promotions
● Total of 32,335 visits
![Page 58: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/58.jpg)
Field Study
58March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Top ten countries in visits
![Page 59: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/59.jpg)
Field Study
59March 20th, 2014 Extracting Examplesfor API Usage Patterns
● 5,545 requests for single API examples
● 2,601 (46.9%) clicks on “Example” button
● 176 requests for usage patterns
● 135 (out of 536) API methods with usage pattern were requested
![Page 60: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/60.jpg)
User Study
60March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 61: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/61.jpg)
User Study
61March 20th, 2014 Extracting Examplesfor API Usage Patterns
● 29 subjects
● Two corrective maintenance tasks in a small Android app
Do the recommendations provided by APIMiner 2.0 help developers to implement
maintenance tasks with less effort?
Do the recommendations provided by APIMiner 2.0 help developers to implement
maintenance tasks with less effort?
![Page 62: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/62.jpg)
More Aqui
62March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 63: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/63.jpg)
Maintenance Tasks
63March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Designed to represent real maintenance activities
● Tasks with requirements well defined
● Tasks:● Obtaining location (Tutorial)● Inserting new properties● System messages
● Automated tests to check
● Crossover methodology
![Page 64: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/64.jpg)
64March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Number of subjects who completed the tasks
User Study – Results
![Page 65: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/65.jpg)
65March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Number of subjects who completed the tasks
User Study – Results
![Page 66: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/66.jpg)
66March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Number of subjects who completed the tasks
User Study – Results
![Page 67: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/67.jpg)
67March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Time spent in the tasks
User Study – Results
![Page 68: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/68.jpg)
68March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Examples Requests
● 686 examples requests for single API methods● 182 examples requests for usage patterns
● 23 examples for single API methods by subject● 6 examples for usage patterns examples by subject
User Study – Results
![Page 69: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/69.jpg)
Conclusions
69March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 70: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/70.jpg)
Contributions
70March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Usage patterns examples
● Readability improvements
● Android APIMiner 2.0● 1,952 usage patterns for 624 API methods● 287,263 examples● www.apiminer.org
● Evaluation● Data produced when creating the instance● Usage data obtained from real Android developers● Controlled experiment with 29 subjects
![Page 71: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/71.jpg)
Future Work
71March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Detect different usage types among the examples
● Ranking criteria based on readability
● Other static slicing implementations
![Page 72: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/72.jpg)
Publications
72March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Montandon J. E. et al. Documenting APIs with Examples: Lessons Learned with the APIMiner Platform. In 20th Working Conference on Reverse Engineering (WCRE), 2013.
● Borges H. S. et al. APIMiner 2.0: Recomendaçao de exemplos de uso de APIs usando regras de associaçao. IV Congresso Brasileiro de Software: Teoria e Prática (Sessão de Ferramentas), 2013.
● Borges H. S.. APIMiner 2.0: Recomendação de Exemplos de Uso de APIs usando Regras de Associação. Poster, ELA-ES, 2013.
![Page 75: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/75.jpg)
Architecture: API and Client systems
75March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
● API Source Code
API’s source code
● API Clients to Mining and Selected API Clients
Repository with API client systems
![Page 76: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/76.jpg)
Architecture: Mining Database
76March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
● Database that stores the data generated by the Source Code Analyzer
![Page 77: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/77.jpg)
Architecture: Examples Database
77March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
● Store examples and usage patterns produced
![Page 78: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/78.jpg)
Architecture: JavaDoc
78March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Database
Patterns Analyzer
APISourceCode
API Clients to
Mining
Souce Code Analyzer
Examples Extractor
Examples Database
JavaDoc
RankingEngine JavaDoc Weaver
Selected API Clients
● Output of the proposed approach
![Page 79: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/79.jpg)
● Ratio of methods with at least an API call among the systems
● Considering all client methods● In median, for each 3 methods are called 4 API methods● 75% of the systems had a ratio between 0.78 and 4.40 API
calls/method
● Considering only client methods with API method calls● In median, for each 3 methods are called 9 API methods● 50% of the projects have between 2.72 and 3.89 API
calls/method
79March 20th, 2014 Extracting Examplesfor API Usage Patterns
Mining Dataset
![Page 80: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/80.jpg)
Transactions
● Transaction = Client method
● Input to the association rules algorithm
● Not all clients' methods call an API method
● Transactions with a single call are not relevant
80March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 81: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/81.jpg)
Transactions
● Characterization of the all 512,993 transactions
81March 20th, 2014 Extracting Examplesfor API Usage Patterns
77.42%
9.19%
13.38%
Without calls
With a single calls
With more than one call
![Page 82: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/82.jpg)
Transactions
● Characterization of the all 512,993 transactions
82March 20th, 2014 Extracting Examplesfor API Usage Patterns
77.42%
9.19%
13.38%
Without calls
With a single calls
With more than one call
![Page 83: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/83.jpg)
Transactions
● Percentage of useful transactions per project
83March 20th, 2014 Extracting Examplesfor API Usage Patterns
Average of 30.49%
Median of 26.53%
![Page 84: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/84.jpg)
Transactions
● Top five most common transaction items
84March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 85: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/85.jpg)
Association Rules
85March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Top five rules with higher support
![Page 86: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/86.jpg)
Examples
86March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Number of API method calls in the examples
![Page 87: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/87.jpg)
Examples
87March 20th, 2014 Extracting Examplesfor API Usage Patterns
● API methods with more examples
![Page 88: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/88.jpg)
Examples
88March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Classes that most appeared in all examples
![Page 89: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/89.jpg)
Usage Patterns
89March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Usage patterns without examples
● 280 association rules (14% of 1,952)
● 88 API methods out of the 624 distinct API methods
![Page 90: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/90.jpg)
Field Study
90March 20th, 2014 Extracting Examplesfor API Usage Patterns
● 31 evaluations of examples by end-users
● Examples of 26 API methods
● Methods with more evaluations:● Color.rgb(int, int, int)
● ViewPager.OnPageChangeListener.onPageSelected(int)
● Intent.getStringArrayExtra(String)
● NotificationCompat.Builder.setVibrate(long[])
![Page 91: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/91.jpg)
NotificationCompat.Builder.setVibrate(long[])
91March 20th, 2014 Extracting Examplesfor API Usage Patterns
![Page 92: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/92.jpg)
User Study – Setup
92March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Subject characterization
● Crossover methodology● Group A and Group B
● Restrictions:● Subjects should have skills on the Java● Subjects should not be experts in the Android platform
![Page 93: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/93.jpg)
User Study – Execution
93March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Brief introduction
● More Aqui App
● Task Obtaining location as tutorial
● Subjects:
1. Read the description
2. Register the starting time
3. Run the automated test
4. Perform the task
5. Register the ending time
![Page 94: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/94.jpg)
User Study – Results
94March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Knowledge of the subjects in the Java
![Page 95: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/95.jpg)
95March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Knowledge of the subjects in the Android
User Study – Results
![Page 96: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/96.jpg)
96March 20th, 2014 Extracting Examplesfor API Usage Patterns
● Professional experience of the subjects (in years)
User Study – Results
![Page 97: Extracting Examples for API Usage Patterns](https://reader033.vdocuments.us/reader033/viewer/2022052907/559392481a28ab1e198b460f/html5/thumbnails/97.jpg)
Related Work
97March 20th, 2014 Extracting Examplesfor API Usage Patterns
● IDE-based Recommendation Systems
● Vertical Code Completion (VCC)● Mining API Code Snippets (MACs)
● API Documentation
● APIMiner 1.0● ExoaDocs
● APIMiner 2.0