With the increasing popularity of Java based applications, development platforms become more in demand. We selected Eclipse for this project as it is open source and proven application that can be used to build upon.
The ÒApplication SearchÓ will enable developers within a group or corporation to re-use existing code and follow pre-defined standards.
Our design uses Case Base
Reasoning as the main AI technique.
Experienced developers normally search through the existing code trying to visually select similar sources and gather ideas during the design of a new application. This process can become very difficult and ineffective, basically relying on the developerÕs expertise.
Within a large corporation, this process can take time and still leave a junior developer with a poor selection of examples to start off.
Having a tool, integrated to a widely used development platform, that will automate such search is definitely a great asset to any corporation. It can also come handy to any developer with a large library of existing source codes.
ÒEclipse [1] is an open
source community whose projects are focused on providing a vendor-neutral open
development platform and application frameworks for building software.Ó
This section will give an overview of the Eclipse development application. We chose to leave details aside. The reader can take advantage of the extensive documentation presented in [1].
Eclipse, as the majority of the development visual applications available, enables the creation of workspaces and different kind of projects. The user can organize the code, compile, debug and run Java applications.
Eclipse already has a Search tool with the following options:
¤ File Search: search for files that contain a given text in their bodies. This is very similar to the search available through the operations system.
¤ Java Search: using this option, the developer can look for a text, specifying if the system should look for methods, package, field, restricting the search for what it is really required.
¤ Plug-in Search: look for plug-ins in the file system also using filters such as ÒEnabled Plug-ins onlyÓ.
Refer to Figure 1 for more details.

Figure 1 - Eclipse interface
The ÒApplication SearchÓ is designed to enhance the level of reusability the developer is able to achieve. It is a great tool, especially for projects focusing on particular kinds of applications that the developer doesnÕt master or hadnÕt had the opportunity to work with.
Imagine a developer just got a new job and is given his first development task. Every company has different coding standards that must be kept through the corporation. There are also new components of the language that he might not be that familiar with. In addition, the company might use different business concepts.
It would be much more productive, if a developer was able to intuitively select a list of applications and easily visualize how coding was developed. Eclipse Search options are very useful if the developer really knows what he is looking for, not for the scenario described above. It requires the developer to know the language technicalities and thus limits the search capabilities.
Proposed Solution
By using a tool that links language and business components to search keywords, the developer has a greater level of abstraction while designing a new application. His search is no more dependent on the domain or language specific expertise. For example, if he wants to develop a billing application for a shopping mall. He knows that he would like to reuse code which has implemented the GUI features and which also contains snippets for billing related code. The developer need not know the required GUI related APIs to search for code. He also need not have prior knowledge about business implications to design a billing system. Thus, our tool provides help with a high level of abstraction. Not only is the tool helpful for the entrŽe level developers but also for experienced developers. If an experienced coder wants to write a new application and wants to refer to some previously written code which has already been tested for adherence to quality, performance, standards, accuracy, etc, then he can make use of this search facility. In this case, the developer can make use of his expertise for better search queries. Thus, the tool helps experienced developers to make sure all the aspects were taken in consideration, all possibilities were covered and the best option was chosen while writing the new application.
We decided to use Case Base Reasoning for this project because it is a widely used technique that has presented great results. With an appropriate set of attributes, we could model different kinds of applications fulfilling most of the developerÕs needs.
The approach adopted by us, to implement the search facility, is in lines with the basic theme of our project, i.e. reusing of prior knowledge. Case-based reasoning (CBR), broadly construed, is the process of solving new problems based on the solutions of similar past problems. An auto mechanic who fixes an engine by recalling another car that exhibited similar symptoms is using case-based reasoning. A lawyer who advocates a particular outcome in a trial based on legal precedents or a judge who creates case law is using case-based reasoning. So, too, an engineer copying working elements of nature, is treating nature as a database of solutions to problems. Case-based reasoning is a prominent kind of analogy making. Of the three approaches of CBR, viz. textual, structural and conversational, we propose to use the Conversational CBR (CCBR).
The approach involves 4 steps: Retrieve, Reuse, Revise and Retain.
CCBR is an interactive form of case-based reasoning. It uses a mixed-initiative dialog to guide users to facilitate the case retrieval process through a question-answer sequence. In the traditional CBR process, users are expected to provide a well-defined problem description and based on such a description, the CBR system can find the most appropriate case. Usually users cannot define their problem clearly and accurately. So, instead of letting users guess how to describe their problem, CCBR identifies the most discriminative questions automatically and incrementally and displays them to users to extract information to facilitate the retrieval process.
The reader can find more
information about Conversational Case Base Reasoning in the reference [4].
6.1) Case Base
|
Case
Number |
Application |
Type |
keywords |
Link |
tips |
|
1 |
GUI |
J |
JDialog |
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JDialog.html |
|
|
2 |
GUI |
J |
JButton |
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JButton.html |
|
|
3 |
GUI |
J |
JPanel |
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JPanel.html |
|
|
4 |
GUI |
J |
JLabel |
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JLabel.html |
|
|
5 |
GUI |
J |
JList |
|
|
|
6 |
GUI |
J |
JFileChooser |
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFileChooser |
|
|
7 |
GUI |
J |
JMenu |
|
|
|
8 |
GUI |