ifl: an interactive environment for understanding feature implementations
DESCRIPTION
TRANSCRIPT
![Page 1: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/1.jpg)
Shinpei Hayashi, Katsuyuki Sekine,and Motoshi Saeki
Department of Computer Science,Tokyo Institute of Technology, Japan
iFL: An InteractiveEnvironment for Understanding
Feature Implementations
ICSM 2010 ERA14 Sep., 2010 TOKYO INSTITUTE OF TECHNOLOGY
DEPARTMENT OF COMPUTER SCIENCE
![Page 2: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/2.jpg)
We have developed iFL− An environment for program understanding− Interactively supports the understanding of feature
implementation using a feature location technique− Can reduce understanding costs
Abstract
2
![Page 3: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/3.jpg)
Program understanding is costly− Extending/fixing existing features
Understanding the implementation of target feature is necessary
− Dominant of maintenance costs [Vestdam 04]
Our focus: feature/concept location (FL)− Locating/extracting code fragments which
implement the given feature/concept
Background
[Vestdam 04]: “Maintaining Program Understanding – Issues, Tools, and Future Directions”,Nordic Journal of Computing, 2004. 3
![Page 4: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/4.jpg)
FL Example (Search-based)
……public Time(String hour, …) {
......}…public void createSchedule() {
......}public void updateSchedule(…) {
……
scheduler
Source Code
schedule time Search
Feature Location(Search-based approach)
FL
I want to understandthe feature
converting input timestrings to schedule
objects…
Reading these methodsfor understanding 4
A newmaintainer
![Page 5: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/5.jpg)
Constructing appropriate queries requires rich knowledge for the implementation − Times: time, date, hour/minute/second− Images: image, picture, figure
Developers in practice use several keywords for FL through trial and error
Problem 1:How to Find Appropriate Queries?
Search
FL How??
5
![Page 6: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/6.jpg)
Complete (Optimum) FL results are rare− Accuracy of used FL techniques− Individual difference in appropriate code
Problem 2:How to Fix FL Results?
schedule time Search
FL
An FL result(code fragments)
Optimum result(Code fragments that should be understood)
Unnecessary code(false positives)
Necessary code(false negatives)
6
![Page 7: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/7.jpg)
Selection and understanding of code fragments
Query Input
Feature location(calculating scores)
schedule Search
1st: ScheduleManager.addSchedule()2nd: EditSchedule.inputCheck()…
Updatingqueries
Relevancefeedback
(addition of hints)
Added two feedback processesOur Solution: Feedbacks
Finish if the user judges that he/shehas read all the necessary code fragments 7
![Page 8: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/8.jpg)
Wide query for initial FL− By expanding queries to its synonyms
Narrow query for subsequent FLs− By using concrete identifies in source code
Query Expansion
Expand
• schedule• agenda• plan
schedule* date* Search
1st FL
public void createSchedule() {…String hour = …Time time = new Time(hour, …);…
}
schedule time Search
2nd FL
• list• time• date
A code fragment in a FL resultThesaurus
8
![Page 9: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/9.jpg)
Dependency
Code fragmentwith its score
Improving FL results by users feedback− Adding a hint when the selected code fragments
is relevant or irrelevant to the feature− Feedbacks are propagated into other fragments
using dependencies
Relevance Feedback
i th result of FL
1 2 9 6
: relevant
1 8 11 6
(i+1) th result of FL
propagationby dependencies
9
![Page 10: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/10.jpg)
Supporting Tool: iFL Implemented as an Eclipse plug-in
− For static analysis: Eclipse JDT− For dynamic analysis: Reticella [Noda 09]
− For a thesaurus: WordNet
JDT
Reticella iFL-core
Eclipse
WordNet
Exec. Traces /dependencies
Syntacticinformation
SynonymInfo.
Implemented!
10
![Page 11: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/11.jpg)
Supporting Tool: iFL
11
![Page 12: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/12.jpg)
How iFL Works
Inputting Query
12
![Page 13: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/13.jpg)
How iFL Works
Calculating scoresEvaluated code fragments
with their scores
13
![Page 14: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/14.jpg)
How iFL WorksAssociated method will be shown
in the code editorwhen user selects a code fragment
14
![Page 15: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/15.jpg)
How iFL Works
Calculating scores again
15
Adding hints
![Page 16: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/16.jpg)
How iFL Works
Scoresupdated
16
![Page 17: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/17.jpg)
How iFL Works
Codereading
FL
17
![Page 18: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/18.jpg)
A user (familiar with Java and iFL) actually understood feature implementations
Preliminary Evaluation
# CorrectEvents
# FLexecution
Interactivecosts
Non-interactive
costsΔ Costs Overheads # Query
updating
S1 19 5 20 31 0.92 1 2S2 7 5 8 10 0.67 1 1S3 1 2 2 2 0.00 1 0S4 10 6 10 13 1.00 0 2S5 3 6 6 15 0.75 3 2J1 10 4 20 156 0.93 10 2J2 4 6 18 173 0.92 14 3
5 change requirements and related featuresfrom Sched(home-grown, small-sized)
2 change requirements and related featuresfrom JDraw(open-source, medium-sized)
18
![Page 19: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/19.jpg)
Evaluation Criteria
# CorrectEvents
# FLexecution
Interactivecosts
Non-interactive
costsΔ Costs Overheads # Query
updating
S1 19 5 20 31 0.92 1 2S2 7 5 8 10 0.67 1 1S3 1 2 2 2 0.00 1 0S4 10 6 10 13 1.00 0 2S5 3 6 6 15 0.75 3 2J1 10 4 20 156 0.93 10 2J2 4 6 18 173 0.92 14 3
# selected, but unnecessary code fragmentsReduced ratio of overheads
between interactive and non-interactive approaches
19
![Page 20: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/20.jpg)
# CorrectEvents
# FLexecution
Interactivecosts
Non-interactive
costsΔ Costs Overheads # Query
updating
S1 19 5 20 31 0.92 1 2S2 7 5 8 10 0.67 1 1S3 1 2 2 2 0.00 1 0S4 10 6 10 13 1.00 0 2S5 3 6 6 15 0.75 3 2J1 10 4 20 156 0.93 10 2J2 4 6 18 173 0.92 14 3
Reduced costs for 6 out of 7 cases− Especially, reduced 90% of costs for 4 cases
Evaluation Results
20
![Page 21: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/21.jpg)
# CorrectEvents
# FLexecution
Interactivecosts
Non-interactive
costsΔ Costs Overheads # Query
updating
S1 19 5 20 31 0.92 1 2S2 7 5 8 10 0.67 1 1S3 1 2 2 2 0.00 1 0S4 10 6 10 13 1.00 0 2S5 3 6 6 15 0.75 3 2J1 10 4 20 156 0.93 10 2J2 4 6 18 173 0.92 14 3
Small overheads− Sched: 1.2, JDraw: 12 in average
Evaluation Results
21
![Page 22: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/22.jpg)
# CorrectEvents
# FLexecution
Interactivecosts
Non-interactive
costsΔ Costs Overheads # Query
updating
S1 19 5 20 31 0.92 1 2S2 7 5 8 10 0.67 1 1S3 1 2 2 2 0.00 1 0S4 10 6 10 13 1.00 0 2S5 3 6 6 15 0.75 3 2J1 10 4 20 156 0.93 10 2J2 4 6 18 173 0.92 14 3
No effect in S3− Because non-interactive approach is sufficient for understanding− Not because of the fault in interactive approach
Evaluation Results
22
![Page 23: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/23.jpg)
Summary− We developed iFL: interactively supporting the
understanding of feature implementation using FL− iFL can reduce understanding costs in 6 out of 7
cases
Future Work− Evaluation++: on larger-scale projects− Feedback++: for more efficient relevance feedback
• Observing code browsing activities on IDE
Conclusion
23
![Page 24: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/24.jpg)
additional slides
![Page 25: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/25.jpg)
Sourcecode
Execution trace/ dependencies
Dynamic analysis
Methods withtheir scores
Static analysis
EvaluatingeventsTest
case
Queryschedule
Based on search-based FL Use of static + dynamic analyses
The FL Approach
Events withtheir scores(FL result)
Hints
25
![Page 26: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/26.jpg)
Static Analysis: eval. methods Matching queries to identifiers
public void createSchedule() {…String hour = …Time time = new Time(hour, …);…
}
20 for method names
1 for local variables
• schedule• agenda• time• date
Schedule time Search
Thesaurus
The basic score (BS) of createSchedule: 21
Expand
Expanded queries26
![Page 27: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/27.jpg)
Dynamic Analysis Extracting execution traces and their
dependencies by executing source code with a test case
e1: loadSchedule()e2: initWindow()e3: createSchedule()e4: Time()e5: ScheduleModel()e6: updateList()
e1
e3 e6e2
e4
e5
Dependencies(Method invocation relations)Execution trace
27
![Page 28: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/28.jpg)
Evaluating Methods Highly scored events are:
− executing methods having high basic scores− Close to highly scored events
Events Methods BS Scoree1 loadSchedule() 20 52.2e2 initWindow() 0 18.7e3 createSchedule() 21 38.7e4 Time() 20 66.0e5 ScheduleModel() 31 42.6e6 updateList() 2 19.0
e1
e3 e6e2
e4
e5
52.2(20)
18.7(0)
19.0(2)
42.6(31)
66.0(20)
38.7(21)
28
![Page 29: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/29.jpg)
Selection and Understanding Selecting highly ranked events
− Extracting associated code fragment (method body) and reading it to understand
public Time(String hour, …) {…String hour = …String minute = … …
}
Events Methods Scores Ranke1 loadSchedule() 52.2 2e2 initWindow() 18.7 6e3 createSchedule() 38.7 4e4 Time() 66.0 1e5 ScheduleModel() 42.6 3e6 updateList() 19.0 5
Extracted code fragments
29
![Page 30: iFL: An Interactive Environment for Understanding Feature Implementations](https://reader034.vdocument.in/reader034/viewer/2022051816/546efc4fb4af9f130c8b4567/html5/thumbnails/30.jpg)
Relevance Feedback User reads the selected code
fragments, and adds hints− Relevant (): maximum basic score− Irrelevant to the feature (): score becomes 0
Events Methods Hints Basic scores Scores Ranks
e1 loadSchedule() 20 52.2 77.6 2e2 initWindow() 0 18.7 6e3 createSchedule() 21 38.7 96.4 4 1e4 Time() 20 46.5 66.0 70.2 1 3e5 ScheduleModel() 31 42.6 51.0 3 4e6 updateList() 2 19.0 5
30