Projects & Tools

Design Pattern Recovery

Object-oriented design patterns describe general reusable and reputable solutions to common recurrent object-oriented design problems. Unfortunately, for many legacy software systems and open-source libraries, design knowledge is largely undocumented and buried in the source-code.

Read more: Design Pattern Recovery

Component Retrieval

This project explores the fundamental issues of software reuse as it is related to component retrieval. The ultimate goal of this project is to provide effective tools and mechanisms for locating, retrieving, and exploring the various relationships among reusable source-code components in large-scale software reuse repositories.

We have released the first version of a component identification and retrieval tool called JMentor. This tool also capable constructing and delivering relevant code examples that programmers can use to complete object instantiation programming tasks. In what follows, you will find a brief overview of JMentor's internal working mechanism.

Code Recommendation

Many libraries and frameworks are not intuitive to use. While some exceptional pieces of software may be documented well, it is often the case that libraries lack informative API documentation, and lack sufficient and effective source code examples that would demonstrate how these libraries should be used.

When such code examples do exist, they can be very helpful; programmers can often simply copy an example into the current project and then adapt it to the new context, thus enabling a particular API programming task to be completed rather quickly.

This project focuses on developing source-code recommendation tools that automatically construct and deliver relevant source-code snippets that can be used to complete particular programming tasks.

Our approach for code recommendation is semantic-based. It relies on an explicit and formal ontological knowledge representation of source-code and user context. It also takes advantage of points-to analysis techniques to handle special recommendation cases.

Therefore, we have developed an ontology model for code recommendation. More information about this ontology model can be found in the Code Search Ontologies page.

In order to investigate and evaluate the value of ontologies and pointer analysis in source code recommendation, we have implemented the first version of an object instantiation and recommendation tool named JMentor . This tool is is also capable of searching for and retrieving relevant software components. This combination is meant to promote multiple levels of software understanding and knowledge reuse