Combining Multiple Dimensions of Knowledge in API Migration Thiago Bartolomei, Mahdi Derakhshanmanesh, Andreas Fuhr, Peter Koch, Mathias Konrath, Ralf Lämmel, Heiko Winnebeck
Contribution of this presentation Present a framework combining multiple dimensions of knowledge to support API migration . 2
API Migration • Special case of software migration • Adapt software system to – replace old API (source API) by – new API (target API) – of the same domain (e.g., GUI development) 3
Why API Migration? • Legacy APIs may be – outdated, not supported anymore • New APIs may provide – new features – better performance, reliability, usability , … – support for new system environments 4
Why API Migration: Example SwingWT • Style Swing SWT 5
Why API Migration: Example SWTSwing • Compability Swing SWT 6
API Migration Approaches ? 7
API Migration: Reeimplentation 8
API Migration: Transformation 9
API Migration: Wrapping 10
Roadmap • Integrated Repository – Multiple dimensions of knowledge • Wrapper Assessment – How to rate wrappers on their suitability? • Guidance for Migration – How to extend/write own wrappers/transformations? 11
INTEGRATED REPOSITORY 12
Metamodel • Simplified Java sources • API Usage properties of 1476 SourceForge projects • Ontology on API concepts 13
Repository Technology: TGraphs 14
Repository Technology: Graph Querying with GReQL from clsApi: V{Class} with clsApi.qualifiedName =~ “ javax\.swing\..*" and count (clsApi-->{CorrespondsTo}) > 0 reportSet clsApi end
WRAPPER ASSESSMENT 16
Wrapper Assessment: Goals • Compare different wrappers for same wrapping task • Track development of own wrappers 17
Wrapper Assessment: Source API Coverage SwingWT SWTSwing 100% 100% 90% 90% 7 80% 80% 281 15 4618 70% 70% 12506 60% 60% 2331 50% 50% 40% 40% 25 30% 30% 372 16 3426 20% 20% 4533 10% 10% 533 0% 0% Packages Classes Methods Packages Classes Methods Implemented Unimplemented Implemented Unimplemented 18
Wrapper Assessment: Wrapper Compliance • Simple coverage statistics do not cover more complex dependencies – Declarations in supertypes – Empty implementations • Simple covarage does not reflect usage of APIs in real projects 19
Compliance: Declarations on supertypes SwingWT SWTSwing Missing methods Missing methods Class missing Class missing Class present Class present Impl. in supertype Impl. in supertype 78% 74% 22% 19% 4% 3% 20
Compliance: Empty methods SwingWT SWTSwing Implemented Methods Implemented Methods Impl. methods Empty methods Impl. methods Empty methods 7% 22% 78% 93% 21
Wrapper Assessment: Relevance in Terms of Usage SwingWT SWTSwing 100% 100% 2,9% 2,4% 90% 90% 80% 80% 57,4% 70% 70% 73,4% 60% 60% 50% 50% 97,7% 97,1% 40% 40% 30% 30% 42,6% 20% 20% 26,6% 10% 10% 0% 0% Absolute Usage Absolute Usage Implemented Unimplemented Implemented Unimplemented 22
GUIDANCE FOR MIGRATION 23
Guidance for Migration: Goals • Extend existing wrappers • Write own wrappers / reimplementations / transformations Identify target API code suited to implement source API methods 24
Guidance for Migration: Concept-based Method Candidates 25
Guidance for Migration: Assessment of the Ontology SwingWT SWTSwing 100% 100% 90% 90% 80% 80% 70% 70% 71,9% 75,0% 60% 60% 89,2% 50% 50% 99,7% 40% 40% 30% 30% 20% 20% 28,1% 25,0% 10% 10% 10,8% 0% 0% 0,3% Unimpl. meth. Impl. meth. Unimpl. meth. Impl. meth. With link Without link With link Without link 26
Guidance for Migration: Ontology Correctness SwingWT SWTSwing Methods with Links Methods with Links Correct link Wrong link Correct link Wrong link 37% 43% 57% 63% 27
THANK YOU FOR LISTENING! QUESTIONS? Integrated Repository
Recommend
More recommend