SlideShare a Scribd company logo
1 of 11
Mo#va#on:	
  Exploring	
  Features	
	
  
	
Analysts	
known	
  
part	
  of	
  f1	
feature	
  f1	
unknown	
  
to	
  analysts	
feature	
  f2	
Problem	
  Domain	
 Technical	
  Domain	
loca#on	
  of	
  f1	
unexplored	
  modules	
  
and	
  dependencies	
Feature	
  Loca+on	
  (FL)	
Feature	
  
Iden+fica+on	
  (FI)
Key	
  Idea:	
  Dependency	
  Classifica#on	
•  Combining	
  sta#c	
  dependency	
  analysis	
  and	
  
dynamic	
  FL	
  technique	
  
m5	
m2	
m7	
m9	
m1	
m3	
m6	
m4	
 m8	
f2	
  
f1	
  
Call	
  graph	
:	
  Uncovered	
  dependencies	
  
(only	
  in	
  sta#c	
  dependencies;	
  
have	
  not	
  executed	
  yet)	
:	
  Covered	
  dependencies	
  
(in	
  both	
  sta#c	
  and	
  dynamic	
  
dependencies)	
m5	
m2	
m7	
m9	
m1	
m3	
m8	
m6	
m4	
(a)	
  
(b)	
  
(c)	
  
Classifying	
  Dependencies	
  in	
  the	
  
Adjacency	
  Matrix	
m8	
 m9	
 m1	
   m2	
 m3	
 m5	
 m4	
 m6	
 m7	
m8	
m9	
m1	
m2	
 (c)	
m3	
 (a)	
m5	
m4	
   (b)	
m6	
m7	
f	
  
fCase	
  (c):	
  intra-­‐feature	
  
dependency	
  
•  Missing	
  scenario	
  in	
  
f	
  ?	
callee	
Case	
  (b):	
  incoming	
  
dependency	
  
•  Entry	
  point	
  of	
  f	
  ?	
f	
  
f
f	
  
f	
  
Case	
  (a):	
  outgoing	
  
dependency	
  
•  Relevant	
  to	
  f	
  ?	
  
•  Calling	
  another	
  
feature?	
caller	
f1	
  
f2	
  
⊥	
  
⊥	
  f2	
  f1	
  
Example:	
  JPetStore	
  5.0	
•  Small	
  e-­‐commerce	
  applica#on	
  (2KLOC)	
  
consis#ng	
  of	
  eight	
  features	
Scenarios	
 1st	
Features	
 s1	
 s2	
 s3	
f1	
 Browsing the Catalog ✔	
 ✔	
f2	
 Searching the Catalog ✔	
f3	
 Signing In ✔	
 ✔	
f4	
 Ordering Items ✔	
f5	
 Signing Up	
f6	
 Adding and Removing an Item	
f7	
 Updating the Quantity of an Item	
f8	
 Reviewing an Order	
Uniden#fied	
  
by	
  analysts	
  
Dependency	
  Matrix	
  of	
  JPetStore	
Transitions to
SignonForm.jsp
(global forward)
Transitions to
Main.jsp
(global forward)
f1T
T
f3
f4
f2
f1
T
T
f3
f4
f2
Transitions to
NewOrderForm.jsp
(global forward)
Transitions to Error.jsp
(default error handler)
Transition to
ShippingForm.jsp
Invocations to CartBean.updateCartQuantities()
and CartBean.removeItemFromCart()
Transitions to
ViewItem.jsp
Invocation to
Cart.incrementQuantityByItemId(String)
Invocations to
AbstractBean.setMessage(String)
Covered
Uncovered
Manual	
  Explora#on	
  (1	
  of	
  2)	
•  Incoming	
  Dependency	
  to	
  f4	
  
–  f2:	
  CatalogBean.seachProducts()	
  →	
  
f4:	
  AbstractBean.setMessage(String)	
public String searchProducts() {	
if (keyword == null || keyword.length() < 1) {	
setMessage("Please enter a keyword to search for, then press the
search button.");	
return FAILURE;	
} else {	
productList = catalogService.searchProductList(keyword.toLowerCase());	
return SUCCESS;	
}	
}	
  
Manual	
  Explora#on	
  (2	
  of	
  2)	
•  Outgoing	
  dependency	
  from	
  f4	
  
–  f4:	
  OrderBean.newOrder()	
  →⊥:	
  /order/ShippingForm.jsp	
  
public String newOrder() {	
Map sessionMap = ActionContext.

getActionContext().getSessionMap();	
	
if (shippingAddressRequired) {	
shippingAddressRequired = false;	
return SHIPPING;	
} else if (!isConfirmed()) {	
return CONFIRM;	
} else if (getOrder() != null) {	
...	
f4:	
  /order/NewOrderForm.jsp	
  
Adding	
  Scenarios	
  for	
  Next	
  FL	
•  S4:	
  Perform	
  an	
  empty	
  search	
  
•  S5:	
  Supply	
  a	
  shipping	
  address	
  in	
  submibng	
  an	
  order	
Scenarios	
 1st	
 2nd	
Features	
 s1	
 s2	
 s3	
 s4	
 s5	
f1	
 Browsing the Catalog ✔	
 ✔	
 ✔	
f2	
 Searching the Catalog ✔	
 ✔	
f3	
 Signing In ✔	
 ✔	
 ✔	
f4	
 Ordering Items ✔	
 ✔	
f5	
 Signing Up	
f6	
 Adding and Removing an Item	
f7	
 Updating the Quantity of an Item	
f8	
 Reviewing an Order	
Iden#fied	
  
in	
  the	
  first	
  
itera#on	
  
Narrowing	
  Dependencies	
•  71	
  uncovered	
  dependencies	
  were	
  related	
  to	
  f4	
  
–  35	
  are	
  fan-­‐ins	
  to	
  the	
  known	
  features	
  
–  36	
  (21%)	
  remained	
  to	
  be	
  explored	
  
T	
 f1	
 f2	
 f3	
 f4	
 ⊥	
 Total	
T	
f1	
 0	
 5	
 1	
 1	
 2	
 3	
 2	
 2	
 5	
 11	
f2	
 1	
 1	
 0	
 1	
 0	
 3	
 1	
 1	
 2	
 2	
 1	
 1	
 5	
 9	
f3	
 0	
 2	
 3	
 20	
 3	
 3	
 3	
 3	
 9	
 28	
f4	
 4	
 4	
 0	
 4	
 4	
 10	
 5	
 66	
 12	
 12	
 25	
 96	
⊥	
 6	
 6	
 11	
 11	
 2	
 2	
 29	
 29	
 39	
 39	
 42	
 42	
 129	
 129	
Total	
 11	
 13	
 11	
 21	
 2	
 5	
 38	
 61	
 51	
 113	
 60	
 60	
 173	
 273	
Led:	
  #	
  of	
  uncovered	
  dependencies,	
  Right:	
  #	
  of	
  dependencies	
  
Conclusion

More Related Content

What's hot

Data structure lecture7
Data structure lecture7Data structure lecture7
Data structure lecture7
Kumar
 
Lecture 2 coding_principles
Lecture 2 coding_principlesLecture 2 coding_principles
Lecture 2 coding_principles
moduledesign
 

What's hot (20)

Stacks
StacksStacks
Stacks
 
Stack_Application_Infix_Prefix.pptx
Stack_Application_Infix_Prefix.pptxStack_Application_Infix_Prefix.pptx
Stack_Application_Infix_Prefix.pptx
 
Stack
StackStack
Stack
 
STACKS IN DATASTRUCTURE
STACKS IN DATASTRUCTURESTACKS IN DATASTRUCTURE
STACKS IN DATASTRUCTURE
 
Stack and its Applications : Data Structures ADT
Stack and its Applications : Data Structures ADTStack and its Applications : Data Structures ADT
Stack and its Applications : Data Structures ADT
 
Stack Operation In Data Structure
Stack Operation In Data Structure Stack Operation In Data Structure
Stack Operation In Data Structure
 
Application of Stack - Yadraj Meena
Application of Stack - Yadraj MeenaApplication of Stack - Yadraj Meena
Application of Stack - Yadraj Meena
 
Data structure lecture7
Data structure lecture7Data structure lecture7
Data structure lecture7
 
Programming in C Lab
Programming in C LabProgramming in C Lab
Programming in C Lab
 
week-1x
week-1xweek-1x
week-1x
 
Stack
StackStack
Stack
 
STACKS AND QUEUES CONCEPTS
STACKS AND QUEUES CONCEPTSSTACKS AND QUEUES CONCEPTS
STACKS AND QUEUES CONCEPTS
 
Project of data structure
Project of data structureProject of data structure
Project of data structure
 
Stack and queue
Stack and queueStack and queue
Stack and queue
 
Stack - Data Structure
Stack - Data StructureStack - Data Structure
Stack - Data Structure
 
Lecture 2 coding_principles
Lecture 2 coding_principlesLecture 2 coding_principles
Lecture 2 coding_principles
 
week-11x
week-11xweek-11x
week-11x
 
Stack concepts by Divya
Stack concepts by DivyaStack concepts by Divya
Stack concepts by Divya
 
week-10x
week-10xweek-10x
week-10x
 
Stack Data Structure
Stack Data StructureStack Data Structure
Stack Data Structure
 

Viewers also liked

Viewers also liked (20)

iFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature ImplementationsiFL: An Interactive Environment for Understanding Feature Implementations
iFL: An Interactive Environment for Understanding Feature Implementations
 
Refactoring Edit History of Source Code
Refactoring Edit History of Source CodeRefactoring Edit History of Source Code
Refactoring Edit History of Source Code
 
Toward Structured Location of Features
Toward Structured Location of FeaturesToward Structured Location of Features
Toward Structured Location of Features
 
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...
 
Detecting Occurrences of Refactoring with Heuristic Search
Detecting Occurrences of Refactoring with Heuristic SearchDetecting Occurrences of Refactoring with Heuristic Search
Detecting Occurrences of Refactoring with Heuristic Search
 
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
 
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
 
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
 
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...Generating Assertion Code from OCL: A Transformational Approach Based on Simi...
Generating Assertion Code from OCL: A Transformational Approach Based on Simi...
 
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
 
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
 
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...
 
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
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored Map
 
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
 
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
 
Sentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesSentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain Ontologies
 
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

Incremental Feature Location and Identification in Source Code

  • 1.
  • 2. Mo#va#on:  Exploring  Features   Analysts known   part  of  f1 feature  f1 unknown   to  analysts feature  f2 Problem  Domain Technical  Domain loca#on  of  f1 unexplored  modules   and  dependencies Feature  Loca+on  (FL) Feature   Iden+fica+on  (FI)
  • 3. Key  Idea:  Dependency  Classifica#on •  Combining  sta#c  dependency  analysis  and   dynamic  FL  technique   m5 m2 m7 m9 m1 m3 m6 m4 m8 f2   f1   Call  graph :  Uncovered  dependencies   (only  in  sta#c  dependencies;   have  not  executed  yet) :  Covered  dependencies   (in  both  sta#c  and  dynamic   dependencies) m5 m2 m7 m9 m1 m3 m8 m6 m4 (a)   (b)   (c)  
  • 4. Classifying  Dependencies  in  the   Adjacency  Matrix m8 m9 m1   m2 m3 m5 m4 m6 m7 m8 m9 m1 m2 (c) m3 (a) m5 m4   (b) m6 m7 f   fCase  (c):  intra-­‐feature   dependency   •  Missing  scenario  in   f  ? callee Case  (b):  incoming   dependency   •  Entry  point  of  f  ? f   f f   f   Case  (a):  outgoing   dependency   •  Relevant  to  f  ?   •  Calling  another   feature? caller f1   f2   ⊥   ⊥  f2  f1  
  • 5. Example:  JPetStore  5.0 •  Small  e-­‐commerce  applica#on  (2KLOC)   consis#ng  of  eight  features Scenarios 1st Features s1 s2 s3 f1 Browsing the Catalog ✔ ✔ f2 Searching the Catalog ✔ f3 Signing In ✔ ✔ f4 Ordering Items ✔ f5 Signing Up f6 Adding and Removing an Item f7 Updating the Quantity of an Item f8 Reviewing an Order Uniden#fied   by  analysts  
  • 6. Dependency  Matrix  of  JPetStore Transitions to SignonForm.jsp (global forward) Transitions to Main.jsp (global forward) f1T T f3 f4 f2 f1 T T f3 f4 f2 Transitions to NewOrderForm.jsp (global forward) Transitions to Error.jsp (default error handler) Transition to ShippingForm.jsp Invocations to CartBean.updateCartQuantities() and CartBean.removeItemFromCart() Transitions to ViewItem.jsp Invocation to Cart.incrementQuantityByItemId(String) Invocations to AbstractBean.setMessage(String) Covered Uncovered
  • 7. Manual  Explora#on  (1  of  2) •  Incoming  Dependency  to  f4   –  f2:  CatalogBean.seachProducts()  →   f4:  AbstractBean.setMessage(String) public String searchProducts() { if (keyword == null || keyword.length() < 1) { setMessage("Please enter a keyword to search for, then press the search button."); return FAILURE; } else { productList = catalogService.searchProductList(keyword.toLowerCase()); return SUCCESS; } }  
  • 8. Manual  Explora#on  (2  of  2) •  Outgoing  dependency  from  f4   –  f4:  OrderBean.newOrder()  →⊥:  /order/ShippingForm.jsp   public String newOrder() { Map sessionMap = ActionContext.
 getActionContext().getSessionMap(); if (shippingAddressRequired) { shippingAddressRequired = false; return SHIPPING; } else if (!isConfirmed()) { return CONFIRM; } else if (getOrder() != null) { ... f4:  /order/NewOrderForm.jsp  
  • 9. Adding  Scenarios  for  Next  FL •  S4:  Perform  an  empty  search   •  S5:  Supply  a  shipping  address  in  submibng  an  order Scenarios 1st 2nd Features s1 s2 s3 s4 s5 f1 Browsing the Catalog ✔ ✔ ✔ f2 Searching the Catalog ✔ ✔ f3 Signing In ✔ ✔ ✔ f4 Ordering Items ✔ ✔ f5 Signing Up f6 Adding and Removing an Item f7 Updating the Quantity of an Item f8 Reviewing an Order Iden#fied   in  the  first   itera#on  
  • 10. Narrowing  Dependencies •  71  uncovered  dependencies  were  related  to  f4   –  35  are  fan-­‐ins  to  the  known  features   –  36  (21%)  remained  to  be  explored   T f1 f2 f3 f4 ⊥ Total T f1 0 5 1 1 2 3 2 2 5 11 f2 1 1 0 1 0 3 1 1 2 2 1 1 5 9 f3 0 2 3 20 3 3 3 3 9 28 f4 4 4 0 4 4 10 5 66 12 12 25 96 ⊥ 6 6 11 11 2 2 29 29 39 39 42 42 129 129 Total 11 13 11 21 2 5 38 61 51 113 60 60 173 273 Led:  #  of  uncovered  dependencies,  Right:  #  of  dependencies