Upload
hiroshi-kazato
View
1.852
Download
0
Embed Size (px)
DESCRIPTION
Presented at ICPC 2012 http://dx.doi.org/10.1109/ICPC
Citation preview
Feature Loca+on
• Iden+fying correspondence between features and modules in source code
AccountBean.signon() AccountBean() AccountService() CatalogService() Account.setPassword(String) AccountBean(AccountService, CatalogService) DaoConfig.getDaoManager()
CatalogService.getProductListByCategory(String)
Search Catalog, Sign On and Off,
Browse Categories,
List of Relevant Modules Features
Developer
......
......
FEATURE
LOCATIO
N
Mo+va+on
• AHer features are located, there is s+ll a cogni6ve gap between features and modules
AccountBean.signon() AccountBean() AccountService() CatalogService() Account.setPassword(String) AccountBean(AccountService, CatalogService) DaoConfig.getDaoManager()
CatalogService.getProductListByCategory(String)
List of Relevant Modules Rela+onships Among Modules
Developer
......
invoked together in many 0mes based on a call pa6ern.
also relevant to "Browse Categories".
easier to understand at once?
low priority?
a caller and its callee.
?
Our Goal: Structured Loca+on
• Stepwise explora+on of implementa+on structure of features Features
Search Catalog, Browse Categories, Sign On and Off,
Developer
......
Modules
is a part of
is composed of
is implemented by
Inter-‐Feature Structure
Intra-‐Feature Structure
Sub-‐Feature structure STRU
CTURED
LOCATIO
N
Example: JPetStore
• Virtual e-‐commerce system – Reference applica+on of Java EE
Feature List f1: Browse Catalog f2: Search Catalog f3: Browse Categories f4: Browse Product Details f5: Browse Item Details f6: Update Shopping Cart
f7: Sign On and Off f8: Update Account f9: Update Personaliza+on f10: Submit Order
Feature List f1: Browse Catalog f2: Search Catalog f3: Browse Categories f4: Browse Product Details f5: Browse Item Details f6: Update Shopping Cart
f7: Sign On and Off f8: Update Account f9: Update Personaliza+on f10: Submit Order
Inter-‐Feature Structure
• Concept la\ce obtained by formal concept analysis
f5: Browse Item Details
f6: Update Shopping Cart
f10: Submit Order
f8: Update Account f9: Update
Personaliza+on
f2: Search Catalog
f7: Sign On and Off
f3: Browse Categories
f1: Browse Catalog f4: Browse Product
Details
ϭϱϭĂŽŽŶĮŐŐĞƚĂŽDĂŶĂŐĞƌ;Ϳ
;ĐϭͿ
;ĐϭϬͿ
97: ĐĐŽƵŶƚĞĂŶŐĞƚĐĐŽƵŶƚ;Ϳ
92: ĐĐŽƵŶƚĞĂŶƐĞƚWĂƐƐǁŽƌĚ;^ƚƌŝŶŐͿ
156: ĐĐŽƵŶƚƐĞƚWĂƐƐǁŽƌĚ;^ƚƌŝŶŐͿ
ϵϬ ĐĐŽƵŶƚĞĂŶƐĞƚhƐĞƌŶĂŵĞ;^ƚƌŝŶŐͿ154: ĐĐŽƵŶƚƐĞƚhƐĞƌŶĂŵĞ;^ƚƌŝŶŐͿ
88: ĐĐŽƵŶƚĞĂŶ;ĐĐŽƵŶƚ^ĞƌǀŝĐĞĂƚĂůŽŐ^ĞƌǀŝĐĞͿ
87: ĐĐŽƵŶƚĞĂŶ;Ϳ
311: ĐĐŽƵŶƚ^ĞƌǀŝĐĞ;Ϳ
ϯϯĂƚĂůŽŐ^ĞƌǀŝĐĞ;Ϳ
86: ĐĐŽƵŶƚĞĂŶфĐůŝŶŝƚх;Ϳ
314: ĐĐŽƵŶƚ^ĞƌǀŝĐĞŐĞƚĐĐŽƵŶƚ;^ƚƌŝŶŐ^ƚƌŝŶŐͿ
297: ĐĐŽƵŶƚ^ƋůDĂƉĂŽŐĞƚĐĐŽƵŶƚ;^ƚƌŝŶŐ^ƚƌŝŶŐͿ
188: ĐĐŽƵŶƚƐĞƚĂŶŶĞƌEĂŵĞ;^ƚƌŝŶŐͿ
186: ĐĐŽƵŶƚƐĞƚĂŶŶĞƌKƉƟŽŶ;ůĞĂŶͿ
184: ĐĐŽƵŶƚƐĞƚ>ŝƐƚKƉƟŽŶ;ůĞĂŶͿ
182: ĐĐŽƵŶƚƐĞƚ>ĂŶŐƵĂŐĞWƌĞĨĞƌĞŶĐĞ;^ƚƌŝŶŐͿ
ϭϴϬ ĐĐŽƵŶƚƐĞƚ&ĂǀŽƵƌŝƚĞĂƚĞŐŽƌLJ/Ě;^ƚƌŝŶŐͿ
178: ĐĐŽƵŶƚƐĞƚWŚŽŶĞ;^ƚƌŝŶŐͿ
176: ĐĐŽƵŶƚƐĞƚŽƵŶƚƌLJ;^ƚƌŝŶŐͿ
174: ĐĐŽƵŶƚƐĞƚŝƉ;^ƚƌŝŶŐͿ
172: ĐĐŽƵŶƚƐĞƚ^ƚĂƚĞ;^ƚƌŝŶŐͿ
ϭϳϬ ĐĐŽƵŶƚƐĞƚŝƚLJ;^ƚƌŝŶŐͿ
168: ĐĐŽƵŶƚƐĞƚĚĚƌĞƐƐϮ;^ƚƌŝŶŐͿ
166: ĐĐŽƵŶƚƐĞƚĚĚƌĞƐƐϭ;^ƚƌŝŶŐͿ
164: ĐĐŽƵŶƚƐĞƚ^ƚĂƚƵƐ;^ƚƌŝŶŐͿ
162: ĐĐŽƵŶƚƐĞƚ>ĂƐƚEĂŵĞ;^ƚƌŝŶŐͿ
ϭϲϬ ĐĐŽƵŶƚƐĞƚ&ŝƌƐƚEĂŵĞ;^ƚƌŝŶŐͿ
158: ĐĐŽƵŶƚƐĞƚŵĂŝů;^ƚƌŝŶŐͿ
155: ĐĐŽƵŶƚŐĞƚWĂƐƐǁŽƌĚ;Ϳ
153: ĐĐŽƵŶƚŐĞƚhƐĞƌŶĂŵĞ;Ϳ
187: ĐĐŽƵŶƚŐĞƚĂŶŶĞƌEĂŵĞ;Ϳ
185: ĐĐŽƵŶƚŝƐĂŶŶĞƌKƉƟŽŶ;Ϳ
179: ĐĐŽƵŶƚŐĞƚ&ĂǀŽƵƌŝƚĞĂƚĞŐŽƌLJ/Ě;Ϳ
159: ĐĐŽƵŶƚŐĞƚ&ŝƌƐƚEĂŵĞ;Ϳ
112: ĐĐŽƵŶƚĞĂŶƌĞƐĞƚ;Ϳ
111: ĐĐŽƵŶƚĞĂŶŝƐƵƚŚĞŶƟĐĂƚĞĚ;Ϳ
ϭϬϵ ĐĐŽƵŶƚĞĂŶƐŝŐŶŽŶ;Ϳ
ϯϴĂƚĂůŽŐ^ĞƌǀŝĐĞŐĞƚWƌŽĚƵĐƚ>ŝƐƚLJĂƚĞŐŽƌLJ;^ƚƌŝŶŐͿ
Ϭ
;Đ1ϭͿĨϳ^ŝŐŶKŶĂŶĚKī
Intra-‐Feature Structure
• Call dependency graph obtained by dynamic analysis
Sub-‐Feature Structure
• Frequent call sequences of modules obtained by sequen+al pa^ern mining
Create and ini+alize objects
0 AccountBean()
AccountService()
CatalogService()
AccountBean(AccountService, CatalogService)
DaoConfig.getDaoManager()
0 AccountBean.isAuthen+cated() Account.getName()
Confirm whether the user is authen+cated
Overview of the Proposed Technique
Concept La\ce
Analyst
Execu+on Traces
Sequen+al Pa^ern Mining
Dynamic Analysis
Scenarios
Subject System
R0: Scenario-‐Feature Mapping
R1: Scenario-‐Module Mapping
R2: Scenario-‐Call Dependency Mapping
R3: Scenario-‐Call Pa^ern Mapping
Preparing Scenarios
Observing Execu6on
Mining Call PaEerns
Applying FCA
Structure Visualiza6on
Call Pa^ern
Feature-‐Specific Call Graph Formal Concept Analysis
Conclusion
Future Work • Improving the scalability • Evalua+ng the effec+veness and usability
Our'Goal:'Structured'Loca+on
• Stepwise'explora+on'of'implementa+on'structure'of'featuresFeatures
Search'Catalog,'''''Browse'Categories,'Sign%On%and%Off,'
Developer
......
Modules'
is'a'part'of
is'composed'of
is'implemented'by
InterMFeature'Structure'
IntraMFeature'Structure'
SubMFeature'structure'
STRUCTU
RED%LO
CATION
ϭϱϭĂŽŽŶĮŐŐĞƚĂŽDĂŶĂŐĞƌ;Ϳ
;ĐϭͿ
;ĐϭϬͿ
97: ĐĐŽƵŶƚĞĂŶŐĞƚĐĐŽƵŶƚ;Ϳ
92: ĐĐŽƵŶƚĞĂŶƐĞƚWĂƐƐǁŽƌĚ;^ƚƌŝŶŐͿ
156: ĐĐŽƵŶƚƐĞƚWĂƐƐǁŽƌĚ;^ƚƌŝŶŐͿ
ϵϬ ĐĐŽƵŶƚĞĂŶƐĞƚhƐĞƌŶĂŵĞ;^ƚƌŝŶŐͿ154: ĐĐŽƵŶƚƐĞƚhƐĞƌŶĂŵĞ;^ƚƌŝŶŐͿ
88: ĐĐŽƵŶƚĞĂŶ;ĐĐŽƵŶƚ^ĞƌǀŝĐĞĂƚĂůŽŐ^ĞƌǀŝĐĞͿ
87: ĐĐŽƵŶƚĞĂŶ;Ϳ
311: ĐĐŽƵŶƚ^ĞƌǀŝĐĞ;Ϳ
ϯϯĂƚĂůŽŐ^ĞƌǀŝĐĞ;Ϳ
86: ĐĐŽƵŶƚĞĂŶфĐůŝŶŝƚх;Ϳ
314: ĐĐŽƵŶƚ^ĞƌǀŝĐĞŐĞƚĐĐŽƵŶƚ;^ƚƌŝŶŐ^ƚƌŝŶŐͿ
297: ĐĐŽƵŶƚ^ƋůDĂƉĂŽŐĞƚĐĐŽƵŶƚ;^ƚƌŝŶŐ^ƚƌŝŶŐͿ
188: ĐĐŽƵŶƚƐĞƚĂŶŶĞƌEĂŵĞ;^ƚƌŝŶŐͿ
186: ĐĐŽƵŶƚƐĞƚĂŶŶĞƌKƉƟŽŶ;ůĞĂŶͿ
184: ĐĐŽƵŶƚƐĞƚ>ŝƐƚKƉƟŽŶ;ůĞĂŶͿ
182: ĐĐŽƵŶƚƐĞƚ>ĂŶŐƵĂŐĞWƌĞĨĞƌĞŶĐĞ;^ƚƌŝŶŐͿ
ϭϴϬ ĐĐŽƵŶƚƐĞƚ&ĂǀŽƵƌŝƚĞĂƚĞŐŽƌLJ/Ě;^ƚƌŝŶŐͿ
178: ĐĐŽƵŶƚƐĞƚWŚŽŶĞ;^ƚƌŝŶŐͿ
176: ĐĐŽƵŶƚƐĞƚŽƵŶƚƌLJ;^ƚƌŝŶŐͿ
174: ĐĐŽƵŶƚƐĞƚŝƉ;^ƚƌŝŶŐͿ
172: ĐĐŽƵŶƚƐĞƚ^ƚĂƚĞ;^ƚƌŝŶŐͿ
ϭϳϬ ĐĐŽƵŶƚƐĞƚŝƚLJ;^ƚƌŝŶŐͿ
168: ĐĐŽƵŶƚƐĞƚĚĚƌĞƐƐϮ;^ƚƌŝŶŐͿ
166: ĐĐŽƵŶƚƐĞƚĚĚƌĞƐƐϭ;^ƚƌŝŶŐͿ
164: ĐĐŽƵŶƚƐĞƚ^ƚĂƚƵƐ;^ƚƌŝŶŐͿ
162: ĐĐŽƵŶƚƐĞƚ>ĂƐƚEĂŵĞ;^ƚƌŝŶŐͿ
ϭϲϬ ĐĐŽƵŶƚƐĞƚ&ŝƌƐƚEĂŵĞ;^ƚƌŝŶŐͿ
158: ĐĐŽƵŶƚƐĞƚŵĂŝů;^ƚƌŝŶŐͿ
155: ĐĐŽƵŶƚŐĞƚWĂƐƐǁŽƌĚ;Ϳ
153: ĐĐŽƵŶƚŐĞƚhƐĞƌŶĂŵĞ;Ϳ
187: ĐĐŽƵŶƚŐĞƚĂŶŶĞƌEĂŵĞ;Ϳ
185: ĐĐŽƵŶƚŝƐĂŶŶĞƌKƉƟŽŶ;Ϳ
179: ĐĐŽƵŶƚŐĞƚ&ĂǀŽƵƌŝƚĞĂƚĞŐŽƌLJ/Ě;Ϳ
159: ĐĐŽƵŶƚŐĞƚ&ŝƌƐƚEĂŵĞ;Ϳ
112: ĐĐŽƵŶƚĞĂŶƌĞƐĞƚ;Ϳ
111: ĐĐŽƵŶƚĞĂŶŝƐƵƚŚĞŶƟĐĂƚĞĚ;Ϳ
ϭϬϵ ĐĐŽƵŶƚĞĂŶƐŝŐŶŽŶ;Ϳ
ϯϴĂƚĂůŽŐ^ĞƌǀŝĐĞŐĞƚWƌŽĚƵĐƚ>ŝƐƚLJĂƚĞŐŽƌLJ;^ƚƌŝŶŐͿ
Ϭ
;Đ1ϭͿĨϳ^ŝŐŶKŶĂŶĚKī
IntraMFeature'Structure
• Call'dependency'graph'obtained'by'dynamic'analysis
Feature'List'f1:'Browse'Catalog'f2:'Search'Catalog'f3:'Browse'Categories'f4:'Browse'Product'Details'f5:'Browse'Item'Details'f6:'Update'Shopping'Cart%
f7:%Sign%On%and%Off%f8:'Update'Account'f9:'Update'Personaliza+on'f10:'Submit'Order'
InterLFeature'Structure
• Concept'la\ce'obtained'by'formal'concept'analysis
f5:'Browse'Item'Details'
f6:'Update'Shopping'Cart'
f10:'Submit'Order'
f8:'Update'Account'f9:'Update'
Personaliza+on'
f2:'Search'Catalog'
f7:%Sign%On%and%Off%
f3:'Browse'Categories'
f1:'Browse'Catalog'f4:'Browse'Product'
Details'
Credit
• "Day 273 -‐ Tiny Trachodon" by puuikibeach – h^p://www.flickr.com/photos/puuikibeach/3768359322
• "That explains the nasty smell" by Kyknoord – h^p://www.flickr.com/photos/kyknoord/5341831715/