Program Translation Via Abstraction and Reimplementation
IEEE Transactions on Software Engineering
Estimating software costs
Identifying objects using cluster and concept analysis
Proceedings of the 21st international conference on Software engineering
SPiCE: A System for Translating Smalltalk Programs Into a C Environment
IEEE Transactions on Software Engineering
Automated Cobol to Java Recycling
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
CatchUp!: capturing and replaying refactorings to support API evolution
Proceedings of the 27th international conference on Software engineering
Refactoring support for class library migration
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
API-Evolution Support with Diff-CatchUp
IEEE Transactions on Software Engineering
An Experiment in Automatic Conversion of Legacy Java Programs to C#
AICCSA '06 Proceedings of the IEEE International Conference on Computer Systems and Applications
Parseweb: a programmer assistant for reusing open source code on the web
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Mining API Error-Handling Specifications from Source Code
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Mining exception-handling rules as sequence association rules
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Automatic mining of functionally equivalent code fragments via random testing
Proceedings of the eighteenth international symposium on Software testing and analysis
MSeqGen: object-oriented unit-test generation via mining source code
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
A lightweight approach for migrating web frameworks
Information and Software Technology
Inferring Resource Specifications from Natural Language API Documentation
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
An empirical study on evolution of API documentation
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
Cross-library API recommendation using web search engines
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
A history-based matching approach to identification of framework evolution
Proceedings of the 34th International Conference on Software Engineering
Exposing behavioral differences in cross-language API mapping relations
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Inferring likely mappings between APIs
Proceedings of the 2013 International Conference on Software Engineering
Lexical statistical machine translation for language migration
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Really automatic scalable object-oriented reengineering
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.01 |
To address business requirements and to survive in competing markets, companies or open source organizations often have to release different versions of their projects in different languages. Manually migrating projects from one language to another (such as from Java to C#) is a tedious and error-prone task. To reduce manual effort or human errors, tools can be developed for automatic migration of projects from one language to another. However, these tools require the knowledge of how Application Programming Interfaces (APIs) of one language are mapped to APIs of the other language, referred to as API mapping relations. In this paper, we propose a novel approach, called MAM (Mining API Mapping), that mines API mapping relations from one language to another using API client code. MAM accepts a set of projects each with two versions in two languages and mines API mapping relations between those two languages based on how APIs are used by the two versions. These mined API mapping relations assist in migration of projects from one language to another. We implemented a tool and conducted two evaluations to show the effectiveness of MAM. The results show that our tool mines 25,805 unique mapping relations of APIs between Java and C# with more than 80% accuracy. The results also show that mined API mapping relations help reduce 54.4% compilation errors and 43.0% defects during migration of projects with an existing migration tool, called Java2CSharp. The reduction in compilation errors and defects is due to our new mined mapping relations that are not available with the existing migration tool.