Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API...
-
Upload
icsm-2011 -
Category
Technology
-
view
665 -
download
0
description
Transcript of Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API...
![Page 1: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/1.jpg)
Evaluating Strategies of Sorting, Filtering, and Grouping API Methods
for Code Completion
1
Daqing Hou, David M. Pletcher
Clarkson University, Potsdam NY
1Wednesday, September 28, 2011
![Page 2: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/2.jpg)
Evaluating Strategies of Sorting, Filtering, and Grouping API Methods
for Code Completion
2
2Wednesday, September 28, 2011
![Page 3: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/3.jpg)
Information Overloading
3
• Large APIsex: JDK 1.6, 3,777 classes and interfaces
• Learning barriers [Ko et al. 2004]- design- selection- coordination & use- information & understand
3Wednesday, September 28, 2011
![Page 4: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/4.jpg)
Evaluating Strategies of Sorting, Filtering, and Grouping API Methods
for Code Completion
4
4Wednesday, September 28, 2011
![Page 5: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/5.jpg)
Code Completion as Antidotecurrent
5
• In Eclipse, completion proposals sortedalphabetically or by-relevance.
5Wednesday, September 28, 2011
![Page 6: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/6.jpg)
Evaluating Strategies of Sorting, Filtering, and Grouping API Methods
for Code Completion
6
BCC: Better Code Completion
6Wednesday, September 28, 2011
![Page 7: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/7.jpg)
Code Completion as Antidotenew - 2 ways of sorting
7
• type-based sorting
7Wednesday, September 28, 2011
![Page 8: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/8.jpg)
Code Completion as Antidotenew - 2 ways of sorting
8
• use count-based sorting
8Wednesday, September 28, 2011
![Page 9: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/9.jpg)
Code Completion as Antidotenew - filtering
9
1. public, non-API methodsex: javax.swing.JComponent.updateUI()
2. Visible only for limited receiver typesex: JPanel.add(), but not JButton.add()
3. Visible in subclass onlyex: java.awt.Component.paint()
9Wednesday, September 28, 2011
![Page 10: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/10.jpg)
Code Completion as Antidotenew - grouping
10
• Display logically related methods together
ex: add()/getComponent()/remove() for a Container
• Filtering and grouping rules for each API need to be specified only once.
10Wednesday, September 28, 2011
![Page 11: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/11.jpg)
Evaluating Strategies of Sorting, Filtering, and Grouping API Methods
for Code Completion
11
11Wednesday, September 28, 2011
![Page 12: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/12.jpg)
Evaluation Methodology
12
• Compare 14 configurations with Eclipse’s by-relevance as baseline in terms of rank reduction. - rank reduction (7)- primer (2)- structuring (5)
• 9 open-source projects
• Metric- rank for an API method- project-wide rank
12Wednesday, September 28, 2011
![Page 13: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/13.jpg)
Evaluation Result 1: Rank Reduction
13
7 configurations ordered by rank reduction!
Best: regular dynamic ranking!
13Wednesday, September 28, 2011
![Page 14: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/14.jpg)
Evaluation Result 2: Primer7/9 dynamic primers worse than regular dynamic ranking!
adjusted primers mixed results!
14
14Wednesday, September 28, 2011
![Page 15: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/15.jpg)
Evaluation Result 3: Structuring
15
• Two mechanisms: grouping and static primers.
• Regular dynamic ranking+grouping is the best configuration for grouping.
• 8/9 static primers are better than type+filtering.
• Static primers worse than regular dynamic ranking+grouping, but can still be useful.
15Wednesday, September 28, 2011
![Page 16: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/16.jpg)
Design Recommendations
16
• Regular dynamic ranking and adjusted primers for rank reduction.
• Regular dynamic ranking+grouping for additional benefit of API learning.
• Static primers worse than regular dynamic ranking+grouping, but can still be useful.
• Provide multiple options for developers choose from.
16Wednesday, September 28, 2011
![Page 17: Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion](https://reader034.fdocuments.in/reader034/viewer/2022042613/54b4a87c4a7959a0168b4607/html5/thumbnails/17.jpg)
Conclusion and future work
17
• Implemented Code Completion strategies for moving forward needed API methods, hiding non-API public methods, and grouping API methods according to their semantic relatedness.
• Evaluated 14 configurations of these strategies on 9 projects that use AWT/Swing.
• Gave design recommendations.
• Future work includes user studies for features such as grouping, and ways to make primers work.
• Contact me for BCC source code.
17Wednesday, September 28, 2011