Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API...

17
Evaluating Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion 1 Daqing Hou, David M. Pletcher Clarkson University, Potsdam NY 1 Wednesday, September 28, 2011

description

Paper: An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion Authors: Daqing Hou and Dave PletcherSession: Research Track Session 8 -Program Comprehension

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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