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 (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

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
 
Refactoring Edit History of Source Code
Refactoring Edit History of Source CodeRefactoring Edit History of Source Code
Refactoring Edit History of Source CodeShinpei Hayashi
 
Toward Structured Location of Features
Toward Structured Location of FeaturesToward Structured Location of Features
Toward Structured Location of FeaturesHiroshi Kazato
 
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
 
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 SearchShinpei 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
 
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
 
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
 
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...Shinpei 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
 
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
 
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
 
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
 
Visualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapVisualizing Stakeholder Concerns with Anchored Map
Visualizing Stakeholder Concerns with Anchored MapTakanori Ugai
 
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
 
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...Shinpei Hayashi
 
Sentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesSentence-to-Code Traceability Recovery with Domain Ontologies
Sentence-to-Code Traceability Recovery with Domain OntologiesShinpei Hayashi
 
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」
FOSE2010 ミニチュートリアル 「データマイニング技術を応用したソフトウェア構築・保守支援」Takashi Kobayashi
 

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

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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
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
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
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)
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
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?
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

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