Proactive performance management for multi-user enterprise software systems

Information

  • Patent Grant
  • 9189361
  • Patent Number
    9,189,361
  • Date Filed
    Thursday, June 28, 2012
    12 years ago
  • Date Issued
    Tuesday, November 17, 2015
    9 years ago
Abstract
The invention provides, in some aspects, systems for proactive management of development and performance of a software application based on monitoring it (and/or one or more of its components) during the course of development or execution. Those systems signal alerts upon determining that actual or expected usage of the application (or its components) by users of like classes (or roles) is anticipated to, or does, exceed quotas, when the application is placed in production mode.
Description
BACKGROUND OF THE INVENTION

The invention pertains to digital data processing and more particularly, by way of example, to proactively managing development and performance of digital data processing applications. The invention can be applied, by way of example, to the design and implementation of enterprise software systems.


Enterprise software systems routinely fail to process transactions quickly enough to satisfy business needs, especially as the number of users and intensity of processing increases. It has traditionally been difficult to “spec out” requirements for new software projects that would avoid these scalability and performance issues, since application development itself introduces much variability. In addition, original assumptions about the scalability of a system frequently turn out to be invalid. This is exacerbated by changing user requirements.


The end result is often that an application completed by a developer has performance and scaling characteristics that differ significantly from the customer's needs. In order to remedy this, the “completed” application can be sent back for further development—which starts a vicious cycle. Alternatively, it may be necessary to buy significantly more computer hardware to run the application and, thereby, create a conflict with the original budget.


A related problem exists after the application has moved into production. Unanticipated resource consumption by some users or system processes may result in the entire system or application becoming non—responsive.


It is a common expectation that enterprise software vendors provide performance guidelines that ensure a certain number of users can be supported on a given capacity platform. This approach offers a false sense of security, since, in reality, there is a great amount of variability in the application development process that invalidates the vendor's assumptions.


To accommodate this, customers can test the performance of applications at the end of the development process by simulating a large number of users and measuring application response. A drawback here is that, by the time a performance problem is discovered, remediation may involve significant expense, e.g., buying new hardware, sending the application back to development, redefining the specification for the project, and so forth.


It is possible to test the performance of the application concurrently with the development process. However, this requires a dedicated set of human and computer resources. It is also difficult to test the developmental application, except at certain milestones when it is stable. If the performance results are unsatisfactory, or significantly different from original assumptions, any attempts to remediate are likely to interfere with the development process and to throw development off-track.


Another approach is to perform a detailed analysis of a system's or application's behavior with a single user and then project how the system will behave as the number of users increases; see, United States Patent Publication No. 2005/0216235, entitled “Scalability Test and Analysis”). This approach suffers from the same limitations as above, e.g., it requires a completed application to measure and project performance.


In view of the foregoing, an object of this invention is to provide improved methods and apparatus for digital data processing.


A related object of the invention is to provide such methods and apparatus as facilitate the design of applications, e.g., for the enterprise.


Yet another object of the invention is to provide such methods and apparatus as facilitate the design of right-sized and appropriately scalable applications.


SUMMARY OF THE INVENTION

The foregoing are among the objects attained by the invention which provides, in some aspects, systems for proactive management of performance of a software application based on monitoring it (and/or one or more of its components) during the course of development. Those systems include a performance monitor that signals alerts upon determining that usage of the application (or its components) by users of like classes (or roles) may exceed quotas, when the application is placed in production mode.


Further aspects of the invention provide such systems in which the performance monitor signals the aforementioned alerts to software application developers and/or a centralized monitoring environment. This can be done proactively, e.g., without requiring active querying by the developers. The performance monitor can, moreover, log the alerts.


Yet further aspects of the invention provide systems as described above that include a model defining a relationship between users and resources estimated to be consumed by them during use of the application in production mode. Those resources can include processing capacity, memory capacity and/or network bandwidth of one or more digital data processors on which the application will execute.


Yet still further aspects of the invention provide such systems in which the model defines quotas for usage of the application in production mode and/or one or more components thereof by users in each of one or more classes. Related aspects provide such systems in which the model defines such quotas on the basis of individual and multiple users in such classes.


Still yet further aspects of the invention provide such systems in which the quotas include expected and/or maximum permitted usage of the application in production mode by users in each of one or more classes.


In other aspects, the invention provides systems paralleling those described above for monitoring applications executing in a production environment. Those systems signal alerts upon determining that usage of the application (or its components) by users of like classes (or roles) exceed quotas defined for those classes. Related aspects of the invention provide such systems as limit usage of the application by users if quotas for their respective classes are exceeded.


Further related aspects of the invention provide such systems that signal alerts upon determining that usage of the application (or its components) by users of like classes (or roles) are approaching quotas defined for those classes. Such systems can make those determinations by comparing actual usage of the application by users in each of one or more classes with expected usage for those respective classes.


Still yet further aspects of the invention provide such systems that include sending the alerts generated during application production mode (i.e., run-time mode) to developers and/or a centralized monitoring environment. Further related aspects of the invention include systems which log the alerts generated during application production mode.


In other aspects, the invention provides such systems that utilize performance histories in defining the aforementioned model and/or its constituent quotas.


Other aspects of the invention provide systems as described above that utilize like models during monitoring the application (and/or one or more of its components) during both development and production mode. Related aspects of the invention provide such systems that utilize differing models during those respective modes.


Still yet other aspects of the invention provide systems as described above in which the aforesaid model and/or monitoring of the application are also effected by a rules base executed on such an engine.


In yet still other aspects, the invention provides methods for proactive management of performance of software applications paralleling the operations of the systems described above. Such methods can include responding to signaling, e.g., during application development, that usage of the application (or its components) by users of like classes may exceed quotas by altering (i) implementation of the application, (ii) allocation of time for such implementation, (iii) quotas defined for the respective classes, (iv) allocation of resources to the application, and/or (v) definition of the relationships defined in the model. In related aspects of the invention, personnel responsible for development, management and/or procurement of the application can respond to such signaling by communicating with one another in regard to potential implementation of one or more such alterations. Further related aspects of the invention include modifying the model to reflect such alterations.


These and other aspects of the invention are evident in the drawings and in the description that follows.





DETAILED DESCRIPTION OF THE ILLUSTRATED EMBODIMENT

A more complete understanding of the invention may be attained by reference to the drawings, in which:



FIG. 1 depicts a digital data processing system and environment according to one practice of the invention;



FIG. 2 depicts a flow diagram illustrating a development mode operation of a digital data processing system according to one practice of the invention; and



FIG. 3 depicts a flow diagram illustrating a production mode operation of a digital data processing system according to one practice of the invention.





ARCHITECTURE


FIG. 1 depicts a system 10 and environment for proactively managing performance of a software application 34, particularly, for example, a multi-user enterprise application, according to one practice of the invention. In the illustrated embodiment, system 10 executes on exemplary digital data processor 12, which may be a personal computer, workstation, mainframe, or other digital data processing apparatus of the type known in the art capable of executing applications, programs and/or processes.


Illustrated digital data processor 12 executes in a network environment of the type typical in a business enterprise, e.g., one including further digital data processors 20-30—which themselves may comprise personal computers, workstations, mainframes, or other digital data processing apparatus. In other embodiments, digital data processor 12 may operate alone or in other environments, networked or otherwise. In any event, illustrated digital data processors 20-30 are coupled to digital data processor 12 via a network 32, such as the Internet, a local-area network (LAN), wide-area network (WAN), or otherwise, that may be public, private, IP-based, etc.


In a typical embodiment, illustrated here, data processors 20-24 are used in development mode, e.g., by software engineers, test engineers, systems administrators, etc. (collectively, “developers”) to develop, test and maintain/or software application 34. Likewise, data processors 26-30 are employed by users to execute instantiations of the application 34. In the discussion that follows, digital data processor 12 assumes both roles for sake of simplicity of discussion—i.e., it is treated as if used by developers to develop, test and maintain the application, as well as by users to execute the application. Moreover, it is also assumed for sake of simplicity of discussion that application 34 executes on a single digital data processor; however, in practice, the application 34 may execute on or over multiple digital data processors (e.g., in client-server mode, peer-to-peer mode, etc.).


Illustrated digital data processor 12 includes rules base 40 constructed and accessed in the conventional manner known in the art of rules bases. The digitally encoded rules 41 that it contains are likewise formatted and stored in the conventional manner known in the art. An example of the structure, operation and use of the rules base 40 and rules 41 is provided in commonly assigned U.S. Pat. No. 5,826,250, entitled “Rules Bases and Methods of Access Thereof” and U.S. patent application Ser. No. 11/368,360, filed Mar. 3, 2006, entitled “Rules Base Systems and Methods with Circumstance Translation,” the teachings of both of which are incorporated herein by reference.


Illustrated digital data processor 12 also includes rules engine 42 of the type conventionally known in the art for use in processing rules, e.g., retrieved from a rules base 40, in order to respond to (or otherwise handle) events signaled to and/or detected by the engine 42.


Illustrated digital data processor 12 further includes a software development environment (SDE) 51 that facilitates development of rules-based (or other) applications, e.g., application 34. This may include a text editor, an interpreter/compiler, libraries, or otherwise—all of the type known in the art—as adapted in accord with the teachings hereof. The SDE 51 may, itself, be comprised of rules 52 that execute on engine 42, or otherwise.


With continued reference to FIG. 1, system 10 includes a resource model (or simply “model”) 44 and a performance monitor 36. Resource model 44, which in the illustrated embodiment executes on rules engine 42, comprises a set of rules 45 which, by way of non-limiting example, defines and models relationships between users (given their respective roles, as described herein) and resources estimated to be consumed by them (as well, optionally, as those actually consumed by them) during use of the application 34 in production mode.


Though, in the illustrated embodiment, model 44 comprises rules 45 that are executed on engine 42, in other embodiments the model 44 may be defined and/or executed otherwise. In instances, such as the illustrated embodiment, where the model 44 is defined by rules 45, those rules can provide functionality attributed to the model below (and elsewhere herein), though, in other embodiments, that functionality can be incorporated in other elements of the system (e.g., the performance monitor 36). Consistent with the remarks above, though model 44 is shown as executing on digital data processor 12, it will be appreciated that, like application 34, it may execute on or over multiple digital data processors.


Performance monitor 36, also executing on rules engine 42, comprises a set of rules 55, which are in communications coupling with the application 34 (e.g., via RPC or otherwise) and which monitor the application in order to, inter alia, (i) signal alerts if predicted (or actual) usage of the application or its components by users of like classes may (or does) exceed quotas, and/or (ii) limit usage of the application or its components by users if quotas for their respective classes are approached, met or exceeded. In the illustrated embodiment, such monitoring is performed in real-time and persistently, so as to afford developers, users and others (e.g., system administrators) proactive and immediate feedback regarding expected or actual application performance. In other embodiments, such proactive and up-to-date feedback is achieved by monitoring the application after-the-fact, e.g., following each compilation, build and/or run of the application 34, at the end of each work day, etcetera.


As used herein, the phrase “monitoring the application” refers to monitoring not only the application 24 in development and/or production modes, but also monitoring resources (e.g., processor capacity, network bandwidth, disk storage, etc.) impacted by the application. In this manner, the performance monitor 36 helps insure that performance of the application will meet or exceed expectations/specifications.


As above, in the illustrated embodiment, performance monitor 36 is defined by rules 55 that are executed on engine 42, though, in other embodiments the monitor 36 may be defined and/or executed otherwise. Moreover, though performance monitor 36 is shown as executing on digital data processor 12, it will be appreciated that, like application 34, it may execute on or over multiple digital data processors.


Illustrated application 34, also executing on the rules engine 42, comprises a set of rules 53 defining one or more software applications written, tested and revised by developers and executed by users. By way of non-limiting example, such a software application 34 can be a multi-user enterprise software system (e.g., business process management application), and the like. Moreover, the application 34 can comprise one or more components, modules, systems, and so forth (collectively, “components”), as is common in the art. Though, in the illustrated embodiment, application 34 is defined by rules 53 that are executed on engine 42, in other embodiments the application 34 may be defined and/or executed otherwise.


As used herein, activity by developers with respect to an application (e.g., in writing, testing and revising the application) is referred to as “development mode.” Activity by users (e.g., in running the application) is referred to as “production mode.” Although, in the typical application, development mode precedes production mode in the application life cycle, the term development mode can include subsequent activity—as where developers revise an application to fix “bugs,” add new functionality, etc.


Resource Model


As noted, resource model 44 models a relationship between users (given their respective roles) and their estimated (and, optionally, actual) consumption of resources in connection with application 34. It is used with the performance monitor 36 to gauge expected or actual resource consumption during development and production modes of the application 34—and, specifically, to insure that consumption falls within defined quotas—and, thereby to insure adequate performance.


To this end, illustrated model 44 defines user roles or classes for anticipated (or actual) application users. These can include, for example, general classes, like “power user” and “limited user,” and/or specific classes, like “sales executive,” “phone operator,” and so forth. The model can, further, assign actual or expected users to specific ones of these classes. The model 44 may be supplemented or supplanted in each of these functions by other elements of the system 10, digital data processor 12, or otherwise. Thus, for example, the model can define user roles/classes and assign specific users to those classes based on look-up tables contained elsewhere on the digital data processor (e.g., operating system user tables).


Illustrated model 44 further defines, on the basis of user roles, consumption quotas 46, 47 for use of resources by application 34. Those resources can include, by way of example, processor, memory, input/output, communications, network or other resources of the digital data processor 12 and/or network (or other) environment on which the application 34 operates. In the illustrated embodiment, the quotas 46, 47 can include both maximum and expected figures. More particularly, for example, the quotas 46, 47 can include, for each of at least selected resources, (1) maximum system resource consumption 46 for a user (or users) in a given role/class, and/or (2) expected system resource consumption 47 for a user (or users) in a given role/class.


As an example, maximum resource consumption quotas 46 can indicate that (i) an individual user of the limited class is permitted to consume no more than 0.2 percent of the processor capacity, peak, and (ii) 200 kbytes/sec on the network, peak, during use of the application. Alternatively, or in addition, maximum quotas 46 can indicate that (i) all simultaneous users of the limited class are permitted to consume no more than 15 percent of processor capacity, peak, and (ii) 3 Mbytes/sec on the network, peak, during use of the application.


Similarly, by way of example, expected resource consumption quotas 47 can indicate that (i) an individual user of the limited class is permitted to consume no more than 0.1 percent of processor capacity, on average, and (ii) 10 kbytes/sec on the network, on average, during use of the application. Alternatively, or in addition, quotas 46 can indicate that (i) all simultaneous users of the limited class are permitted to consume 5 percent of processor capacity, on average, and (ii) 1 Mbytes/sec on the network, on average, during use of the application.


Typically, the expected system resource consumption quota 47 is lower than quota 46, and is utilized to alert developers, system administrators, etc., that an execution or interaction by a given user or developer is approaching the respective user role's maximum allowed resource consumption quota 47. This two-tier quota system is used in the illustrated embodiment, for example, to give developers advanced warning of possible performance deterioration, thereby giving them ample opportunity to address the problem (e.g., changing the implementation). Though only two quotas per resource—maximum 46 and expected 47—are discussed here, in alternative embodiments, a lesser or greater number of quotas may be employed.


The model further defines quotas 48, 49 for the numbers of users of each class that are simultaneously permitted to use the application itself and/or its components (collectively, “application,” unless indicated otherwise). As above, two quotas are provided in the illustrated embodiment: a maximum number 48 of users per respective class, and an expected number 49 of users per expected class. Those skilled in the art will appreciate the such quotas may be alternatively defined, e.g., the model might define that application 34 can be used by 500 simultaneous users, 20 of who can be power users. As above, though only two quotas per class—maximum 48 and expected 49—are discussed here, in alternative embodiments, a lesser or greater number of quotas may be employed


Still further, the model 44 models (e.g., predicts) how use of the application 34 and its components by users, e.g., of given classes, relates to resource consumption. In this regard, a simple model 44 might define the following “user consumption relationships”:

    • each user (regardless of class) executing the application consumes 0.1 percent of the processor capacity and transmits 10 kbytes/sec on the network
    • execution of subsystem X of the application by a user of the “limited” class additionally consumes 0.3 percent of the processor capacity and transmits 30 kbytes/sec on the network
    • execution of subsystem X of the application by user of the “power” class additionally consumes 0.5 percent of the processor capacity and transmits 40 kbytes/sec on the network
    • execution of subsystem Y of the application by a user of the “limited” class additionally consumes 0.35 percent of the processor capacity and transmits 100 kbytes/sec on the network
    • execution of subsystem Y of the application by user of the “power” class additionally consumes 0.6 percent of the processor capacity and transmits 150 kbytes/sec on the network.


In view of the foregoing, it will be appreciated that the model can predict—given specifics of the application 34 (e.g., number of remote calls made, disk usage, memory requirements, etc.)—whether the resource consumption quotas (and, therefore, expected performance) will be exceeded when the application is executed by, individual, expected and/or maximum numbers of users in each class. During development mode of the application 34, the performance monitor 46 can make use of this to gather application specifics, apply them to the model 44 and report quota violations to the developer, e.g., by the alert mechanism discussed below.


During production mode, the predicative capabilities of the model 44 need not be used (though, they may be, in some embodiments). Rather, in that mode, the performance monitor 46 can gather actual statistics about resource consumption and compare them against quotas maintained in the model, again, reporting, violations to the developer, system administrator, etc.—or, limiting execution of the application to specific numbers/types of users.


In the illustrated embodiment, the quotas 46-49 form part of the rules base 45 defined by the developer, his/her project manager and/or other persons involved in defining the requirements for application 34 (collectively, the “project manager”). To facilitate this, particularly, in regard to development work on new versions and/or modifications of application 34, the model 44 can utilize and/or incorporate performance histories that are, for example, gathered by the performance monitor 36 during production mode (e.g., in connection with the alerts discussed below) and/or collected from logs on the digital data processor 12, networking system, or otherwise. This can be achieved, for example, by execution of rules in the rules base 45 that periodically, on demand, or otherwise, identify those logs and extract relevant records for storage, e.g., in the model, and display or permit query by the project manager when new quotas are being defined. In preferred embodiments, the model utilizes the historical performance information to update the rules 45 that reflect “user consumption relationships.”


Operation



FIG. 2 is a flow diagram depicting the operation of system 10 in development mode. In step 200, developers create, test and/or revise software application 34 in the conventional manner, e.g., using SDE 51. In the illustrated embodiment, rules engine 42 executes rules 53 defining the application 34, and developers modify those rules 53 (or add new rules) within the SDE 51 (e.g., via a text editor or other component of the SDE 51) in order, for example, to alter the functionality and/or performance characteristics of application 34.


In step 210, the performance monitor 36 monitors the SDE 51, e.g., in real-time (for example, while the developer enters lines of code, issue commands for validation and/or compilation of modules, and/or save modules to disk or a software repository) or responds to direct invocation by the developers, to test the application-in-development against the model 44 to ensure that performance will meet or exceed expectations/specifications when it is deployed (i.e., enters production mode).


To this end, the performance monitor 36 obtains from the SDE 51 specifics of the application 34 (e.g., as noted above, number of remote calls made, disk usage, memory requirements, etc.) and applies them to the model by way of function calls or otherwise. The model 44 and, more particularly, the rules 45 that represent it, execute on the rules engine 30 and determine whether the resource consumption quotas will be exceeded (and, therefore, expected performance not achieved), given the specifics provided.


As reflected in steps 220-280, the model 44 can report quota violations to the SDE 51 which, in turn, can alert the developer. In other embodiments, the model 44 generates results directly to the developer. Regardless, the reported quota violations can include identification of quota violated, measure of expected violations, etc., and, thereby, facilitate correction of the application by the developer and/or modification of quotas by the project manager, as reflected in steps 270, 280.


Alternatively, or additionally, the developer and/or product manager can respond to such alerts by (i) allocating additional time for implementation of the application (or fixes thereto), (ii) allocating additional resources to the application, and/or (iii) refining the “user consumption relationships” defined by the model. Additionally, such alerts can motivate personnel responsible for development, management and/or procurement of the application to communicate in regard to potential implementation and/or alteration of the application, the model, or otherwise.


As illustrated in steps 220, 240, when the model detects violation of a maximum resource quota 46, the performance monitor 36 signals the developer with a high-priority alert or warning (e.g., a “red light” warning). This can take the form of, for example, a pop-up window on a developer's screen/terminal 20-24, an email to a developer, and so forth. Alternatively, as illustrated in steps 230, 250, when the model detects violation of an expected resource quota 47, the performance monitor 36 signals the developer with a low-priority alert or warning (e.g., a “yellow light” warning). Again, this can take the form of, for example, a pop-up window on a developer's screen/terminal 20-24, an email to a developer, and so forth. In the illustrated embodiment, alert categories (e.g., high-priority, low-priority, etc.) are associated with the alerts to reflect the importance of the anticipated quota violation; in other embodiments additional and/or other categories may be used. Likewise, alerts may be signaled by other and/or additional mechanisms to those mentioned above.


In preferred embodiments, alerts are sent to are signals not only to developers but also to a log and/or a centralized monitoring environment, e.g., a database maintained by project manager(s) or other personnel responsible for development of application 34. This facilitates identifying and categorizing alerts, e.g., to improve overall developer and application performance.


Operation of system 10 in production mode (i.e., run-time execution of application 34) parallels that of operation during development mode. Generally, the rules engine 42, resource model 44, and performance monitor 36 operate in the manner described above, e.g., in connection with FIG. 2. In production mode, however, application 34 has “gone live,” and the predictive capabilities of the model 44 need not be used. Rather, the performance monitor 36 monitors actual use of the application 34 and resource consumed by it. Thus, the “specifics” applied to the model 44 by the monitor 36 in production mode are actual statistics about resource consumption by actual users.



FIG. 3 is a flow diagram illustrating operation of system 10 during production mode. Steps 300-350 parallel steps 200-250 in FIG. 2. For example, in step 340 and 350, the monitor 36 sends “red light” and/or “yellow light” alert(s) 38 to developers, project managers, systems administrators, or other personnel (and, where appropriate, to end-users) depending on whether actual usage violates a maximum quota 46, 48 or an expected quota 47, 49. Note, that the violations in production mode can (unlike development mode) include violations of the expected and maximum user quotas 48, 49. As above, the alerts 38 can also be logged to the centralized monitoring environment. Also as noted, the resource model 44 (or performance monitor 36, etc.) may utilize performance histories to facilitate entry of quotas and definition of rules defining “user consumption relationships.” To this end, the alerts can be logged for access by the model 44 and/or they can effect logging of detailed performance statistics which may also be accessed by the model.


In production mode, unlike development mode, the monitor 36 can limit usage of the application 34 by one or more users upon determining that usage (individual or collective) violates one or more quotas (typically, maximum consumption quotas 46). This can be effected, e.g., when a red light warning condition has been signaled, by preventing additional users from executing the application and/or by terminating the processes of one or more offending users. See step 360.


Described herein are methods and systems meeting the objects set forth above, among others. It will be appreciated that the illustrated embodiment and those otherwise discussed herein are merely examples of the invention and that other embodiments, incorporating changes thereto, fall within the scope of the invention.

Claims
  • 1. A system for proactive management of performance of an application, the system comprising: a digital data processor configured to execute a performance monitor in communications coupling with one or more resources, andthe performance monitor configured to: monitor (i) usage of the application by a user and/or one or more components thereof by the user, and (ii) consumption of the one or more resources during the usage of the application and/or the one or more components thereof by the user, wherein the resources include any of processing capacity, memory capacity, and/or network bandwidth, andsignal an alert upon determining that such usage by the user and/or consumption of resources during such usage violates a model, wherein the model defines one or more quotas for the user with respect to usage of a component of the application by the user, wherein the one or more quotas defined by the model include a maximum resource consumption quota and an expected resource consumption quota, wherein the model indicates that the user is permitted to consume no more than a pre-determined amount of processor capacity and no more than a pre-determined amount of network bandwidth, and wherein the expected resource consumption quota is between 0.1-0.35 percent of processor capacity to be consumed by the user on average, and between 10-100 kilobytes per second on the network to be consumed by the user on average, during use of the application.
  • 2. The system of claim 1, wherein the performance monitor limits usage and/or consumption of resources.
  • 3. The system of claim 1, wherein the model further defines the one or more quotas in accord with a class to which the user belongs.
  • 4. The system of claim 3, wherein the quotas include any of (i) maximum permitted usage of the application by users in each of one or more classes, and (ii) expected usage of the application by users in each of one or more classes.
  • 5. The system of claim 3, wherein the model defines such quotas on the basis of individual and multiple users in such classes.
  • 6. A method for proactive management of performance of an application, the method comprising: monitoring, by a digital data processor, (i) usage of the application by a user and/or one or more components thereof by the user, and (ii) consumption of the one or more resources during usage of the application and/or one or more components thereof by the user, wherein the resources include any of processing capacity, memory capacity, and/or network bandwidth, andsignaling an alert upon determining that such usage by the user and/or consumption of resources during such usage violates a model, wherein the model defines one or more quotas for the user with respect to usage of a component of the application by the user, wherein the one or more quotas defined by the model include a maximum resource consumption quota and an expected resource consumption quota, wherein the model indicates that the user is permitted to consume no more than a pre-determined amount of processor capacity and no more than a pre-determined amount of network bandwidth, and wherein the expected resource consumption quota is between 0.1-0.35 percent of processor capacity to be consumed by the user on average, and between 10-100 kilobytes per second on the network to be consumed by the user on average, during use of the application.
  • 7. The method of claim 6, further comprising limiting usage and/or consumption of resources by any of: (i) preventing additional users from executing the application, and(ii) terminating a process of the user.
  • 8. The method of claim 6, wherein the alert is signaled to a centralized monitoring environment.
  • 9. The method of claim 6, wherein the model is defined based on a performance history of the application.
  • 10. The method of claim 6, wherein the model is defined using one or more business rules, andwherein the business rules describe one or more relationships between the user and the one or more resources during the usage of the application and/or the one or more components thereof.
  • 11. A system for proactive management of performance of an application, the system comprising: a digital data processor configured to execute a performance monitor in communications coupling with one or more resources, andthe performance monitor configured to: monitor (i) usage of the application by a user and/or one or more components thereof by the user, and (ii) consumption of the one or more resources during the usage of the application and/or the one or more components thereof by the user, wherein the resources include any of processing capacity, memory capacity, and/or network bandwidth, andsignal an alert upon determining that such usage by the user and/or consumption of resources during such usage violates a model, wherein the model defines one or more quotas for the user with respect to usage of a component of the application by the user, wherein the one or more quotas defined by the model include a maximum resource consumption quota and an expected resource consumption quota, wherein the model indicates that the user is permitted to consume no more than a pre-determined amount of processor capacity and no more than a pre-determined amount of network bandwidth, and wherein the maximum resource consumption quota is between 0.1-0.6 percent peak of the processor capacity to be consumed by the user, and between 10-200 kilobytes per second peak on the network to be consumed by the user during use of the application.
  • 12. The system of claim 11, wherein the performance monitor limits usage and/or consumption of resources by any of: (i) preventing additional users from executing the application, and(ii) terminating a process of the user.
  • 13. The system of claim 11, wherein the performance monitor signals the alert to a centralized monitoring environment.
  • 14. The system of claim 11, wherein the model is defined based on a performance history of the application.
  • 15. The system of claim 11, wherein the model is defined using one or more business rules executing on a rules engine in communications coupling with the performance monitor and with the digital data processor, andwherein the business rules are configured to describe one or more relationships between the user and the one or more resources during the usage of the application and/or the one or more components thereof.
  • 16. A method for proactive management of performance of an application, the method comprising: monitoring, by a digital data processor, (i) usage of the application by a user and/or one or more components thereof by the user, and (ii) consumption of the one or more resources during usage of the application and/or one or more components thereof by the user, wherein the resources include any of processing capacity, memory capacity, and/or network bandwidth, andsignaling an alert upon determining that such usage by the user and/or consumption of resources during such usage violates a model, wherein the model defines one or more quotas for the user with respect to usage of a component of the application by the user, wherein the one or more quotas defined by the model include a maximum resource consumption quota and an expected resource consumption quota, wherein the model indicates that the user is permitted to consume no more than a pre-determined amount of processor capacity and no more than a pre-determined amount of network bandwidth, and wherein the maximum resource consumption quota is between 0.1-0.6 percent peak of the processor capacity to be consumed by the user, and between 10-200 kilobytes per second peak on the network to be consumed by the user during use of the application.
  • 17. The method of claim 16, further comprising limiting usage and/or consumption of resources.
  • 18. The method of claim 16, wherein the model further defines the one or more quotas in accord with a class to which the user belongs.
  • 19. The method of claim 16, wherein the quotas include any of (i) maximum permitted usage of the application by users in each of one or more classes, and (ii) expected usage of the application by users in each of one or more classes.
  • 20. The method of claim 16, wherein the model defines such quotas on the basis of individual and multiple users in such classes.
Parent Case Info

This application is a continuation application based on U.S. application Ser. No. 11/681,269 filed on Mar. 2, 2007, now U.S. Pat. No. 8,250,525 entitled “PROACTIVE PERFORMANCE MANAGEMENT FOR MULTI-USER ENTERPRISE SOFTWARE SYSTEMS.” The teachings of the aforementioned application are incorporated herein by reference.

US Referenced Citations (472)
Number Name Date Kind
4047059 Rosenthal Sep 1977 A
4344142 Diehr, II et al. Aug 1982 A
4602168 Single Jul 1986 A
4607232 Gill, Jr. Aug 1986 A
4659944 Miller, Sr. et al. Apr 1987 A
4701130 Whitney et al. Oct 1987 A
4866634 Reboh et al. Sep 1989 A
4884217 Skeirik et al. Nov 1989 A
4895518 Arnold et al. Jan 1990 A
4930071 Tou et al. May 1990 A
4953106 Gansner et al. Aug 1990 A
5062060 Kolnick Oct 1991 A
5077491 Heck et al. Dec 1991 A
5093794 Howie et al. Mar 1992 A
5119465 Jack et al. Jun 1992 A
5129043 Yue Jul 1992 A
5136184 Deevy Aug 1992 A
5136523 Landers Aug 1992 A
5140671 Hayes et al. Aug 1992 A
5193056 Boes Mar 1993 A
5199068 Cox Mar 1993 A
5204939 Yamazaki et al. Apr 1993 A
5228116 Harris et al. Jul 1993 A
5259766 Sack et al. Nov 1993 A
5262941 Saladin et al. Nov 1993 A
5267175 Hooper Nov 1993 A
5267865 Lee et al. Dec 1993 A
5270920 Pearse et al. Dec 1993 A
5276359 Chiang Jan 1994 A
5276885 Milnes et al. Jan 1994 A
5291394 Chapman Mar 1994 A
5291583 Bapat Mar 1994 A
5295256 Bapat Mar 1994 A
5297279 Bannon et al. Mar 1994 A
5301270 Steinberg et al. Apr 1994 A
5310349 Daniels et al. May 1994 A
5311422 Loftin et al. May 1994 A
5326270 Ostby et al. Jul 1994 A
5333254 Robertson Jul 1994 A
5339390 Robertson et al. Aug 1994 A
5374932 Wyschogrod et al. Dec 1994 A
5379366 Noyes Jan 1995 A
5379387 Carlstedt et al. Jan 1995 A
5381332 Wood Jan 1995 A
5386559 Eisenberg et al. Jan 1995 A
5395243 Lubin et al. Mar 1995 A
5412756 Bauman et al. May 1995 A
5421011 Camillone et al. May 1995 A
5421730 Lasker, III et al. Jun 1995 A
5446397 Yotsuyanagi Aug 1995 A
5446885 Moore et al. Aug 1995 A
5450480 Man et al. Sep 1995 A
5463682 Fisher et al. Oct 1995 A
5473732 Chang Dec 1995 A
5477170 Yotsuyanagi Dec 1995 A
5481647 Brody et al. Jan 1996 A
5499293 Behram et al. Mar 1996 A
5504879 Eisenberg et al. Apr 1996 A
5512849 Wong Apr 1996 A
5519618 Kastner et al. May 1996 A
5537590 Amado Jul 1996 A
5542024 Balint et al. Jul 1996 A
5542078 Martel et al. Jul 1996 A
5548506 Srinivasan Aug 1996 A
5561740 Barrett et al. Oct 1996 A
5579223 Raman Nov 1996 A
5579486 Oprescu et al. Nov 1996 A
5596752 Knudsen et al. Jan 1997 A
5597312 Bloom et al. Jan 1997 A
5608789 Fisher et al. Mar 1997 A
5611076 Durflinger et al. Mar 1997 A
5627979 Chang et al. May 1997 A
5630127 Moore et al. May 1997 A
5649192 Stucky Jul 1997 A
5655118 Heindel et al. Aug 1997 A
5664206 Murow et al. Sep 1997 A
5678039 Hinks et al. Oct 1997 A
5715450 Ambrose et al. Feb 1998 A
5732192 Malin et al. Mar 1998 A
5754740 Fukuoka et al. May 1998 A
5761063 Jannette et al. Jun 1998 A
5761673 Bookman et al. Jun 1998 A
5765140 Knudson et al. Jun 1998 A
5768480 Crawford, Jr. et al. Jun 1998 A
5788504 Rice et al. Aug 1998 A
5795155 Morrel-Samuels Aug 1998 A
5809212 Shasha Sep 1998 A
5815415 Bentley et al. Sep 1998 A
5819257 Monge et al. Oct 1998 A
5822780 Schutzman Oct 1998 A
5825260 Ludwig et al. Oct 1998 A
5826077 Blakeley et al. Oct 1998 A
5826239 Du et al. Oct 1998 A
5826250 Trefler Oct 1998 A
5826252 Wolters, Jr. et al. Oct 1998 A
5829983 Koyama et al. Nov 1998 A
5832483 Barker Nov 1998 A
5841673 Kobayashi et al. Nov 1998 A
5873096 Lim et al. Feb 1999 A
5875334 Chow et al. Feb 1999 A
5875441 Nakatsuyama et al. Feb 1999 A
5880614 Zinke et al. Mar 1999 A
5880742 Rao et al. Mar 1999 A
5886546 Hwang Mar 1999 A
5890146 Wavish et al. Mar 1999 A
5890166 Eisenberg et al. Mar 1999 A
5907490 Oliver May 1999 A
5907837 Ferrel et al. May 1999 A
5910748 Reffay et al. Jun 1999 A
5918222 Fukui et al. Jun 1999 A
5920717 Noda Jul 1999 A
5930795 Chen et al. Jul 1999 A
5945852 Kosiec Aug 1999 A
5974441 Rogers et al. Oct 1999 A
5974443 Jeske Oct 1999 A
5978566 Plank et al. Nov 1999 A
5983267 Shklar et al. Nov 1999 A
5987415 Breese et al. Nov 1999 A
5990742 Suzuki Nov 1999 A
5995948 Whitford et al. Nov 1999 A
5995958 Xu Nov 1999 A
6008673 Glass et al. Dec 1999 A
6012098 Bayeh et al. Jan 2000 A
6020768 Lim Feb 2000 A
6023704 Gerard et al. Feb 2000 A
6023714 Hill et al. Feb 2000 A
6023717 Argyroudis Feb 2000 A
6028457 Tihanyi Feb 2000 A
6037890 Glass et al. Mar 2000 A
6044373 Gladney et al. Mar 2000 A
6044466 Anand et al. Mar 2000 A
6078982 Du et al. Jun 2000 A
6085188 Bachmann et al. Jul 2000 A
6085198 Skinner et al. Jul 2000 A
6091226 Amano Jul 2000 A
6092036 Hamann Jul 2000 A
6092083 Brodersen et al. Jul 2000 A
6094652 Faisal Jul 2000 A
6098172 Coss et al. Aug 2000 A
6105035 Monge et al. Aug 2000 A
6122632 Botts et al. Sep 2000 A
6125363 Buzzeo et al. Sep 2000 A
6130679 Chen et al. Oct 2000 A
6137797 Bass et al. Oct 2000 A
6144997 Lamming et al. Nov 2000 A
6151595 Pirolli et al. Nov 2000 A
6151624 Teare et al. Nov 2000 A
6154738 Call Nov 2000 A
6167441 Himmel Dec 2000 A
6177932 Galdes et al. Jan 2001 B1
6185516 Hardin et al. Feb 2001 B1
6185534 Breese et al. Feb 2001 B1
6192371 Schultz Feb 2001 B1
6194919 Park Feb 2001 B1
6212502 Ball et al. Apr 2001 B1
6216135 Brodersen et al. Apr 2001 B1
6233617 Rothwein et al. May 2001 B1
6240417 Eastwick et al. May 2001 B1
6243713 Nelson et al. Jun 2001 B1
6246320 Monroe Jun 2001 B1
6275073 Tokuhiro Aug 2001 B1
6275790 Yamamoto et al. Aug 2001 B1
6300947 Kanevsky Oct 2001 B1
6308163 Du et al. Oct 2001 B1
6314415 Mukherjee Nov 2001 B1
6324693 Brodersen et al. Nov 2001 B1
6330554 Altschuler et al. Dec 2001 B1
6338074 Poindexter et al. Jan 2002 B1
6341277 Coden et al. Jan 2002 B1
6341293 Hennessey Jan 2002 B1
6349238 Gabbita et al. Feb 2002 B1
6351734 Lautzenheiser et al. Feb 2002 B1
6359633 Balasubramaniam et al. Mar 2002 B1
6369819 Pitkow et al. Apr 2002 B1
6380910 Moustakas et al. Apr 2002 B1
6381738 Choi et al. Apr 2002 B1
6389460 Stewart et al. May 2002 B1
6393605 Loomans May 2002 B1
6396885 Ding et al. May 2002 B1
6405211 Sokol et al. Jun 2002 B1
6405251 Bullard et al. Jun 2002 B1
6415259 Wolfinger et al. Jul 2002 B1
6415283 Conklin Jul 2002 B1
6418448 Sarkar Jul 2002 B1
6426723 Smith et al. Jul 2002 B1
6429870 Chen et al. Aug 2002 B1
6437799 Shinomi et al. Aug 2002 B1
6446089 Brodersen et al. Sep 2002 B1
6446200 Ball et al. Sep 2002 B1
6446256 Hyman et al. Sep 2002 B1
6448964 Isaacs et al. Sep 2002 B1
6463440 Hind et al. Oct 2002 B1
6473467 Wallace et al. Oct 2002 B1
6473748 Archer Oct 2002 B1
6493331 Walton et al. Dec 2002 B1
6493399 Xia et al. Dec 2002 B1
6493754 Rosborough et al. Dec 2002 B1
6496812 Campaigne et al. Dec 2002 B1
6496833 Goldberg et al. Dec 2002 B1
6502239 Zgarba et al. Dec 2002 B2
6509898 Chi et al. Jan 2003 B2
6513018 Culhane Jan 2003 B1
6526440 Bharat Feb 2003 B1
6526457 Birze Feb 2003 B1
6529899 Kraft et al. Mar 2003 B1
6530079 Choi et al. Mar 2003 B1
6539374 Jung Mar 2003 B2
6542912 Meltzer et al. Apr 2003 B2
6546406 DeRose et al. Apr 2003 B1
6549904 Ortega et al. Apr 2003 B1
6556983 Altschuler et al. Apr 2003 B1
6556985 Karch Apr 2003 B1
6560592 Reid et al. May 2003 B1
6567419 Yarlagadda May 2003 B1
6571222 Matsumoto et al. May 2003 B1
6577769 Kenyon et al. Jun 2003 B1
6583800 Ridgley et al. Jun 2003 B1
6584464 Warthen Jun 2003 B1
6584569 Reshef et al. Jun 2003 B2
6594662 Sieffert et al. Jul 2003 B1
6597775 Lawyer et al. Jul 2003 B2
6598043 Baclawski Jul 2003 B1
6606613 Altschuler et al. Aug 2003 B1
6625657 Bullard Sep 2003 B1
6629138 Lambert et al. Sep 2003 B1
6636850 Lepien Oct 2003 B2
6636901 Sudhakaran et al. Oct 2003 B2
6643638 Xu Nov 2003 B1
6643652 Helgeson et al. Nov 2003 B2
6661908 Suchard et al. Dec 2003 B1
6678679 Bradford Jan 2004 B1
6678773 Marietta et al. Jan 2004 B2
6678882 Hurley et al. Jan 2004 B1
6684261 Orton et al. Jan 2004 B1
6691067 Ding et al. Feb 2004 B1
6691230 Bardon Feb 2004 B1
6701314 Conover et al. Mar 2004 B1
6711565 Subramaniam et al. Mar 2004 B1
6721747 Lipkin Apr 2004 B2
6728702 Subramaniam et al. Apr 2004 B1
6728852 Stoutamire Apr 2004 B1
6732095 Warshavsky et al. May 2004 B1
6732111 Brodersen et al. May 2004 B2
6748422 Morin et al. Jun 2004 B2
6750858 Rosenstein Jun 2004 B1
6751663 Farrell et al. Jun 2004 B1
6754475 Harrison et al. Jun 2004 B1
6756994 Tlaskal Jun 2004 B1
6763351 Subramaniam et al. Jul 2004 B1
6771706 Ling et al. Aug 2004 B2
6772148 Baclawski Aug 2004 B2
6772350 Belani et al. Aug 2004 B1
6778971 Altschuler et al. Aug 2004 B1
6782091 Dunning, III Aug 2004 B1
6785341 Walton et al. Aug 2004 B2
6788114 Krenzke et al. Sep 2004 B1
6792420 Stephen Chen et al. Sep 2004 B2
RE38633 Srinivasan Oct 2004 E
6804330 Jones et al. Oct 2004 B1
6810429 Walsh et al. Oct 2004 B1
6820082 Cook et al. Nov 2004 B1
6829655 Huang et al. Dec 2004 B1
6831668 Cras et al. Dec 2004 B2
6839682 Blume et al. Jan 2005 B1
6847982 Parker et al. Jan 2005 B2
6851089 Erickson et al. Feb 2005 B1
6856575 Jones Feb 2005 B2
6856992 Britton et al. Feb 2005 B2
6859787 Fisher et al. Feb 2005 B2
6865546 Song Mar 2005 B1
6865566 Serrano-Morales et al. Mar 2005 B2
6865575 Smith et al. Mar 2005 B1
6867789 Allen et al. Mar 2005 B1
6918222 Lat et al. Jul 2005 B2
6920615 Campbell et al. Jul 2005 B1
6925457 Britton et al. Aug 2005 B2
6927728 Vook et al. Aug 2005 B2
6934702 Faybishenko et al. Aug 2005 B2
6940917 Menon et al. Sep 2005 B2
6944644 Gideon Sep 2005 B2
6954737 Kalantar et al. Oct 2005 B2
6956845 Baker et al. Oct 2005 B2
6959432 Crocker Oct 2005 B2
6961725 Yuan et al. Nov 2005 B2
6965889 Serrano-Morales et al. Nov 2005 B2
6976144 Trefler et al. Dec 2005 B1
6985912 Mullins et al. Jan 2006 B2
7020869 Abrari et al. Mar 2006 B2
7028225 Maso et al. Apr 2006 B2
7031901 Abu El Ata Apr 2006 B2
7058367 Luo et al. Jun 2006 B1
7058637 Britton et al. Jun 2006 B2
7064766 Beda et al. Jun 2006 B2
7073177 Foote et al. Jul 2006 B2
7076558 Dunn Jul 2006 B1
7089193 Newbold Aug 2006 B2
7103173 Rodenbusch et al. Sep 2006 B2
7124145 Surasinghe Oct 2006 B2
7139999 Bowman-Amuah Nov 2006 B2
7143116 Okitsu et al. Nov 2006 B2
7171145 Takeuchi et al. Jan 2007 B2
7171415 Kan et al. Jan 2007 B2
7174514 Subramaniam et al. Feb 2007 B2
7289793 Norwood et al. Oct 2007 B2
RE39918 Slemmer Nov 2007 E
7302417 Iyer Nov 2007 B2
7318020 Kim Jan 2008 B1
7318066 Kaufman et al. Jan 2008 B2
7334039 Majkut et al. Feb 2008 B1
7353229 Vilcauskas, Jr. et al. Apr 2008 B2
7406475 Dorne et al. Jul 2008 B2
7412388 Dalal et al. Aug 2008 B2
7505827 Boddy et al. Mar 2009 B1
7536294 Stanz et al. May 2009 B1
7555645 Vissapragada Jun 2009 B2
7574494 Mayernick et al. Aug 2009 B1
7596504 Hughes et al. Sep 2009 B2
7640222 Trefler Dec 2009 B2
7665063 Hofmann et al. Feb 2010 B1
7711919 Trefler et al. May 2010 B2
7779395 Chotin et al. Aug 2010 B1
7844594 Holt et al. Nov 2010 B1
7870244 Chong et al. Jan 2011 B2
7937690 Casey May 2011 B2
7983895 McEntee et al. Jul 2011 B2
8037329 Leech et al. Oct 2011 B2
8073802 Trefler Dec 2011 B2
8250525 Khatutsky Aug 2012 B2
8335704 Trefler et al. Dec 2012 B2
8479157 Trefler et al. Jul 2013 B2
8880487 Clinton et al. Nov 2014 B1
8924335 Trefler et al. Dec 2014 B1
8959480 Trefler et al. Feb 2015 B2
20010013799 Wang Aug 2001 A1
20010035777 Wang et al. Nov 2001 A1
20010047355 Anwar Nov 2001 A1
20010049682 Vincent et al. Dec 2001 A1
20010052108 Bowman-Amuah Dec 2001 A1
20020010855 Reshef et al. Jan 2002 A1
20020013804 Gideon Jan 2002 A1
20020029161 Brodersen et al. Mar 2002 A1
20020042831 Capone et al. Apr 2002 A1
20020049603 Mehra et al. Apr 2002 A1
20020049715 Serrano-Morales et al. Apr 2002 A1
20020049788 Lipkin et al. Apr 2002 A1
20020054152 Palaniappan et al. May 2002 A1
20020059566 Delcambre et al. May 2002 A1
20020073337 Ioele et al. Jun 2002 A1
20020091677 Sridhar Jul 2002 A1
20020091678 Miller et al. Jul 2002 A1
20020091710 Dunham et al. Jul 2002 A1
20020091835 Lentini et al. Jul 2002 A1
20020107684 Gao Aug 2002 A1
20020118688 Jagannathan Aug 2002 A1
20020120598 Shadmon et al. Aug 2002 A1
20020120762 Cheng et al. Aug 2002 A1
20020133502 Rosenthal et al. Sep 2002 A1
20020177232 Melker et al. Nov 2002 A1
20020178232 Ferguson Nov 2002 A1
20020184610 Chong et al. Dec 2002 A1
20030004934 Qian Jan 2003 A1
20030004951 Chokshi Jan 2003 A1
20030009239 Lombardo et al. Jan 2003 A1
20030014399 Hansen et al. Jan 2003 A1
20030037145 Fagan Feb 2003 A1
20030050834 Caplan Mar 2003 A1
20030050927 Hussam Mar 2003 A1
20030050929 Bookman et al. Mar 2003 A1
20030061209 Raboczi et al. Mar 2003 A1
20030065544 Elzinga et al. Apr 2003 A1
20030066031 Laane Apr 2003 A1
20030074352 Raboczi et al. Apr 2003 A1
20030074369 Schuetze et al. Apr 2003 A1
20030084401 Abel et al. May 2003 A1
20030109951 Hsiung et al. Jun 2003 A1
20030135358 Lissauer et al. Jul 2003 A1
20030154380 Richmond et al. Aug 2003 A1
20030191626 Al-Onaizan et al. Oct 2003 A1
20030200254 Wei Oct 2003 A1
20030200371 Abujbara Oct 2003 A1
20030202617 Casper Oct 2003 A1
20030222680 Jaussi Dec 2003 A1
20030229529 Mui et al. Dec 2003 A1
20030229544 Veres et al. Dec 2003 A1
20040024603 Mahoney et al. Feb 2004 A1
20040034651 Gupta et al. Feb 2004 A1
20040049479 Dorne et al. Mar 2004 A1
20040049509 Keller et al. Mar 2004 A1
20040054610 Amstutz et al. Mar 2004 A1
20040064552 Chong et al. Apr 2004 A1
20040088199 Childress et al. May 2004 A1
20040103014 Teegan et al. May 2004 A1
20040117759 Rippert et al. Jun 2004 A1
20040122652 Andrews et al. Jun 2004 A1
20040133416 Fukuoka et al. Jul 2004 A1
20040133876 Sproule Jul 2004 A1
20040145607 Alderson Jul 2004 A1
20040148138 Garnett et al. Jul 2004 A1
20040162822 Papanyan et al. Aug 2004 A1
20040167765 Abu El Ata Aug 2004 A1
20040205672 Bates et al. Oct 2004 A1
20040220792 Gallanis et al. Nov 2004 A1
20040236566 Simske Nov 2004 A1
20040268221 Wang Dec 2004 A1
20040268299 Lei et al. Dec 2004 A1
20050027563 Fackler et al. Feb 2005 A1
20050039191 Hewson et al. Feb 2005 A1
20050044198 Okitsu et al. Feb 2005 A1
20050050000 Kwok et al. Mar 2005 A1
20050055330 Britton et al. Mar 2005 A1
20050059566 Brown et al. Mar 2005 A1
20050060372 DeBettencourt et al. Mar 2005 A1
20050104628 Tanzawa et al. May 2005 A1
20050125683 Matsuyama et al. Jun 2005 A1
20050138162 Byrnes Jun 2005 A1
20050165823 Ondrusek et al. Jul 2005 A1
20050216235 Butt et al. Sep 2005 A1
20050228875 Monitzer et al. Oct 2005 A1
20050234882 Bennett et al. Oct 2005 A1
20050288920 Green et al. Dec 2005 A1
20060004845 Kristiansen et al. Jan 2006 A1
20060020783 Fisher Jan 2006 A1
20060041861 Trefler et al. Feb 2006 A1
20060063138 Loff et al. Mar 2006 A1
20060064486 Baron et al. Mar 2006 A1
20060080082 Ravindra et al. Apr 2006 A1
20060100847 McEntee et al. May 2006 A1
20060139312 Sinclair et al. Jun 2006 A1
20060149751 Jade et al. Jul 2006 A1
20060173724 Trefler et al. Aug 2006 A1
20060173871 Taniguchi et al. Aug 2006 A1
20060206303 Kohlmeier et al. Sep 2006 A1
20060206305 Kimura et al. Sep 2006 A1
20060218166 Myers et al. Sep 2006 A1
20060271920 Abouelsaadat Nov 2006 A1
20070010991 Lei et al. Jan 2007 A1
20070028225 Whittaker et al. Feb 2007 A1
20070038765 Dunn Feb 2007 A1
20070055938 Herring et al. Mar 2007 A1
20070061789 Kaneko et al. Mar 2007 A1
20070094199 Deshpande et al. Apr 2007 A1
20070118497 Katoh May 2007 A1
20070130130 Chan et al. Jun 2007 A1
20070136068 Horvitz Jun 2007 A1
20070143851 Nicodemus et al. Jun 2007 A1
20070203756 Sears et al. Aug 2007 A1
20070208553 Hastings et al. Sep 2007 A1
20070233902 Trefler et al. Oct 2007 A1
20070239646 Trefler Oct 2007 A1
20070260584 Marti et al. Nov 2007 A1
20070294644 Yost Dec 2007 A1
20080046462 Kaufman et al. Feb 2008 A1
20080077384 Agapi et al. Mar 2008 A1
20080085502 Allen et al. Apr 2008 A1
20080184230 Leech et al. Jul 2008 A1
20080195377 Kato et al. Aug 2008 A1
20080208785 Trefler et al. Aug 2008 A1
20080216055 Khatutsky Sep 2008 A1
20080216060 Vargas Sep 2008 A1
20090075634 Sinclair et al. Mar 2009 A1
20090132232 Trefler May 2009 A1
20090158407 Nicodemus et al. Jun 2009 A1
20090164494 Dodin Jun 2009 A1
20090171938 Levin et al. Jul 2009 A1
20090276206 Fitzpatrick et al. Nov 2009 A1
20100088266 Trefler Apr 2010 A1
20100107137 Trefler et al. Apr 2010 A1
20100217737 Shama Aug 2010 A1
20120041921 Canaday et al. Feb 2012 A1
20130231970 Trefler et al. Sep 2013 A1
20130254833 Nicodemus et al. Sep 2013 A1
20140019400 Trefler et al. Jan 2014 A1
Foreign Referenced Citations (105)
Number Date Country
19911098 Dec 1999 DE
0 549 208 Jun 1993 EP
0 669 717 Aug 1995 EP
0 996 916 May 2000 EP
1 015 997 Jul 2000 EP
1 019 807 Jul 2000 EP
1 073 955 Feb 2001 EP
1 073 992 Feb 2001 EP
1 135 723 Sep 2001 EP
1 163 604 Dec 2001 EP
1 183 636 Mar 2002 EP
1 196 882 Apr 2002 EP
1 203 310 May 2002 EP
1 208 482 May 2002 EP
1 212 668 Jun 2002 EP
1 240 592 Sep 2002 EP
1 277 102 Jan 2003 EP
1 277 119 Jan 2003 EP
1 277 120 Jan 2003 EP
1 277 153 Jan 2003 EP
1 277 155 Jan 2003 EP
1 277 329 Jan 2003 EP
1 374 083 Jan 2004 EP
1 382 030 Jan 2004 EP
1 386 241 Feb 2004 EP
1 393 172 Mar 2004 EP
1 393 188 Mar 2004 EP
1 402 336 Mar 2004 EP
1 407 384 Apr 2004 EP
1 430 396 Jun 2004 EP
1 438 649 Jul 2004 EP
1 438 654 Jul 2004 EP
1 438 672 Jul 2004 EP
1 483 685 Dec 2004 EP
1 490 747 Dec 2004 EP
1 490 809 Dec 2004 EP
1 492 232 Dec 2004 EP
1 782 183 May 2007 EP
1 830 312 Sep 2007 EP
1 840 803 Oct 2007 EP
2 115 581 Nov 2009 EP
9838564 Sep 1998 WO
9840807 Sep 1998 WO
9905632 Feb 1999 WO
9945465 Sep 1999 WO
9950784 Oct 1999 WO
0033187 Jun 2000 WO
0033217 Jun 2000 WO
0033226 Jun 2000 WO
0033235 Jun 2000 WO
0033238 Jun 2000 WO
0052553 Sep 2000 WO
0052603 Sep 2000 WO
0179994 Jan 2001 WO
0140958 Jun 2001 WO
0175610 Oct 2001 WO
0175614 Oct 2001 WO
0175747 Oct 2001 WO
0175748 Oct 2001 WO
0176206 Oct 2001 WO
0177787 Oct 2001 WO
0221254 Mar 2002 WO
0244947 Jun 2002 WO
02056249 Jul 2002 WO
02080006 Oct 2002 WO
02080015 Oct 2002 WO
02082300 Oct 2002 WO
02084925 Oct 2002 WO
02088869 Nov 2002 WO
02091346 Nov 2002 WO
02101517 Dec 2002 WO
02103576 Dec 2002 WO
03021393 Mar 2003 WO
03029923 Apr 2003 WO
03029955 Apr 2003 WO
03030005 Apr 2003 WO
03030013 Apr 2003 WO
03030014 Apr 2003 WO
03058504 Jul 2003 WO
03069500 Aug 2003 WO
03071380 Aug 2003 WO
03071388 Aug 2003 WO
03073319 Sep 2003 WO
03077139 Sep 2003 WO
03085503 Oct 2003 WO
03085580 Oct 2003 WO
04001613 Dec 2003 WO
2004003684 Jan 2004 WO
2004003766 Jan 2004 WO
2004003885 Jan 2004 WO
2004046882 Jun 2004 WO
2004061815 Jul 2004 WO
2004086197 Oct 2004 WO
2004086198 Oct 2004 WO
2004095207 Nov 2004 WO
2004095208 Nov 2004 WO
2004114147 Dec 2004 WO
2005001627 Jan 2005 WO
2005003888 Jan 2005 WO
2005010645 Feb 2005 WO
2005117549 Dec 2005 WO
2006081536 Aug 2006 WO
2007033922 Mar 2007 WO
2008109441 Sep 2008 WO
2009097384 Aug 2009 WO
Non-Patent Literature Citations (60)
Entry
[No Author Listed] FreeBSD Project. “EDQUOTA(8)” in Free BSD System Manager's Manual. FreeBSD 8.2 Jun. 6, 1993. pp. 1-2. Retrieved from freebsd.org on Oct. 27, 2011.
[No Author Listed] “How SmartForms for Fair Blaze Advisor works”, Fair Issac White Paper, http://www.FAIRISAAC.COM/, Oct. 31, 2005.
[No Author Listed] Solaris 9 resource manager software. A technical white paper. Sun Microsystems, Inc., Palo Alto CA, 2002, 37 pages. XP-002291080. Retrieved Aug. 3, 2004 from <http://wwws.sun.com/software/whitepapers/solaris9/srm.pdf>.
Bertino and P. Foscoli, “Index Organizations for Object-Oriented Database Systems,” IEEE Trans. on Knowledge and Data Engineering, 7(2):193-209 (1995).
Brusilovsky, P., and De Bra, P., Editors, “Second Workshop on Adaptive Hypertext and Hypermedia Proceedings,” Jun. 20-24, 1998. Ninth ACM Conference on Hypertext and Hypermedia, Hypertext'98. pp. 1-2.
Burleson, “Adding behaviors to relational databases,” DBMS, 8(10): 68(5) (1995).
Busse, Ralph et al., “Declarative and Procedural Object Oriented Views”, 1998, IEEE retrieved Mar. 22, 2007.
Buyya et al., “Economic Models for Resource Management and Scheduling in Grid Computing,” 2002. Concurrency and Computation: Practice and Experience. vol. 14. pp. 1507-1542.
Chan and W. Hwang, “Towards Integrating Logic, Object, Frame, and Production,” Proc. Fourth Int'l. Conf. on Software Engineering and Knowledge Engineering, pp. 463-469, Jun. 1992.
Cheng, Cheng-Chung; Smith, Stephen F.; “A Constraint Satisfaction Approach to Makespan Scheduling,” AIPS 1996 Proceedings, pp. 45-52 (1996).
Cheng and Smith, “Applying Constraint Satisfaction Techniques to Job Shop Scheduling,” 1997. Annals of Operations Research. 70: 327-357 (1997).
Cochrane, Roberta et al., “Integrating Triggers and Declarative Constraints in SQL”, p. 567-578, Proceedings of the 22nd VLDB Conference Mumbai (Bombay), India, 1996, retrieved Mar. 22, 2007.
Damerau, F.J., Problems and some solutions in customization of natural language database front ends. ACM Transactions on Information Systems, vol. 3, No. 2, Apr. 1, 1985, pp. 165-184.
Danforth, “Integrating Object and Relational Technologies,” Proc. Sixteenth Annual Int'l. Computer Software and Applications Conf., pp. 225-226, Sep. 1992 (abstract).
DeMichiel, et al., “Polyglot: Extensions to Relational Databases for Sharable Types and Functions in a Multi-Language Environment,” Proc. Ninth Int'l. Conf. on Data Engineering, pp. 651-660, Apr. 1993.
Devarakonda et al., Predictability of process resource usage: A measurement-based study on UNIX. IEEE Transactions on Software Engineering. 1989;15(12):1579-1586.
Communication for European Patent Application No. 05755530.2, dated Sep. 6, 2007.
European Search Report for Application No. 05755530.2, dated Mar. 26, 2012 (3 Pages).
European Office Action issued Aug. 31, 2012 for Application No. 05755530.2 (4 Pages).
Communication for European Patent Application No. 07250844.3 enclosing European Search Report, dated Jul. 11, 2007.
Communication for European Patent Application No. 07250844.3, dated Mar. 28, 2008.
European Office Action issued Jul. 9, 2012 for Application No. 07250844.3 (8 Pages).
Communication for European Patent Application No. 07250848.4, dated Aug. 13, 2007 (EESR enclosed).
Communication for European Patent Application No. 07250848.4, dated May 29, 2008.
Communication for European Patent Application No. 08731127.0, dated Oct. 13, 2009.
Extended European Search Report issued Oct. 29, 2012 for Application No. 08731127.0 (8 Pages).
Francisco, S. et al. “Rule-Based Web Page Generation” Proceedings of the 2nd Workshop on Adaptive Hypertext and Hypermedia, Hypertext'98, Jun. 20-24, 1998.
International Search Report for PCT/US05/018599, dated May 15, 2007.
International Preliminary Report on Patentability for PCT/US2005/018599, dated Jun. 5, 2007.
International Search Report & Written Opinion for PCT/US06/03160, mailed Jul. 21, 2008.
International Preliminary Report on Patentability for PCT/US06/03160, dated Apr. 9, 2009.
International Search Report for PCT/US08/55503, mailed Jul. 28, 2008.
International Preliminary Report on Patentability for PCT/US2008/055503, mailed Sep. 17, 2009.
International Search Report & Written Opinion for PCT/US09/32341, mailed Mar. 11, 2009.
International Preliminary Report on Patentability for PCT/US2009/032341, mailed Aug. 12, 2010.
Jones et al., A user-centered approach to functions in excel. International Conference on Functional Programming, Uppsala, Jun. 30, 2003, pp. 1-12.
Johnson et al., Sharing and resuing rules—a feature comparison of five expert system shells. IEEE Expert, IEEE Services Center, New York, NY, vol. 9, No. 3, Jun. 1, 1994, pp. 3-17.
Kim, “Object-Oriented Databases: Definition and Research Directions,” IEEE Trans. on Knowledge and Data Engineering, vol. 2(3) pp. 327-341, Sep. 1990.
Kuhn, H.W. “The Hungarian Method for the Assignment Problem,” Naval Research Logistics Quarterly, 2 (1955), pp. 83-97.
Kuno and E.A. Rundensteiner, “Augmented Inherited Multi-Index Structure for Maintenance of Materialized Path Query Views,” Proc. Sixth Int'l Workshop on Research Issues in Data Engineering, pp. 128-137, Feb. 1996.
Lippert, Eric, “Fabulous Adventures in Coding: Metaprogramming, Toast and the Future of Development Tools,” Microsoft.com Blog, MSDN Home, published Mar. 4, 2004, 6 pgs.
Manghi, Paolo et. al. “Hybrid Applications Over XML: Integrating the Procedural and Declarative Approaches”, 2002 ACM, pp. 1-6. Retrieved Mar. 22, 2007.
Markowitz and A. Shoshani, “Object Queries over Relational Databases: Language, Implementation, and Applications,” IEEE Xplore, pp. 71-80, Apr. 1993.
Maryanski, et al., “The Data Model Compiler: A Tool for Generating Object-Oriented Database Systems,” 1986 Int'l. Workshop on Object-Oriented Database Systems, 73-84 (1986).
McConnell, Steven C., “Brooks' Law Repealed,” IEEE Software, pp. 6-9, Nov./Dec. 1999.
Mecca, G. et al. “Cut and Paste”, ACM, pp. 1-25 and Appendix I-IV (1999). Retrieved Mar. 22, 2007.
Morizet-Mahoudeaux, “A Hierarchy of Network-Based Knowledge Systems,” IEEE Trans. on Systems, Man, and Cybernetics, vol. 21(5), pp. 1184-1191, Sep. 1991.
Reinersten, Don, “Is It Always a Bad Idea to Add Resources to a Late Project?,” Oct. 30, 2000. Electronic Design. vol. 48, Issue 22, p. 70.
Riccuiti, M., Oracle 8.0 on the way with objects: upgrade will also build in multidimensional engine. InfoWorld. Sep. 25, 1995;17(39):16.
Salvini and M.H. Williams, “Knowledge Management for Expert Systems,” IEE Colloquium on ‘Knowledge Engineering’, 3 pages, May 1990.
Schiefelbein, Mark A Backbase Ajax Front-end for J2EE Applications, Internet Article, http://dev2dev.bea.com/1pt/a/433>, Aug. 29, 2005.
Sellis, et al., “Coupling Production Systems and Database Systems: A Homogeneous Approach,” IEEE Trans. on Knowledge and Data Engineering, vol. 5(2), pp. 240-256, Apr. 1993.
Shyy and S.Y.W. Su, “Refinement Preservation for Rule Selection in Active Object-Oriented Database Systems,” Proc. Fourth Int'l Workshop on Research Issues in Data Engineering, pp. 115-123, Feb. 1994.
Smedley, T.J. et al., “Expanding the Utility of Spreadsheets Through the Integration of Visual Programming and User Interface Objects,” School of Computer Science, Technical University of Nova Scotia, ACM, 1996; pp. 148-155.
Stonebraker, “The Integration of Rule Systems and Database Systems,” IEEE Trans. on Knowledge and Data Engineering, vol. 4(5), pp. 415-423, Oct. 1992.
Sun, et al., “Supporting Inheritance in Relational Database Systems,” IEEE, pp. 511-518, Jun. 1992.
Thuraisingham, “From Rules to Frames and Frames to Rules,” AI Expert, pp. 31-39, Oct. 1989.
Vranes, S. “Integrating Multiple Paradigms within the Blackboard Framework,” IEEE Transactions on Software Engineering, vol. 21, No. 3, Mar. 1995, pp. 244-262.
Yang, Bibo; Geunes, Joseph; O'Brien, William J.; “Resource-Constrained Project Scheduling: Past Work and New Directions,” Apr. 2001.
Gajos et al. SUPPLE: Automatically Generating User Interfaces. IUI 2004, 8 pages.
Related Publications (1)
Number Date Country
20130007267 A1 Jan 2013 US
Continuations (1)
Number Date Country
Parent 11681269 Mar 2007 US
Child 13536079 US