Description of ComputerAdvice

Michael Wales -
EEL 5874 - Expert Systems and Knowledge Engineering

Modification history:

Description Version 1.0April 17, 2002Michael WalesInitial document

Table of Contents


This application, ComputerAdvice, is a knowledge-based system used to aid the user in selecting individual components to build a complete computer system out of. The application works by asking the user about what they want to use their computer for and how much they would like to spend on the computer system. The application uses heuristic knowledge about what makes different applications perform their best, and develops a build sheet for a computer system that would be the best fit for the user's budget and needs.

Command Prompt System Design:

ComputerAdvice consists of two separate smaller applications, JESS and the ComputerAdvice program. JESS is an expert system shell based on the syntax of CLIPS (another older expert system shell). ComputerAdvice is a Java program that I wrote that interfaces with JESS.

The first application, JESS, is a commercial off the shelf product (COTS). JESS has the following responsibilities:

  1. Controls the entire system flow. All the other parts of the system are there in support of JESS.
  2. JESS develops the characteristics of the hardware the user will need for their computer system, and remembers all of the characteristic data.
  3. JESS has the algorithm of how to build up the computer system, by upgrading each component individually.

JESS interprets a script file, to create a database of rules about typical computer system applications. JESS then quizzes the user on what applications they use. JESS then takes that information, and applies the rules for each application that the user uses. JESS then has a list of facts about which hardware components that will be critical to the user's system performance. It uses this information to upgrade the critical components of the system as it builds the system. JESS also asks the user how much money they want to spend on the computer. When JESS uses up all of the user's money (or runs out of upgrades) the system stop. JESS then tells the ComputerAdvice program to output the build sheet to the user.

The second part of the ComputerAdvice system is the ComputerAdvice program. It is a program written entirely by me in Java. Its most visible purpose is to handle the input and output to the user. Here are a list of things it does:

  1. Establishes a socket connection to JESS to communicate with JESS.
  2. Loads up the HardwareList.txt file and creates a hardware component database that stores the price and description of each component by category.
  3. Maintains a list of the hardware JESS building for the user's system.
  4. Prints the build sheet when JESS is finished building the system.

When the ComputerAdvice program starts, it waits for JESS to connect to it. When JESS connects to it, it signals to JESS that it is ready. JESS quizzes the user through the interface of the ComputerAdvice program. Then finally JESS tells the program to output the build sheet, and then the program stops.

Web based system design:

An important part of any computer software is how easy it is for the end user to be able to use the application. I used the strength of Java and Internet applications to greatly enhance the user friendliness of the application. I created a web page that automatically loads a Java applet (a graphical Java application that runs inside of the web-browser) that connects to the ComputerAdvice system. This applet had to follow strict security guidelines (to prevent damage from malicious applets) to operate.

This worked by replacing the ComputerAdvice program with a client-server application, and the JESS part of the ComputerAdvice system worked the same as before. The web-server half of ComputerAdvice is the same program, but is simply passed a command line argument to put it in web-server mode. The user's web-browser downloads the small Java applet that connects to the server automatically when they visit the web-site. This allows the user to use the application without any knowledge of how expert systems or Java applications work.