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

Datastructure notes
Datastructure notesDatastructure notes
Datastructure notes
Srikanth
 
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
Niit 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

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 Implementations
ICSM 2010
 
software effort estimation
 software effort estimation software effort estimation
software effort estimation
Besharam Dil
 
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
Liz Sims
 
SathishKumar Natarajan
SathishKumar NatarajanSathishKumar Natarajan
SathishKumar Natarajan
Sathish Kumar
 

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

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

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

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