Method and system for administering personal computer health by registering multiple service providers and enforcing mutual exclusion rules

A personal computer health administration framework is disclosed that includes a set of intercommunicating components. The system includes a provider subsystem that provides services relating to personal computer health status. The services include acquiring health status information relating to the operation of the personal computer. The system also includes a health engine subsystem that receives and processes the health status information acquired by the provider subsystem. The health engine subsystem thereafter renders health status notifications. A client user interface subsystem, consumes the notifications of the health engine subsystem and reports personal computer health status information to users in accordance with the health status notifications.

FIELD OF THE INVENTION

This invention generally relates to the area of computer systems. More particularly, the present invention concerns computer system health administration, and in particular, methods and systems for monitoring a combination of system diagnostic and configuration information and rendering both health notifications and corrective actions to restore a computer system to good health status.

BACKGROUND OF THE INVENTION

Personal computer (PC) health includes a variety of features that gauge the reliability and safety of computer system resources including data, programs, and hardware. Examples of PC health features include security, privacy, virus protection, backup of programs and data, etc. Each of these features is typically administered, if at all, by a different PC health status provider. Thus, maintaining good PC health status requires a high degree of knowledge and attention by users to the various sources of the status information. If either is lacking, then there is a substantial likelihood that the user will be unaware when the computer system's health is poor. As a consequence, the data and programs of many individuals' computer systems are vulnerable to viruses, intrusions on privacy, data loss, etc. In view of the value and sensitivity of data and programs maintained on most users' computers (e.g., digital photo albums, music libraries, computer games, business software, etc.), the potential severity of loss is substantial.

The complexity of personal computer systems and their variety of uses has rendered the task of administering the operational health of such systems beyond the capabilities of the vast majority of users. In order to fully administer the health of a PC, a user must have an awareness of the needs of the PC with regard to a number of features/aspects of PC operation that contribute to overall PC health. However, due to the monumental nature of the task of administering PC health, most users do not adequately address this task until their failure to maintain a computer system's health leads to some form of catastrophic event such as a virus attack or theft of private information.

Previous attempts to address PC health have taken a limited, focused approach to monitoring and administering the issue of health of a computing system. In particular, individual applications tend to focus upon a particular feature, such as security, anti-virus protection, privacy, backups, etc. Such systems take an approach of focusing upon individual features and notifying users of the status of such features in isolation. A known security index rendering user interface provides a “Security Index” based upon a set of input sub-indexes including: antivirus, antihacker, antiabuse, and antispam. The interface also provides a “Service Status” menu identifying enabled and disabled features. The user interface, including links to a store for providing products that concern the components of the security index, suggests that this is a marketing tool for the products of a particular seller of software.

SUMMARY OF THE INVENTION

The present invention comprises a system for administering personal computer health status. Personal computer system health provides an overall measurement of personal computer operation in any of a variety of general areas of measurement including, for example: security, privacy, stability, backup, etc. Personal computer health status measurement and reporting goes beyond merely reporting a physical performance measurement such as CPU usage, available physical memory, and battery power level. Instead, personal computer health takes into consideration status information reported by a provider relating to an area of the operational health of a computer system and applies contextual information (e.g., is the personal computer in the network) to render a health score that indicates the level of severity, if any, of a personal computer system health issue.

In accordance with the present invention a system comprising a set of intercommunicating components administers the health of a personal computer. The system includes a provider subsystem that provides services relating to personal computer health status. The services include acquiring health status information relating to the operation of the personal computer. The system also includes a health engine subsystem that receives and processes the health status information acquired by the provider subsystem. The health engine subsystem thereafter renders health status notifications. A client user interface subsystem, consumes the notifications of the health engine subsystem and reports personal computer health status information to users in accordance with the health status notifications.

DETAILED DESCRIPTION OF THE DRAWINGS

In the illustrative embodiment of the present invention, a personal computer (PC) health administration framework facilitates monitoring, reporting, and requesting corrective actions with regard to various classes of health status of a personal computer. The PC health administration framework supports PC health card/report user interfaces that publish an overall measurement of a computer system's health as well as underlying contributors to the overall health and suggestions for corrective actions to improve the system's health,

The exemplary PC health maintenance framework disclosed herein comprises a combination of interrelated sub-systems having particularized roles in notifying PC users of overall PC health status (as well as contributing factors to the health status) as well as suggesting corrective actions—if any are needed. The system includes a set of provider services that provide particularized PC health status information to a health engine. The health engine applies health criteria and algorithms to the status information in real time to render PC health status notifications and suggested corrective actions (that can be immediately invoked if requested) to a client user interface supporting user interfaces that output the overall health status as well as contributing health features and corrective actions to improve PC health. The health engine receives, and passes back to the provider services (if allowed) corrective actions requested via the client user interface. Thus, the health engine also coordinates corrective actions to ensure that two selected corrective actions do not conflict.

The client user interface supports a variety of output modes. The Health Card user interface provides an at-a-glance status (e.g., a change in color of a display item) of the computer and calls out any issues that need user attention. The Health Report provides more detailed coverage and an explanation of the status of the computer. In addition to the score and issues the Health Card provides, the Health Report breaks down the overall score by category and then to specific measures. The PC Health Card/Report user interface makes recommendations on areas that need improvement and provides a means to fix issues immediately. It also generates/provides comparisons with past performance thereby providing immediate feedback regarding applied corrective actions as well as supporting both trending and regression analysis on the system over time. Furthermore, rather than comparing a current status to a prior status of a same PC, the system also supports comparing a health status of the computer with other computers in a “network.” Finally, the score and measures can be calibrated to the type of use of the computer (for example, a small business work station, a computer shared by a family used primarily for communication, or a home gaming machine).

The PC Health Card/Report imparts confidence that the computer is secure and running at peak performance when the health score is good or alerts and educates the user about areas of improvement when appropriate. The user is thus assured of having a secure computing experience and that a personal computer is well maintained and will operate reliably under a currently sensed computing environment.

FIG. 1illustratively depicts an example of a suitable operating environment100for carrying out the personal computer health administration framework in accordance with an embodiment of the present invention. The operating environment100is only one example of a suitable operating environment, and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Other well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, laptop/portable computing devices, multiprocessor systems, microprocessor-based systems, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.

The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention is potentially incorporated within network nodes operating in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules are generally located in both local and remote computer storage media including memory storage devices.

Turning toFIG. 2, an exemplary personal computer health administration framework is schematically depicted. In an embodiment of the invention, the personal computer health administration framework is built around a health engine subsystem200. The health engine subsystem200hosts a personal computer health service provider subsystem210comprising an extensible set of registered provider services. Registration can occur in a number of ways. In an embodiment of the invention, the individual service providers call a public method that notifies the health administration framework of their existence (e.g., service instance identification and type). Thus, any service provider is capable of registering existence and supplying health status information to the system through the standardized/published interface. Other aspects of the published interfaces are described herein below.

Furthermore, in an embodiment of the invention, a health engine230(or other suitable administrative entity) guards against destructive additions to the extensible set of provider services. For example, a registration entity can block the addition of a non-certified/unauthorized provider. After registration the health engine230filters suggested/requested actions to ensure that the actions do not conflict with other requests or the overall mission of the system—to maintain PC health status.

The extensible set of registered provider services renders health status information for various aspects of PC health. In the illustrative example depicted inFIG. 2, the set of provider services address a variety of aspects of PC health including: security (including virus detection)212, privacy214, backup216, performance218, help219(uses system crash information and provides customized responses, etc.), etc. Each of the provider services defines: operating parameters checked, logic performed to signal that something is wrong/failing, and remedial actions that address a health problem (part of the health status information passed to the health engine subsystem200). The provider services obtain data from a variety of sources including: system drivers (e.g., every time a file is touched a notification is provided to an anti-virus provider), other applications (an anti-virus application), the Internet Protocol (IP) stack, performance counters, etc.

The health engine subsystem200operates as a bi-directional communications conduit between the PC health service provider subsystem210and a client user interface (UI) subsystem220. In an embodiment of the invention, a health engine230within the health engine subsystem200includes interface logic for coordinating the passage of information and/or requests between the PC health service provider subsystem210and the client user interface subsystem. A provider status information interface of the health engine230(represented by line232) receives health status information from the provider subsystem210. After performing intermediate processing of the health status information, the health engine230passes, via a client interface (represented by line234), health status notifications. A client input interface (represented by line236) of the health engine230receives requests for corrective actions issued by the client user interface subsystem220arising from the health status notifications passed to the client UI subsystem220via the client interface. After performing intermediate processing of received requests for corrective actions, the health engine230passes, via a provider action interface (represented by line238), instructions for corrective actions to a consumer of corrective actions. In an embodiment of the invention, the consumers of instructions for corrective actions include one or more of the set of provider services within the provider subsystem210.

Thus, in a configuration having basic functionality the health engine230operates as an aggregator of messages in both directions between providers and client user interfaces. The intermediate processing is generally confined to generating an overall index value from a set of input health scores submitted by one or more providers. The health engine230also accumulates requests for corrective actions and issues non-destructive instructions for corrective action.

However, in an embodiment of the invention the health engine230applies decision logic for coordinating execution of requested corrective actions across multiple tasks and/or multiple providers. The health engine subsystem200applies algorithms associated with reporting health notification information to clients and instructing the provider services to take corrective action. These tasks were referred to above as “intermediate processing.” A rules engine240applies a customizable set of rules governing the formulation of: (1) health status notifications for the client UI subsystem220(including suggestions for corrective actions to be presented to a user), and (2) instructions for corrective action submitted by the health engine230back to an appropriate consumer (e.g., one of the provider services registered within the provider subsystem210.

The following examples illustrate the “coordinating” aspects of an embodiment of the invention. As mentioned above, task execution is coordinated by the health engine230to ensure that two requested actions do not render an overall negative result. In the case of two conflicting remedial actions (if carried out together rather than sequentially), the health engine imposes a mutual exclusion algorithm. An example of such actions is a backup to CD and installation of a new program (the backup on the CD will be corrupted by the install process). The system carries out the mutual exclusion relationship by determining and disabling all actions that are inconsistent with a currently executing action.

In yet another embodiment of the invention, the health engine230coordinates remedial actions with the status of the overall system (not just the corrective actions currently being taken) to minimize the impact on the user experience while the corrective action is taking place. An example of such a factor is the current state of executing programs. Such coordination would prevent execution of an antivirus scan while the user is playing a game. On the other hand, the antivirus scan could be triggered by activation of screen saver (indicating lack of use).

A substantial distinction exists between the personal computer health administration framework described herein and previously known applications that operate self-contained health status measures (e.g., a notification by an anti-virus program that its virus list needs to be updated). In particular, the health engine230is situated at a position within the health status administration framework that facilitates aggregating/coordinating the health status information obtained from multiple provider services to formulate a health status/corrective action decision. Thus, the health engine230applies health administration criteria (both diagnostic and remedial) to status information from a variety of sources, including the current configuration of the computer system and health status information from multiple, distinct, provider services, to provide a generalized, overall health report as well as a set of potential remedial actions.

In accordance with a particular embodiment of the present invention, the rules engine240, in addition to being able to render health status for single providers (or factors contributing to a health status of a single provider, applies information outside the information provided by a first provider service to render (or tune) a personal computer health score and any instructions/suggestions for corrective action for the first provider. In particular, the rules engine240applies status information provided by at least a second provider as well as the first provider to render the instruction for corrective action. By way of example, a firewall provider and an anti-virus provider operate independently of one another. However, in the event of failure, the rules engine240takes into account the health status information provided by both providers when rendering instructions for corrective actions to each. Furthermore, in an embodiment of the invention, the rules engine240formulates a health status score/suggested corrective action based upon usage/configuration information (e.g., standalone, networked, etc.). For example, if a computer is operating in a standalone configuration, then firewall status is not relevant to an overall safety score for the system.

In accordance with a particular embodiment of the present invention, the rules engine240, in addition to being able to render health status for single providers (or factors contributing to a health status of a single provider), applies information outside the information provided by a first provider service to render (or tune) a personal computer health score and any instructions/suggestions for corrective action for the first provider. In particular, the rules engine340applies status information provided by at least a second provider as well as the first provider to render the instruction for corrective action. By way of example, a firewall provider and an anti-virus provider operate independently of one another. However, in the event of failure, the rules engine240takes into account the health status information provided by both providers when rendering instructions for corrective actions to each. Furthermore, in an embodiment of the invention, the rules engine240formulates a health status score/suggested corrective action based upon usage/configuration information (e.g., standalone, networked, etc.). For example, if a computer is operating in a standalone configuration, then firewall status is not relevant to an overall safety score for the system.

In a particular embodiment of the invention the health status table250specifies instructions for corrective action to be submitted by the health engine230to the provider subsystem210in response to detecting an existing problem. Such instructions for corrective action are based, for example, upon: a current problem determined by the rules engine240in view of received status information and/or a request for corrective action selected by a user and received from the client UI subsystem220. The health engine230need not rely upon requests from the client UI subsystem220. Instead, the health engine230acts upon a detected problem by rendering an automated response (based upon the rules engine240and/or the health status table250). An actual remedial action is invoked by the health engine230(i.e., an automatic fix that is invoked either with or without a user's express request). Upon completion of a corrective action, the affected provider(s) report their new status to the health engine230, and the new PC health status information is then passed to the client UI subsystem220.

Turning toFIG. 3, a set of exemplary methods associated with the health engine-based PC health administration framework are listed. A LaunchHealthEngine method300starts up an instance of the health engine subsystem200. The health engine subsystem200carries out a variety of health status and remedial tasks. As mentioned previously above such tasks include aggregating health scores and items that make up the scores across all registered providers. The health engine subsystem200also aggregates the current activities being carried out (to enforce mutual exclusion where needed). As will be explained herein below, the health engine fires notification events informing interested parties (e.g., the client user interface220) when a score, health status, or provider activity changes.

A HealthScore method310on the health engine230provides an overall health score for the system based upon the inputs of all the providers. In an embodiment of the invention, an extensible set of such methods is supported for a set of customized aggregate scores rendered by the health engine230. Such interface can be registered upon startup of the health engine and published for the client UI220.

Next, the health engine230fires a set of events that constitute notifications to the client UI220regarding health status information. A StatusChanged event320is raised by the health engine to notify clients of a potential change in status regarding items of health status information maintained by one or more providers. A ScoreChanged event322is raised when an aggregate health score (e.g., the score provided by HealthScore method310) generated by the health engine subsystem200has changed. A ProviderActivityChanged event324is raised when the activity within a provider has changed (the provider started/stopped performing an activity). A TaskStateChanged event326is raised when a task (corrective action) for a provider changes state.

The next set of four listed methods is called to administer the set of providers associated with the event handler system200. An AddProvider method330registers a provider from the provider subsystem210to the set of providers handled by the health engine subsystem200. A RemoveProvider method332deregisters a previously added provider. After registration, a provider is activated by invoking a Startup method334. Once activated, the provider can enumerate health status items (and their current values), enumerate the provider's tasks, specify any actions currently being taken, and receive an instruction to take an action. A Shutdown method336deactivates the provider.

In an embodiment of the invention, the providers are able to specify certain rules governing how/what/when actions can be submitted by the health engine320to the provider subsystem. A provider calls an AddBlockRule method338on the health engine320to specify a rule applied by the health engine subsystem200(e.g., the rules engine240). Furthermore, a MutexTasks method339specifies to the health engine320certain tasks that are mutually exclusive (and thus the health engine must time execution of the mutually exclusive tasks to occur sequentially). This rule is passed on to the client UI220for graying out a field that cannot occur while a certain action is executing.

Next, the health engine230supports a set of calls made by the client UI220. An ExecuteHealthStatusltem method340enables the client UI220to request a corrective action to be passed by the health engine230to a provider for a particular status item. Such actions (e.g., execute virus update) are attached to notifications provided by the health engine230to the client UI222and are thereafter selected by users.

A GetProviderActivityItem342aggregates all the current action items for all providers. If a particular provider does not report any activity items, then the provider is assumed to be idle. A CancelProviderActivityItem344halts any current action specified in the action (e.g., halt a virus scan). Finally, a GetHealthStatusItem method346is invoked on the health engine230to cause retrieval of all the health status items supported by each of the providers in the provider subsystem210. The responses potentially list any available corrective actions.

It is emphasized that the above-described interface is exemplary. As those skilled in the art will readily appreciate, there are a variety of ways to carry out the functionality of the health engine interface and its associated methods, events, etc. Therefore, the disclosure of this example should not be taken as limiting the invention to a particular set of methods and functions described herein above.

The health status of the personal computer system is rendered for viewing by a user through the client UI subsystem220that supports an extensible set of user interfaces. A health report UI260depicted, by way of example inFIG. 4, includes a graphical output enumerating a set of components that make up each of a set of supported aspects/features (e.g., backup, security, firewall, anti-virus) of personal computer health status. The health report UI260includes all statuses—not just the warnings—as well as an overall health status/score. For each provided aspect, the health report UI260provides a title, a score (e.g., + or −), information about the aspect, summary results, and a link to a “fix action” that is activated if needed/recommended. The overall health status/score is generated by the health engine230based upon an algorithm provided by the rules engine240.

A health card UI270depicted, by way of example inFIG. 5, specifies an overall health (e.g., safety) score/meter for the personal computer and enumerates a set of user selectable remedial action items/actions for raising the PC health score. The health (safety) score depicted inFIG. 5is generated by the health engine230based upon aggregated health status information provided by multiple providers including, for example, anti-virus, backup, security and firewall provider services. In the illustrative example set forth inFIG. 5, the user is prompted to update backup files (initiated by invoking the “Backup now” response), and raise the level of Internet security settings (initiated by invoking the “Change Security Settings” response).

In an embodiment of the invention, the health card UI270comprising a set of provider services of various types (see, e.g.,FIG. 2) generates an overall health score for the computer system based upon combinations of the various providers. In addition, each of the providers (e.g., security) comprises a set of factors (each providing an individual score) that are combined to render a composite score for that provider. Furthermore, customized combinations of scores associated with particular providers are combined to render a thematic composite score (e.g., a combination of factors from security and privacy are combined to render an “Internet Health” score.). The underlying logic for combining such scores if executed, by way of example, by the rules engine240of the health engine subsystem200.

A notifications interface280issues proactive, unsolicited, asynchronous warnings in the form of, for example, pop-up dialog boxes. The notifications are used, by way of example, to warn a user when the health of the personal computer (as measured by one or more of the provider services) is dangerously poor and thus immediate corrective action needs to be taken by a user to avoid damaging (or further damage to) the personal computer system. Each of the above-described user interfaces supported by the client UI subsystem220is also capable of presenting a remedial action and receiving a response from a user seeking to invoke the remedial action. As mentioned previously above, the health engine230receives the request for corrective action and issues an instruction to take correction action to the appropriate provider service within the provider subsystem210. The set of exemplary user interfaces supported by the client UI subsystem220includes alternative user interfaces in alternative embodiments of the invention.

It will be appreciated by those skilled in the art that a new and useful method and framework for administering personal computer health has been described herein. In view of the many possible computing environments to which the principles of this invention may be applied and the flexibility of designing and carrying out software development/performance evaluation tools, it should be recognized that the embodiments described herein are meant to be illustrative and should not be taken as limiting the scope of invention. Those skilled in the art to which the present invention applies will appreciate that the illustrated embodiments can be modified in arrangement and detail without departing from the spirit of the invention. Therefore, the invention as described herein contemplates all such embodiments as may come within the scope of the following claims and equivalents thereof.