DATABASE OR FILE ACCESSING

Method and apparatus for an incremental editor technology

5963939

Abstract

An object-driven application tool allows a Value Added Reseller (VAR) to access a large body of publicly available information about computing devices and to identify the needs of a particular customer or end user and to select an appropriate solution of equipment, hardware, and networking products to meet the customer's needs. Moreover, the tool includes capabilities allowing a VAR to demonstrate to the end user the appropriateness of the solution, for allowing information entry in high level, abstract business-oriented vocabulary rather than a highly technical low level jargon (thus facilitating data entry of information obtained from the end user) and allowing the tool to recognize whether, for example, a slight increase in memory capacity beyond the express needs of the end user may allow a dramatic reduction in requirements for processor speed or non-volatile data storage. The latter tools allow the exemplary embodiment of the present invention to suggest superior solutions over and beyond the express needs of the end user. Selection of a particular solution is generally decoupled from the needs of the end user, which are stored in a separate database; thereafter, as new equipment to obtain on-line information relating to new products and services. Information in the database also includes retrofit information, so that new products can be installed into existing networks.


Claims

What is claimed is:

1. A computer implemented system for selecting products, comprising:

a database with at least one class of products having physical performance parameters;

a calibration table coupled to the database, the calibration table providing a translation between physical and relative, logical performance parameters such that a product with a particular physical performance parameter is selected responsive to specification of the relative, logical performance curve parameters; and

a user interface for specifying the class of product and the relative, logical performance parameter for the class of product, and for displaying a product with the corresponding physical performance parameter.

2. The computer implemented system of claim 1, wherein:

the database resides within a memory within a server; and

the user interface resides within a subsystem coupled to the server over a network.

3. The computer implemented system of claim 2, wherein the network is the Internet.

4. The computer implemented system of claim 1, wherein the database and the user interface reside on the same stand-alone computer, such that the database and the user interface are directly accessible by a processor.

5. The computer implemented system of claim 1, wherein:

the products include computers.

6. The computer implemented system of claim 1, wherein:

the products include computer network components.

7. The computer implemented system of claim 1, wherein:

the products include computer peripherals.

8. The computer implemented system of claim 1, wherein:

the products include computers, computer network components, and computer peripherals.

9. The computer system of claim 1, wherein:

the user interface includes buttons.

10. The computer implemented system of claim 1, wherein:

the user interface allows a user to enter the increment and decrement inputs via a keyboard.

11. The system of claim 1, wherein:

the particular relative, logical parameter is within a sortable range of values, each value in the range of values translating to a distinct physical performance parameter.

12. The system of claim 1 wherein:

each physical performance parameter translates to a distinct subset of the class of products.

13. In a computer system having a database with at least one class of products having physical performance parameters, a method for selecting a subset of the class of products, the method comprising the steps of:

receiving a relative, logical performance parameter;

translating the relative, logical performance parameter to a physical performance parameter; and

determining a subset of the class of products having the physical performance parameter.

14. The method of claim 13, wherein the step of translating includes a step of:

accessing a calibration table coupled to the database; and

the calibration table providing a translation between physical performance parameters and the relative, logical performance parameters such that a set of products with a particular physical performance parameter is selected responsive to specification of the relative logical performance parameter.


Description

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a system for providing product selection and, more specifically, to interactive object-driven database product selection.

2. Description of the Related Art

Technological development is constantly producing an ever-growing array of increasingly sophisticated, less expensive, and more useful products for use in a typical business environment. New networking products, Internet related services, storage and data retrieval methodologies, as well as video and telecommunication products can make selecting products and services appropriate for a particular business a very difficult task. Not only must the business user attempt to keep up with the evolving technological capabilities of modern devices, but that user must also attempt to anticipate the future growth of the business and allow for future business needs. The complexity of the technology, coupled with the high ticket price of many business information solutions, can give the most astute business executive pause.

Value added resellers (VAR's) attempt to fill the need by discussing business needs with business personnel, and attempt to customize information technology solutions to the needs of the particular business. However, although VAR's are typically extremely knowledgeable about the available products, identifying customer needs and translating the business user's description of an ideal information or communication solution from a business world to a technology world calls for creative thinking. Businesses typically do not know to the nearest megabyte how much memory they need, nor the baud rate of communication lines that are needed, nor which type of server or network related hardware or software is appropriate. Furthermore, from the technology side, new products and services cannot find the market for which they are most appropriate if customers are not aware that the products exist and the VAR's do not realize the business has a particular need.

As businesses that have ever purchased computer or communication equipment know, selecting the appropriate hardware, software, and network configuration is only part of the problem. Individual desktop and notebook computers compatible with the network, printers, and other equipment must be selected based upon human consideration such as user familiarity and technical background, training, time, previously purchased embedded equipment, budget considerations and technological needs. Selecting a particular processor speed or the number of pixels per inch of resolution on a desktop computer monitor, for example, are technological considerations that an end-user or a customer in a non-computer business may find difficult to express. Evaluating the trade-offs between slight increases in processor speed and slight decreases in communication bandwidth, for example, are frequently decisions businesses prefer to leave to the technical consultants. Customers often would prefer to communicate their business needs in non-technical language, including what trade-offs the business would be willing to make from a business perspective, if there were some assurance that the technical consultant could optimize a solution to those business needs.

The VAR or technical consultant, of course, must be familiar with products and services currently available. However, these products and services change over time as new products are introduced or are discontinued or are available in only limited geographical locations. Often price or availability can vary drastically from region to region, let alone country to country, adding complexity to the consultant's task. Local and wide area network standards, linguistic considerations, and even power supply compatibility requirements impose severe external constraints on a solution. Software must be selected that has a user interface and a human user interface language that the employees of the customer's business can understand, and must be interconnectable with other products related to the customer's business.

If the difficulties inherent in keeping current with new product availability factors were not enough, the technical consultant is often further relied upon for installation and configuration of the equipment pertinent to the solution. Although computer equipment often includes a set of "instructions" for installation, the instructions included are often written at a single level of technical sophistication and often require some previous familiarity with the product family. Configuring products from various manufacturers can create interoperability problems, calling for some creative implementation on the part of the technical consultant. Not only are the implementation or installation instructions typically written at a single level of technological familiarity, often without a telephone number or other means of acquiring additional information about the product necessary for installation, but the changing technological landscape frequently requires retrofitting new devices into pre-existing systems. Equipment previously installed in a network may need to be reconfigured slightly, as new equipment is also installed into the network, yet implementation instructions for such retrofitting are difficult to develop.

Finally, while the technical consultant and the customer may be able to reduce the set of possible solutions to a relatively small class of possibilities, some considerations may not seem particularly relevant at the time. Selecting a solution based upon limited information requires more than a straight-forward algebraic function, since there may be a large number of "don't care" parameters. Rather, a solution may be required based upon only a very limited amount of information. Alternately, a business may not know which of a small number of alternatives may evolve; for example, the business may not know whether it will win a particular contract or expand, and therefore a baseline solution expandable in a number of directions may be needed. Solving problems based on a limited amount of information, while allowing for later introduction of additional constraints, is a science referred to as "fuzzy logic," involving a complex set of determinations.

SUMMARY OF THE INVENTION

The exemplary embodiment of the present invention is an object-driven application tool that gathers information on a user's computing equipment requirements through a series of questions and then suggests a solution that meets or exceeds those requirements. Although the exemplary embodiment of the present invention is largely a data driven application or collection of applications, creative information handling also allows selection of an optimum solution based upon limited information.

The exemplary embodiment of the present invention, in one implementation, includes a maintained database that incorporates a large body of publicly available information about computing devices. The exemplary embodiment of the present invention also includes a variety of tools to help a VAR identify the needs of a particular customer or end user, and select an appropriate solution of equipment, software, and networking products to meet the customer's needs. Moreover, the exemplary embodiment of the present invention includes tools for allowing a VAR to demonstrate to the end user the appropriateness of the solution. Still other tools allow information entry in a high level, abstract, business-oriented vocabulary rather than a highly technical, low level jargon, facilitating data entry of information obtained from the end user. Still other tools allow the exemplary embodiment of the present invention to recognize whether, for example, a slight increase in memory capacity beyond the express needs of the end user may allow a dramatic reduction in requirements for processor speed or non-volatile data storage. The latter tools allow the exemplary embodiment of the present invention to suggest superior solutions over and beyond the express needs of the end user. Although departing slightly from the limits imposed by the input information, such a tool allows the exemplary embodiment of the present invention to suggest products and services, networking configuration, and other solution attributes that perhaps the VAR or end user might not have considered.

Calibration, or selection of a particular solution, is generally decoupled from the needs of the end user, which is stored in a separate database; thereafter, as new equipment to obtain on-line information relating to new products and services. Information in the database also includes retrofit information, so that new products can be installed into existing networks.

The exemplary embodiment of the present invention also includes a very high level set of software objects for obtaining information from a user and searching the database of products and services to provide the optimum solution. Rather than a hard-coded software tree for branching among a fixed set of questions, the exemplary embodiment of the present invention is driven by the data objects, which themselves invoke other objects that adjust a solution according to the available product information and user responses to previous questions. Therefore, as the user provides information to the various question blocks, the exemplary embodiment of the present invention dynamically searches the database for possible solutions. The search for solutions among the database drives further question blocks (contained in QuestionProcs 100a) for obtaining still more information from the user, to narrow down the selection of possible solutions. Rather than obtaining information in technical jargon, the exemplary embodiment of the present invention uses question blocks which prompt the user for information in the user's own vocabulary. This high level, data-driven, object oriented approach allows tremendous expandability and flexibility on the part of the exemplary embodiment of the present invention.

An exemplary QuestionProc 100a is shown in FIG. 22H (also shown in FIG. 3). Identified by a process block identifier, an identifier indicating the question sequence to which the QuestionProc100a belongs, an Answer Type providing a link to an Answers Base Class 140 (FIG. 22B), and an object ID corresponding to the appropriate subclass of the Answers Base Class 140 to which the user's response is to be written are also included. The object ID allows processes corresponding to the Answers Base Class 140 to find the user's response and incorporate the response such that analytical processes of a User Guidelines Base Class 160 and a Requirements Base Class 180 can find and analyze the responses.

The QuestionProc 100a includes a list of questions. The questions are extensions or subclasses of the QuestionProc 100a, identified by question key, language key providing a link to the Language Base Class 700, and a question. The question may be limited in length, for example to 255 characters. The Language Base Class 700 is illustrated in FIG. 23B.

The tool may be operated in expert mode 400c, as an alternative to the novice mode. Novice mode allows a user to observe much of the power of the tool, as the tool prompts the user for questions in easy-to-understand vocabulary. Expert mode 400c, on the other hand, allows a user who is familiar with specific products or groups of products to access the particular product or group of products directly. It should be noted, however, that the two modes are not mutually exclusive. For example, if a user is familiar with desktops and insists on a Deskpro 2000, for example, but wants to use the system to configure the remainder of the solutions, the expert mode 400c, allows the user to enter the expert mode 400c to identify desktops and then access novice mode to configure the remainder of the system.

The expert mode 400c has an "Assist Me" feature. The "Assist Me" feature has a number of uses. For example, the "Assist Me" feature can be used in conjunction with the incremental editor to provide a powerful resource for rapid solution determination. As will be explained, each product known to the tool is assigned a rank. The rank is determined by comparing the product to other products on the market; a product that is the best of ten products on the market, for example, is assigned a rank of 10, while a similar product of only median quality is assigned a rank of 5.

The incremental editor allows a user to substitute another product of slightly higher or lower rank for a product already defined as part of the solution. When the incremental editor is used, the tool automatically re-analyzes the solution, and recomputes the cost, speed, and other characteristics of the solution. The user may then reaccess the incremental editor, for the newly-substituted product or for any other product that is part of the solution. The incremental editor is available in either expert or novice mode. The incremental editor thus allows a user to identify a particular product in expert mode 400c, and then access the incremental editor to substitute a different product for the product identified.

Various features and tools in the exemplary embodiment of the present invention allow the selection of an appropriate server, inter-networking components, local area network, as well as pricing and product shipping information.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained when the following detailed description of the preferred embodiment is considered in conjunction with the following drawings, in which:

FIG. 1 shows the novice mode high level flow;

FIG. 2 shows the expert mode high level flow;

FIG. 3 shows the relationship between the various base classes in the tool;

FIG. 4 shows solution framework high level representation;

FIG. 5 shows a Phase II product recommendation data flow;

FIG. 6 shows user specified guidelines having ranges of 1-3 and 0-100;

FIG. 7 shows requirements translation;

FIG. 8 shows attributes common to all object classes;

FIG. 9 shows attributes for each class, including properties and requirements;

FIG. 10 shows base requirements translation (subjective to rank translation) regarding desktop base;

FIGS. 11A and 11B show base requirements translation (subjective to rank) regarding desktop option (type of network interface controller, HD, graphics, etc);

FIG. 12 shows server base requirements;

FIG. 13 shows server option requirements;

FIG. 14 shows OS option requirements;

FIG. 15 shows OS products requirements;

FIG. 16 shows application requirements;

FIGS. 17A-17D show initial content of calibration base class;

FIGS. 18A-18C show object classes (Phase I);

FIG. 19 shows object subclass pertaining to servers;

FIG. 20 shows object subclass pertaining to portables;

FIG. 21 shows object subclass pertaining to networking equipment;

FIGS. 22A-22K and FIGS. 23A-C show relationships among the base object base classes, base class view, and object extension tables, and auxiliary base classes;

FIGS. 24A-24C show the requirements translation table of FIG. 7 in greater detail;

FIG. 25 shows peer-to-peer versus client server network;

FIG. 26 shows segmenting client/server networks;

FIG. 27 shows 5-port versus 8-port switch in networks;

FIG. 28 shows dial-up versus permanent WAN;

FIG. 29 shows centralized dial-up WAN;

FIG. 31 shows base server selection;

FIG. 32 shows a ProLiant server performing memory sizing;

FIG. 33 shows small peer-peer workgroup;

FIG. 35 shows growing client server workgroup;

FIG. 37 shows higher performance workgroup;

FIG. 38 shows high security workgroup;

FIG. 39 shows high performance/secure workgroup;

FIG. 40 shows server form workgroup;

FIG. 41 shows high speed server form workgroup;

FIG. 42 shows high speed server form workgroup with secure department;

FIG. 43 shows inter-network hierarchy of Phase III;

FIG. 44 shows a visual graphic display of a question block entry, inquiring as to the mode of operation of the tool;

FIG. 45 shows a visual graphic display of a question block entry, inquiring as to the user's identity and seeking a password;

FIG. 46 shows a visual graphic display of a question block entry belonging to the informational question block category, seeking information regarding the user's personal record;

FIG. 47 shows a visual graphic display of a question block entry, inquiring as to the user's purpose for using the tool;

FIG. 48 shows a visual graphic display of a question block entry, inquiring as to the user's enterprise or network requirements;

FIG. 49 shows a visual graphic display of a question block entry, inquiring as to the user's networking and other software and hardware requirements;

FIG. 50 shows a visual graphic display of a recommended solution;

FIG. 51 shows a visual graphic display of the recommended solution of FIG. 50, showing further a graphical user interface window of the incremental editor;

FIG. 52 shows a set of installation/implementation instructions;

FIG. 53 shows a follow-up question block entry, following presentation of a set of installation/implementation instructions;

FIG. 54 shows a process of adding new products to the Base Classes, as part of a maintenance functionality;

FIGS. 55 and 56 show a manual and an automatic process of implementing maintenance of the tool, improving the response when less than full information is provided by the user; and

FIG. 57 shows a Purchase Order form useful for on-line product ordering; and.

FIGS. 58A-58V show a representative set of question blocks.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

The exemplary embodiment of the present invention includes the ability to decouple various structures and thereby provide greater abstraction. For example, avoiding the hard-coding of pointers to the physical storage locations of the question blocks allows the exemplary embodiment of the present invention to share the question blocks among many clients, providing simultaneous interactive capacity. To accomplish this, the exemplary embodiment of the present invention provides each session with a view (i.e., a pseudo-table or temporary table) that can be run at the client's browser or elsewhere on the server. The view includes a number of object classes, including a number of base classes and subclasses, and related procedures. Each view is identified by a client session identifier (client session ID) and a machine identifier (machine ID).

To arrive at a solution to the customer's computing needs, the tool according to the invention employs four phases. In "Phase I" ›the first phase!, a Solution Framework is generated based on answers to very general questions. The Solution Framework provides an overview of the types of products and their inter-relationships that will be needed.

This framework is "fleshed out" in phase two, in which specific products fulfill various requirements for each particular product. Then, in phase three, these products are tied together with specific networking products. Finally, in phase four, this tool determines the configuration of the various selected products.

This process is an object driven process, in which the various levels of the solution are represented by objects which drive each other in asking questions and refining the actual chosen solution.

As each process is called or entered, a list of processes is maintained. An exemplary list 400f is illustrated in FIG. 22G. The list, residing in the view corresponding to the session, is identified by a primary key, and may be regarded as a queue of processes to be executed. A county code is included, as well as a list of processes that have recently been executed, and a list of processes to be executed. Also, a pointer to the prior (i.e., most recent) step executed, and to the next steps to be executed, in the current process are also maintained.

A. GENERAL OVERVIEW OF THE PROCESSES INVOLVED IN THE TOOL

A Products Base Class 240 (FIG. 22D), a Questions Block Base Class 100 (FIGS. 58A-58V), and an Object Base Class 600 (FIGS. 18A-18C) are maintained by manufacturers or other specialists, and are not alterable by a typical user. The Products Base Class 240 and Question Block Base Class 100 are analyzed by the other processes of the tool. A Client Table corresponding to a Client Base Class 120 (FIG. 3) for each client and machine is also maintained, defining a particular client's determined configuration, so that a user can choose merely to update a current configuration rather than devise an entire new system, and so that the various processes associated with the tool can develop a solution that makes appropriate use of the products the user has previously purchased. Generally, machines are considered separately; although a user can move products from one machine to another, typically the tool does not recommend solutions requiring such a move.

The structure of the Client Base Class 120 is shown in FIG. 22J. Each client table is identified by an identifier, and contains a language and country code identifier as well. Also, the session ID is provided, to facilitate (among other features) a history-tracking feature that allows a user to "undo" changes to the system before actually purchasing any products. Also, the date and time stamp allow the tool to store several versions of the implemented system, so that the system may be analyzed over time. For example, customer's client history may be reconstructed as part of an analysis to determine whether and how the customer's needs have changed over time, and whether the customer typically experiences rapid growth in computing meeds. A foreign key to main logic, a machine identifier, and a next and previous step field are also in the initial Client Base Class 120a. A Client History Table 120b, within the Client Base Class 120, is shown in FIG. 22K.

The Products Base Class 240 begins as a Products Base Class 240a, shown in FIG. 22D. The Products Base Class 240a contains a Class ID, a geo (geography) key, a product family key, a part number, an introduction data, and end of life date, and an availability flag. All of these attributes are relevant to a determination of whether a product may be included in a solution. The Class ID indicates the category of the product. For example, desktops are in a different category than servers. Each product also has a geo. The geo indicates the language (English, French, Japanese, etc.) and the geographical region of the world in which the product is available. The part number, introduction date, end of life data, and availability flag all help determine whether a product of limited availability is available for inclusion in the solution.

The geo is determined by a Language Base Class 700 (FIG. 23B) and a Country Base Class 750 (FIG. 23A) in response to questions from the user or as a function of information obtained from the Client Base Class 120.

As will become apparent on reference to the disclosure, a Solution Framework Base Class 400 contains the solution that is to be recommended to the user. However, during various stages of analysis performed by processes corresponding to the Solutions Framework Base Class 400, different instances of the base class are found. A Login Procedure for the Client Session creates a view, which is to say that the Login Procedure allocates a region of memory to the client session.

To create a Solution Framework Base Class 400 at the beginning of a session, processes generate a Solutions Object 400a containing a session ID, an Object ID, a Machine ID, and a part number, as shown in FIG. 22F. The Login Procedure then calls an initial Informational Question Block belonging to the Question Block Base Class 100. The Question Blocks are discussed in depth below, in reference to FIGS. 58A-58V. The initial Informational Question Block contains processes that examine various regions in an Answers Tables of an Answers Base Class 140 (FIG. 22B).

The Answers Base Class 400 begins the session as an Answers Base Class 140a, shown in FIG. 22C. The Answers Base Class 140a contains a session ID (PK), an Object ID, a Machine ID, and a time and date stamp. As discussed below in reference to FIGS. 58A-58V, the Question Blocks are each linked to particular regions in the Answers Base Class, and are driven by the invalidity or absence of data in the Answers Base Class region. The initial Informational Question Block also creates an initial instance of the Solution Framework Base Class 400, initially consisting of a list of pointers to other empty or invalid memory regions. The initial Information Question Block, however, places pointers to other Informational Question Blocks into a queue within the view, and spawns an independent process that continually searches the queue and calls other question blocks. As long as a pointer to a question block remains in the queue, the independent process calls the corresponding question block. Alternately, the independent process searches the Answers Base Class 140 tables for invalid or empty data locations, identifies the question block linked to the memory region containing the invalid or empty data locations, and calls the corresponding question block. Each Question Block obtains information from the user, and places the information in the Answers Base Class 140 tables.

The initial Login procedure, or one of the Informational Question Blocks, creates a Solution Framework within the view. The Solution Framework as created merely contains a list of pointers to various regions in memory. However, as various informational question blocks obtain more information about the desired result, the Solution Framework begins to take shape. Extensions are created, and information is inserted into the extensions. Each extension is a subclass of the Solution Framework Base Class. Thus, the informational question blocks may be said to create a first instance of the Solution Framework Base Class.

Either the initial Login procedure or the informational questions identify a Client Base Class 120 in the database, if a Client Base Class 120 exists, corresponding to the client and the machine ID provided by the user. The Client Base Class 120 is analyzed for elements that are to be included in the solution, and information is placed either in the Answers Base Class 140 or directly into the Solutions Framework 400 extensions.

Referring now to FIG. 44, a user interface screen 100b showing an example of a question presentation from a question block is shown. The information necessary to generate the screen display of FIG. 44 is stored in the corresponding question block. The particular question has two radio buttons, to allow a user to indicate an appropriate level of technical expertise in using the tool. One radio button 552 allows a novice to indicate a level of knowledge and expertise, while the other radio button 554 allows an expert to indicate a level of knowledge and expertise. A row of control buttons 660 and an Internet or web page URL or other address indicator 680 are placed at the top of the screen, to allow the user to control the entry of information more easily and to control how the information is presented. A row of radio buttons 682 allows the user to control the entry of information by allowing the user to branch to other question blocks within the question procedures.

Referring now to FIG. 45, another user interface screen 100c showing another example of a question presentation from a question block is shown. The particular question shown in FIG. 45 has two interactive entry windows 556 and 558, to allow a user to indicate the user's ID and password. The embodiment of the tool associated with the question procedure of FIG. 45 is a more secure system, in that access is restricted. The particular question also has two radio buttons, to allow a user to clear all of the windows and erase information entered into the windows 556 and 558 and to sign-on to the system. A row of control buttons 660 and an Internet or web page URL or other address indicator 680 are placed at the top of the screen, to allow the user to control the entry of information more easily and to control how the information is presented. A row of radio buttons 682 allows the user to control the entry of information by allowing the user to branch to other question blocks within the question procedures.

Referring now to FIG. 46, another user interface screen 100d showing additional information being requested from the user. The company name 562, mail stop delivery 564, street address 566, city 568, business phone 570, fax phone 610, and Internet address 612 are all recorded. The information thus collected is stored in both the Answers Base Class 140 (FIG. 22B) and the Client Base Class 120, and is used to build the client Base Classes. Various facilities of the same company, or different departments within the same company, may have different needs, and the tool allows the particular needs to be addressed in different client Base Classes. Also, if a user indicates an interest in connecting together multiple facilities or departments of the same company, the information is already stored and the tool can be used to analyze the various files and Base Classes to produce a unified solution and a corresponding set of installation/implementation instructions. A row of control buttons 660 and an Internet or web page URL or other address indicator 680 are placed at the top of the screen, to allow the user to control the entry of information more easily and to control how the information is presented. A row of radio buttons 682 allows the user to control the entry of information by allowing the user to branch to other question blocks within the question procedures.

Referring now to FIG. 47, another user interface screen 100e showing additional information is obtained through another question in another question block. The Question Blocks include procedures for presenting check boxes, as well as radio buttons, text entry boxes, and other user interfaces. The first question 652 shown in FIG. 47 seeks information regarding the user's purpose; i.e. whether the user intends to add a new network or to add to an existing network. The tool uses the information thus obtained to determine whether to access client information already in the system or whether to allocate memory for the additional client/machine Client Base Class 120. The second question 654 shown in FIG. 47 seeks information regarding the user's budget constraints. The tool uses the information thus obtained to determine overall guidelines, and balances costs of different products against the costs of the products. A pair of buttons 656 allows the user to step through the different questions in the question block, forward and backward. A row of control buttons 660 and an Internet or web page URL or other address indicator 680 are placed at the top of the screen, to allow the user to control the entry of information more easily and to control how the information is presented. A row of radio buttons 682 allows the user to control the entry of information by allowing the user to branch to other question blocks within the question procedures.

Referring now to FIG. 48, another user interface screen 100f showing additional information is obtained through another question in another question block. The first question 662 shown in FIG. 48 allows the user to indicate the number of users of the system. The number of users is used to determine both the complexity of the recommended solution and installation/implementation instructions, and also number of subclasses to the solutions framework base class 400 Desktop 406 Subclass within the tool itself. The second question 664 shown in FIG. 48 seeks information regarding the rate of growth of the recommended solution. In the example, the user has indicated two additional users will be added within the next 12 months. The growth rate determines the number of additional expansion connections that must be allowed for. The third question 666 shown in FIG. 48 seeks information regarding the job functions of the various users. The information thus obtained is useful in allocating workgroups and local networks within the overall networks, and, if servers are needed, to allocate the various servers to accommodate security concerns. The fourth question 668 shown in FIG. 48 seeks information regarding the peripheral equipment needed by the system user. The peripheral equipment is entered as a series of check boxes 670, and each check box enables an additional question block relating to the products within the category of peripheral equipment. Some peripheral equipment may be shared, while other peripheral equipment may be segmented for security or high-traffic demands. Again, a pair of buttons 672 allows the user to step through the different questions in the question block, forward and backward. A row of control buttons 660 and an Internet or web page URL or other address indicator 680 are placed at the top of the screen, to allow the user to control the entry of information more easily and to control how the information is presented. A row of radio buttons 682 allows the user to control the entry of information by allowing the user to branch to other question blocks within the question procedures.

Referring now to FIG. 49, a desktop user information question block 100g is shown. Various information is collected through the use of check boxes. Each check box in the group of check boxes 692 indicates a group of applications that can be used to indicate a particular set of question blocks corresponding to a particular subclass within the Applications Base Class. Again, a pair of buttons 694 allows the user to step through the different questions in the question block, forward and backward. A row of control buttons 660 and an Internet or web page URL or other address indicator 680 are placed at the top of the screen, to allow the user to control the entry of information more easily and to control how the information is presented. A row of radio buttons 682 allows the user to control the entry of information by allowing the user to branch to other question blocks within the question procedures.

The informational questions are followed by guidelines questions used during Phase I to create a User Guidelines Base Class 160, and a Requirements Base Class 180. The User Guidelines Base Class 160 contains information derived the Answers Base Class 140 (FIG. 22B), to which it is linked. The User Guidelines Base Class 160 contains overall system or network requirements applicable to the entire solution; overall considerations such as cost, performance, expandability, fault tolerance and security are represented. It may be that some solutions do not have such requirements; requirements and other constraints may be the only limitations on the solution recommended produced by the tool. When desired by the user, guidelines can provide a useful limitation of the scope of possible solutions the tool might otherwise recommend.

Requirements are typically specific to one portion of the solution. For example, a desktop may be required to have at least a given processor speed, a local area network may be required to have at least a minimum data rate or fault tolerance, and a server may be required to run a particular operating system. Such requirements are determined by analysis of responses in the Answers Base Class 140 provided by the user in response to questions posed by the question blocks.

It is important to note the relationship between the question blocks of the Questions Block Base Class 100, the language facility of processes within the Questions Block Base Class 100 and the Answers Base Class 140. All of these base classes, and related processes, are structured to allow a user to provide information in a format with which the user is comfortable, but which is useful in performing subsequent analysis.

It is also important to note the relationship between the Answers Base Class 140, the Users Guidelines Base Class 160 and the Requirements Base Class 180. All of these base classes, and related processes, are structured to allow the processes associated with the User Guidelines Base Class 160 and with the Requirements Base Class 180 to read information from the Answers Base Class 140 (FIG. 22B) and analyze the information.

A User Guidelines Base Class 160 (FIG. 6) and a Requirements Base Class 180 (FIGS. 12-16) each are linked to the Solution Framework Base Class 400 and to the Answers Base Class 140. The User Guidelines Base Class 160 and the Requirements Base Class 180 determine whether guidelines and requirements have been provided in the responses from the user, and if so store (during Phase I) an analysis of the responses in the Solutions Framework Base Class 400. As the Solutions Framework Base Class 400 begins to gather information, processes corresponding to these two other base classes read, process, and replace the information with more useful information. For example, the Requirements Base Class 180 may identify that a particular desktop needs a highly-secure memory device. The User-Guidelines processes may identify that the operating system on the desktop is preferably the same as the operating system on a particular server. These processes, corresponding to the User Guidelines Base Class 160 and a Requirements Base Class 180, are referred to as Phase I.

As shown in FIG. 6, the User Guidelines Base Class 160 contains attributes that may be represented as a guidelines column 602, a scale or ranking column 604, and a description column 606. In response to the user's responses obtained by the Question Block Base Class 100 and stored in the Answers Base Class 140, the tool develops the User Guidelines in the guidelines column 602. The guidelines are converted to a ranking within the range of the scale indicated in the scale or ranking column 604. For example, the lowest cost may be converted to 0 of 100, whereas a median cost would be converted to 50 of 100. A description column 606 allows maintenance processes to identify the meaning of an entry.

The informational questions, user guidelines, and requirements are used during Phase I to develop a skeletal Solutions Framework Base Class 400. The Solutions Framework Base Class 400 initially contains merely a number of regions of memory, containing only pointers to other regions of memory and some header information. As farther processes perform subsequent analysis, the solution represented in the Solutions Framework Base Class 400 is refined, and subsequent instances of the base class and its extensions and subclasses replace the skeletal instance.

The processes of Phase I insert into the Solutions Framework Base Class 400 certain general information regard the overall solution, and also regarding particular products within the solution. Some of the general information is then translated into rankings. The rankings are based on the preferences defined by the user in response to the question block processes, and are also based on the number of items found on the market. For example, if there are three speeds of microprocessor, the median speed is referred to as ranking-two. Information that is not translated into rankings is translated into weights. Weights refer to the relative importance of various considerations. For example, if a user demands high speed processors, full color high resolution graphic monitor, and many other features that can raise the price of the overall solution, but also specifies a low budget, then the weights can become important. If the user places great weight on the budget constraint, a somewhat lesser weight to the microprocessor speed, and a still lesser weight to the color monitor, for example, then a lower-ranked monitor will be specified. Requirements Translation 210, however, can operate purely from the information already found in the Solutions Framework Base Class 400 extensions, though, since the processes corresponding to the User-Guidelines Base Class 160 and the Requirements Base Class 180 put the necessary information there, and the informational blocks reserved enough space in the view.

Once the rankings and weights are established for a given product, the product is calibrated. Calibration operates on the subclasses (extensions) of the Solutions Framework Base Class 400, and replaces the information already present with a list of products that meet or exceed the requirements. It may be noticed that the calibration requires some information about the market. Calibration requires determination of a list of products that meet or exceed a requirement.

To determine a list of products, a Calibration Base Class 280 operates in conjunction with a set of processes that search the Products Base Class 240 and identify many or all of the products that satisfy the requirements, guidelines, and other constraints as input by the user in response to the question blocks. The Calibration Base Class 280 begins a session as a Calibration Base Class 280a, shown in FIG. 22C. The Calibration Base Class 280 contains a Class ID, a Geo, and a Product Family Identifier. The "Geo" is an identifier of a language and a geographical region. the Geo is used to determine the geographical region for which a solution (or a product in a solution) is to be determined. Many modems, for example, must be compatible with a local telephone network, for access over a Wide Area Network (WAN). Many devices are only available in certain areas of the world, for a number of reasons. Many products, and in particular software products, are available in a number of languages (English, French, Japanese, etc.). The geo provides an identifier that can be used to ensure a satisfactory solution is derived.

The various phases of the tool converge on a specific solution from among the possible solutions. Once a particular solution is recommended, the user may choose to activate an incremental editor. The incremental editor is a set of processes that can be used to choose a different solution from among the possible solutions, and can also be used to change a response to a particular question. Thus, a user is free to develop new combinations of products, examine new network topologies, and expand and personalize the utility of the tool to develop new solutions to new products. The incremental editor includes processes that provide a user-friendly graphical user interface (GUI). Once a user has provided information to the tool using the incremental editor, however, the tool may access the Answers Base Class 140 (FIG. 22B), the User Guidelines Base Class 160, the Calibration Base Class 280, and the Products Base Class 240 to derive a solution that complies to the greatest extent possible with previously-provided information where not in conflict with more recently provided information..

Solutions Framework Base Class 400 itself has processes that search its extensions for lists of products, and provides a selection. The "Search and Match" processes manage to select one product for each of its extensions from the lists within the extensions, often by applying additional considerations. The processes corresponding to the Requirements Translation, calibration, and searching and matching of products are collectively referred to as Phase II.

At this point, an incremental editor can be used. The incremental editor presents the Solution Framework Base Class 400 extensions to the user and allows the user to increase or decrease each selection to the next consecutive ranking. For example, if there are three speeds of microprocessor on the market, and the user initially indicated responses that lead the Phase I processes to select the median, then the incremental editor allows the user to select one of the other microprocessor speeds. The incremental editor processes indicate to the user that the ranking selected is two-of-three, and the user can increase the speed to ranking one-of-three or three-of-three. The calibration and search-and-match processes then proceed automatically. Phase II does not conclude until the user has indicated satisfaction with the selected products.

Referring now to FIG. 50, a graphical display of a layout configuration 100h is shown. The layout configuration illustrates a number of products, and the manner in which the products are coupled. A first accountant 712, a second accountant 714, a first manager 716, and a server 718 are each coupled to a main hub 720. The server 718 also connects to a printer 722. The layout configuration can be used to access further question blocks, and allows each of the desktop accountants 712 and 714, the desktop manager 716, the server 718, the main hub 720, and the printer 722 to be configured merely by double-clicking on an icon representing the product to be configured. A row of control buttons 660 and an Internet or web page URL or other address indicator 680 are placed at the top of the screen, to allow the user to control the entry of information more easily and to control how the information is presented. A row of radio buttons 682 allows the user to control the entry of information by allowing the user to branch to other question blocks within the question procedures.

Referring now to FIG. 51, a screen 100i showing an example use of the layout configuration incremental editor is shown. The screen shown in FIG. 51 is produced by double-clicking or otherwise indicating the first manager 716 or other product shown in FIG. 50. The first accountant 712, the second accountant 714, the first manager 716, and the server 718 are each coupled to a main hub 720, and the printer 722 connects to the server 718, as in FIG. 50, and can be seen behind an incremental editor window 724. The resource name 726 is indicated at the top of the incremental editor window 724. Each category 852 of product includes rankable fields or attributes 854. Various fields or attributes,, as listed in FIG. 9, are shown in the incremental editor window 724. For example, the computer monitor, processor (or CPU), memory, hard drive, and other components are provided in the incremental editor window 724. To the right of each component listed, two buttons 726 and 728 are shown. Buttons 726 include a "+", while buttons 728 include a "-". The user may click on any of the buttons 726 and 728. Clicking on a "+" next to the hard disk 1 line will increase the hard disk size to the next rank. As stated previously, there may be several equivalent hard disks on the market, at each size. The incremental editor is not generally used to switch from one component to an equivalent component. Rather, the incremental editor window 724 may be used to verify how changes to one component affect changes to other components in a product. For example, increasing the processor speed by clicking on the "+" button 726 next to the processor line may increase the speed of the processor from 133 MHz to 166 MHz. However, the only processors having the higher speed may have more than 16 MB of memory. If so, that fact will be evident by reference to the incremental editor window 724. The changes can be made, and the resulting system can be studied before actually purchasing the various products. An "OK" button 730 and "Cancel" button 732 indicate that the changes are to be accepted or rejected, respectively.

It may be that, during Phase II, additional question blocks need be indicated. For example, more information may be needed to implement a device selected through the incremental editor, or a user may decide that, upon seeing the overall solution recommendation, a local input/output device should be substituted for a network controller. These additional question blocks are discussed below, with reference to the fifth set of processes corresponding to the Solutions Framework Base Class 400.

Once each extension of the Solutions Framework Base Class 400 contains one product, internetworking can be considered. The internetworking analyzes the products and also analyzes the various tables of the Answers Base Class 140 (FIG. 22B) for internetworking information, and prepares an internetworking solution. For example, the internetwokring analysis may determine that particular desktops needing high-speed frequent information exchange should be grouped in sub-workgroup within a hierarchal configuration, or that certain network adapters are needed at certain workgroups, or that particular servers should be allocated to certain workgroups for security reasons. These internetworking analyses are collectively referred to as Phase III processes. The incremental editor is again used, to allow variations from the initially-recommended solution.

The solution, once derived, is analyzed for consistency and integrity by a set of processes corresponding to the Solutions Framework Base Class 400 itself. These processes are referred to as Phase IV.

In a set of processes related to database maintenance, further analysis determines changes that should be made to help Phases I, II, and III converge more rapidly. The processes corresponding to database-maintenance include processes that alter the weights used in the secondary considerations, i.e., the weights used when the search-and-match processes cannot resolve which product to include in the solution. Some processes monitor the user's use of the incremental editor, while other processes compare the solution the user determines is satisfactory with the solution initially recommended. Still other processes allow maintenance personnel to artificially change the weights, to identify products in the Products Base Class 240 and Collections Base Class 300 that are new or that have been earmarked for recommendation in the initial solution.

Finally, a set of processes analyze the final solution and determine what elements should be reinserted in the Client Base Class 120.

Referring now to FIG. 3, an overview 400d of the various base classes used in the disclosed embodiment of the present invention is shown. A Client History Base Class 130 stores the user ID, including the machine ID for each solution as currently implemented, and session ID, to enable the solution the user selects to update the Client History Base Class 130. The ID and session ID may be regarded as parameters or fields of a Base Class or data object. The Session ID maps into the Client Base Class 120. The Client Base Class 120 has a number of parameters or fields that allow the tool, upon initiation of a user session, to select an appropriate language with which to pose questions to the user, and a geographical basis for product selection. It will be recognized that different products are available in different countries, and some products, such as keyboards and printers, must be capable of exchanging data with a user in a language the user understands. Also, different countries have different electrical power standards, requiring electronic products to comply. Also, different countries have different telecommunications standards, with which WAN-related products must comply.

A Language Base Class 700 and a Country Base Class 750 link the Client Base Class 120 to a Question Block Base Class 100, described in detail below. The Language Base Class 700 (FIG. 23B) and the Country Base Class 750 (FIG. 23A) allow the Question Block Base Class 100 to access and convert basic QuestionProc 100a (FIG. 22H) procedures into a language suitable for a particular user session. The QuestionProcs each contain a list of questions corresponding to a particular question block of the Question Block Base Class 100, an appropriate size and format for storing the user's answers to the questions. Answers are stored in an Answers Base Class 140 (FIG. 22B), in a format accessible by other base classes. The Answers Base Class 140 also updates the Client Base Class 120.

Several other objects are shown in the overview 400d of FIG. 3, identifying various products and categories of products available. These include the Applications Subclass 290, storing information on software that is available. The Applications Subclass 290 begins as an Applications Subclass 290a, represented as a table shown in FIG. 22E. The Applications Subclass 290a contains the class ID, indicating the type of application and the environment in which the application can be run, and a geo, indicating the geographical region and language in which the application may be run. The Applications Subclass also contains an Application Family identifier and an Application Name. A Calibration Base Class 280 is used to convert user responses to the question procedures into values and rankings that can be used to develop a recommended solution.

Also shown in FIG. 3 is a Solutions Object 400a. The Solutions Object 400a is an object that, upon initiation of an interactive session, actually creates the Solutions Framework Base Class 400 for each session view. The Solutions Object 400a also creates a pointer to the Solutions Framework Base Class 400 for a user session. This is particularly helpful if, for example, a user wishes to link two machines together. Each Solutions Object 400a contains a pointer that allows a subsequent session to access information obtained from the user, or derived by the tool itself, during the current session. The Solutions Object 400a has an ID, a Machine ID, a part number, and an Object ID with an offset vector that, when nonzero, points to a memory location of additional related information. As will be shown, the Solutions Object may be regarded as the lowest level in the Solutions Framework Base Class 400 data structure, which is used to develop the recommended solution. And various stages of processing, the tool contains different information in the solutions object. However, the information eventually converges on a particular product, part of the recommended solution.

Each of these Base Classes is now described in detail.

B. THE OBJECT BASE CLASSES

Referring now to the figures generally, and in particular to FIG. 3, the exemplary embodiment of the present invention is structured as a set of data driven, extensible object classes, each containing a data structure and a set of processes related to the data structure. Several of the objects classes are maintained by a manufacturer or group of manufacturers. Other object classes are created for each session, and can be present in several copies as multiple users access the exemplary embodiment of the present invention. Still other object classes are temporary, and are deleted at the conclusion of the session. Still other object classes are used only to maintain the maintained object classes. Each of these object classes is now discussed in detail in terms of its characteristics, subclasses, and processes.

1. Maintained Object Classes

In the exemplary embodiment of the present invention, three object classes are maintained by a manufacturer or group of manufacturers. These maintained object classes are the Products Base Class 240 (FIGS. 47-50), the Question Block Base Class 100 (FIGS. 58A-58V), and the Calibration Base Class 280 (FIGS. 17A-17D). Each of these object classes includes a Base Class (or a number of tables), and a number of corresponding processes operating on various Base Classes in memory. The processes collect and process information and insert data into the maintained object Base Classes.

a. The Object Base Class

The tool in many embodiments simplifies maintenance and operation by placing a list of all of the objects associated with a subclass or extension of the Products Base Class 240 in a single, centralized base class of its own, referred to as an Object Base Class 600. In some such embodiments, various subclasses and extensions of the Products Base Class 240 map directly into the Objects Base Class 600. In some embodiments, the tool creates the Object Base Class 600 based upon information derived from the Products Base Class 240. In some embodiments, the Object Base Class 600 is separately maintained, and facilitates the use of the Products Base Class 240 and the incremental editor.

A representation of the Object Base Class 600 is shown in FIGS. 18A-18C, in which various characteristics of the Object Base Class 600 are shown as columns in a table. The Object Base Class 600 provides a categorization of all of the types of products that are available on the market, everywhere in the world. Each type of product is listed as a separate class of the Object Base Class 600, and includes a list of attributes in an attribute field 218.

When a new printer, microprocessor, disk drive, or other device of a known type is introduced, the Object Base Class 600 remains unchanged. However, when a new type of device cannot be entered into the existing Object Base Class 600, a new class must be created.

Many of the classes have attributes in common. However, some attributes apply only to certain classes.

b. Products Base Class

(1) Definition

Referring to FIG. 5, a Phase II product recommendation data flow 400e is shown The Products Base Class 240, containing subclasses and extensions having a list of many products available on the market, is read via a products and solutions process 530 by the Calibration Base Class 280, the Requirements Translation Base Class 210, and the Solutions Framework Base Class 400. Therefore, the Products Base Class 240 must allows searching. As will be shown in the discussion of the Question Block Base Class 100 (FIGS. 58A-58V), the tool includes question blocks that have processes for obtaining information from a user and placing information in tables corresponding to the various tables of the Answers Base Class 140 (FIG. 22B). As will also be shown in the discussion of the Solutions Framework Base Class 400, a fourth set of processes corresponding to the Solutions Framework Base Class 400 includes a search and match process 282 that obtains a Property and a Real World Value 214 and searches the Products Base Class 240 for products having the Property and Real World Value 214. Therefore, each product class in the Products Base Class 240 must be such that these processes can extract information regarding the attributes from the product classes.

Subclasses of the Products Base Class 240 include an Applications Subclass 290, which includes a table of software and operating system software having as properties the platform and other attributes the software requires to operate. The Products Base Class 240 (FIGS. 47-50) also includes the Desk Base subclass, a tabulated list of all available computer platforms and the microprocessor, system bus, and system resources included in the desk base.

The Products Base Class 240 includes Attribute (i.e., Property) Fields 218, providing a common structure over substantially all of the Product Base Class subclasses that permit straightforward access. Referring now to FIGS. 18A-18C, the object classes that serve as the subclasses of the Objects Base Class 600, and provide information to organize the Products Base Class 240, are shown. Each category of product, corresponding to a subclass of the Products Base Class 240, is shown in the first field, representing categories 852 of products. In other words, the class field of FIGS. 18A-18C corresponds to the subclass name of the Solutions Framework Base Class 400. Each class in the class field contains several non-common attributes provided in the Attribute (i.e., Property) Field 218. For example, the "server" class contains at least 20 attributes, which are listed in the Attribute (i.e., Property) Field 218. In this example, the "server" class contains a "user" attribute.

The attributes field of the Products Base Class 240 maps to the Requirements Translation Base Class 210, which is linked to the various tables of the Answers Base Class 140 (FIG. 22B), allowing user-provided information in the various tables of the Answers Base Class 140 to map into the rankings. It will be recognized upon further reference to the disclosure that the Property Field 218 of the Requirements Translation Base Class 210, shown in FIGS. 5 and 7, maps directly to the attribute field of the Product Base Class 240. A property is merely a rankable attribute. As will be discussed below in reference to the Requirements Translation Base Class 210, attributes of the Requirements Translation Base Class 210 map directly into the Answers Base Class 140 the Client Base Class 120, and the Calibration Base Class 280. The attributes of the Requirements Translation Base Class 210 also map into the object classes shown in FIGS. 18A-18C and used in Phase I to allow selection of product types in the Solutions Framework 400 extensions.

Attributes provide a link to other processes corresponding to other base classes in the tool, since compatibility may be desired. Similarly, as each desktop, portable, hub, switch, router, LAN, and other subclasses of the Solutions Framework Base Class 400 are created, the view receives an allocation of memory sufficient to obtain the necessary attribute values from the Answers Tables of the Answers Base Class 140.

The Products Base Class 240, linked to the Collections Base Class 300, contains all the relevant information about all of the products available on the market all over the world. Subclasses of the Products Base Class 240 include, as fields, parameters, or attributes, a variety of information about the product, and searches can be performed on the subclasses based on the fields. The Products Base Class 240 is stored by class, subclass, property and value within the Collections Base Class 300, referenced by the Products logical view. The Products Base Class 240 is shown in FIG. 50.

The Products Base Class 240 is used in a number of processes associated with other Base Classes. For example, after calibration, the Real World Values are converted to products or to groups of equivalent products in a search and match process 282 corresponding to a set of processes of the Solutions Framework Base Class 400. Generally, these products are devices able to satisfy a wide variety of end user needs, and able to be included in any of a wide variety of network and systems solution configurations.

(2) Subclasses

Subclasses of the Products Base Class 240 include Products Base Class 240 tables, expandable objects having a number of attributes, some of which are shared in a Base Class and some of which are applicable only to the particular subject in an Extension Base Class. The following is one embodiment of the Products Base Class 240; it will be apparent that other object classes are possible. The list of common attributes of FIGS. 8 and the list of object classes of 18A-18C are used to drive the product selection of Phase II, since they include only the actual values for the searchable attributes.

Referring to FIG. 8, Object Class 600 attributes, including attributes 850 common to all object classes, is shown. The attributes may be represented as three columns illustrating a list of attributes common to all object classes. Each extension and subclass within the Products Base Class 240 has an attribute represented by the first column 802 of FIG. 8. The second column 804 of FIG. 8 provides a list of attributes that each product in the Products Base Class 240 (and its corresponding subclasses and extensions) share. Thus, the attribute represented by the first column 802 of FIG. 8 identifies the object classes having the particular attribute listed in the second column 804, and indicates the format of the information of the second column 804. A third column 806 aids in maintenance of the tool, by providing a list and some additional information about each attribute. Generally, the attributes common to the object classes provide overall rankings of the product generally, rather than by considering individual performance criteria such as microprocessor speed and monitor color pixel resolution.

The Requirements Translation Base Class 210 obtains its structure from the subclasses and extensions of the Objects Base Class 600 as shown in FIGS. 24A-24C. Extensions and subclasses of Requirements Translation Base Class 210 (or tables 210a), having incorporated extensions and subclasses of the Objects Base Class 600, are then provided to the Requirements Translation architecture, shown in FIG. 7. Thus, from the Objects Base Class 600 (maintained by computer specialists), having subclasses and extensions with attributes 850 defining the rankable attributes of products, map directly into the Requirements Translation Base Class 210.

As shown in FIGS. 4 and 5, however, the information is soon replaced with other information obtained from the Answers Base Class 140 (FIG. 22B), in turn derived from information provided by the user. Requirements translation includes adding rankings to the various attributes 850 listed in the FIGS. 24A-24C. Subclasses and extensions of the Requirements Translation Base Class 210 are identified by product category 852.

Column 802 also provides an indicator of extension parameters possessed by particular products. Such extension parameters are provided in FIGS. 18A-18C. The first column or field, representing categories 852 of products, provides an identification of the class or subclass described. The second column 854 provides a list of attributes associated with each column. The third column, 856, provides notes for ease of maintenance.

The Products Base Class 240 includes a variety of fields for each record. One field includes the name of the product. Another field is the object class to which the product belonged. As shown in FIG. 8, the part number, class name, product family, model, overall ranking, lowest cost ranking, performance ranking, and availability ranking are among other parameters included. Additionally, whenever the Products Base Class 240 is accessed, additional fields having values depending on the product class identification are momentarily added to the Products Base Class 240 from other areas of memory. The Object Base Class of FIGS. 18A-18C show some of the possible parameters. The fields are attributes of the product class. Thus, not only the characteristics described with reference to FIG. 8E included in the Products Base Class 240, but also additional fields (previously described as characteristics, attributes, or additional Base Class fields) are included as well, and can be used to rank or sort the products within the product class.

(3) Links

The Object Base Class 600, whose attributes are shown in FIGS. 18A-18C is used in several different processes corresponding to other Base Classes. The first set of processes corresponding to the Solutions Framework Base Class 400 accesses the Object Base Class 600 when a subclass to the Solutions Framework Base Class 400 is created. Accessing the Object Base Class allows the Solutions Framework Base Class 400 processes to identify what attributes to place in the newly-created Solutions Framework 400 subclass. Also, a region in a subclass or table within the Answers Base Class 140 (FIG. 22B) maps to the Base Class in FIGS. 18A-18C, and drives a question block having detailed product questions 110.

An example may serve to illustrate this point. If in response to the initial question blocks the user indicates that a simple network as shown in FIG. 33 is desired, then the Solutions Framework Base Class 400 will create several subclasses or extensions. Three of the subclasses or extensions will be "desktop" subclasses 406. Each Desktop 406 Subclass will have certain attributes, listed in a region of memory within the view. Each Desktop 406 Subclass has its own region of memory for storing its attribute values. Referring again to FIGS. 18A-18C, each attribute shown in the Attribute (i.e., Property) Field 218 corresponding to the desktop class in the class field of FIGS. 18A-18C is copied into each of the three desktop-allocated regions of memory.

(4) Processes

The processes related to the Products Base Class 240 (FIGS. 47-50) can spawn Product Available subclasses for any appropriate property listed in the Base Classes related to the Products Base Class 240. For example, given a particular country or national computer standard, the Products Base Class 240 can form a Product Available subclass corresponding to the given properties.

c. Calibration Base Class

The Calibration Base Class 280 (FIGS. 17A-17D) is an extensible data structure containing various Base Classes and procedures for replacing the rankings in the Solutions Framework Base Class 400 with lists of actual products satisfying or exceeding the minimum requirements identified by the rankings. The tables and subclasses of the Calibration Base Class 280 are maintained by the manufacturer or third party, but are relatively easy to maintain, since the related maintenance procedures merely sort the Products Available Base Class by whatever the corresponding field happens to be.

Various attributes of a Calibration Base Class 280 are shown in FIGS. 17A-71D. The Calibration Base Class 280 is linked to the first intermediate results instance 512 of the Solutions Framework Base Class 400, containing minimum resources for the solution For example, given a real-world value 214, the processes corresponding to the Calibration Base Class 280 determine a ranking, according to several attributes represented in FIG. 17A-17D. As stated, rankings are found for each product in the Products Base Class 240 and stored, as represented generally in the rankings column 604 of FIG. 6. The ranking of each product, and the name of the subclass of the Products Base Class 240 to which the product belongs, may be concatenated to form an internal representation value 212. The Calibration Base Class 280 has processes, illustrated generally in the second column 762 of FIG. 17A-17D, storing Real World Values 214 corresponding to the internal representation value 212 of the first column 218. Notes are included, and are particularly useful, since the manufacturer or other third party stores and updates these value.

Subclasses of the Calibration Base Class 280 are search and sort results, as various processes corresponding to the Calibration Base Class 280 collect products that share a common attribute into a common sub-table (within the subclass). The Calibration Base Class 280 is linked to the Collections Base Class 300, the Products Base Class 240 (FIGS. 47-50), and the Solutions Framework Base Class 400. The subclasses corresponding to these base classes are discussed more completely in the section dealing specifically with the respective base classes, but some attributes of these base classes are relevant to the operation of the Calibration Base Class 280 as well. The Collections Base Class 300 and the Products Base Class 240 contain subclasses each defining a category of products. In the Products and Collections Base Classes 240 and 300, the properties and values of each product is identified in various fields within tables and subclasses corresponding to the subclasses of the Products and Collections Base Classes 240 and 300. These values are referred to as the Real World Value. For example, in the category (subclass) of microprocessors, for a property of microprocessor speed, the contents of the Real World Value Field 214 may be 133 MHz. In the category (subclass) of printers, for a property of characters per inch, the contents of the Real World Value Field 214 may be 100 characters-per-inch.

The Calibration Base Class 280 is linked to the Solutions Framework Base Class 400. At one stage, during Phase II (also described below), the Solutions Framework Base Class 400 extensions contain ranking information, identifying the product corresponding to the extension by category, rank and property. For example, the extension may contain "microprocessor," rank=2, property="speed." In such a stage, an extension of the Solutions Framework Base Class 400 is referred to as an intermediate results instance 510 of the Solutions Framework Base Class 400. Processes corresponding to the Calibration Base Class 280 recognize the first intermediate results instance 510 of the Solutions Framework Base Class 400, and replace the rank with a particular value obtained from the Products Base Class 240.

Referring now to FIGS. 17A-17D, an initial content of the Calibration Base Class 280 within the Calibration Base Class 280 is shown. The Calibration Base Class 280 may be regarded generally as a table, having rows representing the types of products, and columns representing various characteristics of the products. It should be remembered, however, that in the Calibration Base Class 280, equivalent products share a common record. Only the qualities of the products are included. Each record has three fields: an Internal Representation Field 212, a Real World Value Field 214, and an Further Notes Field 216. The Internal Representation Field 212 has a value for each record indicating the concatenation of the category of product and the ranking of the product with respect to the other products in the category. For example, the internal representation of a high cost desktop would be "DeskCost1," while (if the products in the Products Base Class 240 were of exactly three costs), the lowest cost would be "DeskCost2." Ordinarily, the higher ranking, the more desirable the product. The real world value 214, however, contains the "translation" of the product category and ranking to a more widely-understood and useful number. The real world value may be a type of product, a number of MHz, a bus width, etc. The further notes field 260 facilitates maintenance.

(5) Processes

A first set of processes corresponding to the Calibration Base Class 280 sorts the products listed in a given subclass of the Products Base Class 240 by the value corresponding to a given value. The Products Base Class 240 (FIGS. 47-50) and the Collections Base Class 300 have subclasses for each category of product available. The first set of processes is linked to (and accesses) the Products Base Class 240 and the Collections Base Class 300. The first set of processes provides extensions having the product lists corresponding to each category of products, each extension being further sorted by a particular value.

A second set of processes corresponding to the Calibration Base Class 280 then provides a ranking to each product in each Calibration Base Class 280 subclass. The ranking is a measure of the relative position of the product among other products of the same category, determined by the value. It should be noted that several products may have the same ranking. Many products are "clones", or functional equivalents, of other products, at least with respect to some properties or attributes. Thus, the Calibration Base Class 280 contains the reference values which identify the relative performance across the product spread stored by Class, subclass, Property and value within the Collections Base Class 300. The Calibration Base Class 280 reads values from the Collections Base Class 300, particularly the Value field, and converts the Value (a ranking) into a real world value, based on industry standards. Particular models or manufacturers are not identified; only a list of capabilities.

A third set of processes corresponding to the Calibration Base Class 280, given a product-category (i.e., subclass of the Collections Base Class 300 and the Products Base Class 240 (FIGS. 47-50)), then accesses each Calibration Base Class 280 subclass and provides a "real world" value corresponding to the ranking.

The Calibration Base Class 280 shown in FIG. 5 receives an internal representation consisting of a class and ranking, and converts the internal representation to a real-world value. Although the real-world value may at any particular level of technological development be mapped to a particular product, class and ranking are sufficient to completely designate the product. In other words, if the database contains three processors in the class "processors," then processor 2 always refers to the processor of intermediate speed. Although the level of technological change may alter the meaning of this within the Calibration Base Class 280, only the Calibration Base Class 280 need be updated. Thus, the Calibration Base Class 280 only takes the (1) class and rank, and (2) Products Base Class 240 and produces a real-world value. In each object of the Intermediate Results Base Class 510, a list of speeds, resolutions, etc. are described.

A fourth set of processes in the Calibration Base Class 280 also double-checks compliance with system compatibility considerations. The Calibration Base Class 280 may be expansible, may include pointers to other data objects, and may include bookmarks to or cross-reference partitions in tables, Base Classes, or other object classes existing on other systems across the Internet or other network. For example, some of the information necessary to translate the contents of the Internal Representation Field 212 corresponding to a device into Real World Values 214 (and store the contents in the Real World Value Field 214) may be provided by independent manufacturers, or by different divisions of the manufacturer or third party. This abstraction of the Base Class will be discussed below, in the section pertaining to maintenance of the exemplary embodiment of the present invention database.

The Real World Values 214, once determined, are stored in the Solutions Framework Base Class 400.

In summary, although the analysis of the first instance of intermediate results 510 does not provide a direct reference to technology or products, the analysis does provide general ranking information such as "intermediate," "high speed," or "low performance." When the Intermediate Results object 510 has provided a general ranking representation of each of the products in the solution, a set of Calibration objects are invoked. The calibration objects access a table or subclass of the calibration base class 280 containing a list of the full set of products and solutions 530 available and provide "real world" values for each product class. The table or subclass from the Calibration Base Class 280 is used by the Search and Match process 282.

In the described example, if the Products Base Class 240 contains three speeds of processors, 166 MHz, 133 MHz, and 100 MHz as microprocessor speeds, then the processes corresponding to the Calibration Base Class 280 replace the "Rank=2" with the value "133 MHz." Other processes corresponding to the Calibration Base Class 280 search the Base Class and sort records into subclasses.

For example, a question block pertaining to the user's preferences in printers may have elicited information indicating that the user would prefer a "mid-level" printer. The second set of processes, which determines the ranking, stores the response in the Answers Base Class 140 (FIG. 22B). During Phase I processes corresponding to the User Guidelines Base Class 160 (FIG. 6) and Requirements Base Class 180 (FIGS. 12-16), the response is used to place a "mid-level" indicator in the Value field of the Properties field within the Class pertaining to "printers." Because the values are not yet calibrated, only the ranking and value-rankings ("I need at least 100 characters per second") and the relative importance (e.g., "But price is more important and I can live with a slower speed.") are stored in the Collections Base Class 300, which attempts to determine the entire solution. The solution is determined by using a weighting matrix 582 (FIGS. 55 and 56) to "weight" the various considerations. For example, the Calibration Base Class 280 identifies 166 MHz, 133 MHz, and 100 MHz as microprocessor speeds, and ranks each accordingly. Given a rank of 2, the Calibration Base Class 280 identifies the 133 MHz speed as meeting the ranking requirement. Although described in terms of a Calibration Base Class 280 containing a list of all products identified by product category and by ranking within the product category, it will be recognized that the Calibration Base Class 280 may be configured as a table or subclass of pointers to records in the Products, Collections, and Solutions Framework 400 (Intermediate Results) Base Classes. With respect to run-time operation, it should be noted that due to product congestion in narrow technical areas and due to "don't care" considerations in user responses, the number of products that may be included in the calibration output is quite large. This feature of the exemplary embodiment of the present invention highlights a significant advance, due to the increase in the level of abstraction. Rather than identifying a particular model of processor, for example, the solution can specify a "mid-level" processor. The Requirements Translation Base Class 210 and Calibration Base Class 280 are thereafter able to map this description, using the Products Base Class 240, into a particular processor, e.g. a 133-MHz Pentium. As new processors are developed by technology innovators such as the manufacturer or third parties, however, the definition of a "mid-level" processor can be updated simply by changing some information in the Products Base Class 240.

The Calibration Base Class 280 created by the first set of processes is configured as shown in FIG. 17A. Because the number of products in each object class is countable (e.g., there are six Desk Memory products) and are listed in increasing order, the third set of processes straightforwardly determines the "real world"value (e.g., "32 MB") based on the rankings.

c. The Question Block Base Class

The Question Block Base Class 100 (FIGS. 58A-58V) includes a large Base Class of questions that may be posed to a user to identify user preferences that can help determine a solution and a set of implementation instructions that meet the preferences. Questions may be posed in several languages and levels of technical expertise. The question block objects ("Question proc" or "question block subclass") fall within several categories, and each object contain both user-interface procedures and the text of questions. Each of the question blocks contains a number of questions, labels, or GUI and other tools, such as bookmarks to interactive web pages, to help the user enter information. The questions are grouped into blocks by their inclusion within a Question Proc.

Moreover, it will be apparent that a user need not answer a question simply because the present embodiment accessed a particular question block object, since, as indicated in FIGS. 55 and 56, a weighting matrix 582 allows the present embodiment to derive an appropriate solution based on limited information. This branching ability allows the tool to abstractly determine categories of information needed to determine a solution, and invoke other question block (user interface) objects to prompt a user for responses that provide information to the question blocks. The tool can then determine based upon information thus obtained what further information is necessary to derive a solution and call additional user interface objects appropriate to obtaining the needed information from the user, and provide a skeletal overview solution that meets or exceeds the requirements corresponding to the information. With respect to the groups of data objects that pertain to the user, the user enters data in response to questions posed in ordinary, easy to understand non-technical language.

The Products Base Class 240, Calibration Base Class 280, and the Question Block Base Class 100, as stated above, are maintained by personnel in the computer field who are aware of the supply of computer products and can maintain a list of products including searchable fields or properties (i.e., attributes) that distinguish one product from another. Moreover, the entity maintaining the database includes in the question block objects questions that, although posed in high level, "plain English" language, can allow the user to provide sufficient information for the present invention to determine an appropriate solution.

The Question Blocks maintained by the manufacturer or third party may contain a very large number of questions. Examples of Question Blocks are shown in FIGS. 58A-58V. The procedures that interact with the user obtain their questions and prompts from the Question Block objects. However, many question blocks are not relevant to certain user's needs, and are not called for these users. The flow through the Question Blocks is nonlinear, however, and often questions become relevant late in a session that had not been asked or been relevant previously.

Subclasses of the Question Block Base Class 100 each comprise a Question Block object containing a number of questions, a corresponding process for obtaining input from a user, and a process for storing the response in memory. Each question block has an abstract class containing a title or other information, and a property type for grouping questions together. The abstract class of the question block allows the question block process that obtains information from the user to display for the user some heading information that can help the user understand a common attribute of the question in the question block. The question block property type allows the present invention to categorize questions, and allows one question block to command an entry into multiple question blocks of a common property type.

(1) The Structure of a Question Block

Questions are stored as single strings and are grouped into meaningful order by inclusion into a question procedure. Each question procedure is a self-contained block that is similar in appearance to a web-page and may contain a question or a group of questions to be answered by typing text, or by clicking a mouse on check boxes or radio buttons. Because the questions are self-contained within a discrete block, presentation of the question or questions within the block are controlled by the block itself. Therefore, while some blocks may provide a straightforward list of questions requiring text entry, other blocks present several questions at once and allow the user to click where appropriate. In some embodiments, common question presentation procedures are available to question procedures. An Answer Type flag is used to control access to the presentation procedures. The Answer Type flag determines how the questions are presented to the client. In the case of check or radio buttons, each question within the block represents the text for one button on the display and may be combined dynamically with other questions. In the exemplary embodiment, a client browser runs Microsoft Visual Basic (VB) Script that parses the question packet, and from the answer type flag builds the appropriate presentation control.

The questions of each object class collectively comprise a question block of questions, assigned a question block identifier or QID-prefix identifying the object class to which the question belongs. Each question is identified by the question identification number ("QID"), using the question block identifier as a prefix identifying the Question Block to which the question belongs. Some typical questions, and the corresponding data object classes to which they belong, are shown in FIGS. 58A-58V. In several embodiments, the views contain only pointers or entry points to a set of common question blocks. Questions are asked in "plain English" (or other language appropriate to the user, as identified during the informational questions).

Question Blocks contain pointers to particular entries in the Client and Answers Base Class 140 (FIG. 22B), and determine whether the entries are valid. If some of the entries in the Client Base Class 120 or Answers Base Class 140 (FIG. 22B) are invalid, the Question block or a pointer to the question block is placed in the queue within the view, and the question block is eventually called by the user interface (usually, the browser).

The Questions Block and related procedures may be implemented as a QuestionProc 100a (FIG. 22H) of instruction code and a plurality of QuestionBlock text. One such structure is shown in FIGS. 58A-58V. The Question Block Base Class 100 may be viewed as a Process Block which presents questions, their display formatting parameters and pointers to their answer objects. Responses (answers) provided by the user are placed in the corresponding areas of the database, filling in the missing elements of the class. The questions are grouped into various data classes, and various processes within the exemplary embodiment of the present invention access different classes when different information is needed.

Referring now to FIGS. 58A-58V, a set of question procedures is shown. Each question block includes a question block identifier, or Question Block Number 172. Each question block also contains a description field 174, having a name, purpose, and summary of the questions in the question block. Although the Question Block Number 172 and description field 174 do not appear to the user, the fields are useful in maintaining the system. Each question block also includes a list of questions 176. The list of questions 176 is the result of the translation of the question field, shown in FIG. 221, by the Country Base Class 750 (FIG. 23A) and the Language Base Class 700 (FIG. 23B). Each question block may also contain an "analysis, action" field for indicating further activity. The "analysis, action" field contains a summary of branch commands or a description of further action that may be anticipated when certain responses are stored in the Answers Base Class 140 (FIG. 22B). Collectively, the Question Block Number 172, the description field 174, the list of questions 176, and the "analysis, action" field 1778 comprise a QuestionProc 100a.

(2) Categories of Question Blocks

In the disclosed embodiment, the numerous subclasses of the question blocks are be grouped into six categories, although it must be remembered that the list of categories, like the list of questions in each category, is not exhaustive and is subject to change as technology develops and as customers' needs change. Some general categories of such objects include informational, objective, requirements, and guidelines categories.

Within each category, the several question blocks each contain numerous questions grouped with other related questions in various data object classes. With the exception of the informational question blocks 102 used to obtain pointers to the Client Base Class 120 (invoked by the Login procedure, as discussed below), the other question blocks are invoked by processes associated with previously invoked question blocks. In other words, the tool scans the Answers Base Class 140 (FIG. 22B) (described below) and determines that information is needed, and that a particular question block can obtain the necessary information.

The first category is the informational question block category. Informational question blocks 102 obtain a client identifier from the user, and either obtain or generate a machine identifier for the system the user wants to provide. The informational question blocks 102 obtain general information about the user, the operating environment in which the system satisfying the solution will operate, and whether a new system or an expansion or upgrade of an existing system is contemplated. The informational question blocks 102 also includes questions relevant to the presentation procedures and other processes for controlling the Graphical User Interface at the user's browser. Expert mode may be identified during the preliminary phase.

Informational questions of a general nature are also included within the informational question blocks 102. These questions are also driven by the absence or invalidity of certain data within the Client and Answer Base Classes. The information that is provided by the user and stored in the Client Base Class 120 can be used subsequently for customer service and marketing purposes, for product development (i.e., building new products customized to existing systems), and many other purposes. Examples of the informational questions within the informational question blocks 102 include interrogatories directed to Company Name, Company Address, Company Phone Number, Company Fax Number, Company Mail Address, Company Web Site, Type of Business, Primary Contact Name, Primary Contact Phone Number, Primary Contact Fax Number, and Primary Contact Email Address.

Informational questions within the informational question blocks 102 also identify whether the user wishes to create a new solution or update a previously determined solution. If a previously determined solution is to be updated, the subsequent objects in the execution of the exemplary embodiment of the present invention update the previously determined solution. Otherwise, a new solution is calculated. Generally, each execution of the tool in novice mode results in a calculation of a solution comprising nine objects--a server 408 subclass object, a printer object, a WAN subclass 414 object, a Desktop 406 Subclass, a LAN 402 subclass, an Internet subclass 416 object, a portable 410 subclass object, a workgroup 404, and a remote access object, all of the Solutions Framework Base Class 400. Attributes are taken from the Object Base Class 600. Each object contains a pointer to the structure within which it is contained, and each parent structure maintains a list of nodes it has created.

Referring now to FIGS. 18A-18C, each of the nine categories of products corresponds to a class shown. Also shown in FIGS. 18A-18C is the inter-networking subclasses. Each class includes a set of parameters and data sources for building a subclass of the Solutions Framework Base Class 400. Each is mapped to a question block such as one of the question blocks containing detailed product questions 110, and is also mapped to a region within the Answers Base Class 140 (FIG. 22B).

Informational questions within the informational question blocks 102 also include a question block that initiates the view for each session. The Client Base Class 120 (FIG. 3), Answers Base Class 140 (FIG. 22B), Solutions Framework Base Class 400, and Recipe Base Class (FIG. 3), as well as the User Guidelines Base Class 160 (FIG. 6), Requirements Translation Base Class 210, Requirements Base Class 180 (FIGS. 12-16), and Products Requirements Base Class 200, are all created by question blocks within the first category in response to user-supplied information necessary to create the particular Base Class. The Client Base Class 120 and Solutions Framework Base Class 400, in particular, are described in detail below.

Once the initial information is obtained, the exemplary embodiment of the present invention identifies, in ordinary language, some of the constraints around which a solution must be generated. The Questions Block objects call additional Question Block objects, including objective question blocks 104, requirements question blocks 106, and guideline questions 108.

The second category of question blocks includes the objective question blocks 104, and the third category includes requirements question blocks 106. Like the informational questions within the informational question blocks 102, both are driven by the absence or invalidity of entries in the Answers Base Class 140 (FIG. 22B). Responses from the user replace the absent or invalid entries in the Answers Base Class 140, where the responses will be available to subsequent analysis procedures. Requirements identified in the requirements question blocks 106 include the number of computers, number of nodes, number of servers, future growth expectations, local area network (LAN 402) uses, and other characteristics such as brand preferences that a user may have. Users are free to leave particular questions unanswered, as the exemplary embodiment of the present invention can develop a solution based on limited information. As will be explained, users can also add information later, after an initial solution is suggested, through an incremental editor described below.

A fourth category of question blocks includes guidelines question blocks 108. Guidelines refer to overall considerations, such as total budget, servers, platforms, and other considerations to be applied throughout the overall system. Guidelines question blocks elicit information that is necessary to determine the user's needs across multiple pieces of equipment (or the network as a whole). The information obtained is stored in the Answers Base Class 140 (discussed below), and is accessed by (among other Base Class processes) the User Guidelines Base Class 160 (FIG. 6) processes. Guidelines question blocks allow the tool to ask detailed questions for each piece of equipment. Other question block processes update and alter the information in the Answers Base Class 140 as the user responds to other question blocks. The tool gathers sufficient information to allow it to understand the capacity and speed requirements of the equipment, and how each piece of equipment must be connected to the network in order to satisfy the requirements and guidelines.

A fifth category includes detailed product questions 110. The questions within the fifth category are used during Phase I and Phase II to narrow down selection of particular products and to arrive at the recommended solution. A sixth category includes internetworking questions 112. The questions within the sixth category are used during the Phase III to narrow down selection of how the products are to be connected to one another, and how to arrive at the recommended solution.

(3) Processes Corresponding To The Question Block Base Class

The Question Block Base Class 100 contains a number of question blocks that are grouped into categories. Referring again to FIG. 3, the Question Block Base Class 100 includes procedures that (a) create a question block queue, (b) identify empty or invalid memory locations in the Answers Base Class 140 (FIG. 22B) and in the Client Base Class 120, (c) identify subclasses and extensions in the Question Block Base Class 100 that map to the empty or invalid memory locations, (d) translate question information from the identified subclasses and extensions in the Question Block Base Class 100 by the Language Base Class 700 and the County Base Class 750, (e) create a QuestionProc 100a (FIG. 22H) corresponding to the question block and "Spawn" a process for presenting the QuestionProc 100a to the user, and (f) place a pointer to the QuestionProc 100a in the queue. The queue and the corresponding QuestionProc 100a are part of the view, associated with each user session.

A first set of processes corresponding to the Question Block Base Class 100 retrieves particular question block objects from the maintained Question Block Base Class 100 and copies the question block into a view for the client session. As will be explained, each user session is assigned a region of memory referred to as a view into which information relating to the client session is copied. Copying the question blocks, or at least a representation of the question blocks, into the view allows presentation at a user's browser in an environment appropriate to the browser.

The first set of processes associated with each question block copies the question block object from the Base Class into a region of memory dedicated to a particular session. The ability to provide a view of the Question Block corresponding to each session allows the present invention to simultaneously accommodate multiple users by allocating to each user a different region of memory. In some embodiments, while the Base Class exists in a common area maintained by the manufacturers or other experts, subclasses and extensions reside in the client session view. Alternately, only a question block identifier need be copied into the view, where it is placed in a queue. In still another embodiment, the queue contains entry points of the question blocks to be called.

The first set of processes accesses Graphical User Interface routines, or contains its own, which ask questions of the user and stores responses in memory, within a region of memory dedicated to the view. In one embodiment, each view contains an instance of the question procedure object class. Question Procedures (or Answer Handling Procedures) include procedures that create a class instance of each class referenced in the corresponding block of questions; re-use deleted instances; put, get, update or delete answers to the Answers Base Class 140 (FIG. 22B); get additional class members; traverse a class tree; gets class properties; and creates temporary collection of class members. As stated previously, the processes associated with the question blocks present questions from the question blocks on an output device corresponding to the user, and receive responsive inputs (answers) from the user over an input device. The answers are placed in either a Client Base Class 120 or an Answers Base Class 140, depending on the particular question block.

A second set of processes associated with the each object (i.e., question block) in the Question Block Base Class 100 parses the returned answers from the question block, updates the Answers Base Class 140 (FIG. 22B) and then formats and presents the next question block to the client. Preferably, though, only one entry point to the question block is needed to handle all interactions with the client. Each such object possesses three corresponding sets of data driven Question Block processes. The third set of processes then determines, based on responses to previously asked questions, whether to branch to the entry point of other question block objects within the view. The objects of the Questions Blocks do not branch in a tree-like manner nor any other predetermined way, but rather can branch among the other question blocks in a nonlinear, nonsequential manner. Control flow through the question block processes is driven by previous answers. Within the view, the question block identifiers are stored in a queue. Each block of questions has the possibility of invoking one or more other blocks of questions; each block of questions thus invoked is queued for presentation when a previously-queued block of questions is completed. The second set of processes analyzes the Answers Base Class 140 (discussed below) and identifies other question blocks that are to be included.

The fifth category of question blocks includes detailed product questions 110. These detailed product questions 110 are typically called after some product definition has occurred, and are used to identify additional products that should be included with the products already defined. For example, once a Desktop 406 Subclass is established, detailed product questions 110 need be called to select products, parameters, operating systems, and applications, as well as personal preferences and expected future trends, corresponding to the desktop 406. Similar detailed product questions 110 are called when notebook computers, personal printers, other I/O devices, and other products are identified. These detailed product questions 110 are discussed further below, in reference to FIG. 9 and further in reference to the fifth set of processes corresponding to the Solutions Framework Base Class 400.

(4) Control Flow Through Question Blocks

Control flow through the question blocks is nonlinear and non-sequential. Because the operations are controlled by the answers provided during this interactive session, flow control may be best described as a dynamic process that is initially based on a redefined order of execution of Question Procedures. Pre- and post-process procedures are used to perform analysis of the Answers Base Class 140 (FIG. 22B), add values to the Answers Base Class 140 or alter program flow based on the results of the analysis.

It will be recognized that, though shown in a sequential flow, the objects need not in fact be implemented in such a sequential flow. Instead, objects such as the requirements question blocks 106 object call or spawn informational questions within the informational question blocks 102 for additional information. It will be remembered that many of the user interfaces accessing the question blocks are designed to obtain from the user a set of guidelines to be used in later phases to structure the solution. The interactive phase need not be completely terminated; if needed, additional question blocks can be accessed and more information obtained from the user. If an object determines that more information is needed or would be useful, another object designed to obtain the missing information is created.

The numerous subclasses of the Question Block Base Class 100 include questions seeking related pieces of information from the user. Each subclass (or its entry point) can be copied to any view. Processes associated with the subclass can branch to any other subclass in the Question Block Base Class 100 by adding the other subclass to the view as well, depending on user responses.

d. Products Requirements Base Class

The Products Requirements Base Class 200 identifies, for each subclass of the Solutions Framework Base Class 400, the properties whose values question blocks can be queued to value.

2. Temporary Objects For Each Session

In addition to the Maintained Object Classes, some of which are copied into the view, other object classes are created for each client session. The objects created for each client session collectively define the state of the client session.

When a user initiates a session, the exemplary embodiment of the present invention creates a "view" corresponding to the session. The view may be regarded as a region of memory storing all of the object classes corresponding to the client session. If multiple users access the tool, or if a user indicates that several different (i.e., separate, distinct) computer systems are to be designed, then different regions of memory are allocated to prevent any overlap of the views.

Each view includes a copy of at least some access to the Question Block Base Class 100. As stated above, each Question Block object in the Question Block Base Class 100, once copied into the view, can pose questions to the user in abstract, easily understood language, and can store information derived from the answers to the questions. Each view is self-directed, in that question block processes corresponding to the question blocks in each view can access the Question Block Base Class 100 and copy additional question blocks into the view. The Language Base Class 700 (FIG. 23B) and the Country Base Class 750 (FIG. 23A) are used to validate Language, Country, compatibility and availability Parameters.

Each view also includes a Client Base Class 120 (FIG. 3), an Answers Base Class 140 (FIG. 22B) (not shown, but including a Collections subclass, an AnswersCollections subclass, and an Applications Subclass 290), a Solutions Framework Base Class 400, and a Recipe Base Class (FIG. 3). Each of these Base Classes resides in each view. The Client Base Class 120 (FIG. 3) the Answers Base Class 140 are created by processes associated with particular question blocks. The Solutions Framework Base Class 400 and the Recipe Base Class are generated by the Login procedure during the preliminary phase described below, and contain update processes that obtain information from both the Client Base Class 120 and the Answers Base Class 140.

Typically, object classes in each view operate independently of the object classes in the other views. Each of these Base Classes contains a subclass or table and a set of processes. Each process is identified with a Base Class, and is driven by the absence and invalidity, or the presence and validity, of the data within the Base Class. Each of these Base Classes is now described in detail.

Other objects are also created within the view, but do not necessarily survive the end of the session. These are shown in FIG. 5. These object classes include a User Guidelines Base Class 160, having attributes represented as columns in a table in FIG. 6, a Requirements Base Class 180, having attributes represented as columns in a table in FIGS. 12-16, a Products Requirements Base Class 200 (not to be confused with the Requirements Base Class 180 having attributes represented as columns in a table in FIGS. 12-16), and a Requirements Translation Base Class 210 (also, not to be confused with the Requirements Base Class 180). The User Guidelines Base Class 160 contains information to which the entire solution, or large portions of the solutions, are subject. The Requirements Base Class 180, however, has information that is specific to each product. A Products Requirements Base Class 200 and the Requirements Translation Base Class 210 allows the tool to develop solutions based on these base classes. Many of the processes that access Base Classes within these Base Classes also access the Calibration Base Class 280, one of the maintained Base Classes described above.

Each of these object classes is now discussed in detail.

a. User Guidelines

(1) General Structure

The User Guidelines Base Class 160 (FIG. 6) contains a Base Class of overall user guidelines that can be applied over an entire computer system or network. Subclasses define user guidelines for particular extensions of the Solutions Framework Base Class 400. In other words, as the Solutions Framework Base Class 400 generates subclasses (i.e., extensions) in the view (i.e., the region of memory dedicated to the client/user session), each subclass of the Solutions Framework Base Class 400 is an instance, or copy, of one of the object classes defined in FIGS. 18A-18C.

Referring now to FIGS. 18A-18C, the User Guidelines Base Class 160 includes a Base Class of all the computer products to be included in the recommended solution. The Base Class has entries (records) describing each class (category) of product available in the market, according to various attributes (i.e., parameters) or fields upon which a customer or repeller or a consultant configuring and designing a solution to a customer s particular computer needs might desire to search. Each desktop, for example, is an instance of the "desktop" subclass of the Object Base Class 600 shown in FIGS. 18A-18C. During Phase I, each user-specified attribute is included in the Solutions Framework 400 subclass, shown as desktop 406 extension in FIG. 4.

For example, speed, cost, availability, error tolerance, and other attributes (i.e., parameters or properties) of computer-related products are included in the User Guidelines Base Class 160 to help specify each product. It may be noted that several products may be identical with respect to a particular field.

The attributes field of the User Guidelines Base Class 160 serves several basic functions. It provides a means for distinguishing products of the same class (i.e., product category). The attributes field includes a value that can be used to rank the products in the class. The Attribute (i.e., Property) Field 218 also provides the structure for the Solutions Framework Base Class 400 extensions, providing information useful to identifying the products by manufacturer and part number. The Attribute (i.e., Property) Field 218 also allows information from the Answers Base Class 140 (FIG. 22B) to map to Solutions Framework Base Class 400, to the Translations Base Class, and eventually to the Calibration Base Class 280 (FIGS. 17A-17D).

User Guidelines Base Class 160 processes search the Answers Base Class 140 (FIG. 22B) for indicia of whether particular User Guidelines subclasses are to be included within a particular view. The non-sequential branching of the question block objects includes several question blocks obtaining from the user a description of the system that the user wants. The user's responses, stored in the Answers Base Class 140 (FIG. 22B), are typically in very high level abstract terminology, easily understandable to any user. Requirements such as "the fastest," "the least expensive," and other similar easily understandable requirements are typical. The User Guidelines Base Class 160 processes determine, based on the user's responses as stored in the Answers Base Class 140, overall compatibility requirements related to security, segmentation of networks, and other factors in determining an overall guideline. User Guidelines allow trade-offs to be made among the products in a computer system or network. For example, if a guideline required compatibility with a server operating in an NT environment, or if the total network cost or fault tolerance were a critical factor, the User Guidelines Base Class 160 can provide an overall adherence to the guidelines. Tradeoffs among guidelines are also accommodated, for example if faster means more expensive.

(2) Processes

Processes of the User Guidelines apply the guidelines to particular criteria. For example, one subclass may verify overall speed of a distributed network, while another verifies system cost. If the defined system does not comply with the guidelines (for example, if a computer system is defined with a maximum cost in mind), then products are selected for substitution. The subclasses are generated dynamically in response to questions posed by the Question Block subclasses and the answers stored in the Answers Base Class 140. Each subclass has a corresponding Question Block determining whether the Guidelines subclass is created for the particular client session.

In the exemplary embodiment, the tool uses the various object classes described above to identify the user's level of technical knowledge and skill, as well as the user's needs for computer products, and to identify an appropriate set of computer devices that satisfy the needs of the user. The tool also identifies the user's spoken language, so that all interactive activity can be performed in a language that the user can understand.

Since the user's level of technical knowledge and skill is known to the tool, virtually all of the information is phrased in language the user can understand. The control flow through the tool also identifies industry standards, and verifies that the set of products and the set of instructions presented to the user are available and compatible in the user's geographical location.

The preliminary question block also includes processes for identifying other questions blocks to call, and entering entry points to the other question blocks into a queue. In those embodiments in which the entire Question Block Base Class 100 is copied into the view, only a relational vector is necessary in the queue. In the disclosed embodiment, once a question block process determines that all questions within the particular question block have been presented to the user and the user has either responded with an answer or declined to do so, another process corresponding to the question block searches the queue and identifies another question block pointer, entry point, or relational vector (i.e., offset). If any such exists in the queue, another question block is called, and its answers likewise placed in either the Client Base Class 120 or the Answers Base Class 140 (FIG. 22B), depending on the particular question block.

The processes associated with the User Guidelines Base Class 160, the Requirements Base Class 180, and the Products Requirements Base Class 200 are collectively referred to as Phase I. Phase I interprets the Answers Base Class 140 and the Client Base Class 120 (FIG. 3) determines the basic structure of the Solutions Framework 400 and the Recipe Base Classes (FIG. 3). These processes access the Answers Base Class 140 and Client Base Class 120 directly, and extend the Solution Framework 400 and Recipe Base Classes (FIG. 3) to include specifications of products (both hardware and software) and are used to supply the various subclasses of the Solutions Framework Base Class 400 and Recipe Base Class with basic guidelines and requirements.

No consideration is given during Phase II to compatibility among the given products, but rather Phase II is directed to selecting a list of products individually corresponding to the Guidelines Base Class and the Requirements Base Class 180. During execution, both the Requirements Translation Base Class 210 and Products Requirements Base Class 180 store their corresponding results in the Solution Framework 400 and Recipe Base Classes (FIG. 3).

A User Guideline Base Class 160, also in the database, and also created by processes within Phase I, may be regarded as an initial instance of the Solution Framework depicted in FIG. 4, and are initial instances of the data classes pertaining thereto. The processes associated with the User Guideline Base Class 160 store the rankings of the set of data objects shown in FIG. 4, relating to solution guidelines, in the empty solution framework created in Phase I.

User specified guidelines and input parameters gathered during the question and answer session of 252 describing each of the product classes constrain the output of Phase II and Phase III, since the guidelines are applied across the solution to ensure close match with the user's expectations. Although some answers provided by the user apply to particular devices or products, and are used to drive the product selection of Phase II, other user specified guidelines apply to the solution as a whole, rather than to particular devices or products. Characteristics such as cost, performance, number of features, expandability, scalability, fault tolerance, security, and availability may all be specified as a ranking, and each feature, device, software, or operating system determined by the exemplary embodiment of the present invention will thereafter comply with the overall user specified guideline. Because each product in the product object in the database includes a ranking relative to the other products within the same product class, subsequent processes pertaining to Phase II and Phase III can apply the user specified guidelines across the entire solution. Each product is positioned within its class relative to the other products, so that the user specified guidelines indicating the importance of the feature to the user may be specified.

How the guidelines are applied to product selection is another innovative feature. As explained previously, there are two approaches within the exemplary embodiment of the present invention for specifying the user specified guidelines and product selection. In the "overall" guideline or product selection, a user identifies, for each product class, whether the low end, best value, or high end product is desired. In other words, in response to the question blocks, for each product class (e.g. microprocessors, printers, etc.) the user specifies a low end, best value, or high end criteria for the whole product. Each product in the Products Base Class 240 thus has an overall ranking. In the "detail" guideline approach, however, in the detailed guidelines approach, for each product class, the user ranks the various characteristics (cost, performance, number of features, expendability, scalability, fault tolerance, security, availability) according to the level of importance the user attaches to each characteristic. Because each product in the database objects have a separate ranking number corresponding to each of these characteristics, relative to the other products in the product class, a process can select from the database objects the particular product or set of products corresponding to the characteristic ranking. A default value of "best value" may be provided. Thus, in the database object, each product not only has a ranking corresponding to its fault tolerance relative to the other products in the class, but also indicates whether users typically select the product typically deem fault tolerance more important than scalability. This is accomplished by forming a Base Class for each product class, the rows in the Base Class corresponding to individual product within the product class, columns in the Base Class corresponding to the characteristics listed above, and each Base Class entry including a unique number between 1 and 100 that provide the balance between the relative importance among the various characteristics, and the ranking of the product within the class of that characteristic.

Another innovative feature is the "median selector" of the product selection. The process 534 that searches for matching products only includes the products that exceed the median in the zone that is being processed. For example, if a Base Class or entry in the User Guidelines Base Class 160 indicates that the solution guidelines place a premium on fault tolerance, in the characteristics Base Class just described, each column is examined and only those products exceeding the median are included in the Second Intermediate Results Base Class 540. This selection process is described in FIG. 8

b. Requirements Translation Base Class

A Requirements Translation Base Class 210, initialized during the Login procedure, includes processes calculating and deriving information and storing the information in a Requirements Translation Base Class 210.

Processes associated with the Requirements Translation Base Class 210 access the User Guidelines Base Class 160, and determine the categories or products desired by the user, and the guidelines associated with each category or product, as indicated by the user in response to question blocks. The processes associated with t