SlideShare a Scribd company logo
1 of 30
Download to read offline
14 Sep., 2010                     TOKYO INSTITUTE OF TECHNOLOGY
                                   DEPARTMENT OF COMPUTER SCIENCE
ICSM 2010 ERA




                 iFL: An Interactive
Environment for Understanding
   Feature Implementations

        Shinpei Hayashi, Katsuyuki Sekine,
                and Motoshi Saeki
             Department of Computer Science,
            Tokyo Institute of Technology, Japan
Abstract
   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




                                                       2
Background
   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
[Vestdam 04]: “Maintaining Program Understanding – Issues, Tools, and Future Directions”,
Nordic Journal of Computing, 2004.
                                                                                            3
FL Example (Search-based)
   I want to understand                                   scheduler

        the feature
  converting input time
   strings to schedule
         objects…
                                     Source Code
                                 ……
                              public Time(String hour, …) {
        A new                      ......
        maintainer            }
                              …
   FL                         public void createSchedule() {
                                   ......
    schedule time    Search   }
                              public void updateSchedule(…) {
                                  ……
     Feature Location
 (Search-based approach)         Reading these methods
                                 for understanding   4
Problem 1:
How to Find Appropriate Queries?
         FL   How??

                      Search



   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
                                              5
Problem 2:
How to Fix FL Results?
    Complete (Optimum) FL results are rare
     − Accuracy of used FL techniques
     − Individual difference in appropriate code


            An FL result                                    Necessary code
        (code fragments)                                    (false negatives)

     Unnecessary code
      (false positives)

FL
 schedule time     Search



                                      Optimum result
                            (Code fragments that should be understood)      6
Our Solution: Feedbacks
   Added two feedback processes

                      Query Input
                    schedule        Search


                   Feature location
                   (calculating scores)
    Updating   1st: ScheduleManager.addSchedule()       Relevance
    queries    2nd: EditSchedule.inputCheck()
               …                                        feedback
                                                      (addition of hints)
                     Selection and
                   understanding of
                    code fragments
                                   Finish if the user judges that he/she
                                   has read all the necessary code fragments 7
Query Expansion
   Wide query for initial FL
    − By expanding queries to its synonyms
   Narrow query for subsequent FLs
    − By using concrete identifies in source code
     1st FL                                  2nd FL
      schedule* date*       Search             schedule time     Search




Thesaurus               Expand
                                     A code fragment in a FL result
                                     public void createSchedule() {
                                         …
         • schedule • list               String hour = …
         • agenda   • time               Time time = new Time(hour, …);
         • plan     • date               …
                                     }                                    8
Relevance Feedback
   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

                             Dependency

       i th result of FL                  (i+1) th result of FL

         1       2    9        6             1      8     11      6

Code fragment              : relevant              propagation
with its score                                    by dependencies
                                                                      9
Supporting Tool: iFL
   Implemented as an Eclipse plug-in
    − For static analysis: Eclipse JDT
    − For dynamic analysis: Reticella [Noda 09]
    − For a thesaurus: WordNet


                      Exec. Traces /
                                               Synonym
        Reticella
                      dependencies     iFL-      Info.
                                       core              Word
                        Syntactic                        Net
                       information
           JDT
                                              Implemented!
                    Eclipse
                                                                10
Supporting Tool: iFL




                       11
How iFL Works



                Inputting
                 Query




                            12
How iFL Works



                              Calculating
   Evaluated code fragments    scores
       with their scores




                                            13
How iFL Works
           Associated method will be shown
                  in the code editor
          when user selects a code fragment




                                          14
How iFL Works



                 Calculating
                scores again




                               Adding
                                hints
                                        15
How iFL Works



            Scores
            updated




                      16
How iFL Works

  Code
 reading




   FL

                17
Preliminary Evaluation
    A user (familiar with Java and iFL) actually
     understood feature implementations
                                          Non-
     # Correct     # FL    Interactive                                     # Query
                                       interactive   Δ Costs   Overheads
      Events     execution    costs                                        updating
                                          costs

S1     19      5      20      31 0.92         1                              2
S2      7 5 change requirements and0.67 features
               5       8      10      related 1                              1
S3      1 from 2
               Sched 2         2     0.00     1                              0
S4     10 (home-grown, small-sized) 1.00
               6      10      13              0                              2
S5      3      6       6      15 0.75         3                              2
          2 change requirements and related features
J1     10 from 4
               JDraw 20      156 0.93 10                                     2
J2      4 (open-source, medium-sized)0.92 14
               6      18 173                                                 3
                                                                                      18
Evaluation Criteria
                         # selected, but unnecessary code fragments
                        Reduced ratio of overheads
 between interactive and non-interactive approaches
                                          Non-
     # Correct     # FL    Interactive                                     # Query
                                       interactive   Δ Costs   Overheads
      Events     execution    costs                                        updating
                                          costs

S1     19           5          20         31         0.92         1          2
S2      7           5          8          10         0.67         1          1
S3      1           2          2           2         0.00         1          0
S4     10           6          10         13         1.00         0          2
S5      3           6          6          15         0.75         3          2
J1     10           4          20        156         0.93        10          2
J2      4           6          18        173         0.92        14          3
                                                                                      19
Evaluation Results
    Reduced costs for 6 out of 7 cases
     − Especially, reduced 90% of costs for 4 cases
                                           Non-
      # Correct     # FL    Interactive                                     # Query
                                        interactive   Δ Costs   Overheads
       Events     execution    costs                                        updating
                                           costs

S1      19           5          20         31         0.92         1          2
S2       7           5          8          10         0.67         1          1
S3       1           2          2           2         0.00         1          0
S4      10           6          10         13         1.00         0          2
S5       3           6          6          15         0.75         3          2
J1      10           4          20        156         0.93        10          2
J2       4           6          18        173         0.92        14          3
                                                                                       20
Evaluation Results
    Small overheads
     − Sched: 1.2, JDraw: 12 in average
                                           Non-
      # Correct     # FL    Interactive                                     # Query
                                        interactive   Δ Costs   Overheads
       Events     execution    costs                                        updating
                                           costs

S1      19           5          20         31         0.92         1          2
S2       7           5          8          10         0.67         1          1
S3       1           2          2           2         0.00         1          0
S4      10           6          10         13         1.00         0          2
S5       3           6          6          15         0.75         3          2
J1      10           4          20        156         0.93        10          2
J2       4           6          18        173         0.92        14          3
                                                                                       21
Evaluation Results
    No effect in S3
     − Because non-interactive approach is sufficient for understanding
     − Not because of the fault in interactive approach
                                           Non-
      # Correct     # FL    Interactive                                     # Query
                                        interactive   Δ Costs   Overheads
       Events     execution    costs                                        updating
                                           costs

S1      19           5          20         31         0.92         1          2
S2       7           5          8          10         0.67         1          1
S3       1           2          2           2         0.00         1          0
S4      10           6          10         13         1.00         0          2
S5       3           6          6          15         0.75         3          2
J1      10           4          20        156         0.93        10          2
J2       4           6          18        173         0.92        14          3
                                                                                       22
Conclusion
   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


                                                     23
additional slides
The FL Approach
   Based on search-based FL
   Use of static + dynamic analyses

           Static analysis
     Query              Methods with        Hints

                                           
     schedule
                        their scores
Source
 code
                      Execution trace   Evaluating
     Test                               events     Events with
     case             / dependencies
                                                   their scores
                                                    (FL result)
         Dynamic analysis
                                                              25
Static Analysis: eval. methods
    Matching queries to identifiers
Schedule time         Search

             Expand
                                The basic score (BS) of
                                   createSchedule: 21
Thesaurus
                        public void createSchedule() {
     • schedule           …                  20 for method names
     • agenda             String hour = …
     • time               Time time = new Time(hour, …);
     • date               …
                                     1 for local variables
                        }
  Expanded queries
                                                                   26
Dynamic Analysis
   Extracting execution traces and their
    dependencies by executing source code with
    a test case
                                  Dependencies
       Execution trace      (Method invocation relations)
                                         e1
     e1: loadSchedule()
     e2: initWindow()              e2     e3      e6
     e3: createSchedule()
     e4: Time()
     e5: ScheduleModel()                  e4
     e6: updateList()
                                          e5
                                                       27
Evaluating Methods
     Highly scored events are:
      − executing methods having high basic scores
      − Close to highly scored events

                                                      52.2
Events        Methods       BS   Score          e1    (20)
 e1      loadSchedule()     20   52.2
 e2      initWindow()        0   18.7
 e3      createSchedule()   21   38.7     e2    e3           e6
                                                     38.7         19.0
 e4      Time()             20   66.0    18.7        (21)
                                          (0)                      (2)
 e5      ScheduleModel()    31   42.6           e4    66.0
 e6      updateList()        2   19.0                 (20)

                                                e5    42.6
                                                      (31)               28
Selection and Understanding
    Selecting highly ranked events
      − Extracting associated code fragment (method
        body) and reading it to understand


Events       Methods     Scores Rank
 e1      loadSchedule()   52.2 2       Extracted code fragments
 e2      initWindow()     18.7 6          public Time(String hour, …) {
 e3      createSchedule() 38.7   4          …
                                            String hour = …
 e4      Time()           66.0 1            String minute = … …
 e5      ScheduleModel() 42.6    3        }

 e6      updateList()     19.0 5
                                                                          29
Relevance Feedback
     User reads the selected code
      fragments, and adds hints
      − Relevant (): maximum basic score
      − Irrelevant to the feature (): score becomes 0

                                      Basic
Events       Methods        Hints              Scores     Ranks
                                     scores
 e1      loadSchedule()                20     52.2 77.6       2
 e2      initWindow()                   0        18.7         6
 e3      createSchedule()              21     38.7 96.4   4       1
 e4      Time()                    20 46.5   66.0 70.2   1       3
 e5      ScheduleModel()               31     42.6 51.0   3       4
 e6      updateList()                   2        19.0         5
                                                                      30

More Related Content

What's hot

Sentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesSentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesShinpei Hayashi
 
HDR Defence - Software Abstractions for Parallel Architectures
HDR Defence - Software Abstractions for Parallel ArchitecturesHDR Defence - Software Abstractions for Parallel Architectures
HDR Defence - Software Abstractions for Parallel ArchitecturesJoel Falcou
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel ArchitecturesJoel Falcou
 
Datastructure notes
Datastructure notesDatastructure notes
Datastructure notesSrikanth
 
Concept lattices: a representation space to structure software variability
Concept lattices: a representation space to structure software variabilityConcept lattices: a representation space to structure software variability
Concept lattices: a representation space to structure software variabilityRa'Fat Al-Msie'deen
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...Coen De Roover
 
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...ICSM 2011
 
Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?Eelco Visser
 
Automatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSELAutomatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSELJoel Falcou
 
A Recommender System for Refining Ekeko/X Transformation
A Recommender System for Refining Ekeko/X TransformationA Recommender System for Refining Ekeko/X Transformation
A Recommender System for Refining Ekeko/X TransformationCoen De Roover
 
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Coen De Roover
 
02 iec t1_s1_plt_session_02
02 iec t1_s1_plt_session_0202 iec t1_s1_plt_session_02
02 iec t1_s1_plt_session_02Niit Care
 
Programming in java basics
Programming in java  basicsProgramming in java  basics
Programming in java basicsLovelitJose
 
07 iec t1_s1_oo_ps_session_10
07 iec t1_s1_oo_ps_session_1007 iec t1_s1_oo_ps_session_10
07 iec t1_s1_oo_ps_session_10Niit Care
 

What's hot (20)

Sentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesSentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain Ontologies
 
HDR Defence - Software Abstractions for Parallel Architectures
HDR Defence - Software Abstractions for Parallel ArchitecturesHDR Defence - Software Abstractions for Parallel Architectures
HDR Defence - Software Abstractions for Parallel Architectures
 
Boost.Dispatch
Boost.DispatchBoost.Dispatch
Boost.Dispatch
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures
 
Datastructure notes
Datastructure notesDatastructure notes
Datastructure notes
 
Concept lattices: a representation space to structure software variability
Concept lattices: a representation space to structure software variabilityConcept lattices: a representation space to structure software variability
Concept lattices: a representation space to structure software variability
 
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
A Logic Meta-Programming Foundation for Example-Driven Pattern Detection in O...
 
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
 
Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?Declare Your Language: What is a Compiler?
Declare Your Language: What is a Compiler?
 
Automatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSELAutomatic Task-based Code Generation for High Performance DSEL
Automatic Task-based Code Generation for High Performance DSEL
 
Unit3 cspc
Unit3 cspcUnit3 cspc
Unit3 cspc
 
A Recommender System for Refining Ekeko/X Transformation
A Recommender System for Refining Ekeko/X TransformationA Recommender System for Refining Ekeko/X Transformation
A Recommender System for Refining Ekeko/X Transformation
 
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13
 
02 iec t1_s1_plt_session_02
02 iec t1_s1_plt_session_0202 iec t1_s1_plt_session_02
02 iec t1_s1_plt_session_02
 
Cd lab manual
Cd lab manualCd lab manual
Cd lab manual
 
C by balaguruswami - e.balagurusamy
C   by balaguruswami - e.balagurusamyC   by balaguruswami - e.balagurusamy
C by balaguruswami - e.balagurusamy
 
Programming in java basics
Programming in java  basicsProgramming in java  basics
Programming in java basics
 
Compiler Design Unit 4
Compiler Design Unit 4Compiler Design Unit 4
Compiler Design Unit 4
 
07 iec t1_s1_oo_ps_session_10
07 iec t1_s1_oo_ps_session_1007 iec t1_s1_oo_ps_session_10
07 iec t1_s1_oo_ps_session_10
 
C++ Interview Questions
C++ Interview QuestionsC++ Interview Questions
C++ Interview Questions
 

Viewers also liked

Incremental Feature Location and Identification in Source Code
Incremental Feature Location and Identification in Source CodeIncremental Feature Location and Identification in Source Code
Incremental Feature Location and Identification in Source CodeHiroshi Kazato
 
Feature Location for Multi-Layer System Based on Formal Concept Analysis
Feature Location for Multi-Layer System Based on Formal Concept AnalysisFeature Location for Multi-Layer System Based on Formal Concept Analysis
Feature Location for Multi-Layer System Based on Formal Concept AnalysisHiroshi Kazato
 
Modeling and Utilizing Security Knowledge for Eliciting Security Requirements
Modeling and Utilizing Security Knowledge for Eliciting Security RequirementsModeling and Utilizing Security Knowledge for Eliciting Security Requirements
Modeling and Utilizing Security Knowledge for Eliciting Security RequirementsShinpei Hayashi
 
Class Responsibility Assignment as Fuzzy Constraint Satisfaction
Class Responsibility Assignment as Fuzzy Constraint SatisfactionClass Responsibility Assignment as Fuzzy Constraint Satisfaction
Class Responsibility Assignment as Fuzzy Constraint SatisfactionShinpei Hayashi
 
Understanding Source Code Differences by Separating Refactoring Effects
Understanding Source Code Differences by Separating Refactoring EffectsUnderstanding Source Code Differences by Separating Refactoring Effects
Understanding Source Code Differences by Separating Refactoring EffectsShinpei Hayashi
 
Establishing Regulatory Compliance in Goal-Oriented Requirements Analysis
Establishing Regulatory Compliance in Goal-Oriented Requirements AnalysisEstablishing Regulatory Compliance in Goal-Oriented Requirements Analysis
Establishing Regulatory Compliance in Goal-Oriented Requirements AnalysisShinpei Hayashi
 
Refactoring Edit History of Source Code
Refactoring Edit History of Source CodeRefactoring Edit History of Source Code
Refactoring Edit History of Source CodeShinpei Hayashi
 
Historef: A Tool for Edit History Refactoring
Historef: A Tool  for Edit History RefactoringHistoref: A Tool  for Edit History Refactoring
Historef: A Tool for Edit History RefactoringShinpei Hayashi
 
How Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQM
How Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQMHow Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQM
How Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQMShinpei Hayashi
 
Terminology Matching of Requirements Specification Documents and Regulations ...
Terminology Matching of Requirements Specification Documents and Regulations ...Terminology Matching of Requirements Specification Documents and Regulations ...
Terminology Matching of Requirements Specification Documents and Regulations ...Shinpei Hayashi
 
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」Takashi Kobayashi
 

Viewers also liked (11)

Incremental Feature Location and Identification in Source Code
Incremental Feature Location and Identification in Source CodeIncremental Feature Location and Identification in Source Code
Incremental Feature Location and Identification in Source Code
 
Feature Location for Multi-Layer System Based on Formal Concept Analysis
Feature Location for Multi-Layer System Based on Formal Concept AnalysisFeature Location for Multi-Layer System Based on Formal Concept Analysis
Feature Location for Multi-Layer System Based on Formal Concept Analysis
 
Modeling and Utilizing Security Knowledge for Eliciting Security Requirements
Modeling and Utilizing Security Knowledge for Eliciting Security RequirementsModeling and Utilizing Security Knowledge for Eliciting Security Requirements
Modeling and Utilizing Security Knowledge for Eliciting Security Requirements
 
Class Responsibility Assignment as Fuzzy Constraint Satisfaction
Class Responsibility Assignment as Fuzzy Constraint SatisfactionClass Responsibility Assignment as Fuzzy Constraint Satisfaction
Class Responsibility Assignment as Fuzzy Constraint Satisfaction
 
Understanding Source Code Differences by Separating Refactoring Effects
Understanding Source Code Differences by Separating Refactoring EffectsUnderstanding Source Code Differences by Separating Refactoring Effects
Understanding Source Code Differences by Separating Refactoring Effects
 
Establishing Regulatory Compliance in Goal-Oriented Requirements Analysis
Establishing Regulatory Compliance in Goal-Oriented Requirements AnalysisEstablishing Regulatory Compliance in Goal-Oriented Requirements Analysis
Establishing Regulatory Compliance in Goal-Oriented Requirements Analysis
 
Refactoring Edit History of Source Code
Refactoring Edit History of Source CodeRefactoring Edit History of Source Code
Refactoring Edit History of Source Code
 
Historef: A Tool for Edit History Refactoring
Historef: A Tool  for Edit History RefactoringHistoref: A Tool  for Edit History Refactoring
Historef: A Tool for Edit History Refactoring
 
How Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQM
How Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQMHow Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQM
How Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQM
 
Terminology Matching of Requirements Specification Documents and Regulations ...
Terminology Matching of Requirements Specification Documents and Regulations ...Terminology Matching of Requirements Specification Documents and Regulations ...
Terminology Matching of Requirements Specification Documents and Regulations ...
 
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
 

Similar to iFL: An Interactive Environment for Understanding Feature Implementations

iFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsiFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsICSM 2010
 
Loc and function point
Loc and function pointLoc and function point
Loc and function pointMitali Chugh
 
software effort estimation
 software effort estimation software effort estimation
software effort estimationBesharam Dil
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for DevelopersSplunk
 
Java Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayJava Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayLiz Sims
 
Splunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk
 
Reverse Engineering of Module Dependencies
Reverse Engineering of Module DependenciesReverse Engineering of Module Dependencies
Reverse Engineering of Module DependenciesDharmalingam Ganesan
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for DevelopersSplunk
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for DevelopersSplunk
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstEnea Gabriel
 
Se chapter 1,2,3 2 mark qa
Se chapter 1,2,3   2 mark  qaSe chapter 1,2,3   2 mark  qa
Se chapter 1,2,3 2 mark qaAruna M
 
SathishKumar Natarajan
SathishKumar NatarajanSathishKumar Natarajan
SathishKumar NatarajanSathish Kumar
 
Btech IT Sem VII and VIII-1 (1).pdf
Btech IT Sem VII and VIII-1 (1).pdfBtech IT Sem VII and VIII-1 (1).pdf
Btech IT Sem VII and VIII-1 (1).pdfAdityaBhateja1
 
Mapping and visualization of source code a survey
Mapping and visualization of source code a surveyMapping and visualization of source code a survey
Mapping and visualization of source code a surveyNakul Sharma
 
3 Software Estmation.ppt
3 Software Estmation.ppt3 Software Estmation.ppt
3 Software Estmation.pptSoham De
 
Behavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlowBehavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlowRachid Kherrazi
 

Similar to iFL: An Interactive Environment for Understanding Feature Implementations (20)

iFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsiFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature Implementations
 
Loc and function point
Loc and function pointLoc and function point
Loc and function point
 
software effort estimation
 software effort estimation software effort estimation
software effort estimation
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for Developers
 
Java Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage EssayJava Is A Programming Dialect And Registering Stage Essay
Java Is A Programming Dialect And Registering Stage Essay
 
Splunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk for Developers Breakout Session
Splunk for Developers Breakout Session
 
report
reportreport
report
 
Reverse Engineering of Module Dependencies
Reverse Engineering of Module DependenciesReverse Engineering of Module Dependencies
Reverse Engineering of Module Dependencies
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for Developers
 
Framework
FrameworkFramework
Framework
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for Developers
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
Se chapter 1,2,3 2 mark qa
Se chapter 1,2,3   2 mark  qaSe chapter 1,2,3   2 mark  qa
Se chapter 1,2,3 2 mark qa
 
SathishKumar Natarajan
SathishKumar NatarajanSathishKumar Natarajan
SathishKumar Natarajan
 
Btech IT Sem VII and VIII-1 (1).pdf
Btech IT Sem VII and VIII-1 (1).pdfBtech IT Sem VII and VIII-1 (1).pdf
Btech IT Sem VII and VIII-1 (1).pdf
 
Mapping and visualization of source code a survey
Mapping and visualization of source code a surveyMapping and visualization of source code a survey
Mapping and visualization of source code a survey
 
Chapter 12
Chapter 12Chapter 12
Chapter 12
 
3 Software Estmation.ppt
3 Software Estmation.ppt3 Software Estmation.ppt
3 Software Estmation.ppt
 
Behavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlowBehavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlow
 

More from Shinpei Hayashi

Revisiting the Effect of Branch Handling Strategies on Change Recommendation
Revisiting the Effect of Branch Handling Strategies on Change RecommendationRevisiting the Effect of Branch Handling Strategies on Change Recommendation
Revisiting the Effect of Branch Handling Strategies on Change RecommendationShinpei Hayashi
 
An Extensive Study on Smell Aware Bug Localization
An Extensive Study on Smell Aware Bug LocalizationAn Extensive Study on Smell Aware Bug Localization
An Extensive Study on Smell Aware Bug LocalizationShinpei Hayashi
 
RefactorHub: A Commit Annotator for Refactoring
RefactorHub: A Commit Annotator for RefactoringRefactorHub: A Commit Annotator for Refactoring
RefactorHub: A Commit Annotator for RefactoringShinpei Hayashi
 
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?Shinpei Hayashi
 
The Impact of Systematic Edits in History Slicing
The Impact of Systematic Edits in History SlicingThe Impact of Systematic Edits in History Slicing
The Impact of Systematic Edits in History SlicingShinpei Hayashi
 
ChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source Code
ChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source CodeChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source Code
ChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source CodeShinpei Hayashi
 
Inference-Based Detection of Architectural Violations in MVC2
Inference-Based Detection of Architectural Violations in MVC2Inference-Based Detection of Architectural Violations in MVC2
Inference-Based Detection of Architectural Violations in MVC2Shinpei Hayashi
 
Detecting Bad Smells of Refinement in Goal-Oriented Requirements Analysis
Detecting Bad Smells of Refinement in Goal-Oriented Requirements AnalysisDetecting Bad Smells of Refinement in Goal-Oriented Requirements Analysis
Detecting Bad Smells of Refinement in Goal-Oriented Requirements AnalysisShinpei Hayashi
 
ソフトウェア工学勉強会への誘い
ソフトウェア工学勉強会への誘いソフトウェア工学勉強会への誘い
ソフトウェア工学勉強会への誘いShinpei Hayashi
 

More from Shinpei Hayashi (9)

Revisiting the Effect of Branch Handling Strategies on Change Recommendation
Revisiting the Effect of Branch Handling Strategies on Change RecommendationRevisiting the Effect of Branch Handling Strategies on Change Recommendation
Revisiting the Effect of Branch Handling Strategies on Change Recommendation
 
An Extensive Study on Smell Aware Bug Localization
An Extensive Study on Smell Aware Bug LocalizationAn Extensive Study on Smell Aware Bug Localization
An Extensive Study on Smell Aware Bug Localization
 
RefactorHub: A Commit Annotator for Refactoring
RefactorHub: A Commit Annotator for RefactoringRefactorHub: A Commit Annotator for Refactoring
RefactorHub: A Commit Annotator for Refactoring
 
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?
 
The Impact of Systematic Edits in History Slicing
The Impact of Systematic Edits in History SlicingThe Impact of Systematic Edits in History Slicing
The Impact of Systematic Edits in History Slicing
 
ChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source Code
ChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source CodeChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source Code
ChangeMacroRecorder: Recording Fine-Grained Textual Changes of Source Code
 
Inference-Based Detection of Architectural Violations in MVC2
Inference-Based Detection of Architectural Violations in MVC2Inference-Based Detection of Architectural Violations in MVC2
Inference-Based Detection of Architectural Violations in MVC2
 
Detecting Bad Smells of Refinement in Goal-Oriented Requirements Analysis
Detecting Bad Smells of Refinement in Goal-Oriented Requirements AnalysisDetecting Bad Smells of Refinement in Goal-Oriented Requirements Analysis
Detecting Bad Smells of Refinement in Goal-Oriented Requirements Analysis
 
ソフトウェア工学勉強会への誘い
ソフトウェア工学勉強会への誘いソフトウェア工学勉強会への誘い
ソフトウェア工学勉強会への誘い
 

Recently uploaded

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Recently uploaded (20)

Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

iFL: An Interactive Environment for Understanding Feature Implementations

  • 1. 14 Sep., 2010 TOKYO INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE ICSM 2010 ERA iFL: An Interactive Environment for Understanding Feature Implementations Shinpei Hayashi, Katsuyuki Sekine, and Motoshi Saeki Department of Computer Science, Tokyo Institute of Technology, Japan
  • 2. Abstract  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 2
  • 3. Background  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 [Vestdam 04]: “Maintaining Program Understanding – Issues, Tools, and Future Directions”, Nordic Journal of Computing, 2004. 3
  • 4. FL Example (Search-based) I want to understand scheduler the feature converting input time strings to schedule objects… Source Code …… public Time(String hour, …) { A new ...... maintainer } … FL public void createSchedule() { ...... schedule time Search } public void updateSchedule(…) { …… Feature Location (Search-based approach) Reading these methods for understanding 4
  • 5. Problem 1: How to Find Appropriate Queries? FL How?? Search  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 5
  • 6. Problem 2: How to Fix FL Results?  Complete (Optimum) FL results are rare − Accuracy of used FL techniques − Individual difference in appropriate code An FL result Necessary code (code fragments) (false negatives) Unnecessary code (false positives) FL schedule time Search Optimum result (Code fragments that should be understood) 6
  • 7. Our Solution: Feedbacks  Added two feedback processes Query Input schedule Search Feature location (calculating scores) Updating 1st: ScheduleManager.addSchedule() Relevance queries 2nd: EditSchedule.inputCheck() … feedback (addition of hints) Selection and understanding of code fragments Finish if the user judges that he/she has read all the necessary code fragments 7
  • 8. Query Expansion  Wide query for initial FL − By expanding queries to its synonyms  Narrow query for subsequent FLs − By using concrete identifies in source code 1st FL 2nd FL schedule* date* Search schedule time Search Thesaurus Expand A code fragment in a FL result public void createSchedule() { … • schedule • list String hour = … • agenda • time Time time = new Time(hour, …); • plan • date … } 8
  • 9. Relevance Feedback  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 Dependency i th result of FL (i+1) th result of FL 1 2 9 6 1 8 11 6 Code fragment : relevant propagation with its score by dependencies 9
  • 10. Supporting Tool: iFL  Implemented as an Eclipse plug-in − For static analysis: Eclipse JDT − For dynamic analysis: Reticella [Noda 09] − For a thesaurus: WordNet Exec. Traces / Synonym Reticella dependencies iFL- Info. core Word Syntactic Net information JDT Implemented! Eclipse 10
  • 12. How iFL Works Inputting Query 12
  • 13. How iFL Works Calculating Evaluated code fragments scores with their scores 13
  • 14. How iFL Works Associated method will be shown in the code editor when user selects a code fragment 14
  • 15. How iFL Works Calculating scores again Adding hints 15
  • 16. How iFL Works Scores updated 16
  • 17. How iFL Works Code reading FL 17
  • 18. Preliminary Evaluation  A user (familiar with Java and iFL) actually understood feature implementations Non- # Correct # FL Interactive # Query interactive Δ Costs Overheads Events execution costs updating costs S1 19 5 20 31 0.92 1 2 S2 7 5 change requirements and0.67 features 5 8 10 related 1 1 S3 1 from 2 Sched 2 2 0.00 1 0 S4 10 (home-grown, small-sized) 1.00 6 10 13 0 2 S5 3 6 6 15 0.75 3 2 2 change requirements and related features J1 10 from 4 JDraw 20 156 0.93 10 2 J2 4 (open-source, medium-sized)0.92 14 6 18 173 3 18
  • 19. Evaluation Criteria # selected, but unnecessary code fragments Reduced ratio of overheads between interactive and non-interactive approaches Non- # Correct # FL Interactive # Query interactive Δ Costs Overheads Events execution costs updating costs S1 19 5 20 31 0.92 1 2 S2 7 5 8 10 0.67 1 1 S3 1 2 2 2 0.00 1 0 S4 10 6 10 13 1.00 0 2 S5 3 6 6 15 0.75 3 2 J1 10 4 20 156 0.93 10 2 J2 4 6 18 173 0.92 14 3 19
  • 20. Evaluation Results  Reduced costs for 6 out of 7 cases − Especially, reduced 90% of costs for 4 cases Non- # Correct # FL Interactive # Query interactive Δ Costs Overheads Events execution costs updating costs S1 19 5 20 31 0.92 1 2 S2 7 5 8 10 0.67 1 1 S3 1 2 2 2 0.00 1 0 S4 10 6 10 13 1.00 0 2 S5 3 6 6 15 0.75 3 2 J1 10 4 20 156 0.93 10 2 J2 4 6 18 173 0.92 14 3 20
  • 21. Evaluation Results  Small overheads − Sched: 1.2, JDraw: 12 in average Non- # Correct # FL Interactive # Query interactive Δ Costs Overheads Events execution costs updating costs S1 19 5 20 31 0.92 1 2 S2 7 5 8 10 0.67 1 1 S3 1 2 2 2 0.00 1 0 S4 10 6 10 13 1.00 0 2 S5 3 6 6 15 0.75 3 2 J1 10 4 20 156 0.93 10 2 J2 4 6 18 173 0.92 14 3 21
  • 22. Evaluation Results  No effect in S3 − Because non-interactive approach is sufficient for understanding − Not because of the fault in interactive approach Non- # Correct # FL Interactive # Query interactive Δ Costs Overheads Events execution costs updating costs S1 19 5 20 31 0.92 1 2 S2 7 5 8 10 0.67 1 1 S3 1 2 2 2 0.00 1 0 S4 10 6 10 13 1.00 0 2 S5 3 6 6 15 0.75 3 2 J1 10 4 20 156 0.93 10 2 J2 4 6 18 173 0.92 14 3 22
  • 23. Conclusion  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 23
  • 25. The FL Approach  Based on search-based FL  Use of static + dynamic analyses Static analysis Query Methods with Hints   schedule their scores Source code Execution trace Evaluating Test events Events with case / dependencies their scores (FL result) Dynamic analysis 25
  • 26. Static Analysis: eval. methods  Matching queries to identifiers Schedule time Search Expand The basic score (BS) of createSchedule: 21 Thesaurus public void createSchedule() { • schedule … 20 for method names • agenda String hour = … • time Time time = new Time(hour, …); • date … 1 for local variables } Expanded queries 26
  • 27. Dynamic Analysis  Extracting execution traces and their dependencies by executing source code with a test case Dependencies Execution trace (Method invocation relations) e1 e1: loadSchedule() e2: initWindow() e2 e3 e6 e3: createSchedule() e4: Time() e5: ScheduleModel() e4 e6: updateList() e5 27
  • 28. Evaluating Methods  Highly scored events are: − executing methods having high basic scores − Close to highly scored events 52.2 Events Methods BS Score e1 (20) e1 loadSchedule() 20 52.2 e2 initWindow() 0 18.7 e3 createSchedule() 21 38.7 e2 e3 e6 38.7 19.0 e4 Time() 20 66.0 18.7 (21) (0) (2) e5 ScheduleModel() 31 42.6 e4 66.0 e6 updateList() 2 19.0 (20) e5 42.6 (31) 28
  • 29. Selection and Understanding  Selecting highly ranked events − Extracting associated code fragment (method body) and reading it to understand Events Methods Scores Rank e1 loadSchedule() 52.2 2 Extracted code fragments e2 initWindow() 18.7 6 public Time(String hour, …) { e3 createSchedule() 38.7 4 … String hour = … e4 Time() 66.0 1 String minute = … … e5 ScheduleModel() 42.6 3 } e6 updateList() 19.0 5 29
  • 30. Relevance Feedback  User reads the selected code fragments, and adds hints − Relevant (): maximum basic score − Irrelevant to the feature (): score becomes 0 Basic Events Methods Hints Scores Ranks scores e1 loadSchedule() 20 52.2 77.6 2 e2 initWindow() 0 18.7 6 e3 createSchedule() 21 38.7 96.4 4 1 e4 Time()  20 46.5 66.0 70.2 1 3 e5 ScheduleModel() 31 42.6 51.0 3 4 e6 updateList() 2 19.0 5 30