toward structured location of features

11

Upload: hiroshi-kazato

Post on 29-Jun-2015

1.852 views

Category:

Technology


0 download

DESCRIPTION

Presented at ICPC 2012 http://dx.doi.org/10.1109/ICPC

TRANSCRIPT

Page 1: Toward Structured Location of Features
Page 2: Toward Structured Location of Features

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

Page 3: Toward Structured Location of Features

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.

?

Page 4: Toward Structured Location of Features

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

Page 5: Toward Structured Location of Features

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

Page 6: Toward Structured Location of Features

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

Page 7: Toward Structured Location of Features

ϭϱϭĂŽŽŶĮŐŐĞƚĂŽ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

Page 8: Toward Structured Location of Features

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

Page 9: Toward Structured Location of Features

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

Page 10: Toward Structured Location of Features

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'

Page 11: Toward Structured Location of Features

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/