SlideShare a Scribd company logo
When and How Using
Structural Information to
Improve IR-based Traceability
Recovery
Annibale Panichella1, Collin McMillan2, Evan Moritz 3, Davide Palmieri 4,
Rocco Oliveto 4, Denys Poshyvaniyk 3, Andrea De Lucia1
1 Software Engineering Lab , University of Salerno, Italy
2 University of Notre Dame, Notre Dame, USA
3 The College of William and Mary, Williamsburg, USA
2 University of Molise, Pesche (IS), Italiy
When and How Using Structural Information to Improve IR-Based Traceability Recovery
Imapct Analysis
Requirements tracing
Program Comprehension
Traceability information is still not
commonplace in software projects!
Information Retrieval
IR-based Traceability Recovery
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
. /* *This class implements the GUI for
managing laboratories data */
public class GUI Laboratory Data {
private jFrame window;
private jButton insert;
...
public GUI Laboratory Data(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
GUILaboratoryData.java
IR-based Traceability Recovery
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
. /* *This class implements the GUI for
managing laboratories data */
public class GUI Laboratory Data {
private jFrame window;
private jButton insert;
...
public GUI Laboratory Data(){
window = new JFrame();
insert = new JButton();
...
}
...
}
GUILaboratoryData.java
IR-based Traceability Recovery
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
. /* *This class implements the GUI for
managing laboratories data */
public class GUI Laboratory Data {
private jFrame window;
private jButton insert;
...
public GUI Laboratory Data(){
window = new JFrame();
insert = new JButton();
...
}
...
}
GUILaboratoryData.java
Similarity
42%
IR-based Traceability Recovery
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
. /* *This class implements the GUI for
managing laboratories data */
public class GUI Laboratory Data {
private jFrame window;
private jButton insert;
...
public GUI Laboratory Data(){
window = new JFrame();
insert = new JButton();
...
}
...
}
GUILaboratoryData.java
True Link
IR-based Traceability Recovery
Source_1 Target_2 95.4%
Source_3 Target_4 92.1%
Source_1 Target_1 85.6%
Source_2 Target_2 83.2%
Source_3 Target_3 81.2%
Source_1 Target_3 79.0%
Source_3 Target_2 77.5%
Source_2 Target_4 64.3%
Source_2 Target_3 53.2%
Target
Artifacts
IR Engine
Source
Artifacts
Candidate Links
Source_1 Target_2 95.4%
Source_3 Target_4 92.1%
Source_1 Target_1 85.6%
Source_2 Target_2 83.2%
Source_3 Target_3 81.2%
Source_1 Target_3 79.0%
Source_3 Target_2 77.5%
Source_2 Target_4 64.3%
Source_2 Target_3 53.2%
IR-based Traceability Recovery
Target
Artifacts
IR Engine
Source
Artifacts
Candidate Links
Structural Information and Traceability
Combining Textual and
Structural Analysis of Software
Artifacts for Traceability Link
Recovery - Collin McMillan, Denys
Poshyvanyk, Meghan Revelle
TEFSE 2009
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Structural Information and Traceability
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUILaboratoryData.java
linked
public class Laboratory{
private String name;
private String position;
...
public void setName(String pName){
this.name=pName;
}
...
}
Laboratory.java
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUILaboratoryData.java
linked
linked
Structural Information and Traceability
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
GUILaboratoryData.java
linked
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
public class Laboratory{
private String name;
private String position;
...
public void setName(String pName){
this.name=pName;
}
...
}
Laboratory.java
linked
Structural Information and Traceability
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
GUILaboratoryData.java
linked
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
public class Laboratory{
private String name;
private String position;
...
public void setName(String pName){
this.name=pName;
}
...
}
Laboratory.java
linked
Structural Information and Traceability
Structural dependecy
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUILaboratoryData.java
Structural dependecy
Structural Information and Traceability
public class Laboratory{
private String name;
private String position;
...
public void setName(String pName){
this.name=pName;
}
...
}
Laboratory.java
linked
linked
Transitivity
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUILaboratoryData.java
Structural dependecy
Structural Information and Traceability
public class Laboratory{
private String name;
private String position;
...
public void setName(String pName){
this.name=pName;
}
...
}
Laboratory.java
linked
linked
Transitivity
Open Issues
1) The choice of the bonus value is cricual
• Different systems require different bonus
• Different IR methods require different bonus
Open Issues
1) The choice of the bonus value is cricual
• Different systems require different bonus
• Different IR methods require different bonus
2) When applying the bonus?
. The transitivity property does not always hold
Example
/* *This class implements the GUI for
managing laboratories data */
public class GUIDoctorData {
private jFrame window;
private jButton insert;
...
public GUIDoctorData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUIDoctorData.java
Not
linked
Example
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUIDoctorData.java
Not
linked
Example
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUIDoctorData.java
public class Authorization{
public void setAuthorization(Doctor
pDoctor, Laboratory pLab){
...
}
...
}
Autorization.java
Not linked
Not
linked
Example
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUILaboratoryData.java
Structural dependecy
public class LaboratoryAuthorization{
public void setAuthorization(Doctor
pDoctor){
...
}
...
}
LaboratoryAuthorization.java
Not linked
Not
linked
Example
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUILaboratoryData.java
Structural dependecy
public class LaboratoryAuthorization{
public void setAuthorization(Doctor
pDoctor){
...
}
...
}
LaboratoryAuthorization.java
Not linked
Not
linked
Example
/* *This class implements the GUI for
managing laboratories data */
public class GUILaboratoryData {
private jFrame window;
private jButton insert;
...
public GUILaboratoryData(){
window = ne JFrame();
insert = new JButton();
...
}
...
}
Use Case Insert Laboratory Data
Description The user inserts the data of a
specific laboratory
Events 1. The user opens the Laboratory
GUI
2. The user inserts the
laboratory data
.
.
.
GUILaboratoryData.java
Structural dependecy
public class LaboratoryAuthorization{
public void setAuthorization(Doctor
pDoctor){
...
}
...
}
Laboratory.java
Not linked
linked
Structural information is not
always useful
Approach 1: Optimistic Combination (O-CSTI)
Source_1 Class_2 95.4%
Source_3 Class_4 92.1%
Source_1 Class_1 85.6%
Source_2 Class_2 83.2%
Source_3 Class_3 81.2%
Source_1 Class_3 79.0%
Source_3 Class_2 77.5%
Source_2 Class_4 64.3%
Source_2 Class_3 53.2%
Code
Classes
IR Engine
Source
Artifacts
Candidate Links
Step 1: traditional IR process
Approach 1: Optimistic Combination (O-CSTI)
Source_1 Class_2 95.4%
Source_3 Class_4 92.1%
Source_1 Class_1 85.6%
Source_2 Class_2 83.2%
Source_3 Class_3 81.2%
Source_1 Class_3 79.0%
Source_3 Class_2 77.5%
Source_2 Class_4 64.3%
Source_3 Class_4 53.2%
Candidate Links
Class_2
Class_1
Class_3
Class_4
+ Bonus
+ Bonus
Step 2: applying bonus to all the links
Approach 1: Optimistic Combination (O-CSTI)
Source_1 Class_2 95.4%
Source_3 Class_4 92.1%
Source_1 Class_1 85.6%
Source_2 Class_2 83.2%
Source_3 Class_3 81.2%
Source_1 Class_3 79.0%
Source_3 Class_2 77.5%
Source_2 Class_4 64.3%
Source_3 Class_4 53.2%
Candidate Links
Step 2: applying bonus to all the links
Class_2
Class_1
Class_3
Class_4
+ Bonus
+ Bonus
+ Bonus
Approach 1: Optimistic Combination (O-CSTI)
Source_1 Class_2 95.4%
Source_3 Class_4 92.1%
Source_1 Class_1 85.6%
Source_2 Class_2 83.2%
Source_3 Class_3 81.2%
Source_1 Class_3 79.0%
Source_3 Class_2 77.5%
Source_2 Class_4 64.3%
Source_3 Class_4 53.2%
Candidate Links
Step 2: applying bonus to all the links
Class_2
Class_1
Class_3
Class_4
+ Bonus
+ 2Bonus
+ Bonus
+ Bonus
Approach 1: Optimistic Combination (O-CSTI)
End?
YES
NO
Apply the bonus to all the links
Tradidional IR process
The user judges the i-th link
Re-order the list
Approach 2: User Driven Combination (U-CSTI)
Approach 2: User Driven Combination (U-CSTI)
Approach 2: User Driven Combination (U-CSTI)
Tradidional IR process
The user judges the i-th link
if correct
Apply bonus No bonus
Re-order the list
End?
YES
NO
YES
NO
Adaptive bonus
Sim(Source1, Class1) = Sim(Source1, Class1) + δ * Sim(Source1, Class1)
Adaptive bonus
Sim(Source1, Class1) = Sim(Source1, Class1) + δ * Sim(Source1, Class1)
yvariabilitlistranked
2
)min()max(



SimSim

Source_1 Class_2 95.4%
Source_3 Class_4 92.1%
Source_1 Class_1 85.6%
Source_2 Class_2 83.2%
Source_3 Class_3 81.2%
Source_1 Class_3 79.0%
Source_3 Class_2 77.5%
Source_2 Class_4 64.3%
Source_2 Class_3 53.2%
Candidate Links
max(Sim)
min(Sim)
variability
Implementation
We provide the experiments and datasets for download at
http://www.cs.wm.edu/semeru/data/csmr13/
TraceLab Components
1) Adaptive Bonus
2) Optimistic Comibination
(O-CSTI)
3) User Driven Combination
(U-CSTI)
4) Different IR Methods:
- Vector Space Model
- Jensen-Shannon
Implementation
We provide the experiments and datasets for download at
http://www.cs.wm.edu/semeru/data/csmr13/
TraceLab Components
1) Adaptive Bonus
2) Optimistic Comibination
(O-CSTI)
3) User Driven Combination
(U-CSTI)
4) Different IR Methods:
- Vector Space Model
- Jensen-Shannon
IR
method
Empirical Evaluation
Context
We compared three IR-based processes:
1) IR process alone
2) O-CSTI (optimistic combination)
3) U-CSTI (user driven combination)
Results
Vector Space Model
Results
Jensen-Shannon Divergence
Results
Tracing Use Cases onto Code Classes on SMOS
Vector Space Model
Results
Tracing Use Cases onto Code Classes on SMOS
Vector Space Model Jensen-Shannon Divergence
Optimality of the Adaptive Bonus
Adaptive Bonus vs Fixed Bonus
- We used different fixed bonus values
Optimality of the Adaptive Bonus
EasyClinic UC-CC with VSM EasyClinic TC-CC with JS
Adaptive Bonus vs Fixed Bonus
- We used different fixed bonus values
Conclusions
When and How Using Structural Information to Improve IR-Based Traceability Recovery

More Related Content

DOCX
Junit With Eclipse
PPTX
Java -Exception handlingunit-iv
PPTX
Junit mockito and PowerMock in Java
PDF
Java Quiz - Meetup
PPT
Junit and testNG

What's hot (20)

PDF
Spring Certification Questions
PPTX
JUNit Presentation
DOCX
Quick test professional certifcation questions and tutorial2
DOCX
Net Beans Codes for Student Portal
PPTX
JUnit- A Unit Testing Framework
PPSX
PPTX
Thread & concurrancy
PDF
Moving to Module: Issues & Solutions
PDF
DynaMine: Finding Common Error Patterns by Mining Software Revision Histories
PPT
3 j unit
PDF
Junit tutorial
PPTX
PPT
比XML更好用的Java Annotation
PPTX
Introduction to JUnit
PDF
Don't Make Android Bad... Again
PPTX
Testing with Junit4
PPT
Simple Unit Testing With Netbeans 6.1
PDF
Spring 3 to 4
PPTX
J2ME Lwuit, Storage & Connections (Ft Prasanjit Dey)
PDF
Spring certification-mock-exam
Spring Certification Questions
JUNit Presentation
Quick test professional certifcation questions and tutorial2
Net Beans Codes for Student Portal
JUnit- A Unit Testing Framework
Thread & concurrancy
Moving to Module: Issues & Solutions
DynaMine: Finding Common Error Patterns by Mining Software Revision Histories
3 j unit
Junit tutorial
比XML更好用的Java Annotation
Introduction to JUnit
Don't Make Android Bad... Again
Testing with Junit4
Simple Unit Testing With Netbeans 6.1
Spring 3 to 4
J2ME Lwuit, Storage & Connections (Ft Prasanjit Dey)
Spring certification-mock-exam
Ad

Similar to When and How Using Structural Information to Improve IR-Based Traceability Recovery (8)

PDF
Adaptive User Feedback for IR-based Traceability Recovery
PDF
Lecture 7.pdf
PDF
Software Engineering : OOAD using UML
PDF
TECHNIQUES FOR COMPONENT REUSABLE APPROACH
PDF
Module 1 uml - usecase digram
DOCX
Teaching Case Teaching Software Componentization .docx
PPT
uml123 copy
PPTX
Bio db core-mockup-v1
Adaptive User Feedback for IR-based Traceability Recovery
Lecture 7.pdf
Software Engineering : OOAD using UML
TECHNIQUES FOR COMPONENT REUSABLE APPROACH
Module 1 uml - usecase digram
Teaching Case Teaching Software Componentization .docx
uml123 copy
Bio db core-mockup-v1
Ad

More from Annibale Panichella (20)

PDF
Metamorphic-Based Many-Objective Distillation of LLMs for Code-related Tasks
PDF
MIP Award presentation at the IEEE International Conference on Software Analy...
PDF
Breaking the Silence: the Threats of Using LLMs in Software Engineering
PDF
Searching for Quality: Genetic Algorithms and Metamorphic Testing for Softwar...
PDF
A Fast Multi-objective Evolutionary Approach for Designing Large-Scale Optica...
PDF
An Improved Pareto Front Modeling Algorithm for Large-scale Many-Objective Op...
PDF
VST2022.pdf
PDF
IPA Fall Days 2019
PDF
An Adaptive Evolutionary Algorithm based on Non-Euclidean Geometry for Many-O...
PDF
Speeding-up Software Testing With Computational Intelligence
PDF
Incremental Control Dependency Frontier Exploration for Many-Criteria Test C...
PPTX
Sbst2018 contest2018
PDF
Java Unit Testing Tool Competition — Fifth Round
PDF
ICSE 2017 - Evocrash
PDF
Evolutionary Testing for Crash Reproduction
PDF
Parameterizing and Assembling IR-based Solutions for SE Tasks using Genetic A...
PDF
Security Threat Identification and Testing
PDF
Reformulating Branch Coverage as a Many-Objective Optimization Problem
PDF
Results for EvoSuite-MOSA at the Third Unit Testing Tool Competition
PDF
Diversity mechanisms for evolutionary populations in Search-Based Software En...
Metamorphic-Based Many-Objective Distillation of LLMs for Code-related Tasks
MIP Award presentation at the IEEE International Conference on Software Analy...
Breaking the Silence: the Threats of Using LLMs in Software Engineering
Searching for Quality: Genetic Algorithms and Metamorphic Testing for Softwar...
A Fast Multi-objective Evolutionary Approach for Designing Large-Scale Optica...
An Improved Pareto Front Modeling Algorithm for Large-scale Many-Objective Op...
VST2022.pdf
IPA Fall Days 2019
An Adaptive Evolutionary Algorithm based on Non-Euclidean Geometry for Many-O...
Speeding-up Software Testing With Computational Intelligence
Incremental Control Dependency Frontier Exploration for Many-Criteria Test C...
Sbst2018 contest2018
Java Unit Testing Tool Competition — Fifth Round
ICSE 2017 - Evocrash
Evolutionary Testing for Crash Reproduction
Parameterizing and Assembling IR-based Solutions for SE Tasks using Genetic A...
Security Threat Identification and Testing
Reformulating Branch Coverage as a Many-Objective Optimization Problem
Results for EvoSuite-MOSA at the Third Unit Testing Tool Competition
Diversity mechanisms for evolutionary populations in Search-Based Software En...

Recently uploaded (20)

DOCX
"Project Management: Ultimate Guide to Tools, Techniques, and Strategies (2025)"
PPTX
An Unlikely Response 08 10 2025.pptx
PPTX
Introduction-to-Food-Packaging-and-packaging -materials.pptx
PDF
COLEAD A2F approach and Theory of Change
PDF
oil_refinery_presentation_v1 sllfmfls.pdf
PPTX
Hydrogel Based delivery Cancer Treatment
PPT
First Aid Training Presentation Slides.ppt
PPTX
_ISO_Presentation_ISO 9001 and 45001.pptx
PDF
Swiggy’s Playbook: UX, Logistics & Monetization
PPTX
Anesthesia and it's stage with mnemonic and images
PPTX
Presentation for DGJV QMS (PQP)_12.03.2025.pptx
PPTX
Emphasizing It's Not The End 08 06 2025.pptx
PPTX
worship songs, in any order, compilation
PDF
Nykaa-Strategy-Case-Fixing-Retention-UX-and-D2C-Engagement (1).pdf
PPTX
nose tajweed for the arabic alphabets for the responsive
DOC
学位双硕士UTAS毕业证,墨尔本理工学院毕业证留学硕士毕业证
PPTX
INTERNATIONAL LABOUR ORAGNISATION PPT ON SOCIAL SCIENCE
PPTX
Effective_Handling_Information_Presentation.pptx
PPTX
2025-08-10 Joseph 02 (shared slides).pptx
PPTX
AcademyNaturalLanguageProcessing-EN-ILT-M02-Introduction.pptx
"Project Management: Ultimate Guide to Tools, Techniques, and Strategies (2025)"
An Unlikely Response 08 10 2025.pptx
Introduction-to-Food-Packaging-and-packaging -materials.pptx
COLEAD A2F approach and Theory of Change
oil_refinery_presentation_v1 sllfmfls.pdf
Hydrogel Based delivery Cancer Treatment
First Aid Training Presentation Slides.ppt
_ISO_Presentation_ISO 9001 and 45001.pptx
Swiggy’s Playbook: UX, Logistics & Monetization
Anesthesia and it's stage with mnemonic and images
Presentation for DGJV QMS (PQP)_12.03.2025.pptx
Emphasizing It's Not The End 08 06 2025.pptx
worship songs, in any order, compilation
Nykaa-Strategy-Case-Fixing-Retention-UX-and-D2C-Engagement (1).pdf
nose tajweed for the arabic alphabets for the responsive
学位双硕士UTAS毕业证,墨尔本理工学院毕业证留学硕士毕业证
INTERNATIONAL LABOUR ORAGNISATION PPT ON SOCIAL SCIENCE
Effective_Handling_Information_Presentation.pptx
2025-08-10 Joseph 02 (shared slides).pptx
AcademyNaturalLanguageProcessing-EN-ILT-M02-Introduction.pptx

When and How Using Structural Information to Improve IR-Based Traceability Recovery

  • 1. When and How Using Structural Information to Improve IR-based Traceability Recovery Annibale Panichella1, Collin McMillan2, Evan Moritz 3, Davide Palmieri 4, Rocco Oliveto 4, Denys Poshyvaniyk 3, Andrea De Lucia1 1 Software Engineering Lab , University of Salerno, Italy 2 University of Notre Dame, Notre Dame, USA 3 The College of William and Mary, Williamsburg, USA 2 University of Molise, Pesche (IS), Italiy
  • 4. Traceability information is still not commonplace in software projects!
  • 6. IR-based Traceability Recovery Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . /* *This class implements the GUI for managing laboratories data */ public class GUI Laboratory Data { private jFrame window; private jButton insert; ... public GUI Laboratory Data(){ window = ne JFrame(); insert = new JButton(); ... } ... } GUILaboratoryData.java
  • 7. IR-based Traceability Recovery Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . /* *This class implements the GUI for managing laboratories data */ public class GUI Laboratory Data { private jFrame window; private jButton insert; ... public GUI Laboratory Data(){ window = new JFrame(); insert = new JButton(); ... } ... } GUILaboratoryData.java
  • 8. IR-based Traceability Recovery Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . /* *This class implements the GUI for managing laboratories data */ public class GUI Laboratory Data { private jFrame window; private jButton insert; ... public GUI Laboratory Data(){ window = new JFrame(); insert = new JButton(); ... } ... } GUILaboratoryData.java Similarity 42%
  • 9. IR-based Traceability Recovery Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . /* *This class implements the GUI for managing laboratories data */ public class GUI Laboratory Data { private jFrame window; private jButton insert; ... public GUI Laboratory Data(){ window = new JFrame(); insert = new JButton(); ... } ... } GUILaboratoryData.java True Link
  • 10. IR-based Traceability Recovery Source_1 Target_2 95.4% Source_3 Target_4 92.1% Source_1 Target_1 85.6% Source_2 Target_2 83.2% Source_3 Target_3 81.2% Source_1 Target_3 79.0% Source_3 Target_2 77.5% Source_2 Target_4 64.3% Source_2 Target_3 53.2% Target Artifacts IR Engine Source Artifacts Candidate Links
  • 11. Source_1 Target_2 95.4% Source_3 Target_4 92.1% Source_1 Target_1 85.6% Source_2 Target_2 83.2% Source_3 Target_3 81.2% Source_1 Target_3 79.0% Source_3 Target_2 77.5% Source_2 Target_4 64.3% Source_2 Target_3 53.2% IR-based Traceability Recovery Target Artifacts IR Engine Source Artifacts Candidate Links
  • 12. Structural Information and Traceability Combining Textual and Structural Analysis of Software Artifacts for Traceability Link Recovery - Collin McMillan, Denys Poshyvanyk, Meghan Revelle TEFSE 2009
  • 13. /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Structural Information and Traceability Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUILaboratoryData.java linked
  • 14. public class Laboratory{ private String name; private String position; ... public void setName(String pName){ this.name=pName; } ... } Laboratory.java /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUILaboratoryData.java linked linked Structural Information and Traceability
  • 15. /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } GUILaboratoryData.java linked Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . public class Laboratory{ private String name; private String position; ... public void setName(String pName){ this.name=pName; } ... } Laboratory.java linked Structural Information and Traceability
  • 16. /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } GUILaboratoryData.java linked Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . public class Laboratory{ private String name; private String position; ... public void setName(String pName){ this.name=pName; } ... } Laboratory.java linked Structural Information and Traceability Structural dependecy
  • 17. /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUILaboratoryData.java Structural dependecy Structural Information and Traceability public class Laboratory{ private String name; private String position; ... public void setName(String pName){ this.name=pName; } ... } Laboratory.java linked linked Transitivity
  • 18. /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUILaboratoryData.java Structural dependecy Structural Information and Traceability public class Laboratory{ private String name; private String position; ... public void setName(String pName){ this.name=pName; } ... } Laboratory.java linked linked Transitivity
  • 19. Open Issues 1) The choice of the bonus value is cricual • Different systems require different bonus • Different IR methods require different bonus
  • 20. Open Issues 1) The choice of the bonus value is cricual • Different systems require different bonus • Different IR methods require different bonus 2) When applying the bonus? . The transitivity property does not always hold
  • 21. Example /* *This class implements the GUI for managing laboratories data */ public class GUIDoctorData { private jFrame window; private jButton insert; ... public GUIDoctorData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUIDoctorData.java Not linked
  • 22. Example /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUIDoctorData.java Not linked
  • 23. Example /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUIDoctorData.java public class Authorization{ public void setAuthorization(Doctor pDoctor, Laboratory pLab){ ... } ... } Autorization.java Not linked Not linked
  • 24. Example /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUILaboratoryData.java Structural dependecy public class LaboratoryAuthorization{ public void setAuthorization(Doctor pDoctor){ ... } ... } LaboratoryAuthorization.java Not linked Not linked
  • 25. Example /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUILaboratoryData.java Structural dependecy public class LaboratoryAuthorization{ public void setAuthorization(Doctor pDoctor){ ... } ... } LaboratoryAuthorization.java Not linked Not linked
  • 26. Example /* *This class implements the GUI for managing laboratories data */ public class GUILaboratoryData { private jFrame window; private jButton insert; ... public GUILaboratoryData(){ window = ne JFrame(); insert = new JButton(); ... } ... } Use Case Insert Laboratory Data Description The user inserts the data of a specific laboratory Events 1. The user opens the Laboratory GUI 2. The user inserts the laboratory data . . . GUILaboratoryData.java Structural dependecy public class LaboratoryAuthorization{ public void setAuthorization(Doctor pDoctor){ ... } ... } Laboratory.java Not linked linked Structural information is not always useful
  • 27. Approach 1: Optimistic Combination (O-CSTI) Source_1 Class_2 95.4% Source_3 Class_4 92.1% Source_1 Class_1 85.6% Source_2 Class_2 83.2% Source_3 Class_3 81.2% Source_1 Class_3 79.0% Source_3 Class_2 77.5% Source_2 Class_4 64.3% Source_2 Class_3 53.2% Code Classes IR Engine Source Artifacts Candidate Links Step 1: traditional IR process
  • 28. Approach 1: Optimistic Combination (O-CSTI) Source_1 Class_2 95.4% Source_3 Class_4 92.1% Source_1 Class_1 85.6% Source_2 Class_2 83.2% Source_3 Class_3 81.2% Source_1 Class_3 79.0% Source_3 Class_2 77.5% Source_2 Class_4 64.3% Source_3 Class_4 53.2% Candidate Links Class_2 Class_1 Class_3 Class_4 + Bonus + Bonus Step 2: applying bonus to all the links
  • 29. Approach 1: Optimistic Combination (O-CSTI) Source_1 Class_2 95.4% Source_3 Class_4 92.1% Source_1 Class_1 85.6% Source_2 Class_2 83.2% Source_3 Class_3 81.2% Source_1 Class_3 79.0% Source_3 Class_2 77.5% Source_2 Class_4 64.3% Source_3 Class_4 53.2% Candidate Links Step 2: applying bonus to all the links Class_2 Class_1 Class_3 Class_4 + Bonus + Bonus + Bonus
  • 30. Approach 1: Optimistic Combination (O-CSTI) Source_1 Class_2 95.4% Source_3 Class_4 92.1% Source_1 Class_1 85.6% Source_2 Class_2 83.2% Source_3 Class_3 81.2% Source_1 Class_3 79.0% Source_3 Class_2 77.5% Source_2 Class_4 64.3% Source_3 Class_4 53.2% Candidate Links Step 2: applying bonus to all the links Class_2 Class_1 Class_3 Class_4 + Bonus + 2Bonus + Bonus + Bonus
  • 31. Approach 1: Optimistic Combination (O-CSTI) End? YES NO Apply the bonus to all the links Tradidional IR process The user judges the i-th link Re-order the list
  • 32. Approach 2: User Driven Combination (U-CSTI)
  • 33. Approach 2: User Driven Combination (U-CSTI)
  • 34. Approach 2: User Driven Combination (U-CSTI) Tradidional IR process The user judges the i-th link if correct Apply bonus No bonus Re-order the list End? YES NO YES NO
  • 35. Adaptive bonus Sim(Source1, Class1) = Sim(Source1, Class1) + δ * Sim(Source1, Class1)
  • 36. Adaptive bonus Sim(Source1, Class1) = Sim(Source1, Class1) + δ * Sim(Source1, Class1) yvariabilitlistranked 2 )min()max(    SimSim  Source_1 Class_2 95.4% Source_3 Class_4 92.1% Source_1 Class_1 85.6% Source_2 Class_2 83.2% Source_3 Class_3 81.2% Source_1 Class_3 79.0% Source_3 Class_2 77.5% Source_2 Class_4 64.3% Source_2 Class_3 53.2% Candidate Links max(Sim) min(Sim) variability
  • 37. Implementation We provide the experiments and datasets for download at http://www.cs.wm.edu/semeru/data/csmr13/ TraceLab Components 1) Adaptive Bonus 2) Optimistic Comibination (O-CSTI) 3) User Driven Combination (U-CSTI) 4) Different IR Methods: - Vector Space Model - Jensen-Shannon
  • 38. Implementation We provide the experiments and datasets for download at http://www.cs.wm.edu/semeru/data/csmr13/ TraceLab Components 1) Adaptive Bonus 2) Optimistic Comibination (O-CSTI) 3) User Driven Combination (U-CSTI) 4) Different IR Methods: - Vector Space Model - Jensen-Shannon IR method
  • 40. Context We compared three IR-based processes: 1) IR process alone 2) O-CSTI (optimistic combination) 3) U-CSTI (user driven combination)
  • 43. Results Tracing Use Cases onto Code Classes on SMOS Vector Space Model
  • 44. Results Tracing Use Cases onto Code Classes on SMOS Vector Space Model Jensen-Shannon Divergence
  • 45. Optimality of the Adaptive Bonus Adaptive Bonus vs Fixed Bonus - We used different fixed bonus values
  • 46. Optimality of the Adaptive Bonus EasyClinic UC-CC with VSM EasyClinic TC-CC with JS Adaptive Bonus vs Fixed Bonus - We used different fixed bonus values