Some computer systems used by today's business organizations are rather complex. Such a system may include of a great number of separate components that, to some extent, must operate well with each other for the system as a whole to be functional. For example, a system may include one or more sophisticated software applications for performing business operations, such as in a customer relationship management (CRM) framework. Moreover, the system may include one or more services, which are software applications devoted to managing several business application programs, and which may be considered the basic building blocks for such business applications. In addition, many systems include one or more databases with an associated component, such as a search engine, for retrieving information from the data base. Moreover, a system may include various other components dedicated to specific tasks, such as maintaining network connections, managing user accounts, and producing graphical user interfaces.
Typically, any of these exemplary components interacts with one or more of the other components during operation of the system. Each component may have alternative configurations, settings, and so on, that control how it operates in the system environment. It is therefore very important that integration between the various components is done properly. Also, some components can interact only with a specific version of certain software. Some or all of these configurations or settings may have default values when the system is first initiated. However, default settings may be, or become, inadequate. For example, a component that is preconfigured to work in a certain system environment may not function properly if the actual system includes components that were not taken into consideration in creating the default configuration. The need for special configuration or resetting of default values may be greater when a system includes components from several different manufacturers. A poorly-configured system may malfunction or not function as well as intended. The type of problems that occur can conceptually be categorized as either application related problems or content related problems.
An application related problem generally means that one or more application program does not work as intended. For example, a command or a performed operation does not produce any result at all or produces a result that is different from what it should be. As another example, something that should happen automatically in the system does not happen or occurs at the wrong time.
A content related problem generally means that, while the system behavior may appear normal, the results are not reliable. For example, the results of a search performed on a database with known contents are not what they should be. As another example, data corruption may occur in the transfer of information between components in a system.
These problems also can occur after a user customizes the system. For example, adding one or more user created components to a preconfigured system may cause problems if the original components are not properly configured to work with the custom component, or by the custom component is not properly configured for the original components, or both.
Moreover, it may be difficult to discern the exact cause of a particular problem that is observed. For example, when the system presents a collection of data that is retrieved from several different locations and it is discovered that the data is not complete, the user may not be able to readily determine whether this problem is due to a failure to retrieve data from a specific location or whether data is retrieved from the location but later lost or corrupted in transmission. To remedy an observed problem, the user may need to determine its origin and take suitable measures designed to cure it.