Name:                            Jerry Ming-Yang Lin


Qualification:               BE Software Engineering of University of Auckland


Current Course:           ME Software Engineering student








As increasing demands for complex software system, the number of  Java Core classes has been increased from about 200 classes in Java 1.0 to 2000+ Java 2 and yet still increasing.  Majority of Java programmers suffer from not being able to remember classes they want to use, and don’t even mention about the methods that Java classes have.  Fortunately Java API (Application Programming Interface) clearly documents everything a programmer needs to know about classes including class description, method description, input and output parameter, constructor and etc.  However, it is time consuming to manually search for a vaguely known or unknown class in the Java API.  If search is unsuccessful, code or methods might have to be written from scratch without reusing whatever that exists in Java Core Library, or alternatively searching for thirty party libraries.  Third party libraries or code written from scratch have to be tested which implies more cost and less productivity.  This kind of scenario could have been avoided in the first place with Software Repository System supporting the process of locating Java class API.


Loosely speaking Software Repository System uses Information Retrieval and indexing techniques to locate, retrieve, maintain as well as store reusable software artifacts.  Reusable software artifacts include source code, documentation (such as Java API), software architecture, design pattern, and etc.  Even though there are many off-the-shelf and non-commercial Software Repository Systems, but software ruse with these systems fail to become apart of standard software development process in practice.  There are some moderate successes in both research and industry, but unfortunately the problems remains that programmers simply do not actively search for reusable artifacts and make no attempt to reuse.  One distinctive attempt that has been done by Yunwen Ye in his PhD thesis demonstrates a sound idea to tackle this problem.  He create a system called CodeBroker which integrates a repository system containing Java Core API into emacs (an text editor which is widely used as Java IDE).  CodeBroke actively searching in repository for methods matching user’s code comment without user initiating the search, and results are presented to user within one of the emacs’s screen buffer.  This system promotes software reuse seamlessly with minimum user effort; his empirical studies have shown that CodeBroker is quite effective in supporting programmers achieving their task.  


However, there are still issues that need to be improved with such system.  Examples such as usability and configurability of the system, irrelevant retrievals, free text query refinement, retrieval precision effected by synonym and tautology, and etc.   Our research goal is to further improve above problems, but instead of extending CodeBroke, the implementation will be a plug-in on top of an open source Java IDE, eclipse.  Eclipse is an IDE specifically design for Java programming and itself is build in Java as well.  Eclipse has a sophisticated framework for plug-in development and java library supporting interface design that emacs is far less capable of.     



My Beca Poster Competition 2004 Entry