SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
Sentence-to-Code
 Traceability Recovery
with Domain Ontologies
 Shinpei Hayashi, Takashi Yoshikawa, Motoshi Saeki
            Tokyo Institute of Technology, Japan
NL sentence




                                                               Source code
        Results: It works well!
          − Implemented an automated tool
          − Performed a case study using JDraw
              • Recovered traceability between 7 sentences and code
              • Obtained more accurate results than the cases
                without using ontology
Background
   Documentation-to-code traceability
    links are important
    − For reducing maintenance costs
    − For software reuse & extension
   Our focus: recovering
    sentence-to-code traceability
    − In some software products, there’s only
      documentation of simple sentences without any
      detailed description
      E.g., by use of agile/bazaar-style processes
Example of Sentence
   JDraw (http://jdraw.sf.net/)




                                   4
Example of Sentence
   JDraw (http://jdraw.sf.net/)




                                   5
Example of Sentence
   JDraw (http://jdraw.sf.net/)


      plain, filled and
      gradient filled rectangles
Just single sentence,
no detailed documents




                                   6
Aim
    To detect the set of methods related
     to the input sentence
    NL sentence        Source code
    (a set of words)   (a set of methods)

    Users can draw
    a plain oval.                draw Oval()

                                                                writeLog()
                            getCanvas()        getColor()
                                       setPixel()
                                            getColorPallete()

                         DrawPanel()      OvalTool()
                                                                             7
Challenge
   How to find the correct set?
     − Word similarity: leads to false positives/negatives

    NL sentence              Source code (a set of methods)
    (a set of words)

 Users can draw                         draw Oval()
 a plain oval.
                                                                        writeLog()
             void setPixel(...) {   getCanvas()       getColor()
               ... draw ...                                                False
             }                                setPixel()                   negatives
               False                                getColorPallete()
               positives
                                DrawPanel()       OvalTool()
                                                                                     8
Challenge
    How to find the correct set?
     − Word similarity: leads to false positives/negatives
     − Method invocation: leads to false positives
    NL sentence        Source code (a set of methods)
    (a set of words)                                       False
                                                           positive
    Users can draw               drawOval()
    a plain oval.
                                                               writeLog()
                            getCanvas()       getColor()
                                      setPixel()
                                           getColorPallete()

                        DrawPanel()       OvalTool()
                                                                            9
Challenge
    Another criterion required
     − To judge whether a method invocation is needed
     − Considering the problem domain
    NL sentence        Source code (a set of methods)
    (a set of words)

    Users can draw               drawOval()        Not
    a plain oval.                                  important
                                 important                     writeLog()
                            getCanvas()       getColor()
                                      setPixel()
                                           getColorPallete()

                        DrawPanel()       OvalTool()
                                                                            10
Domain Ontology
   Formally representing the knowledge
    of the target problem domain
    − As relationships between concepts (words)

      canvas        A concept “canvas” is a possible target
                    to “draw”.

       draw         The function “draw”
                    concerns the concept “color”.

                   An ontology for
    oval   color
                   painting tools (excerpt)               11
Solution
   Choosing method invocations
    using domain ontology
    NL sentence        Source code
    (a set of words)   (a set of methods and their invocations)

 Users can draw
 a plain oval.                   draw Oval()
       Ontology
                                                                writeLog()
         canvas             getCanvas()       getColor()
                                      setPixel()
          draw
                                            getColorPallete()

                        DrawPanel()       OvalTool()
      oval    color
                                                                             12
System Overview
  Inputs            Outputs
                   Functional
 Sentence          Call-graphs
                     (FCGs)

 Source           1st
                  score
  Code             100

                  2nd
 Domain           score
                   85
 Ontology

                                 13
Procedure
      NL sentence          Source code
      (a set of words)     (a set of methods and their invocations)
      … draw oval
                                               m1
1. Extracting
   call-graph
                                   m2                  m3
2. Extracting words
3. Extracting functional
   call-graphs (FCGs)                m4             m5
4. Prioritizing FCGs

                              m6             m7           m8
                                                                 14
Procedure
      NL sentence          Source code
      (a set of words)     (a set of methods and their invocations)
      … draw oval
                                               m1
1. Extracting
   call-graph
                                   m2                  m3
   by static analysis
2. Extracting words
3. Extracting functional             m4             m5
   call-graphs (FCGs)
4. Prioritizing FCGs
                              m6             m7           m8
                                                                 15
Procedure
      NL sentence              Source code
      (a set of words)         (a set of methods and their invocations)
      … draw oval                                             {..., draw}
                   {..., draw, oval}                    m1
1. Extracting                                                          {..., color}
                                               {..., draw}
   call-graph
                                        m2                        m3
2. Extracting words
    • Stemming                                  {..., oval}
                                                                       {..., color}
    • Removing stopwords                   m4                 m5
3. Extracting functional
   call-graphs (FCGs)                  {..., pixel}     {..., scale}     {..., log}
4. Prioritizing FCGs
                                   m6                 m7                m8
                                                                                 16
Procedure
     NL sentence         Source code
     (a set of words)    (a set of methods and their invocations)
      … draw oval                      Sa    m1
1. Extracting
   call-graph
                                  m2                 m3
2. Extracting words
3. Extracting
   functional call-                m4             m5
   graphs (FCGs)        Sb
4. Prioritizing FCGs
                             m6             m7          m8
                                                               17
Procedure
     NL sentence             Source code
     (a set of words)        (a set of methods and their invocations)
      … draw oval                          Sa    m1      Score
                                                           100
1. Extracting
   call-graph
                                      m2                 m3
2. Extracting words
3. Extracting functional
   call-graphs (FCGs)                  m4             m5
4. Prioritizing FCGs S
                             b

                    Score        m6             m7          m8
                        85                                         18
Extracting FCGs
        NL sentence        Source code
        (a set of words)   (a set of methods and their invocations)
         {wa, wb}
                                               m1
1. Root selection
                                   m2                  m3

2. Traversal                         m4             m5


                              m6             m7           m8
                                                                 19
Extracting FCGs
        NL sentence        Source code
        (a set of words)   (a set of methods and their invocations)
         {wa, wb}                                           {wa, ...}
                                                  m1
                                               role: {wa}
1. Root selection                         {wb, ...}
– Choose the methods               m2                       m3
  having the words in           role: {wb}
  the input sentence                         {wb, ...}
– These words are                    m4                  m5
                                  role: {wb}
  tagged as roles

2. Traversal                  m6                m7             m8
                                                                        20
Extracting FCGs
         NL sentence        Source code
         (a set of words)   (a set of methods and their invocations)
          {wa, wb}
                                                   m1
                                                 role: {wa}
1. Root selection
2. Traversal                        m2                        m3
– Traverse method                 role: {wb}
  invocations from
  the roots                           m4                 m5
                                    role: {wb}
– Forwards if
  the invocation
  satisfies one of the         m6                m7            m8
  traversal rules
                                                                    21
Extracting FCGs
           NL sentence        Source code
           (a set of words)   (a set of methods and their invocations)
            {wa, wb}
                                                      m1
Rule #1 (Sentence-based)                           role: {wa}
1. Root selection
 holds if the callee method
2. Traversal
 hasTraverse methodgiven
  – a word in the
                                      m2           {..., wb}    m3
                                    role: {wb}
 sentence
    invocations from the
    roots if the invocation             m4
    satisfies one of the              role: {wb}
                                                           m5
    traversal rules

                                 m6                 m7           m8
                                                                      22
Extracting FCGs
           NL sentence        Source code
           (a set of words)   (a set of methods and their invocations)
            {wa, wb}
                                                  m1
                                                role: {wa}
1. Root selection
2. Traversal #2 (Ontology-based)
       Rule
  – Traverse method                  2m                      m3
       holds if the method invocation}
    invocations from the
                               role: {wb                 role: {wc}

       matches the relationships in
    roots if the invocation        m4                          {..., wc}
       the given ontology
    satisfies one of the         role: {wb}
                                                        m5
    traversal rules

                                 m6             m7             m8
                                                                      23
Extracting FCGs
          NL sentence        Source code
          (a set of words)   (a set of methods and their invocations)
           {wa, wb}
                                                 m1
                                               role: {wa}
1. Root selection
2. Traversal
                                m2
  – Traverse method (Inheritance)
                                                            m3
             Rule #3         role: {wb}                 role: {wc}
    invocations from the
    roots if holds if the callee method
             the invocation          m4
    satisfies onea word in the roles of }
             has of the            role: {wb
                                                       m5        {..., wc}
    traversal rules                                 role: {wc}
           the caller method
                                m6             m7                m8
                                                                      24
Ontology-Based Rule
   Holds if the invocation matches the
    relationships in the given ontology
         Ontology       drawOval()
                      role: {draw, oval}
          draw                     Caller


         canvas                   Callee
                       getCanvas()
                       role: {canvas}
                                            25
Extracting FCGs
        NL sentence        Source code
        (a set of words)   (a set of methods and their invocations)
         {wa, wb}                       Sa        m1
                                                role: {wa}
1. Root selection
2. Traversal                       m2                         m3
– Traverse method                role: {wb}                  role: {wc}
  invocations from the
  roots                             m4                 m5
                                   role: {wb}        role: {wc}
– Traversed methods
  will be a FCG      Sb
                              m6                m7                m8
                            role: {…}
                                                                          26
Prioritizing FCGs
 Using an weighting scheme
 Criteria: we prioritize FCGs which
    1. include methods having important roles as their
       names
    2. include method invocations matching to the
       relationships in the ontology and/or the sentence
    3. cover many words in the input sentence




                                                       27
Case Study
   Evaluation target: JDraw 1.1.5
    − We picked up 7 sentences from JDraw's manual
      on the Web
    − Prepared an ontology for painting tools
      (including 38 concepts and 45 relationships)
    − Prepared control (answer) sets of methods by an
      expert
   Evaluation Criteria
    − Calculating precision and recall values by
      comparing the extracted sets with the control
      sets
                                                      28
Results
                             Use of ontology         Yes     Yes      No      No
                Input sentences                     Prec.   Recall   Prec.   Recall
1. "plain, filled and gradient filled rectangles"   0.83    0.94     1.00    0.19
2. "plain, filled and gradient filled ovals"        0.82    0.98     1.00    0.21
3. "image rotation"                                 1.00    0.35     0.00    0.00
4. "image scaling"                                  0.22    0.68     1.00    0.58
5. "save JPEGs of configurable quality"             0.40    1.00     0.67    1.00
6. "colour reduction"                               0.74    0.95     0.74    0.95
7. "grayscaling"                                      -       -        -       -


   Picked up the FCGs having the highest F-
    measure from the results ranked in the top
    5
     − F-measure = 2 / (precision-1 + recall-1)
                                                                                      29
Results
                             Use of ontology         Yes     Yes      No      No
                Input sentences                     Prec.   Recall   Prec.   Recall
1. "plain, filled and gradient filled rectangles"   0.83    0.94     1.00    0.19
2. "plain, filled and gradient filled ovals"        0.82    0.98     1.00    0.21
3. "image rotation"                                 1.00    0.35     0.00    0.00
4. "image scaling"                                  0.22    0.68     1.00    0.58
5. "save JPEGs of configurable quality"             0.40    1.00     0.67    1.00
6. "colour reduction"                               0.74    0.95     0.74    0.95
7. "grayscaling"                                      -       -        -       -


   Accurate results by using the ontology
     − precision > 0.7 for 3 cases
     − recall > 0.9 for 4 cases


                                                                                      30
Results
                             Use of ontology         Yes     Yes      No      No
                Input sentences                     Prec.   Recall   Prec.   Recall
1. "plain, filled and gradient filled rectangles"   0.83    0.94     1.00    0.19
2. "plain, filled and gradient filled ovals"        0.82    0.98     1.00    0.21
3. "image rotation"                                 1.00    0.35     0.00    0.00
4. "image scaling"                                  0.22    0.68     1.00    0.58
5. "save JPEGs of configurable quality"             0.40    1.00     0.67    1.00
6. "colour reduction"                               0.74    0.95     0.74    0.95
7. "grayscaling"                                      -       -        -       -


   Improvement by using the ontology
     − Improved recall for 1st and 2nd cases
     − detected traceability for 3rd case
            Domain ontology gives us valuable guides
            for sentence-to-code traceability recovery.                               31
Future Work
   Case study++
    − Larger
    − Another/multiple domains
 Supporting ontology construction
 Improving NLP techniques
 Combination of other techniques
    − Dynamic analysis
    − Relevance feedback
Example of Sentence                                                                    Solution
   JDraw     (http://jdraw.sf.net/)
                                                                                           Choosing method invocations
                                                                                            using domain ontology
                                                                                           NL sentence          Source code
                                                                                           (a set of words)     (a set of methods and their invocations)

                                                                                           Users can draw
                                                                                           a plain oval.                  draw Oval()
                                                                                              Ontology
                                                                                                                                                          writeLog()
                                                                                                canvas               getCanvas()        getColor()
                                                                                                                                setPixel()
                                                                                                 draw
                                                                                                                                      getColorPallete()

                                                                                                                  DrawPanel()      OvalTool()
                                                                                             oval     color
                                                                                  5                                                                                    12




Procedure                                                                              Results
           NL sentence             Source code
           (a set of words)        (a set of methods and their invocations)
            {wa, wb}
              a   b                             Sa        m1
                                                        role: {wa}
1. Root selection
                                                                a


2. Traversal
  – Traverse method
                                           m2                         m3
                                         role: {wb}                  role: {wc}
    invocations from the                         b                           c


    roots if the invocation
                                            m4                 m5                          Improvement by using the ontology
    satisfies one of the                   role: {wb}
    traversal rules                                b         role: {wc}
                           S   b
                                                                     c
                                                                                            − Improved recall for 1st and 2nd cases
                                                                                            − detected traceability for 3rd case
  – Traversed methods                 m6                m7                m8
    will be a FCG                   role: {…}
                                                                                                    Domain ontology gives us valuable guides
                                                                                  28                for sentence-to-code traceability recovery.                        34
additional slides
System Overview
                                             Words in the
Sentence                                      Sentence
                        Extracting Words
                         splitting, stemming,
             extract
Source     identifiers removing stop words... Words in the
 Code                                           Code
               static
              analysis Call-graph
Domain                                              Functional
Ontology                          Traversing        Call-graphs
                                  call-graph
Inputs                                         Prioritizing


                                 Outputs        Ordered functional
                                                   Call-graphs
                                                                  39
Extracting Call Graph
 Statically extracting invocations
 Consideration of overridden methods
class Tool ....
class OvalTool extends Tool ...          Drawer#     Drawer#
class Drawer {                          startDraw   startDraw
   public void startDraw() {
     Tool tool =               Tool          extracted
                              draw()
        Tool.getCurrent();
     tool.draw();                        Tool#      OvalTool#
   }                         OvalTool
                              draw()     draw         draw
}
                                                                40
Extracting Words
   From source code                                   {starts,
                                                         with,
         Extracting     startsWith,       Tokenizing   starts,
         identifiers   startDraw, ...    camelCases    draw, ...}

   From sentence
                             {draw, a,      Normalizing
    draw a circle            circle}

   Normalization                            {draw,     {start,
    − Stemming                               oval}     draw, ...}
    − Removing stop words
                                                                    41
Bad Results
                             Use of ontology         Yes     Yes      No      No
                Input sentences                     Prec.   Recall   Prec.   Recall
1. "plain, filled and gradient filled rectangles"   0.83    0.94     1.00    0.19
2. "plain, filled and gradient filled ovals"        0.82    0.98     1.00    0.21
3. "image rotation"                                 1.00    0.35     0.00    0.00
4. "image scaling"                                  0.22    0.68     1.00    0.58
5. "save JPEGs of configurable quality"             0.40    1.00     0.67    1.00
6. "colour reduction"                               0.74    0.95     0.74    0.95
7. "grayscaling"                                      -       -        -       -


   Bad effects, no improvement
     − reason: use of external modules
     − reason: use of compound words (grayscale vs. grayScale)


                                                                                      42

Mais conteúdo relacionado

Mais procurados

OpenMI Developers Training
OpenMI Developers TrainingOpenMI Developers Training
OpenMI Developers TrainingJan Gregersen
 
OpenMI Developers Training
OpenMI Developers TrainingOpenMI Developers Training
OpenMI Developers TrainingJan Gregersen
 
Theorie, Praxis und Perspektiven der operationsbasierten formalen Schaltungsv...
Theorie, Praxis und Perspektiven der operationsbasierten formalen Schaltungsv...Theorie, Praxis und Perspektiven der operationsbasierten formalen Schaltungsv...
Theorie, Praxis und Perspektiven der operationsbasierten formalen Schaltungsv...Förderverein Technische Fakultät
 
Dot Call interface
Dot Call interfaceDot Call interface
Dot Call interfaceHao Chai
 
Resource to Performance Tradeoff Adjustment for Fine-Grained Architectures ─A...
Resource to Performance Tradeoff Adjustment for Fine-Grained Architectures ─A...Resource to Performance Tradeoff Adjustment for Fine-Grained Architectures ─A...
Resource to Performance Tradeoff Adjustment for Fine-Grained Architectures ─A...Fahad Cheema
 
Virtual function complete By Abdul Wahab (moon sheikh)
Virtual function complete By Abdul Wahab (moon sheikh)Virtual function complete By Abdul Wahab (moon sheikh)
Virtual function complete By Abdul Wahab (moon sheikh)MoonSheikh1
 
Qcon2011 functions rockpresentation_f_sharp
Qcon2011 functions rockpresentation_f_sharpQcon2011 functions rockpresentation_f_sharp
Qcon2011 functions rockpresentation_f_sharpMichael Stal
 
Qcon2011 functions rockpresentation_scala
Qcon2011 functions rockpresentation_scalaQcon2011 functions rockpresentation_scala
Qcon2011 functions rockpresentation_scalaMichael Stal
 
Oop2011 actor presentation_stal
Oop2011 actor presentation_stalOop2011 actor presentation_stal
Oop2011 actor presentation_stalMichael Stal
 
Method Handles in Java
Method Handles in JavaMethod Handles in Java
Method Handles in Javahendersk
 
L Fu - Dao: a novel programming language for bioinformatics
L Fu - Dao: a novel programming language for bioinformaticsL Fu - Dao: a novel programming language for bioinformatics
L Fu - Dao: a novel programming language for bioinformaticsJan Aerts
 

Mais procurados (18)

Boost.Dispatch
Boost.DispatchBoost.Dispatch
Boost.Dispatch
 
OpenMI Developers Training
OpenMI Developers TrainingOpenMI Developers Training
OpenMI Developers Training
 
OpenMI Developers Training
OpenMI Developers TrainingOpenMI Developers Training
OpenMI Developers Training
 
SRAVANByCPP
SRAVANByCPPSRAVANByCPP
SRAVANByCPP
 
Theorie, Praxis und Perspektiven der operationsbasierten formalen Schaltungsv...
Theorie, Praxis und Perspektiven der operationsbasierten formalen Schaltungsv...Theorie, Praxis und Perspektiven der operationsbasierten formalen Schaltungsv...
Theorie, Praxis und Perspektiven der operationsbasierten formalen Schaltungsv...
 
Dot Call interface
Dot Call interfaceDot Call interface
Dot Call interface
 
Functions
FunctionsFunctions
Functions
 
Basics of building a blackfin application
Basics of building a blackfin applicationBasics of building a blackfin application
Basics of building a blackfin application
 
07. Virtual Functions
07. Virtual Functions07. Virtual Functions
07. Virtual Functions
 
Resource to Performance Tradeoff Adjustment for Fine-Grained Architectures ─A...
Resource to Performance Tradeoff Adjustment for Fine-Grained Architectures ─A...Resource to Performance Tradeoff Adjustment for Fine-Grained Architectures ─A...
Resource to Performance Tradeoff Adjustment for Fine-Grained Architectures ─A...
 
ICPC08b.ppt
ICPC08b.pptICPC08b.ppt
ICPC08b.ppt
 
Virtual function complete By Abdul Wahab (moon sheikh)
Virtual function complete By Abdul Wahab (moon sheikh)Virtual function complete By Abdul Wahab (moon sheikh)
Virtual function complete By Abdul Wahab (moon sheikh)
 
Unit 8
Unit 8Unit 8
Unit 8
 
Qcon2011 functions rockpresentation_f_sharp
Qcon2011 functions rockpresentation_f_sharpQcon2011 functions rockpresentation_f_sharp
Qcon2011 functions rockpresentation_f_sharp
 
Qcon2011 functions rockpresentation_scala
Qcon2011 functions rockpresentation_scalaQcon2011 functions rockpresentation_scala
Qcon2011 functions rockpresentation_scala
 
Oop2011 actor presentation_stal
Oop2011 actor presentation_stalOop2011 actor presentation_stal
Oop2011 actor presentation_stal
 
Method Handles in Java
Method Handles in JavaMethod Handles in Java
Method Handles in Java
 
L Fu - Dao: a novel programming language for bioinformatics
L Fu - Dao: a novel programming language for bioinformaticsL Fu - Dao: a novel programming language for bioinformatics
L Fu - Dao: a novel programming language for bioinformatics
 

Destaque

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
 
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
 
Guiding Identification of Missing Scenarios for Dynamic Feature Location
Guiding Identification of Missing Scenarios for Dynamic Feature LocationGuiding Identification of Missing Scenarios for Dynamic Feature Location
Guiding Identification of Missing Scenarios for Dynamic Feature LocationShinpei Hayashi
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapTakanori Ugai
 
Toward Understanding How Developers Recognize Features in Source Code from De...
Toward Understanding How Developers Recognize Features in Source Code from De...Toward Understanding How Developers Recognize Features in Source Code from De...
Toward Understanding How Developers Recognize Features in Source Code from De...Shinpei 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
 
Supporting Design Model Refactoring for Improving Class Responsibility Assign...
Supporting Design Model Refactoring for Improving Class Responsibility Assign...Supporting Design Model Refactoring for Improving Class Responsibility Assign...
Supporting Design Model Refactoring for Improving Class Responsibility Assign...Shinpei Hayashi
 
Toward Structured Location of Features
Toward Structured Location of FeaturesToward Structured Location of Features
Toward Structured Location of FeaturesHiroshi Kazato
 
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
 
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
 
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
 
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
 
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
 
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 ImplementationsShinpei Hayashi
 
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」Takashi Kobayashi
 

Destaque (17)

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
 
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
 
Guiding Identification of Missing Scenarios for Dynamic Feature Location
Guiding Identification of Missing Scenarios for Dynamic Feature LocationGuiding Identification of Missing Scenarios for Dynamic Feature Location
Guiding Identification of Missing Scenarios for Dynamic Feature Location
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored Map
 
Toward Understanding How Developers Recognize Features in Source Code from De...
Toward Understanding How Developers Recognize Features in Source Code from De...Toward Understanding How Developers Recognize Features in Source Code from De...
Toward Understanding How Developers Recognize Features in Source Code from De...
 
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
 
Supporting Design Model Refactoring for Improving Class Responsibility Assign...
Supporting Design Model Refactoring for Improving Class Responsibility Assign...Supporting Design Model Refactoring for Improving Class Responsibility Assign...
Supporting Design Model Refactoring for Improving Class Responsibility Assign...
 
Toward Structured Location of Features
Toward Structured Location of FeaturesToward Structured Location of Features
Toward Structured Location of Features
 
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
 
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
 
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 ...
 
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
 
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
 
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
 
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
 

Semelhante a Sentence-to-Code Traceability Recovery with Domain Ontologies

Pointcuts and Analysis
Pointcuts and AnalysisPointcuts and Analysis
Pointcuts and AnalysisWiwat Ruengmee
 
Pythonic Graphics
Pythonic GraphicsPythonic Graphics
Pythonic GraphicsKirby Urner
 
Machine Learning and Go. Go!
Machine Learning and Go. Go!Machine Learning and Go. Go!
Machine Learning and Go. Go!Diana Ortega
 
High-dimensional polytopes defined by oracles: algorithms, computations and a...
High-dimensional polytopes defined by oracles: algorithms, computations and a...High-dimensional polytopes defined by oracles: algorithms, computations and a...
High-dimensional polytopes defined by oracles: algorithms, computations and a...Vissarion Fisikopoulos
 
Learning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesLearning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesDongsun Kim
 
Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Agora Group
 
Lecture1_computer vision-2023.pdf
Lecture1_computer vision-2023.pdfLecture1_computer vision-2023.pdf
Lecture1_computer vision-2023.pdfssuserff72e4
 
Java Keeps Throttling Up!
Java Keeps Throttling Up!Java Keeps Throttling Up!
Java Keeps Throttling Up!José Paumard
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 
Introduction to NumPy
Introduction to NumPyIntroduction to NumPy
Introduction to NumPyHuy Nguyen
 
Introduction to NumPy (PyData SV 2013)
Introduction to NumPy (PyData SV 2013)Introduction to NumPy (PyData SV 2013)
Introduction to NumPy (PyData SV 2013)PyData
 
Uncovering Performance Problems in Java Applications with Reference Propagati...
Uncovering Performance Problems in Java Applications with Reference Propagati...Uncovering Performance Problems in Java Applications with Reference Propagati...
Uncovering Performance Problems in Java Applications with Reference Propagati...Dacong (Tony) Yan
 
Clojure Interoperability
Clojure InteroperabilityClojure Interoperability
Clojure Interoperabilityrik0
 
A Sceptical Guide to Functional Programming
A Sceptical Guide to Functional ProgrammingA Sceptical Guide to Functional Programming
A Sceptical Guide to Functional ProgrammingGarth Gilmour
 
First-Class Patterns
First-Class PatternsFirst-Class Patterns
First-Class PatternsJohn De Goes
 
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014Susan Potter
 
Compiler Components and their Generators - Traditional Parsing Algorithms
Compiler Components and their Generators - Traditional Parsing AlgorithmsCompiler Components and their Generators - Traditional Parsing Algorithms
Compiler Components and their Generators - Traditional Parsing AlgorithmsGuido Wachsmuth
 

Semelhante a Sentence-to-Code Traceability Recovery with Domain Ontologies (20)

Pointcuts and Analysis
Pointcuts and AnalysisPointcuts and Analysis
Pointcuts and Analysis
 
Pythonic Graphics
Pythonic GraphicsPythonic Graphics
Pythonic Graphics
 
Machine Learning and Go. Go!
Machine Learning and Go. Go!Machine Learning and Go. Go!
Machine Learning and Go. Go!
 
High-dimensional polytopes defined by oracles: algorithms, computations and a...
High-dimensional polytopes defined by oracles: algorithms, computations and a...High-dimensional polytopes defined by oracles: algorithms, computations and a...
High-dimensional polytopes defined by oracles: algorithms, computations and a...
 
Learning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method NamesLearning to Spot and Refactor Inconsistent Method Names
Learning to Spot and Refactor Inconsistent Method Names
 
Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011Terence Barr - jdk7+8 - 24mai2011
Terence Barr - jdk7+8 - 24mai2011
 
Java generics final
Java generics finalJava generics final
Java generics final
 
Lecture1_computer vision-2023.pdf
Lecture1_computer vision-2023.pdfLecture1_computer vision-2023.pdf
Lecture1_computer vision-2023.pdf
 
Java Keeps Throttling Up!
Java Keeps Throttling Up!Java Keeps Throttling Up!
Java Keeps Throttling Up!
 
numdoc
numdocnumdoc
numdoc
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 
Introduction to NumPy
Introduction to NumPyIntroduction to NumPy
Introduction to NumPy
 
Introduction to NumPy (PyData SV 2013)
Introduction to NumPy (PyData SV 2013)Introduction to NumPy (PyData SV 2013)
Introduction to NumPy (PyData SV 2013)
 
Logic Programming and ILP
Logic Programming and ILPLogic Programming and ILP
Logic Programming and ILP
 
Uncovering Performance Problems in Java Applications with Reference Propagati...
Uncovering Performance Problems in Java Applications with Reference Propagati...Uncovering Performance Problems in Java Applications with Reference Propagati...
Uncovering Performance Problems in Java Applications with Reference Propagati...
 
Clojure Interoperability
Clojure InteroperabilityClojure Interoperability
Clojure Interoperability
 
A Sceptical Guide to Functional Programming
A Sceptical Guide to Functional ProgrammingA Sceptical Guide to Functional Programming
A Sceptical Guide to Functional Programming
 
First-Class Patterns
First-Class PatternsFirst-Class Patterns
First-Class Patterns
 
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
 
Compiler Components and their Generators - Traditional Parsing Algorithms
Compiler Components and their Generators - Traditional Parsing AlgorithmsCompiler Components and their Generators - Traditional Parsing Algorithms
Compiler Components and their Generators - Traditional Parsing Algorithms
 

Mais de 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
 

Mais de 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
 
ソフトウェア工学勉強会への誘い
ソフトウェア工学勉強会への誘いソフトウェア工学勉強会への誘い
ソフトウェア工学勉強会への誘い
 

Último

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 

Último (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 

Sentence-to-Code Traceability Recovery with Domain Ontologies

  • 1. Sentence-to-Code Traceability Recovery with Domain Ontologies Shinpei Hayashi, Takashi Yoshikawa, Motoshi Saeki Tokyo Institute of Technology, Japan
  • 2. NL sentence Source code  Results: It works well! − Implemented an automated tool − Performed a case study using JDraw • Recovered traceability between 7 sentences and code • Obtained more accurate results than the cases without using ontology
  • 3. Background  Documentation-to-code traceability links are important − For reducing maintenance costs − For software reuse & extension  Our focus: recovering sentence-to-code traceability − In some software products, there’s only documentation of simple sentences without any detailed description E.g., by use of agile/bazaar-style processes
  • 4. Example of Sentence  JDraw (http://jdraw.sf.net/) 4
  • 5. Example of Sentence  JDraw (http://jdraw.sf.net/) 5
  • 6. Example of Sentence  JDraw (http://jdraw.sf.net/) plain, filled and gradient filled rectangles Just single sentence, no detailed documents 6
  • 7. Aim  To detect the set of methods related to the input sentence NL sentence Source code (a set of words) (a set of methods) Users can draw a plain oval. draw Oval() writeLog() getCanvas() getColor() setPixel() getColorPallete() DrawPanel() OvalTool() 7
  • 8. Challenge  How to find the correct set? − Word similarity: leads to false positives/negatives NL sentence Source code (a set of methods) (a set of words) Users can draw draw Oval() a plain oval. writeLog() void setPixel(...) { getCanvas() getColor() ... draw ... False } setPixel() negatives False getColorPallete() positives DrawPanel() OvalTool() 8
  • 9. Challenge  How to find the correct set? − Word similarity: leads to false positives/negatives − Method invocation: leads to false positives NL sentence Source code (a set of methods) (a set of words) False positive Users can draw drawOval() a plain oval. writeLog() getCanvas() getColor() setPixel() getColorPallete() DrawPanel() OvalTool() 9
  • 10. Challenge  Another criterion required − To judge whether a method invocation is needed − Considering the problem domain NL sentence Source code (a set of methods) (a set of words) Users can draw drawOval() Not a plain oval. important important writeLog() getCanvas() getColor() setPixel() getColorPallete() DrawPanel() OvalTool() 10
  • 11. Domain Ontology  Formally representing the knowledge of the target problem domain − As relationships between concepts (words) canvas A concept “canvas” is a possible target to “draw”. draw The function “draw” concerns the concept “color”. An ontology for oval color painting tools (excerpt) 11
  • 12. Solution  Choosing method invocations using domain ontology NL sentence Source code (a set of words) (a set of methods and their invocations) Users can draw a plain oval. draw Oval() Ontology writeLog() canvas getCanvas() getColor() setPixel() draw getColorPallete() DrawPanel() OvalTool() oval color 12
  • 13. System Overview Inputs Outputs Functional Sentence Call-graphs (FCGs) Source 1st score Code 100 2nd Domain score 85 Ontology 13
  • 14. Procedure NL sentence Source code (a set of words) (a set of methods and their invocations) … draw oval m1 1. Extracting call-graph m2 m3 2. Extracting words 3. Extracting functional call-graphs (FCGs) m4 m5 4. Prioritizing FCGs m6 m7 m8 14
  • 15. Procedure NL sentence Source code (a set of words) (a set of methods and their invocations) … draw oval m1 1. Extracting call-graph m2 m3 by static analysis 2. Extracting words 3. Extracting functional m4 m5 call-graphs (FCGs) 4. Prioritizing FCGs m6 m7 m8 15
  • 16. Procedure NL sentence Source code (a set of words) (a set of methods and their invocations) … draw oval {..., draw} {..., draw, oval} m1 1. Extracting {..., color} {..., draw} call-graph m2 m3 2. Extracting words • Stemming {..., oval} {..., color} • Removing stopwords m4 m5 3. Extracting functional call-graphs (FCGs) {..., pixel} {..., scale} {..., log} 4. Prioritizing FCGs m6 m7 m8 16
  • 17. Procedure NL sentence Source code (a set of words) (a set of methods and their invocations) … draw oval Sa m1 1. Extracting call-graph m2 m3 2. Extracting words 3. Extracting functional call- m4 m5 graphs (FCGs) Sb 4. Prioritizing FCGs m6 m7 m8 17
  • 18. Procedure NL sentence Source code (a set of words) (a set of methods and their invocations) … draw oval Sa m1 Score 100 1. Extracting call-graph m2 m3 2. Extracting words 3. Extracting functional call-graphs (FCGs) m4 m5 4. Prioritizing FCGs S b Score m6 m7 m8 85 18
  • 19. Extracting FCGs NL sentence Source code (a set of words) (a set of methods and their invocations) {wa, wb} m1 1. Root selection m2 m3 2. Traversal m4 m5 m6 m7 m8 19
  • 20. Extracting FCGs NL sentence Source code (a set of words) (a set of methods and their invocations) {wa, wb} {wa, ...} m1 role: {wa} 1. Root selection {wb, ...} – Choose the methods m2 m3 having the words in role: {wb} the input sentence {wb, ...} – These words are m4 m5 role: {wb} tagged as roles 2. Traversal m6 m7 m8 20
  • 21. Extracting FCGs NL sentence Source code (a set of words) (a set of methods and their invocations) {wa, wb} m1 role: {wa} 1. Root selection 2. Traversal m2 m3 – Traverse method role: {wb} invocations from the roots m4 m5 role: {wb} – Forwards if the invocation satisfies one of the m6 m7 m8 traversal rules 21
  • 22. Extracting FCGs NL sentence Source code (a set of words) (a set of methods and their invocations) {wa, wb} m1 Rule #1 (Sentence-based) role: {wa} 1. Root selection holds if the callee method 2. Traversal hasTraverse methodgiven – a word in the m2 {..., wb} m3 role: {wb} sentence invocations from the roots if the invocation m4 satisfies one of the role: {wb} m5 traversal rules m6 m7 m8 22
  • 23. Extracting FCGs NL sentence Source code (a set of words) (a set of methods and their invocations) {wa, wb} m1 role: {wa} 1. Root selection 2. Traversal #2 (Ontology-based) Rule – Traverse method 2m m3 holds if the method invocation} invocations from the role: {wb role: {wc} matches the relationships in roots if the invocation m4 {..., wc} the given ontology satisfies one of the role: {wb} m5 traversal rules m6 m7 m8 23
  • 24. Extracting FCGs NL sentence Source code (a set of words) (a set of methods and their invocations) {wa, wb} m1 role: {wa} 1. Root selection 2. Traversal m2 – Traverse method (Inheritance) m3 Rule #3 role: {wb} role: {wc} invocations from the roots if holds if the callee method the invocation m4 satisfies onea word in the roles of } has of the role: {wb m5 {..., wc} traversal rules role: {wc} the caller method m6 m7 m8 24
  • 25. Ontology-Based Rule  Holds if the invocation matches the relationships in the given ontology Ontology drawOval() role: {draw, oval} draw Caller canvas Callee getCanvas() role: {canvas} 25
  • 26. Extracting FCGs NL sentence Source code (a set of words) (a set of methods and their invocations) {wa, wb} Sa m1 role: {wa} 1. Root selection 2. Traversal m2 m3 – Traverse method role: {wb} role: {wc} invocations from the roots m4 m5 role: {wb} role: {wc} – Traversed methods will be a FCG Sb m6 m7 m8 role: {…} 26
  • 27. Prioritizing FCGs  Using an weighting scheme  Criteria: we prioritize FCGs which 1. include methods having important roles as their names 2. include method invocations matching to the relationships in the ontology and/or the sentence 3. cover many words in the input sentence 27
  • 28. Case Study  Evaluation target: JDraw 1.1.5 − We picked up 7 sentences from JDraw's manual on the Web − Prepared an ontology for painting tools (including 38 concepts and 45 relationships) − Prepared control (answer) sets of methods by an expert  Evaluation Criteria − Calculating precision and recall values by comparing the extracted sets with the control sets 28
  • 29. Results Use of ontology Yes Yes No No Input sentences Prec. Recall Prec. Recall 1. "plain, filled and gradient filled rectangles" 0.83 0.94 1.00 0.19 2. "plain, filled and gradient filled ovals" 0.82 0.98 1.00 0.21 3. "image rotation" 1.00 0.35 0.00 0.00 4. "image scaling" 0.22 0.68 1.00 0.58 5. "save JPEGs of configurable quality" 0.40 1.00 0.67 1.00 6. "colour reduction" 0.74 0.95 0.74 0.95 7. "grayscaling" - - - -  Picked up the FCGs having the highest F- measure from the results ranked in the top 5 − F-measure = 2 / (precision-1 + recall-1) 29
  • 30. Results Use of ontology Yes Yes No No Input sentences Prec. Recall Prec. Recall 1. "plain, filled and gradient filled rectangles" 0.83 0.94 1.00 0.19 2. "plain, filled and gradient filled ovals" 0.82 0.98 1.00 0.21 3. "image rotation" 1.00 0.35 0.00 0.00 4. "image scaling" 0.22 0.68 1.00 0.58 5. "save JPEGs of configurable quality" 0.40 1.00 0.67 1.00 6. "colour reduction" 0.74 0.95 0.74 0.95 7. "grayscaling" - - - -  Accurate results by using the ontology − precision > 0.7 for 3 cases − recall > 0.9 for 4 cases 30
  • 31. Results Use of ontology Yes Yes No No Input sentences Prec. Recall Prec. Recall 1. "plain, filled and gradient filled rectangles" 0.83 0.94 1.00 0.19 2. "plain, filled and gradient filled ovals" 0.82 0.98 1.00 0.21 3. "image rotation" 1.00 0.35 0.00 0.00 4. "image scaling" 0.22 0.68 1.00 0.58 5. "save JPEGs of configurable quality" 0.40 1.00 0.67 1.00 6. "colour reduction" 0.74 0.95 0.74 0.95 7. "grayscaling" - - - -  Improvement by using the ontology − Improved recall for 1st and 2nd cases − detected traceability for 3rd case Domain ontology gives us valuable guides for sentence-to-code traceability recovery. 31
  • 32. Future Work  Case study++ − Larger − Another/multiple domains  Supporting ontology construction  Improving NLP techniques  Combination of other techniques − Dynamic analysis − Relevance feedback
  • 33. Example of Sentence Solution  JDraw (http://jdraw.sf.net/)  Choosing method invocations using domain ontology NL sentence Source code (a set of words) (a set of methods and their invocations) Users can draw a plain oval. draw Oval() Ontology writeLog() canvas getCanvas() getColor() setPixel() draw getColorPallete() DrawPanel() OvalTool() oval color 5 12 Procedure Results NL sentence Source code (a set of words) (a set of methods and their invocations) {wa, wb} a b Sa m1 role: {wa} 1. Root selection a 2. Traversal – Traverse method m2 m3 role: {wb} role: {wc} invocations from the b c roots if the invocation m4 m5  Improvement by using the ontology satisfies one of the role: {wb} traversal rules b role: {wc} S b c − Improved recall for 1st and 2nd cases − detected traceability for 3rd case – Traversed methods m6 m7 m8 will be a FCG role: {…} Domain ontology gives us valuable guides 28 for sentence-to-code traceability recovery. 34
  • 35. System Overview Words in the Sentence Sentence Extracting Words splitting, stemming, extract Source identifiers removing stop words... Words in the Code Code static analysis Call-graph Domain Functional Ontology Traversing Call-graphs call-graph Inputs Prioritizing Outputs Ordered functional Call-graphs 39
  • 36. Extracting Call Graph  Statically extracting invocations  Consideration of overridden methods class Tool .... class OvalTool extends Tool ... Drawer# Drawer# class Drawer { startDraw startDraw public void startDraw() { Tool tool = Tool extracted draw() Tool.getCurrent(); tool.draw(); Tool# OvalTool# } OvalTool draw() draw draw } 40
  • 37. Extracting Words  From source code {starts, with, Extracting startsWith, Tokenizing starts, identifiers startDraw, ... camelCases draw, ...}  From sentence {draw, a, Normalizing draw a circle circle}  Normalization {draw, {start, − Stemming oval} draw, ...} − Removing stop words 41
  • 38. Bad Results Use of ontology Yes Yes No No Input sentences Prec. Recall Prec. Recall 1. "plain, filled and gradient filled rectangles" 0.83 0.94 1.00 0.19 2. "plain, filled and gradient filled ovals" 0.82 0.98 1.00 0.21 3. "image rotation" 1.00 0.35 0.00 0.00 4. "image scaling" 0.22 0.68 1.00 0.58 5. "save JPEGs of configurable quality" 0.40 1.00 0.67 1.00 6. "colour reduction" 0.74 0.95 0.74 0.95 7. "grayscaling" - - - -  Bad effects, no improvement − reason: use of external modules − reason: use of compound words (grayscale vs. grayScale) 42