U.S. patent application number 14/054696 was filed with the patent office on 2014-02-13 for computer hardware and software diagnostic and report system incorporating an expert system and agents.
This patent application is currently assigned to MaxSP Corporation. The applicant listed for this patent is MaxSP Corporation. Invention is credited to Robert O. Keith, JR..
Application Number | 20140047277 14/054696 |
Document ID | / |
Family ID | 48903799 |
Filed Date | 2014-02-13 |
United States Patent
Application |
20140047277 |
Kind Code |
A1 |
Keith, JR.; Robert O. |
February 13, 2014 |
COMPUTER HARDWARE AND SOFTWARE DIAGNOSTIC AND REPORT SYSTEM
INCORPORATING AN EXPERT SYSTEM AND AGENTS
Abstract
The diagnostic and report system tests computer systems for
defects that are able to cause performance and functional problems.
An agent application is first installed on a user's system. The
agent application then retrieves problem data from the expert
system library pertinent to the user's operating environment. The
agent application tests the user's system for each problem
description within a downloaded data structure from the expert
system library. If a problem is discovered, a script attempts to
remediate the problem and/or notifies the user, describing the
issue. The agent application utilizes discrete programs and/or
scripts to send data to a knowledge base so that the knowledge base
is able to generate new discrete programs and/or scripts using
artificial intelligence which are sent to the expert system
library. With additional discrete programs and/or scripts, the
user's system is better protected.
Inventors: |
Keith, JR.; Robert O.;
(Modesto, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
MaxSP Corporation |
Sunnyvale |
CA |
US |
|
|
Assignee: |
MaxSP Corporation
Sunnyvale
CA
|
Family ID: |
48903799 |
Appl. No.: |
14/054696 |
Filed: |
October 15, 2013 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12074986 |
Mar 5, 2008 |
8589323 |
|
|
14054696 |
|
|
|
|
11440563 |
May 24, 2006 |
8234238 |
|
|
12074986 |
|
|
|
|
11368214 |
Mar 2, 2006 |
7512584 |
|
|
11440563 |
|
|
|
|
60658970 |
Mar 4, 2005 |
|
|
|
Current U.S.
Class: |
714/37 |
Current CPC
Class: |
G06F 11/26 20130101;
G06N 5/04 20130101 |
Class at
Publication: |
714/37 |
International
Class: |
G06F 11/26 20060101
G06F011/26 |
Claims
1. A system for monitoring a computing device comprising: a. a
server device in communication with the computing device, the
server device including a memory device comprising an expert system
library; b. a plurality of programs for interacting with the
computing device to gather information, wherein the plurality of
programs are stored within the expert system library, wherein the
plurality of programs run in the background of the computing
device; c. a knowledge base element coupled to the plurality of
programs for receiving the information and generating a new program
for interacting with the computing device, wherein the new program
is configured for testing the computing device for a configuration
defect and for providing a remediation solution to one or more
discovered configuration defects; and d. a feedback mechanism for
sending feedback to the knowledge base element, wherein the
knowledge base element expands the expert system library.
2. The system as claimed in claim 1 wherein interacting with the
computing device further comprises: a. determining a setup of the
computing device; b. gathering information related to configuration
of the computing device; and c. analyzing the computing device.
3. The system as claimed in claim 1 wherein interacting with the
computing device further comprises resolving an issue within the
computing device.
4. (canceled)
5. (canceled)
6. (canceled)
7. (canceled)
8. The system as claimed in claim 1 wherein the expert system
library is expanded by one or more of inference processing and
pattern recognition.
9. The system as claimed in claim 1 further comprising a reporting
mechanism to report one or more problems.
10. The system as claimed in claim 1 wherein the plurality of
programs are embedded within an extensible markup language (XML)
structure.
11. The system as claimed in claim 1 wherein the computing device
is selected from a group consisting of a personal computer, an
Apple computer, a thin client, a laptop, a cell phone and a
PDA.
12. The system as claimed in claim 2 wherein gathering information
comprises discovering one or more problems.
13. The system as claimed in claim 1 further comprising a plurality
of scripts for communicating with the plurality of programs.
14. The system as claimed in claim 13 wherein the knowledge base
element is for generating additional scripts for interacting with
the computing device.
15. The system as claimed in claim 1 wherein the new program is
generated using a program model.
16. (canceled)
17. The system as claimed in claim 1 further comprising a sensor
agent for monitoring hardware characteristics and sending
information to the knowledge base element.
18. A system for monitoring a computing device while running in the
background of the computing device comprising: a. a server device
in communication with the computing device, the server device
including a memory device comprising an expert system library; b. a
plurality of programs for i. determining a setup of the computing
device; ii. gathering information related to configuration of the
computing device; and iii. analyzing the computing device for one
or more problems; c. a plurality of scripts coupled to the
plurality of programs for initiating the plurality of programs,
wherein the plurality of programs and the plurality of scripts are
stored within the expert system library; d. a knowledge base
element coupled to the plurality of programs for receiving the
information and generating a new program and a script for
interacting with the computing device, wherein the new program is
configured for testing the computing device for a configuration
defect and for providing a remediation solution to one or more
discovered configuration defects; and e. a feedback mechanism for
sending feedback to the knowledge base element, wherein the
knowledge base element expands the expert system library.
19. (canceled)
20. (canceled)
21. (canceled)
22. The system as claimed in claim 18 wherein the expert system
library is expanded by one or more of inference processing and
pattern recognition.
23. The system as claimed in claim 18 further comprising a
reporting mechanism to report the one or more problems.
24. The system as claimed in claim 18 wherein the plurality of
programs and the plurality of scripts are embedded within an
extensible markup language (XML) structure.
25. The system as claimed in claim 18 wherein the computing device
is selected from a group consisting of a personal computer, an
Apple computer, a thin client, a laptop, a cell phone and a
PDA.
26. The system as claimed in claim 18 wherein the new program and
script are generated using a program model.
27. (canceled)
28. The system as claimed in claim 18 further comprising a sensor
agent monitoring hardware characteristics and sending information
to the knowledge base element.
29-38. (canceled)
39. The system as claimed in claim 1 wherein the configuration
defect comprises a hardware or software configuration problem.
40. The system as claimed in claim 18 wherein the configuration
defect comprises a hardware or software configuration problem.
41. A system for monitoring a computing device comprising: a. a
server device in communication with the computing device, the
server device including a memory device comprising an expert system
library; b. a plurality of programs for interacting with the
computing device to gather information, wherein the plurality of
programs are stored within the expert system library, wherein the
interacting comprises detecting a problem on the computer device
and assigning a priority level to the problem, wherein the
plurality of programs run in the background of the computing
device; c. a knowledge base element coupled to the plurality of
programs for receiving the information and generating a new program
for interacting with the computing device, wherein the new program
is configured for testing the computing device for a configuration
defect and for providing a remediation solution to one or more
discovered configuration defects; and d. a feedback mechanism for
sending feedback to the knowledge base element, wherein the
knowledge base element expands the expert system library.
42. The system of claim 41 wherein the interacting further
comprises assigning a health risk value to the problem based on
future potential harm to the computing device if the problem is not
corrected.
43. The system of claim 41 wherein the new program comprises a
plurality of instructions that define how the new program will
monitor for the configuration defect, resolve the one or more
discovered configuration defects, or both.
44. The system of claim 41 wherein the programs run in the
background of the computing device such that the programs are
executed as a low priority process when one or more high priority
processes are not accessing the resources of the computing device.
Description
RELATED APPLICATION(S)
[0001] This application is a continuation-in-part of co-pending
U.S. patent application Ser. No. 11/440,563, filed on May 24, 2006
and entitled "COMPUTER HARDWARE AND SOFTWARE DIAGNOSTIC AND REPORT
SYSTEM" which is hereby incorporated by reference, and which is a
continuation-in-part of co-pending U.S. patent application Ser. No.
11/368,214, filed on Mar. 2, 2006 and entitled "COMPUTER HARDWARE
AND SOFTWARE DIAGNOSTIC AND REPORT SYSTEM" which is hereby
incorporated by reference, and which claims priority under 35
U.S.C. .sctn.119(e) of the co-pending, co-owned U.S. Provisional
Patent Application Ser. No. 60/658,970, filed Mar. 4, 2005, and
entitled "PRE-INSTALL COMPLIANCE AND CENTRAL PROBLEM DISCOVERY
SYSTEM." The Provisional Patent Application Ser. No. 60/658,970,
filed Mar. 4, 2005, and entitled "PRE-INSTALL COMPLIANCE AND
CENTRAL PROBLEM DISCOVERY SYSTEM" is also hereby incorporated by
reference in its entirety.
[0002] The following co-owned, co-filed, co-pending U.S. patent
application Ser. No. 11/368,212, filed Mar. 2, 2006 and entitled
PRE-INSTALL COMPLIANCE SYSTEM is also incorporated by
reference.
FIELD OF THE INVENTION
[0003] The present invention relates to the field of computer
system maintenance. More specifically, the present invention
relates to the field of testing computer systems for configuration
problems and providing remediation solutions to the discovered
problems.
BACKGROUND OF THE INVENTION
[0004] With the complexity and interoperability of software and
hardware today, it is very difficult to install or remove one
program without having an effect on one or more pre-existing
programs. Microsoft.RTM. Windows.RTM. operating systems as well as
other operating systems have a plethora of components that all must
maintain their integrity, otherwise the operating system becomes
unstable and possibly fails. Furthermore, generally when hardware
is installed, software drivers which allow the hardware to
communicate with the software must be installed as well. If these
drivers are corrupted, the hardware will not function properly.
Additionally, many software programs have components beyond a main
executable file which allow the programs to communicate with the
operating system, and if these components are deleted or modified
incorrectly, the program will no longer function. All of these
components, whether they be part of the operating system, hardware
or other software, must be able to co-exist without harming each
other. Specifically, when the system is modified in some way such
as by installing or removing a piece of hardware or a software
program, the system should do it so that everything still functions
correctly. Furthermore, over time, modifications are made to the
system such as updating drivers and installing patches, and these
modifications may adversely affect other components of the system.
Also, if a user neglects to update his system, he could leave the
system open to attacks by viruses or other intruders. So either by
action or inaction, a user's system has the potential for issues,
and such issues should be monitored.
[0005] There are many products which monitor a system or attempt to
repair components of the system, but they all have their
shortcomings and do not provide the full package to adequately
ensure a stable system environment.
[0006] Windows.RTM. registry repair programs such as Registry
Mechanism developed by PC Tools.TM. aid a user in cleaning,
repairing and optimizing the Windows.RTM. registry. Registry
Mechanic.TM. uses a detection algorithm to scan a user's registry
and identify missing and invalid references in a user's registry.
Then a list is provided of the registry errors found, so that a
user is able to selectively choose to clean each item or
automatically repair all of them.
[0007] BMC Software and Computer Associates International develop
performance software, but these software packages tend to be host
based software products.
[0008] Other products like security vulnerability scanning
software, spyware/virus scanners and patch management software
assist in maintaining a stable computing environment. Very well
known companies like McAfee and Symantec develop virus scanners to
protect a user's computer from being harmed by viruses. Viruses are
computer programs which have the ability to disrupt and damage a
user's system. The products from these companies are able to scan a
user's system and locate irregular programs that fit certain
definitions stored in a database. Upon detecting a virus, a user is
able to remove the problem and hopefully avoid harm to his computer
system. STEALTHbits Technologies develops a program called
stealthAUDIT for Exchange. The program is an agentless auditing and
conformance management platform that enables users to identify
changes in the system to avoid problems by performing discreet
patch scanning. However, these products are very focused
exclusively on their specific areas of technology such as virus
checking or patch management and do not include an entire package
for maintaining system stability.
[0009] There are significant problems with the aforementioned
options. They are not necessarily end user friendly. They do not
focus on overall user support or computer reliability. They are not
Application Service Provider (ASP) friendly. Furthermore, they lack
other significant features. Hence, a solution is needed to overcome
these issues.
SUMMARY OF THE INVENTION
[0010] The diagnostic and report system tests computer systems for
defects that are able to cause performance and functional problems.
An agent application is first installed on a user's system. The
agent application then retrieves problem data from the expert
system library pertinent to the user's operating environment. The
agent application tests the user's system for each problem
description within a downloaded data structure from the expert
system library. If a problem is discovered, a script attempts to
remediate the problem and/or notifies the user, describing the
issue. The agent application utilizes discrete programs and/or
scripts to send data to a knowledge base so that the knowledge base
is able to generate new discrete programs and/or scripts using
artificial intelligence which are sent to the expert system
library. With additional discrete programs and/or scripts, the
user's system is better protected.
[0011] In one aspect, a system for monitoring a computing device
comprises a plurality of programs for interacting with the
computing device to gather information and a knowledge base coupled
to the plurality of programs for receiving the information and
generating a new program for interacting with the computing device.
Interacting with the computing device further comprises determining
a setup of the computing device, gathering information related to
configuration of the computing device and analyzing the computing
device. Interacting with the computing device further comprises
resolving an issue within the computing device. The plurality of
programs run in the background of the computing device. The system
further comprises a feedback mechanism for sending feedback to the
knowledge base. The plurality of programs are stored within an
expert system library. The knowledge base expands the expert system
library. In some embodiments, the expert system library is expanded
by one or more of inference processing and pattern recognition. The
system further comprises a reporting mechanism to report one or
more problems. The plurality of programs are embedded within an
extensible markup language (XML) structure. The computing device is
selected from the group consisting of a/an personal computer, Apple
computer, thin client, laptop, cell phone and PDA. Gathering
information includes discovering one or more problems. The system
further comprises a plurality of scripts for communicating with the
plurality of programs. The knowledge base is for generating
additional scripts for interacting with the computing device. In
some embodiments, the new program is generated using a program
model. In some embodiments, the new program is generated using a
template. In some embodiments, a sensor agent monitors hardware
characteristics and sends information to the knowledge base.
[0012] In another aspect, a system for monitoring a computing
device while running in the background of the computing device
comprises a plurality of programs for determining a setup of the
computing device, gathering information related to configuration of
the computing device and analyzing the computing device for one or
more problems, a plurality of scripts coupled to the plurality of
programs for initiating the plurality of programs and a knowledge
base coupled to the plurality of programs for receiving the
information and generating a new program and a script for
interacting with the computing device. The plurality of programs
and the plurality of scripts are stored within an expert system
library. The system further comprises a feedback mechanism for
sending feedback to the knowledge base. The knowledge base expands
the expert system library. In some embodiments, the expert system
library is expanded by one or more of inference processing and
pattern recognition. The system further comprises a reporting
mechanism to report the one or more problems. The plurality of
programs and the plurality of scripts are embedded within an
extensible markup language (XML) structure. The computing device is
selected from the group consisting of a/an personal computer, Apple
computer, thin client, laptop, cell phone and PDA. In some
embodiments, the new program and script are generated using a
program model. In some embodiments, the new program and script are
generated using a template. In some embodiments, a sensor agent
monitors hardware characteristics and sends information to the
knowledge base.
[0013] In yet another aspect, a method of providing a stable
computing device comprises collecting data, analyzing the data,
generating a new program from the analyzed data, transferring the
new program and utilizing the new program on the computing device.
The data is collected by an existing program. Collecting data
includes transferring the data to a knowledge base. Analyzing the
data occurs within a knowledge base. Generating a new program from
the analyzed data includes using a template to generate the new
program. The new program contains characteristics based on the
analyzed data. The new program is transferred to an expert system
library. Utilizing the new program is selected from the group
consisting of monitoring the computer system and repairing an issue
within the computer system. An agent program utilizes the new
program. The computing device is selected from the group consisting
of a personal computer, an Apple computer, a thin client, a laptop,
a cell phone and a PDA.
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] FIG. 1 illustrates a block diagram representation of the
main components of an embodiment of the diagnostic and report
system.
[0015] FIG. 2 illustrates a flowchart of the agent application
determining if there are any problems.
[0016] FIG. 3 illustrates an example data structure for the expert
system library.
[0017] FIG. 4 illustrates an example XML coded version of a data
structure for the expert system library.
[0018] FIG. 5 illustrates a network implementing an embodiment of
the diagnostic and report system.
[0019] FIG. 6 illustrates a flowchart of utilizing the diagnostic
and report system to maintain a stable computing device.
[0020] FIG. 7 illustrates a block diagram representation of the
main components of an embodiment of the diagnostic and report
system.
[0021] FIG. 8 illustrates a flowchart of a process of utilizing the
diagnostic and report system to provide an increasingly secure and
stable computing environment.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
[0022] The diagnostic and report system is a system and method for
using an expert system library of computer configuration problems
to test individual computer systems for the existence of problems
and then providing remediation solutions for each discovered
problem. The system enables maintenance procedures and requirements
for system competence to be centralized and distributed, providing
an end user a solution to scan his system for configuration
problems and to manually or automatically resolve these problems.
Configuration problems include, but are not limited to, incomplete
software package install and de-installs, incorrect Windows.RTM.
registry values, software release and patch release issues,
software driver problems, network configuration and connectivity,
performance issues and many other problems.
[0023] The diagnostic and report system provides the ability to
build a central expert system library repository with constructive
input from multiple sources. The system is also able to support an
application service provider (ASP) infrastructure and business
enterprise applications. Furthermore, software applications have
the ability to run disconnected from the central server and
network. The system is scaleable so that it has the ability to
support extremely large ASP user bases over disparate network
topologies. The system supports subscription licenses, so that when
the subscription is void or expired, the desktop software will be
disabled and inactive. The system also supports disparate end-user
hardware including Personal Computers (PCs), Apple PC's, thin
clients, laptops, cell phones, PDA's and other mobile devices. The
diagnostic and report system utilizes a plug-in model so that each
entry in the expert system library is discrete, allowing multiple
authors to add to the central repository independently.
[0024] The diagnostic and report system generally comprises four
main components: a central compatibility expert system library, a
host resident client interrogation agent, problem reporting and
remediation mechanisms and a user support feedback mechanism.
[0025] Any of the many software and hardware configuration problems
is able to be described discretely. Each problem, when stored in a
format usable by software resident on an end-user's system, is able
to be processed serially, meaning one problem at a time. In an
alternative embodiment, problems are processed in parallel, meaning
at the same time. The central expert system library stores the
problem and resolution information. The information is able to be
retrieved and communicated to end-user clients via a problem
language and protocol. The information stored includes shared
software module names and revisions, hardware driver prerequisites,
hardware requirements, operating system revision levels and other
operating environment prerequisites. The expert system library also
contains software and hardware exceptions.
[0026] A plurality of discrete programs are utilized to address
these problems. As knowledge grows, the library grows and thousands
of discrete programs are developed. For example, initially the
system knows how to problem solve internal issues related to CPUs,
motherboards, hard disk drives, RAM, video cards, power supplies
and software. However, as information is discovered related to
other components, the expert system library is able to grow and
trouble shoot those areas as well. These other components include
for example, networking components such as network cards, cables
and routers and peripheral devices such as printers, scanners and
digital cameras. The expert system is also expanded by various
technologies, including but not limited to, inference processing
and pattern recognition. Furthermore, new products are continuously
developed and with each new product, new issues arise, hence it is
crucial to have the ability to continuously increase the expert
system library's knowledge. In some embodiments, data is collected
utilizing different types of available agents including sensor
agents, which monitor things like network traffic and temperature
and performance of hardware. This collected data is also sent to
the expert system library.
[0027] The discrete programs execute desired tasks and are able to
remediate certain issues. For example, the function
ethernet_counter determines if an ethernet cable is functioning
correctly. If ethernet_counter returns values that increase over
time, then the cable is likely not performing well and should be
replaced. For such an issue, a user must manually replace the
cable. However, if there is a software problem such as a conflict
between device drivers, a program is able to automatically update
the drivers to avoid the conflict if that is the proper remedy.
[0028] Agent software installed on an end user's system is resident
and thereby able to interrogate the user's system for hardware and
software configurations. The information obtained by the
interrogation is used in conjunction with the expert system library
to ascertain whether there are problems on an end-user's system.
The expert system library describes individual prerequisites such
as software versions, registry values and hardware and software
configurations which are invalid or problematic. The agent
application then uses the information to interrogate the client
system for the existence of these problems. The discrete programs
run in the background while monitoring the computing system. When
an issue arises, the programs are executed in a specified order to
analyze a particular aspect of the computing device. Generally, a
program first determines the setup, then gathers system information
such as licenses, software running and hardware configurations and
then finally the system is analyzed. Analysis includes determining
any problems and addressing them as deemed appropriate using
scripts and programs. Furthermore, issues are assigned a severity
or a priority so that high priority items are dealt with quickly.
Additionally, there are health risks assigned to ensure the most
important issues are corrected before any harm is done. For
example, if there is a problem with a user's hard drive, that would
be considered a high priority and also a high health risk because
data might be written incorrectly resulting in data loss. However,
if there is a problem with an ethernet cable dropping some packets,
the priority is still high because a user desires a fast connection
to the network, but the health risk is low since the only harm is
that the user's access to the network is slower.
[0029] The agent software has many different functions, allowing it
to accomplish a variety of tasks. The agent software is able to
report issues that are found, making it a reporting engine, an
inventory system, a security system and a performance manager. The
agent software uses a language engine for performing the analysis.
Although very complex tasks are being performed at times, the
resultant script language is simplified for easy modification and
interoperability. An interface environment uses the built in
functions of the software to simplify what the user views. The
interface environment, also referred to as the data entry screen,
prompts the user for information. Simple and easily understood
scripts are coupled to the interface environment. Then, beneath the
scripting language is a more complex language which performs the
underlying tasks necessary to remedy whatever situation exists. The
scripts are generally less complex than the underlying programs to
provide simplicity of interaction with the user interface. The
underlying programs are necessary to interact with the system's
hardware and software, thus need to have the specific abilities to
accomplish such tasks. The scripts take the information from the
programs and return a condition status. In some embodiments, the
condition status is a binary-type value such as "true" or "false,"
"1" or "0" or a similar value. In other embodiments, the condition
status is a string, ASCII value or other value representing
status.
[0030] For example, if a user is having trouble viewing a web page
on the Internet, the diagnostic and report system will analyze the
situation. There are many possible causes of this problem such as
the web site being temporarily down or the user's internet
connection not functioning properly. The diagnostic and report
system attempts to determine the root cause of the problem. A
script initially asks if the host is available. The script uses the
well known ping program or a program similar to the ping program to
contact the host. Although the ping program returns data including
the number of packets sent, received, lost, in addition to the
round-trip time for the packets, that information is able to be
consolidated into a binary form of an answer by the script. In
particular, if the packets lost is equal to the packets sent, then
the host is not available. So a script would ask something such as
"Is the host available?" There are two possible responses from the
script, "yes" the host is available or "no" it is not. As such, the
script returns a much simpler and user-friendly response. Depending
on the response, it is determined what else is required to pinpoint
the problem. As shown, the script is simple in that it contacts
specific programs to analyze the system and based on those
responses, returns a binary-type answer.
[0031] The expert system library is compartmentalized, so that each
component is able to handle a specific task. An example of the
diagnostic and report system in use is in the area of network
analysis. There are a plethora of aspects of networking that could
contribute to a user not being able to access the network.
Furthermore, to check each aspect is a burdensome and slow process.
However, with the diagnostic and report system, the specific tasks
are already designated and are then checked in a specified order.
The broadest issues are addressed first and gradually the focus is
narrowed to the specific component that is causing the problem. For
example, if there is a problem connecting to the network, the
following set of queries are used to determine why there is the
problem. Is there a network device? If there is a network device,
is it configured properly? Is the net device driver installed? Is
the IP stack active? Is the IP stack DNS configured? Is the IP DNS
active? Is there a default gateway? Is the default gateway
responding? Is the first node after the gateway responding? Is the
Internet accessible? Is the connection dropping packets? Are the
tuning parameters set on the IP stack? Are the parameters set on
the NetBios stack? Thus, based on the results of these queries, the
diagnostic and report system is able to identify where the problem
is stemming from. As described above, the process of finding the
answers to these questions is tedious and generally too complex for
an average user, hence implementing the diagnostic and report
system not only improves efficiency and provides security, but it
also enables those who are not computer savvy to accomplish tasks
they otherwise would not be able to.
[0032] Contained within the expert system library is information
describing the resolution of problems. The descriptions range from
simple to complex and are able to include a variety of data such as
user instructions on problem resolution or scripts which
automatically resolve the end-user configuration problem.
Resolutions include, but are not limited to, removal/cleanup of
software de-installations, removal of invalid configuration
information, installation of patches and others.
[0033] The diagnostic and report system when used by a larger
support organization is able to be an extremely valuable system to
end users. Each time a customer reports a problem and the support
organization corrects the problem within the software deployment,
the correction procedure or script is added to the central expert
system library. The feedback mechanism will continuously expand the
expert system library and ensure each new software system is tested
for a wider and more comprehensive group of problems and has
solutions to resolve such problems. The expert system is also
expanded by various technologies, including but not limited to,
inference processing and pattern recognition. Once the expert
system library has stored every possible problem, all customers of
the support organization are able to potentially have their systems
run securely with high stability.
[0034] FIG. 1 illustrates a block diagram representation of the
main components of an embodiment of the diagnostic and report
system 100. In an embodiment of the diagnostic and report system,
an expert system library 102 stores information about software
packages and hardware and software configurations 114 required to
support the software packages. An agent application 104 is located
on one or more user systems. The agent application 104 interrogates
the user system 106 for hardware and application configurations.
Using the information obtained from the interrogations, the agent
application 104 is able to determine if there are any problems. If
there are any problems, then the agent application 104 reports the
problem to the end-user and/or initiates a remediation script to
repair the problem. Furthermore, the agent application 104 is able
to receive automatic upgrades 112 so that it is able to continue
protecting against improper installations and also automatically
upgrade the user system 106. A feedback mechanism 116 sends any
newly discovered problem information to the expert system library
102, so that the expert system library 102 is able to incorporate
such a problem and will be able to detect and resolve it in the
future. The expert system library 102 is able to continuously grow
so that it is able to detect more and more issues as time passes.
All of the components of the embodiment of the diagnostic and
report system function to assist a user in detecting conditions
that will potentially corrupt the user system 106 and then grow the
expert system library 102 when new issues are discovered, so that
they will be detected in other systems in the future.
[0035] FIG. 2 illustrates a flowchart of the agent application
determining whether there is a problem that needs to be remedied
200. At the step 202, the agent application is installed on the
end-user's system. The agent application is able to come
pre-installed on a user's system or a user is able to download the
agent application as needed. At the step 204, the agent application
interrogates the end-user system for the basic environment. At the
step 206, the agent application retrieves problem data from the
expert system library pertinent to the end-user's operating
environment. For example, if the operating environment is
Windows.RTM. NT, then problem data related to Windows.RTM. NT is
retrieved. At the step 208, the agent application tests the
end-user's system for each problem description within the
downloaded data structure. At the step 210, the agent application
determines if any of the problems are detected. If the end-user
system does have problems, then the agent application either
reports the problems to the end-user at the step 214 and/or
initiates the remediation script to repair the problem at the step
212.
[0036] There are a wide range of problem conditions that the
end-user system is able to detect in the step 210. The following
are examples of problem conditions tested by the agent application;
however, they are not meant to limit the invention in any way.
Software is tested for problems such as problematic software patch
revisions, incompatible software packages, problematic software
installations and problematic software package un/de-installations.
The operating system is also checked, such as Windows.RTM. registry
corruption and existing performance issues. Environmental issues
are investigated such as low disk space or hardware errors. Network
issues are checked such as interface errors, DNS or IP
configuration problematic, IP routing failure and ISP network
performance. Other important elements of a secure system are
investigated such as detecting viruses, driver problems and serious
security vulnerabilities. Any issues that could create system
instability are also able to be investigated.
[0037] FIG. 3 illustrates an example data structure for the expert
system library. The expert system library transfers data structures
to the agent so that the client is able to perform checks to
determine if there are any problems. The preferred format for the
data structures is an embedded language with XML wrapping, although
any format is acceptable. The example data structure 300 has the
following item definitions within it. An ID item 302 stores the
test record number. A class item 304 holds the type of test to be
performed, such as performance, software patch level, security,
virus or software inconsistency. A platform item 306 stores the
operating system environment information, for example Windows NT,
ME or XP. A product item 308 contains the affected application's
information. The product item 308 is a specific component that
needs to be investigated such as the Windows Shell or a specified
application. A description item 310 stores a detailed description
of the problem described. A criteria item 312 holds the subroutine
used to identify test criteria. Within the criteria item 312, a
test_ref subroutine 313 is used to identify test criteria. Although
only one test_ref subroutine 313 is shown in FIG. 3, the criteria
item 312 is able to hold a number of test_ref subroutines 313
depending on what test criteria is needed. A remediation
description item 314 contains instructions on how to repair the
problem described, and a remediation script item 316 stores one or
more scripts to automatically remediate the problem described.
[0038] FIG. 4 illustrates an example XML coded version of a data
structure of the expert system library. In the example, the ID item
is "5." The platform item is "Windows." Furthermore, the category
is "hardware" and the family is "Hardware Management." Hence, the
agent application knows that it needs to investigate issues
concerning hardware management of Windows.RTM.. Additional items
are able to be included in the data structure as well such as a
dependency, confidence and health index. The date_created and
date_modified items are useful in determining when the data
structure was created or modified which helps in the process of
problem solving. The description item describes the problem, which
in this example, is that the "ethernet card is reporting errors."
Diagnostic script language is included to determine the status of
the hardware or software. Remediation information is used to help
resolve the problem, such as a suggestion to "replace your ethernet
cable." If proper, a remediation script is included to
automatically correct the problem. As described above, in the
example, the data structure comprises the items required to perform
system checks to aid in determining potential conflicts on a user's
system. The aforementioned example is not meant to limit the
diagnostic and report system in any way.
[0039] The agent application is host-based software, pre-installed
on an end user system. The application is an interpreter for the
data structure downloaded from the central expert system library
and a library of functions. The functions primarily access
information about a user's system or remediate a user's system. For
example, one function is able to query an operating system to
determine if it has a certain patch installed, and another function
is able to install the patch. The agent application is also
responsible for reporting problems found. Other functions of the
agent application include, but are not limited to, accessing
hardware error counts, reading/writing the Windows.RTM. registry,
accessing software modules and version/patch levels, moving,
copying and removing files from the file system, reading operating
system environment such as memory and disk space, updating virtual
memory configurations and many other functions to maintain a stable
environment.
[0040] The expert system library utilizes a plug-in architecture.
Each expert system library record has functionality of a discrete
program such that each entry is able to be added to the expert
system library without affecting the other expert system library
entries and updated or removed from the expert system library with
no effect on the other problem records. Such a plug-in architecture
allows multiple authors to maintain different problem records
independently of simultaneous work being done on other problem
records.
[0041] The expert system library data structure includes procedural
language elements including, but not limited to, boolean logic,
string manipulation, flow control verbs and simple match functions.
The language provides a system interpretation tightly integrated
with the operating system. The language is used to create powerful
and flexible mechanisms to test for the existence of problem
conditions. For example the following language function tests the
Windows.RTM. registry for the existence of a value:
TABLE-US-00001 str regvalue str regkey regkey =
"\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Hotfix\Q3-
1 2895" regvalue = F$GETREG(regkey) if (regvalue !=
"<error>") then return 9 //signal hotfix not installed else
return 0 //signal hotfix installed endif
[0042] The example language checks if the HotFix (Patch) is
installed by analyzing the value of the Windows.RTM. registry value
at Q312895. If the value is not an error, then the Microsoft.RTM.
patch is installed. Further, the routine is able to check for one
or more code modules which are supposed to be updated by this
patch. If the code module version is less than the correct value,
then the registry has the patch recorded as installed, but the
actual code module could be below the correct value, which would
mean the patch was installed but the installation failed.
[0043] The language interpreter, part of the agent application,
contains a set of functions which are called the Expert System
Library Data Language. The functions are specific to operating
environments, but operate the same for the Expert System Library
Data Language. The operating environments where the functions
reside could include Microsoft.RTM. Windows.RTM., Microsoft.RTM.
CE, Unix, Linux, handheld operating systems, cell phone operating
systems as well as others. The function portability allows the
diagnostic and report system to be implemented across many
different platforms.
[0044] Since the functions are created in the specific operating
system environment, the functions are able to reach into the
operating system environments to retrieve specific and detailed
data. Examples of such functions include, but are not limited to:
Read Windows Registry Value, Check Device Error Counter Values,
Check File System Organizations and Structures, Check File Modules
and File Version Values, Check for Installation of Specific
Applications, Read Environmental Values and Counters, Read Windows
Event Log Entries as well as other functions to retrieve specific
data.
[0045] FIG. 5 illustrates a network implementing an embodiment of
the diagnostic and report system. The diagnostic and report system
is implemented over a network of devices 500. The expert system
library is stored on a server 502 that is coupled to the Internet
504 in an embodiment. In alternative embodiments, the server 502 is
coupled to a company intranet or other types of networks such as a
Local Area Network (LAN), Wide Area Network (WAN) or a Metropolitan
Area Network (MAN). In yet other alternative embodiments, the
expert system library is stored on one or more servers.
Furthermore, the coupling between the server 502 and the Internet
504 is able to be via networking cables or wireless means. The
Internet 504 is also coupled to a variety of computing devices that
have the agent application stored on them. The computing devices
include, but are not limited to, a personal computer 506, a PDA
508, a cell phone 510, a laptop computer 512, a thin client 514 or
an Apple personal computer 516. The agent application retrieves
problem data from the expert system library on the server 502.
Then, the agent application on the computing devices checks to
determine if there are any problems in the system. If any problems
are discovered, the agent application alerts the user and/or
attempts to remediate the issue using a script. If an unknown
problem occurs without being detected, the reporting mechanism
sends feedback to the server 502, so that the expert system library
is able to learn of the issue and is able to detect such a conflict
in the future. Thus, users of the system are able to feel
comfortable they are working on a safe and secure environment and
when there are undiscovered issues, with a large network of people,
these undiscovered issues will be noticed and recorded so that
other users' systems are able to resolve such issues.
[0046] FIG. 6 illustrates a flowchart of utilizing the diagnostic
and report system to maintain a stable computing device. In the
step 600, a setup of the computing device is determined by the
plurality of discrete programs. Setup information includes
operating system information and hardware of the computing device.
Then the discrete programs gather information related to
configuration of the computing device, such as software
installations, hardware connections and other configuration
information in the step 602. Using the gathered information, the
discrete programs are then able to analyze the computing device in
the step 604. When analyzing the computing device the discrete
programs monitor the system to make sure proper patches are
installed, no software conflicts exist, the environment is stable
and other necessary components are reviewed. If a problem is
detected in the step 606, appropriate scripts are initiated to
remediate the problem in the step 608. After the problem is
remediated or if there is no problem, in some embodiments, the
analysis performed by the discrete programs is reported on the
computing device in the step 610. The reporting allows a user to
review the status of the computing device and if any problems were
discovered and how they were remediated. Also, in some embodiments,
if a problem is discovered but is not able to be remediated, then
feedback is sent to an expert system library in the step 612, so
that in the future, such issues are known and the appropriate
action is able to be taken if these issues occur again. The process
continuously repeats in the background of the computing device, so
that the system is able to remain stable. It should be understood
that only those components that are needed are utilized again. For
example, if there is no modification to the computing device setup,
that information is not reacquired nor is the configuration
information if the configuration has not changed. Thus, the
diagnostic and report system is able to monitor the system
thoroughly yet efficiently.
[0047] In another embodiment, the diagnostic and report system also
includes capabilities of autonomous agent technology. Autonomous
agent technology utilizes artificial intelligence techniques to
determine actions to take and achieve desired results. As described
above, the diagnostic and report system includes discrete programs
and scripts to perform tasks. The discrete programs and scripts are
able to make decisions on their own utilizing logic and also learn
without user intervention. Furthermore, the discrete programs and
scripts are able to work together with other discrete programs and
scripts and learn from each other. The diagnostic and report system
also includes a knowledge base which is able to learn and grow
based on information obtained from the discrete programs and
scripts. The knowledge base is able to generate new discrete
programs and scripts based on what the discrete programs and
scripts encounter and learn. For example, if a discrete program or
a script encounters an issue that is unresolvable based on the
existing discrete programs and scripts available in the expert
system library, a new discrete program or script is able to be
automatically developed by the knowledge base according to the
issue confronted and the other existing discrete programs and
scripts.
[0048] For example, a computer repeatedly shuts down, and the
discrete programs and scripts determine that the video card is the
cause, but cannot determine the specific reason because the exact
issue is not included in a discrete program or script yet. The
knowledge base is able to generate a new discrete program and/or a
script based on known discrete programs and scripts, such as a
discrete program for checking the temperature of a CPU. In this
example, the reason for the computer shutting down was that the
processor on the video card kept overheating. By utilizing
knowledge of the discrete programs for the CPU and the data
acquired for the system, a discrete program and/or script is able
to be automatically developed by the knowledge base to test the
temperature of the processor on the video card. For instance, the
fact that the computer shuts down indicates a severe problem;
therefore, the knowledge base is able to use that information to
determine what type of discrete program and/or script to generate.
Since this is somewhat of a trial and error process, because there
is no guarantee that the discrete program and/script generated will
solve the issues, additional discrete programs and/or scripts may
also be generated. However, these new discrete programs and/or
scripts will also be available in the future, in case there is
another issue that would not have been able to be detected.
[0049] Specifically, as the discrete programs are running, they
feed back information to the knowledge base which is able to use
the information gathered to determine if additional discrete
programs and/or scripts are to be developed. After performing
analysis on the information, new discrete programs and/or scripts
are generated by the knowledge base based off of standard program
or agent models or templates. Once the new discrete programs and/or
scripts are generated, they are sent to the expert system library
for later use. This allows the library to grow and resolve more
issues. The discrete programs and/or scripts work together, in
conjunction with the knowledge base to develop and learn.
Furthermore, the knowledge base continuously grows as data is
collected so that additional discrete programs and/or scripts are
able to be generated. An Integrated Development Environment (IDE)
allows manual development of discrete programs and/or scripts as
well.
[0050] Policies are also able to be generated where each policy is
a small database with a set of rules. For example, for systems
running Oracle, if there are any intrusions then the intrusions are
shut down immediately. Policies are able to be incorporated in the
agent software and enforced using the discrete programs and
scripts.
[0051] FIG. 7 illustrates a block diagram representation of the
main components of an embodiment of the diagnostic and report
system 700. An expert system library 102 stores information about
software packages and hardware and software configurations 114
required to support the software packages. An agent application 104
with access to discrete programs and scripts is located on one or
more user systems or servers. The agent application 104
interrogates the user system 106 for hardware and application
configurations using the discrete programs and scripts. Using the
information obtained from the interrogations, the agent application
104 is able to determine if there are any problems. If there are
any problems, then the agent application 104 reports the problem to
the end-user and/or initiates a remediation script to repair the
problem. Furthermore, the agent application 104 is able to receive
automatic upgrades 112 so that it is able to continue protecting
against improper installations and also automatically upgrade the
user system 106. A feedback mechanism 116 sends any newly
discovered problem information to a knowledge base 118. Any other
useful information is also sent to the knowledge base 118 via the
feedback mechanism 116. The knowledge base 118 is able to learn and
grow based on information received from the discrete programs via
the feedback mechanism 116. In some embodiments, the discrete
programs and scripts are able to communicate with the knowledge
base 118 without the feedback mechanism 116. The knowledge base 118
is able to generate new discrete programs and scripts based on what
the discrete programs and scripts encounter and learn. The
knowledge base 118 contains models, agents, templates and any other
mechanisms that enable the knowledge base 118 to be artificially
intelligent such that it is able to develop new discrete programs
and scripts. The knowledge base 118 then sends the new discrete
programs and scripts to the expert system library 102 to be used to
detect and resolve new issues in the future. The expert system
library 102 is able to continuously grow so that it is able to
detect more and more issues as time passes.
[0052] FIG. 8 illustrates a flowchart of a process of utilizing the
diagnostic and report system to provide an increasingly secure and
stable computing environment. In the step 800, data is collected.
Preferably, the data is collected by discrete programs and/or
scripts which are running within a system such as a user's
computer, a server or a network. The process of collecting the data
includes, if necessary, transferring the data to a knowledge base.
In the step 802, the knowledge base analyzes the data. The
knowledge base analyzes the data to determine if additional
discrete programs and/or scripts should be generated and what
capabilities the discrete programs and/or scripts should include.
In the step 804, a new discrete program and/or script is generated
from the analyzed data. The new discrete program and/or script
contains characteristics based on the analyzed data. Specifically,
the characteristics are those to monitor and/or resolve a specific
issue. Furthermore, the new discrete program and/or script is
generated using models, agents, templates and other mechanisms. In
the step 806, the new discrete program and/or script is
transferred. Preferably, the new discrete program and/or script is
transferred to an expert system library. From the expert system
library, the new discrete program and/or script is able to be
utilized as needed, in the step 808. Agent software uses the
additional discrete programs and/or scripts stored within the
expert system library that are generated by the knowledge base. As
a system utilizes more and more discrete programs and scripts, the
system's stability should increase.
[0053] The discrete programs/scripts and additional discrete
programs/scripts which are developed utilizing autonomous agent
technology are comparable to antibodies in a human. If a human has
a set of antibodies for disease A, then if disease A is introduced
into the body, the antibodies are able to rid the body of that
disease. However, if disease B is introduced, the body must adapt
and develop new antibodies to remove disease B. The more antibodies
the body has, the more diseases can be removed. Similarly, if a
computing system has a set of discrete programs and/or scripts to
handle issue A, then if that issue arises, it is taken care of.
However, issue B requires the computing system to adapt to remedy
the situation. Adaptation includes utilizing discrete programs
and/or scripts that relate to the issue to generate a new discrete
program and/or script which is specifically able to handle issue B.
Additionally, if one discrete program and/or script is not capable
of resolving an issue, possibly several discrete programs and/or
scripts are capable, and the issue is able to be resolved in that
manner. Furthermore, as more and more discrete programs and scripts
are generated, more and more issues will be able to be
resolved.
[0054] In some embodiments, both discrete programs and scripts are
stored within the expert system library. In some embodiments, only
discrete programs are stored within the expert system library, and
in some embodiments, only script are stored within the expert
system library.
[0055] The diagnostic and report system supports subscription
licenses, so that when the subscription is void or expired, the
desktop software will be disabled and inactive. With respect to
subscriptions, the diagnostic and report system has interfaces for
billing support.
[0056] An additional feature of the diagnostic and report system
includes offline operation. The software has the ability to run
disconnected form the central server and network. The drawback with
offline operation is that a user must install some if not all of
the expert system library, so that it is able to be utilized
locally. Furthermore, if an issue arises, the feedback mechanism is
not able to communicate with the expert system library, thus the
expert system library will be limited in its growth
capabilities.
[0057] To utilize the diagnostic and report system, an end user
computer has the agent application pre-installed. In an alternative
embodiment, a user has to install the agent application after
either downloading it or via CD. Once the agent application exists
on the user's computer, it interrogates the user system for the
basic environment. The agent application then retrieves problem
data from the expert system library pertinent to the user's
operating environment. The agent application tests the user's
system for each problem description within the downloaded data
structure from the expert system library. If a problem is
discovered, then a script will attempt to remediate the problem
and/or a notification will be sent to the user describing the issue
such as "patch X is missing, go to www.findpatch.com to download
and install the patch." If a problem unknown to the expert system
library arises, a feedback mechanism sends information to a
knowledge base which is able to utilize artificial intelligence to
generate a new discrete program and/or script to resolve the
problem. The new discrete program and/or script is transferred to
the expert system library and is then utilized on the computing
device. The new discrete program and/or script is generated using
models, agents, templates and other mechanisms. In the preferred
embodiment, the feedback is automatically sent. Additionally, other
system information is sent to the knowledge base to be used to
preemptively generate new discrete programs. The new discrete
programs and/or scripts are then utilized by the expert system
library to increase the total knowledge. Thus, the system is better
protected. Furthermore, when another user with a similar or the
same setup is tested, the agent application using the discrete
programs and/or scripts will recognize the issue and will take the
appropriate actions to handle it. In time, the number of problems
able to be detected and resolved will increase, thus creating a
more secure and stable environment.
[0058] In operation, the diagnostic and report system assists users
in detecting potential problems and conflicts that a typical user
is unaware of. Other programs attempt to detect specific problems,
but they are insufficient to ensure an overall stable environment.
The diagnostic and report system not only checks for software
conflicts; it also checks for conflicts within the operating system
for hardware conflicts as well. When a conflict or problem does
arise, the diagnostic and report system utilizes scripts to attempt
to resolve the problem and further reports these conflicts to the
user. Furthermore, the agent application which monitors a user's
computer is coupled to a feedback mechanism which is able to send
data to a knowledge base which generates new discrete programs
and/or scripts for resolving issues and then transfers the programs
to the expert system library which is able to learn and expand to
handle new potential conflicts. Since the expert system library is
continuously expanding with new knowledge, once a new problem is
discovered, the agent application is able to aid future users to
resolve the problem. The expert system is also expanded by various
technologies, including but not limited to, inference processing
and pattern recognition. Ultimately, the diagnostic and report
system could potentially continue to gain knowledge to the point
where most, if not all, conflicts and problems have been discovered
and will be resolvable before any detriment comes to the user's
system.
[0059] Within the present application, software includes programs,
applications, scripts, system software, middleware in addition to
any other generally known meaning of software.
[0060] The present invention has been described in terms of
specific embodiments incorporating details to facilitate the
understanding of principles of construction and operation of the
invention. Such reference herein to specific embodiments and
details thereof is not intended to limit the scope of the claims
appended hereto. It will be readily apparent to one skilled in the
art that other various modifications may be made in the embodiment
chosen for illustration without departing from the spirit and scope
of the invention as defined by the claims.
* * * * *
References