Systems and methods for automated help

A method for providing assistance to users of computer programs. The computer system receives user inputs for utilizing the various functions of a computer program. The system records an amount of time during which said user utilizes the respective functions, such that when a user signals that assistance is needed, the system determines which of the program's functions have been most frequently used. The system then finds, and connects to the user, persons having expertise in those respective areas.

FIELD OF THE INVENTION

The present invention generally relates to the field of computer-aided design (CAD). In particular, the present invention is directed to a method and associated apparatus to enable automated help with use of a CAD design tool.

BACKGROUND

Computer-Aided Design (CAD) programs are typically utilized to create, model, and optimize the design an product or article for subsequent manufacture, typically by rendering a 3D surface representation of the designed product. CAD tools typically include a user interface for enabling a user to input design requirements, constraints, required performance criteria, testing criteria, and required elements or materials.

Systems to provide help to users of software products are known in the industry. One is the menu-driven help system in applications such as Microsoft Word, in which a user reads through a menu of search topics to find applicable information, by either reviewing an index of help topics or by entering key words that search the index and specific help information to find applicable content.

Another utility to provide general assistance is Ask.com. Ask.com includes a utility with a Q&A community, in which specific questions on general topics can be submitted to groups of experts in those general topics. See http://www.ask.com/answers/browse?qsrc=321&qo=channelNavigation&o=0&1=dir, last visited Jun. 12, 2014.

Finally, remote help systems are also known by which computer support technicians can access users' computers remotely in order to provide support. See for example http://www.apextechservices.com/it-consulting/gl10202013.aspx?gclid=COvK27np274CFc9 xOgodeBcAig, last visited Jun. 12, 2014.

Accordingly, while prior art exists for providing remote technical support, that technical support relies on either static menus, or relies on users to articulate their questions in a form understandable to the help system. A need has arisen in the art for help systems that do not rely on static menus or user help request articulation.

SUMMARY OF THE DISCLOSURE

An embodiment of the invention comprises causing a computer system to receive user inputs for utilizing a plurality of functions of a computer program, causing a computer system to record an amount of time during which the user utilizes each of the plurality of functions, causing a computer system to receive an indication from a user that assistance is requested, causing a computer system to compare the respective amounts of time the user utilizes each of the plurality of functions to one another, to identify which of the plurality of functions have been most frequently used, and based on the identified most frequently used ones of said plurality of functions, causing a computer system to identify expertise to provide assistance to the user.

Another embodiment of the invention comprises a computer readable medium storing machine-executable instructions including a plurality of modules that are executed by a processor of a computer system, the instructions when executed by the processor causing the computer system to execute a method comprising receiving user inputs for utilizing a plurality of functions of a computer program, recording an amount of time during which said user utilizes each of the plurality of functions, receiving an indication from a user that assistance is requested, comparing the respective amounts of time the user utilizes each of said plurality of functions to one another, to identify which of the plurality of functions have been most frequently used, comparing identified most frequently used ones of the plurality of functions to an indication of expertise of a plurality of experts in the most frequently used ones of the plurality of functions, and identifying a selected one of the plurality of experts having a relatively high indication of expertise in the most frequently used ones of the plurality of functions.

DETAILED DESCRIPTION

In the description to follow, flowcharts are used to indicate the methods in accordance with a first embodiment of the invention. These flowcharts indicate corresponding sequences of computer code that accomplish the depicted method steps.

The invention could be embodied in one of several ways. All of the code modules could be written in any computer language, such as Java or C++. Alternatively, the code modules of the invention could be embedded within an existing 3D CAD/CAM program, such as SolidWorks, AutoCAD, zwCAD from ZWCAD Software Co, TurboCAD from IMSI/Design LLC, or others. If the code modules are separately programmed, they can interact with a CAD product through its application program interface (API). Any code modules of the invention that are integrated into an existing CAD product would be written in an applicable programing language for CAD products, such as LISP.

Herein, a “structure” (or the “product” that is designed) may be any object or part having a particular geometry. A 3D computer “model” may be a virtual representation of a structure and may be created using an appropriate CAD program, such as those set forth above. A “designer” or “user” may be the designer of a 3D computer model, a purchaser, an agent of the purchaser, a consumer, a home user, or a customer, among others. Examples of a structure include a piece of sheet metal, a solid cube, a cylindrical pipe, an injection molded plastic toy, an article of clothing such as a shirt made of cotton, and an assembly of various parts such as a vehicle, among others. A project (or design) may refer to a CAD model of a part or an assembly of CAD models of parts that may be a virtual representation of a particular structure and may be created using one or more appropriate CAD programs.

FIG. 1provides a high level flowchart of the operation of a first embodiment of the invention. While an embodiment of the invention will be described in further detail below, this high level description is provided for ease of understanding. In step105, the program modules of the invention monitor and store information pertaining to a user's recent interaction with a CAD tool. As will be set forth in more detail below, the gathered information includes the length of time the user spends accessing a particular utility within the CAD program. In step110, a user transmits a request for help. In step115, the usage information gathered in step105is analyzed to determine which expert is best suited to provide help to the user. As will be described in more detail below, that determination includes assessing where the user has spent most of her time, then the next most amount of time, etc. so she can select particular areas for assistance. In step120a connection is established between the expert chosen in step115and the user.

FIG. 2is a block diagram of the program modules of the invention. In the description to follow, reference is made to “blocks” of computer program code, or modules of code. It is to be understood that the reference to separate “modules” is for ease of illustration and discussion. As a practical matter, the program code instantiating the invention could be organized in any one of a number of well-known manners to provide the functions described. While it is possible that separate code modules could be created to achieve the separate functions described, that is not required. So for example, we make reference below to a “help center module”240and to a “help center switchboard module”260. While described separately, in practice the actual modules of code instantiating the functions described for those separate modules could be intermingled . . . they do not have to be separate and independent sequences of code.

As set forth above, the invention can be designed as either a standalone program that operates a separate CAD program through its APIs, or can be integrated into a conventional CAD program such as those listed above. In the invention CAD program200includes conventional CAD functions modules210that are typically found in commercial CAD programs, enabling the design of one or more objects. As a result the conventional CAD functions210produce a CAD model220of the object to be designed. The CAD model220includes conventional information (such as composition, object dimensions, surface bends, welds, and the like). The user interacts with and controls the conventional CAD functions modules (hereinafter “CAD program functions” or “CAD functions”210), to in turn manipulate the resultant CAD model220, through graphical user interface (GUI)230.

In the invention, a help center module240is provided to enable automated help intervention. As will be described in more detail below, the help center module240includes an observer software module245that reads and records recent interactions between the user (via GUI)230and the conventional CAD program functions210. As will be described in more detail below, the observer software module245includes a design state database250that records changes and updates to the CAD model220. The design state database (as well as all the other databases described herein) can be any commercial relational database product, such as DB2 from IBM or Oracle Database 12c, that can store the information and related tables of information described, and can be either directly a part of the CAD program200(as shown), or accessed by the program modules of the invention remotely (such as in a cloud service environment).

The help center module240further includes an expert remote control unit module255, which in turn includes an expert interface257. The expert remote control unit module255enables experts to remotely access the CAD program200, through the expert interface257. In a preferred embodiment of the invention the expert interface257is part of the GUI230by which the user interacts with CAD program200. The expert interface is shown inFIG. 2as being part of the expert remote control unit module255because it is accessed by the expert that is selected by the switchboard module260.

The invention further includes a help center “switchboard” module260, which utilizes the output of the design state database250to select an expert from the expert database270who has listed credentials that are similar to the user's requirements for assistance as indicated by the help center module240. As a result, an appropriate expert280is selected, and a connection is established between the user and expert280by any one of a number of known communication technologies (such as, by way of example and not limitation, video chat such as Skype; landline telephone connection; cellphone/smartphone connection; emails; instant messages, and communications over social media portals such as Facebook and Twitter). The help center switchboard module260further includes an analyzer module275, and an optional payment module277. As will be described in more detail below, the analyzer module275compares the output of the design state database250, as well as (optionally) inputs from the user via GUI230and the CAD model itself220, to the entries in the expert database270, so as to determine which expert280-280N should be selected to provide support to the user. Finally, as described in more detail below, each of the experts280-280N may have their own version of CAD program200for entering information into the CAD model220, while interacting with the user (for example, so that the expert can explain her recommended changes to the CAD model220) through the expert interface257.

With reference toFIG. 3, a more detailed flowchart of the method of the invention as set forth inFIG. 1will now be described. The process starts with step305, in which the user enters commands to the control the CAD functions210, so as to build the CAD model220. The observer software module245receives those inputs, and in step310a record of those inputs is created in the design state database250. In step315the user indicates that she wants to invoke the help utility, which prompts the help center module240to read out the entries of the design state database250for the article under design to the analyzer module275of the help center switchboard module260.

As previously stated, and as will be described in more detail below with reference toFIG. 5, in step320the analyzer module275compares the outputs of the design state database250to corresponding entries in the expert database270, to determine which expert best matches up to the likely subjects of the help request from the user. In step325communications are initiated with the applicable expert280, by enabling them through their expert CAD program285and the expert remote control unit module255to (under step330) control the CAD program functions210remotely, so as to manipulate the CAD model220directly, while also enabling the expert280to interact with the user through expert interface257. Optionally, in step325, the payment module277enables payment by the user for the support services of the expert280, which can be completed prior to, or after, the provision of support services. Payment can be in the form of an upfront fee, or based on the amount of time the expert spends providing help, some combination of upfront fee and time billing, or some other basis agreed to by the user. The payment module277is of the conventional type that enables ecommerce payments using credit cards, PayPal, and the like. Finally, in step340, when the expert280completes providing services to the user, the expert terminates the help session, and the invention returns full control over the CAD program functions210and the resultant CAD model220to the user, such that the process starts again at step305. The invention enables the user to terminate the help session at any time by so indicating at the GUI230.

FIG. 4is a more detailed flowchart of the steps taken by the program modules of the invention in carrying out step310ofFIG. 3. As inFIG. 3, the process starts with step305, where the user inputs are received to control the various CAD program functions210.

In step410the expertise area of the associated action is characterized by the observer software module245, and recorded by observer software module245into the design state database250. As shown inFIG. 6A, in the invention the various specifications and manufacturing procedures supported by the CAD system (such as “Cut Sheet” and “Place Weld”)602are categorized into functional groups604that share a common technology and expertise. For the sake of speed, this action/expertise categorization table ofFIG. 6Ais stored in the design state database250. Note that it could be stored elsewhere. By way of example, all the steps relating to material selection (such as steps602A and602B) are categorized as relating to the group “Material” expertise area in column604. As will be apparent to those of skill in the art, the design state database210would include the names of a variety of expertise areas associated with CAD designs; what is shown inFIG. 6Ais simply an example. Moreover, while the table shown inFIG. 6Aonly shows a single expertise area for each action, multiple expertise areas could be indicated, depending on factors such as preceding steps.

FIG. 6Aalso shows an assigned weighing factor606for each action. The weighing factors are added to given greater emphasis in the determinations set forth below for actions that are more likely to be the basis for a help request. So for example, step602C “Activate Undo button” is assigned a weighing factor (or modifier)606of “2,” on the rationale that any “Undo” action indicates that the user is undoing a previous action, which indicates a likelihood that the user made a mistake and may seek help. Likewise, an “Idle” action is relatively unlikely to result in a user help request, so as shown in row602D it is assigned a weighing factor606of “0.5.” In an alternate embodiment of the invention, an Idle action could be assigned a “2” if it occurs for less than a minute (because that may indicate the user is confused about the operation of the applicable function of the program) and a “0.5” if it occurs for more than a minute (on the rationale that a longer period indicates disengagement from the program due to some interruption). Note that the assignment of particular weighing factors to particular actions (both the absolute numbers assigned, and how they differ between particular actions) is a matter of design choice. Note also that while in the description above the modifiers606are determined solely by the action602, they could also be determined by the expertise area604, or by some combination of602and604.

Therefore, in this step410, the observer software module245compares incoming user actions from GUI230and the CAD program functions210to the database shown inFIG. 6Ato assign applicable expertise areas for each user action. In step415, as shown inFIG. 6B, the actions612and their assigned expertise areas614and weighing factors616, along with a “time stamp” of when each action was taken620, is entered into the design state database250. Then, in step420and with further reference toFIG. 6B, the total amount of time622spent by the user undertaking each action is calculated by the help center module240, along with a running total624of the total amount of time spent by the user on each action, which factors in the assigned weighing factor616. Finally, in step425the calculated time spent622and running total624are written in to the design state database250by the help center module240.

FIG. 6Bshows the information as recorded in the design state database250as a result of step425. In an embodiment of the invention, the running total624is recorded for each expertise area only for so long as a user request for help is not received, or for a continuous ten minute period, whichever is longer. In the particular example shown inFIG. 6B, the actions beginning at “Cut Sheet”620A and ending with “Help Center” at620B were recorded, because they all occurred within ten minutes of the time the user requested help at step620B. The rationale for recording not more than ten minutes of activity is that it is far more likely for a user to need help for actions undertaken in the immediately previous ten minutes than for longer periods of time. As will be apparent to workers of skill in the art, the selection of ten minutes is a matter of design choice; shorter or longer periods could be selected, particularly if over time a trend develops of users seeking assistance for actions taken more than or less than ten minutes prior to seeking help.

Note also that the running total calculated running time shown in column624includes two other aspects, the multiplier/weighing factors616and certain actions for which running time is not assigned. As shown most clearly with action620C, the actual time spent was five seconds, yet the calculated running time associated with that action is ten seconds. That is because the help center module240multiplies the time spent for each action in622by the multiplier (or weighing factor)616for that action, and the resultant is included in the calculated running total624. Note that while an embodiment of the invention adds weighing factors to the running total calculation, and discounts one or more steps from the running totals, it is to be understood that the invention can be practiced without applying one or both of those aspects, and for example the invention could calculate running time solely as a function of the time spent on each action, or by only adding the weighing factors, or by only discounting certain steps.

With reference toFIG. 5, a more detailed description will now be provided of step320ofFIG. 3. In step505, when a user requests help as set forth in step315ofFIG. 3(and as reflected by the “Help Center” action620B inFIG. 6B), the help center module240reads the design state database250for data recorded from the last “begin” action (e.g.620D ofFIG. 6B), or within ten minutes in running time from the “Help Center” action620B, whichever is shorter. The help center module240then lists all the different expertise areas applicable to actions applied toward the calculated running time (as previously discussed, some actions can be discounted from the running time calculation), and determines a summation of the portions of the total running time during which the given expertise areas were applicable (which also includes factoring in the weighing factors for particular actions taken in given expertise areas). So, for the example shown inFIG. 6B, based on the recording of running time expired time help center module240would determine that the “Welding” expertise area was applicable to actions undertaken for five minutes, thirty nine seconds of running time; the “Bending” expertise area was applicable to actions undertaken for one minute, fifty six seconds of running time; and the “Cutting” expertise area was applicable to actions undertaken for one minute, forty four seconds of running time.

In step510, the help center module240presents the resultant data to the user for selection of help topics. A schematic view700of the GUI230screen providing that information to the user is shown inFIG. 7. The user is given the option of selecting the expertise area for which information is sought. Here, the areas are listed in order of decreasing running time; as a practical matter they could be listed in any order. The calculated portions of total running time applicable to each expertise area is listed for the convenience of the user; as a practical matter that information does not have to be shown. The screen700also includes the option of designating the expertise areas as “primary” or “secondary;” that information is used to select experts, as will be described in more detail below. Finally, the screen includes the option of selecting areas of expertise other than those listed. In an embodiment of the invention the other areas are selectable from a pulldown menu (where the user clicks to see all the options, and then selects from the listed options) that lists all the expertise areas for the applicable CAD tool; as a practical matter any way of showing the information could be used, use of a pulldown menu is not mandatory. So for example the help center module240would populate the pulldown for the “Other” option with the expertise areas shown inFIG. 6A. In that embodiment the information could be pre-populated as the expertise areas are originally assigned, rather than waiting for the help center module to calculate the data in step510. In an alternate embodiment of the invention the specifically listed expertise areas would be only the two with the most running time, and all the other expertise areas applicable to the actions undertaken during the applicable time period discussed above would be presented as selections in the pulldown menu. In this embodiment the pulldown menu would only be populated when the help center module240carries out step510. As a result, in step515the user provides her selection to help center module240, and that selection is provided to analyzer module275of help center switchboard module260. Finally, it should be understood that while in this embodiment of the invention the user is presented with an option to select the help topic, the invention could also be practiced without presenting this option to the user; the process could skip steps505and515, and simply provide the resultant of step505to analyzer module275of help center switchboard module260.

Continuing with a description of the method ofFIG. 5, prior to initiating the analysis to determine the best expert to contact, as an optional step520the method of the invention queries the CAD model220for attributes of the object to be manufactured, and includes that data along with the data discussed above to the analyzer module275of the help center switchboard module260. These attributes include the type of material used, the type of weld, and other specific characteristics of the designed object associated with the expertise areas discussed above. As will be described in more detail below, these attributes are compared to “restrictions” listed in the data accompanying particular experts, to help determine if an otherwise-eligible expert would not be suited to provide assistance for the designed object in question. While this optional step has been described with reference to applying the attribute information against a list of “restrictions” of the experts, it is to be understood that it could also be applied to a list of “high expertise” technologies that would make a given expert an even better choice to provide help support.

In step525, the analyzer module275of the help center switchboard module260carries out a search on the expert database270, looking for experts that have expertise in at least the primary expertise area as indicated either by the user (by virtue of the selection in step515) or by the calculations from help center module240(by determining the expertise area with the highest total running time), as well as (optionally) looking for such experts that do not have “restrictions” on their expertise that would render them inapplicable due to the attributes of the CAD model220as discussed above.

FIG. 8presents an example of the listings of experts in the expert database270. The rows reflect particular data for each expert. Column801lists whether the expert is immediately available; a “N” entry means the expert is away, or working on another project, or is otherwise unable or unwilling to provide immediate assistance. In an embodiment of the invention this information is provided on a real-time basis by the experts; it is to be understood that the information could be updated on a daily or some other periodic, or non-periodic, basis. In an alternate embodiment of the invention, the expert could list usual hours of availability. In another alternate embodiment of the invention, the “Y” could also designate whether or not the expert has signed an agreement under which, amongst other things, she is obligated herself to maintain the confidentiality of information exchanged with the user in providing assistance, and to assign any inventions arising from the engagement. In an alternate embodiment of the invention the Y/N designation does not reflect this information/status, because all the experts have to agree to such terms in order to be listed. In yet another alternate embodiment of the invention, once an expert is designated, the user is provided an opportunity to establish appropriate contractual terms with the expert, before proceeding with an exchange of technical information.

InFIG. 8, column804indicates an “expertise score” for each expert for the bending expertise area; columns806and808present similar scores for the cutting and welding expertise areas, respectively. Column801indicates whether the expert has any expertise in the bending expert area; not the correlation between “N” entries in column802and the “0” entries in column802. Column805indicates whether the expert has any expertise in the cutting expertise area (correlating to the respective expertise indicators in column806), and column807indicates whether the expert has any expertise in the welding expertise area (correlating to the respective expertise indicators in column808). Note that while all of the “N” entries in columns802,805,807correlate to “0” entries in columns804,806,808, respectively, as a practical matter an “N” entry could be used to designate low expertise for an expertise score other than “0”, such as for example less than 20.

In the invention, some sort of quantitative indication is provided indicating the relative expertise of the listed experts in all of the expertise areas listed inFIG. 6A(only three of such areas are listed inFIG. 8solely for the purpose of ease of illustration). These relative quality indications . . . or rankings . . . can come from a number of sources. Preferably, the rankings are based on feedback from previous requesters of help in the expertise area in question, and for that reason are articulated on a scale of 1-10. But other alternatives can be used. The rankings could be based on results from an independent testing agency. Or they could be based on more subjective factors, such as the number of juried publications from the expert, or the number of years of experience. Yet another is a combination of any one or more of the options listed above. For example, the rankings could be determined by a combination of objective factors (number of years of experience in the expertise area, and number of pertinent juried publications), and subjective factors (like customer feedback on a 1-10 scale). Moreover, while a 0-10 scale is used here (where 0 means no expertise, and 10 means extremely high expertise), any other relative scale could be used.

Finally, the database table includes listings of restrictions810. So for example while expert Baker has provided expertise in welding (as indicated by his score of 6), he does not work on tungsten inert gas (TIG) welding. So if the CAD model220indicates that type of welding is used, Baker will not be chosen even if his expertise score would otherwise indicate that he is suitable. Optionally, other information could be provided in column810on what a given expert will (or will not) provide support for.

Then, as a result of step520, the analyzer module275of help center switchboard module260determines the best expert to provide help, based on the highest expertise score for the desired expertise area, and availability (and optionally, whether or not the expert would be disqualified because a restriction810is applicable for the desired expertise area). In step530, the analyzer module275determines if there is a tie between designated experts. If there is no tie, the highest ranked expert is designated in step540. If there is a tie, in step535the analyzer module searches the expert database270to compare the relative expertise of the tied experts for the next most important expertise area. This second expertise area is either indicated by the user (in step515and as shown in and described with reference toFIG. 7), or is calculated by the help center module240to identify the expertise area with the second highest total time associated with it (as described above). So, in the example shown inFIG. 8, if the primary expertise area was “Welding,” the result of step520would be to select both Ford and Mayhew, since they both have a score of “9” in column808. In this step530, if the “Cutting” expertise area is the secondary expertise area for which help may be needed, the scores of Ford (5) and Mayhew (8) are compared in column806, and in step540Mayhew would be selected. In an embodiment of the invention, in the event that two or more experts are still tied, one more selection criterion could then be applied. By way of example, these other selection criteria could be expertise in a third expertise area; or a simple summation of the expertise indicators for the experts; or some other factor not tied to expertise per se, such as physical proximity; or a combination of one or more of the criterion listed above; or others.

In step545the designated expert is then identified to the user by a screen view in GUI230. The presented screen includes the option to enable the user to allow the expert to assume remote control of the CAD program200, and in particular the CAD program functions210and the resulting CAD model220. If in step550the user grants the expert remote access capability, the process continues in step555to the flowchart ofFIG. 9. If the user does not wish to grant such remote access, but wishes to obtain help from the expert, in step560the user contacts the expert (through email, phone, instant message, internet-based video conference, or some other similar communication method) and the expert provides the requested assistance, until in step565the user indicates that no further assistance is needed.

With reference toFIG. 9, when in step550ofFIG. 8the user indicates that she wants to grant the expert280remote access to the CAD system200, in step905ofFIG. 9that indication is received by the expert remote control unit module255. Optionally, in step910the expert remote control unit module255disables the user's control over the CAD system200, such that the expert280can have unimpeded access; as a practical matter this step is not required. In step915the expert interface257in the expert remote control unit module255is activated, enabling the user and expert to exchange information (through email, phone, instant message, internet-based video conference, or some other similar communication method). In step920the CAD model220is sent, through the expert remote control unit module255of help center module240and the help center switchboard module260, to the expert CAD program285where it is loaded so that the expert can have access to, and update, the CAD model at her location. Note that “sending” the CAD model to the expert280requires, amongst other things, that the expert CAD program be the same as, or otherwise compatible with, the CAD program200(at least in terms of the CAD program functions210). As an alternative, in step920the help center module240initiates a handshaking protocol to confirm the programs are the same or compatible, in order to ensure that the expert CAD program285of the expert280can manipulate the CAD model220. The expert280could then be presented with the option of downloading a compatible program to enable communications, or manipulating the CAD program functions210through an application program interface (API). In step925the expert submits a CAD model control command on her expert CAD program285, which in step930is sent by the help center switchboard module260to the expert remote control unit module255, which provides the command to both the expert interface module257(so that the user can observe, and learn from, the commands issued by the expert280) and to the CAD program function210to correspondingly change the CAD model220. In step940, the help center module240queries the expert interface257to determine if the user has indicated that she wishes to terminate remote expert control. If so, the expert's remote access is terminated. If not, the process continues with the expert entering another command in step925. If the user has terminated remote expert control, and if optional step910was applied to disable user control of the CAD system, in step945the user's control is re-established, and the user continues her use of CAD program200, and the help session is terminated at step950.

Computer system1000may also include a storage device1024. Examples of a storage device (e.g., storage device1024) include, but are not limited to, a hard disk drive, a magnetic disk drive, an optical disc drive in combination with an optical medium, a solid-state memory device, and any combinations thereof. Storage device1024may be connected to bus1012by an appropriate interface (not shown). Example interfaces include, but are not limited to, SCSI, advanced technology attachment (ATA), serial ATA, universal serial bus (USB), IEEE 1394 (FIREWIRE), and any combinations thereof. In one example, storage device1024(or one or more components thereof) may be removably interfaced with computer system1000(e.g., via an external port connector (not shown)). Particularly, storage device1024and an associated machine-readable medium1028may provide nonvolatile and/or volatile storage of machine-readable instructions, data structures, program modules, and/or other data for computer system1000. In one example, software1020may reside, completely or partially, within machine-readable medium1028. In another example, software1020may reside, completely or partially, within processor1004.

Computer system1000may also include an input device1032. In one example, a user of computer system1000may enter commands and/or other information into computer system1000via input device1032. Examples of an input device1032include, but are not limited to, an alpha-numeric input device (e.g., a keyboard), a pointing device, a joystick, a gamepad, an audio input device (e.g., a microphone, a voice response system, etc.), a cursor control device (e.g., a mouse), a touchpad, an optical scanner, a video capture device (e.g., a still camera, a video camera), a touchscreen, and any combinations thereof. Input device1032may be interfaced to bus1012via any of a variety of interfaces (not shown) including, but not limited to, a serial interface, a parallel interface, a game port, a USB interface, a FIREWIRE interface, a direct interface to bus1012, and any combinations thereof. Input device1032may include a touch screen interface that may be a part of or separate from display1036, discussed further below. Input device1032may be utilized as a user selection device for selecting one or more graphical representations in a graphical interface as described above.

A user may also input commands and/or other information to computer system1000via storage device1024(e.g., a removable disk drive, a flash drive, etc.) and/or network interface device1040. A network interface device, such as network interface device1040, may be utilized for connecting computer system1000to one or more of a variety of networks, such as network1044, and one or more remote devices1048connected thereto. Examples of a network interface device include, but are not limited to, a network interface card (e.g., a mobile network interface card, a LAN card), a modem, and any combination thereof. Examples of a network include, but are not limited to, a wide area network (e.g., the Internet, an enterprise network), a local area network (e.g., a network associated with an office, a building, a campus or other relatively small geographic space), a telephone network, a data network associated with a telephone/voice provider (e.g., a mobile communications provider data and/or voice network), a direct connection between two computing devices, and any combinations thereof. A network, such as network1044, may employ a wired and/or a wireless mode of communication. In general, any network topology may be used. Information (e.g., data, software1020, etc.) may be communicated to and/or from computer system1000via network interface device1040.

Computer system1000may further include a video display adapter1052for communicating a displayable image to a display device, such as display device1036. Examples of a display device include, but are not limited to, a liquid crystal display (LCD), a cathode ray tube (CRT), a plasma display, a light emitting diode (LED) display, and any combinations thereof. Display adapter1052and display device1036may be utilized in combination with processor1004to provide graphical representations of aspects of the present disclosure. In addition to a display device, computer system1000may include one or more other peripheral output devices including, but not limited to, an audio speaker, a printer, and any combinations thereof. Such peripheral output devices may be connected to bus1012via a peripheral interface1056. Examples of a peripheral interface include, but are not limited to, a serial port, a USB connection, a FIREWIRE connection, a parallel connection, and any combinations thereof.

In operation, the design state database250and the expert database270can be stored on a storage device associated with the computer ofFIG. 10(such as in storage device1024) or on storage devices that are the same as those of storage device1024, except on a remote device1048accessed through the network1044via the network interface1040(such as would be the case when using a cloud-based database solution as mentioned above with reference toFIG. 2). In an embodiment of the invention, the user would have local access to the CAD program200, and remote access (as described below) to the help center switchboard module260. Alternatively, the invention can be implemented in a software-as-a-service through a cloud connection, in which case the user would enter user input data via a GUI230that is provided on a remote device1048, the experts280would have access through their own graphical user interface (not shown), and the remaining portions of the CAD program200and the help center switchboard module260would be resident on the storage device1024of a central (cloud) server1000.

The foregoing has been a detailed description of illustrative embodiments of the invention. Various modifications and additions can be made without departing from the spirit and scope of this invention. For example, in addition to the supplier information database205as described herein, other supplier-related information that in turn originates from their suppliers (such as logistics/carriers) could be included. In addition, while the invention has been described with reference to a CAD system, the principles of the invention could be applied to other contexts in which help can be provided by subject matter experts. Features of each of the various embodiments described above may be combined with features of other described embodiments as appropriate in order to provide a multiplicity of feature combinations in associated new embodiments. Furthermore, while the foregoing describes a number of separate embodiments, what has been described herein is merely illustrative of the application of the principles of the present invention. Additionally, although particular methods herein may be illustrated and/or described as being performed in a specific order, the ordering is highly variable within ordinary skill to achieve methods, systems, and software according to the present disclosure. Accordingly, this description is meant to be taken only by way of example, and not to otherwise limit the scope of this invention.