Abstract:
The detection and interpretation of data pertaining to the usage of software and documents by end users, and more specifically, the automation of the mining of raw hierarchical object data for information on specific software and document usage and the automatic generation of statistical data on its usage and runtime errors.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to the detection and interpretation of data pertaining to the usage of software and documents by end users, and more specifically, the automation of the mining of raw hierarchical object data for information on specific software and document usage and the automatic generation of statistical data on its usage and runtime errors. 
       BACKGROUND OF THE INVENTION 
       [0002]    At present, projects in the value of 600 Billion US dollars are deployed yearly in the US alone. When organizations decide to roll out a new application, only rarely does this decision rely on objective measures of the pilot users, according to the critical business processes of the organizations. Adopting a new application involves, in almost all cases, a massive change in business processes and a new way of working. In most organizations the meaning of that is that on rollout phase the risk of the organization climbs dramatically, leaving the entire organization exposed to a huge failure of his critical processes on the first days of deployment. It is no secret that on those risky days most business processes are wrongly used and some are never used; and when some are used correctly, the extended user environment is disruptive to the effective utilization. It is almost impossible for organizations to know which processes are ready to rollout and which actions must be taken before rollout. Rollout is a critical phase in the process of enrollment of a new critical application in organizations. Although failure in this stage mean harmful results to the organization (regardless of the funds and time invested in deploying the application) and may lead to total disaster, there are currently no automated tools to deal with this stage. 
         [0003]    In light of the above, there remains an unmet long felt need for providing an automated and rapid system and method for monitoring actual usage of a software product for the purposes of quality control or launching readiness and similar purposes. 
       SUMMARY OF THE INVENTION 
       [0004]    It is an object of the present invention to provide a system for automatically interpreting object usage on a plurality of end users&#39; computers comprising a plurality of computers used by end users (EUCs), a central server (server) with processing means and first information storage means adapted for storing: captured raw object data, an updatable library of object classes, computer readable instructions for identifying class-relevant and title-relevant information in raw object data and comparing to said library of object classes, or object models (OMs) and a log of OM instances, comprising data on class, title, time and duration of usage of said OM instances. In order to capture the object raw data, use is made of a plurality of listener devices (listeners) possessing a second information storage means and first means of communications with one or more EUCs, and adapted for obtaining from said EUCs information on object activity, and a second means of communication with server for passing said object usage information. 
         [0005]    It is an object of the present invention to provide a system wherein said object is selected from a group consisting of screen types, Button Control Type, Calendar Control Type, CheckBox Control Type, ComboBox Control Type, DataGrid Control Type, Data Item Control Type, Document Control Type, Edit Control Type, Group Control Type, Header Control Type, HeaderItem Control Type, Hyperlink Control Type, Image Control Type, List Control Type, ListItem Control Type, Menu Control Type, MenuBar Control Type, Menu Item Control Type, Pane Control Type, ProgressBar Control Type, RadioButton Control Type, ScrollBar Control Type, Separator Control Type, Slider Control Type, Spinner Control Type, SplitButton Control Type, StatusBar Control Type, Tab Control Type, TabItem Control Type, Table Control Type, Text Control Type, Thumb Control Type, TitleBar Control Type, ToolBar Control Type, ToolTip Control Type, Tree Control Type, TreeItem Control Type, Window Control Type or any combination thereof. 
         [0006]    To fulfill its objective, the said server is equipped with processing means which comprise an identifying means for object class-relevant and title-relevant information in raw object data, instructions for creating OM candidates and comparing to said candidates to updatable library of OMs and determining either the assignation of an existing class to OM instance according to predetermined criteria or conferring permanent class status to OM candidate by adding it to said updatable library of classes, server further recording assigned class, as well as title and object usage information in said object instance log. 
         [0007]    A second embodiment of the present invention comprises an OM library which is structured hierarchically, with said object classes grouped into a plurality of class levels, and further wherein the stored computer readable instructions further comprise instructions for creating OM of each raw datum at a plurality of levels, and for identifying and storing OM instances on a plurality of levels. 
         [0008]    A further embodiment of the present invention further incorporates a user feedback module comprising a user interface displaying to human user results of automatic OM identification produced by the server and receiving corrections from said user, wherein said corrections are fed back to the server to improve library of previously stored Object Models and possibly also to change stored instructions for class and title identification and matching with OM library. 
         [0009]    In a further embodiment of the present invention the server further comprises a database of organizational structure, including departmental affiliation and professional roles of owners of individual EUCs (users) and stored instructions for extracting a plurality of OM usage statistics comprising OM usage time averages per individual user, per department, per role. 
         [0010]    In a further embodiment of the present invention the listener module further comprises means for recording error information provided by EUC for errors encountered while attempting to run and errors captured during successful runs of individual OMs, and wherein server also has instructions for extracting OM error statistics. 
         [0011]    In a further embodiment of the present invention, the system of interpreting object usage is implemented on a Microsoft Windows platform, and further wherein said listener is adapted to retrieve data on user&#39;s object usage from windows system-call, DLL-injection and system events. 
         [0012]    In a further embodiment of the present invention, the listener is adapted to retrieve data on user&#39;s object usage of objects consisting of web-based documents is retrieved via Browser Helper Object (BHO) module. 
         [0013]    In a further embodiment of the present invention, the data on each user&#39;s object usage of Java-based programs is identified using inner java-mechanics. 
         [0014]    In a further embodiment of the present invention, the data on each user&#39;s object usage is based on User-Interface-Automation technique. 
         [0015]    In a further embodiment of the present invention, the discovery of OMs is achieved via “class”-dependent heuristics. 
         [0016]    In a further embodiment of the present invention, the discovery of OMs is achieved via heuristics based on statistics for overall matching percentages (for example, percentage of data left unmatched, number of models percentage of data each model matches). 
         [0017]    In a further embodiment of the present invention, the system further comprises a cloud server enabling EUC to store data and perform computations on cloud server, wherein listener module further comprises a means for capturing data and instructions transmitted between computer and cloud server, useful for identifying objects running on the cloud. 
         [0018]    In a further embodiment of the present invention, the first and second identifying means are adapted for using the document object model (DOM) structure of objects consisting of HTML, XHTML or XML documents to identify objectclass and title relevant information. In a further embodiment of the present invention, the DOM model is specified by the World Wide Web Consortium (W3C) DOM standard. 
         [0019]    It is an object of the present invention to disclose a method for using a system for automatically interpreting object usage on end user computers, the system comprising a plurality of end user computers (EUCs), a plurality of listening devices (listeners) and a central server (server), and at least one database stored in the memory of the server having a processing means and information storage means adapted for storing captured raw object data, an updatable library of object classes, computer readable instructions for identifying class-relevant and title-relevant information in raw object data and comparing to said library of object classes, or object models (OMs), a log of OM instances, comprising data on class, title, time and duration of usage of said OM instances. The method comprises steps of receiving raw object data from EUCs to be stored in said listeners and server memory; identifying within said raw object, object class and object title relevant information and automatically creating at least one Object Model (OM) candidate class; comparing said at least one OM candidate class to OMs in said updatable OM library and determining whether said at least one candidate class is equivalent to one class in OM library; if said at least one OM candidate class is equivalent to an OM in said library, storing said OM from library and title and temporal usage information as OM instance in OM instance log; if none of said at least one OM candidate class is equivalent to any OM in library, choosing one of OM candidates and adding to said library, thereby creating new OM, storing said OM and title and temporal usage information as OM instance in OM instance log. 
         [0020]    It is an object of the present invention to disclose the aforementioned method wherein said object is selected from a group consisting of screen type, Button Control Type, Calendar Control Type, CheckBox Control Type, ComboBox Control Type, DataGrid Control Type, Data Item Control Type, Document Control Type, Edit Control Type, Group Control Type, Header Control Type, HeaderItem Control Type, Hyperlink Control Type, Image Control Type, List Control Type, ListItem Control Type, Menu Control Type, MenuBar Control Type, Menu Item Control Type, Pane Control Type, ProgressBar Control Type, RadioButton Control Type, ScrollBar Control Type, Separator Control Type, Slider Control Type, Spinner Control Type, SplitButton Control Type, StatusBar Control Type, Tab Control Type, TabItem Control Type, Table Control Type, Text Control Type, Thumb Control Type, TitleBar Control Type, ToolBar Control Type, ToolTip Control Type, Tree Control Type, TreeItem Control Type, Window Control Type or any combination thereof. 
         [0021]    It is an object of the present invention to disclose a modified method, wherein the method further comprising step of providing the system with a user interface on EUC and instructions in memory of server for obtaining user feedback, and further displaying to human user results of automatic OM identification produced by server and receiving corrections from said user, wherein said corrections are fed back to the server to improve library of previously stored OMs and possibly also to change stored instructions for class and title identification and matching with OM library. 
         [0022]    It is an object of the present invention to disclose a modified method, wherein the method further comprising step of providing in information stored on server a database of organizational structure, including departmental affiliation and professional roles of owners of individual EUCs (users), wherein said information is used for extracting a plurality of OM usage statistics comprising OM usage time averages per individual user, per department, per role. 
         [0023]    It is an object of the present invention to disclose a modified method, wherein the listener captures and transmits to server information further comprising error information provided by EUC for errors encountered while attempting to run and errors captured during successful runs of individual OMs, and further wherein server also extracts OM error statistics. 
         [0024]    It is an object of the present invention to disclose a method, especially adapted for interpreting object usage on a Microsoft Windows platform, wherein said listener is used for retrieving data on the user&#39;s object usage from windows system-call, dll-injection and system events. 
         [0025]    It is an object of the present invention to disclose a modified method, wherein the method further comprising step of retrieving data on user&#39;s usage of objects consisting of web-based documents is retrieved by said listener via a Browser Helper Object (BHO) module. 
         [0026]    It is an object of the present invention to disclose a method, wherein data on user&#39;s object usage of Java-based programs is identified using inner java-mechanics. 
         [0027]    A further embodiment of the present invention is a method, wherein data on user&#39;s object usage is identified based on User-Interface-Automation technique. 
         [0028]    It is an object of the present invention to disclose a method, wherein discovery of OMs is achieved via “class”-dependent heuristics. 
         [0029]    It is an object of the present invention to disclose a method, wherein discovery of OMs is achieved via heuristics based on statistics for overall matching percentages (for example, percentage of data left unmatched, number of models, percentage of data each model matches). 
         [0030]    It is an object of the present invention to disclose a modified method, wherein the method further comprising step of providing a cloud server enabling EUC to store data and perform computations on cloud server, wherein listener module further capturing data and instructions transmitted between computer and cloud server, useful for identifying objects running on cloud. 
         [0031]    It is an object of the present invention to disclose a modified method, wherein the method further comprising step of identifying class and title information of objects consisting of HTML, XHTML or XML documents of type is achieved using the document object model (DOM) structure. 
         [0032]    It is an object of the present invention to disclose a method, wherein DOM model is specified by the World Wide Web Consortium (W3C) DOM standard. 
         [0033]    It is an object of the present invention to disclose a method, wherein a listener is provided on each EUC by downloading from global communications network a computer program (installer) adapted for installing said listener on said EUC. 
         [0034]    It is an object of the present invention to disclose a method for extracting software usage and error statistics, comprising providing a means for monitoring and automatically identifying object (SO) usage by EUC users, and further monitoring error messages related to said objects; providing a database of organizational structure, including departmental affiliation and professional roles of owners of individual EUCs (users); combining said identified object usage and error data into usage statistics, comprising: the length of time it takes to open client documents and programs; the number of errors during each process; the rates at which various document types and programs are aborted; the attribution of abort to triggering by another process; partial statistics by department and roll. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0035]    The structure, operation and advantages of the presently preferred embodiment of this invention will become further apparent upon consideration of the following description, taken in conjunction with the accompanying drawings, wherein: 
           [0036]      FIGS. 1 and 2  are schematic diagrams illustrating two embodiments of a system for automated data measurement and analysis. 
           [0037]      FIG. 3  is a flowchart illustrating a method for using the system according to the present invention. 
           [0038]      FIGS. 4 and 5  are schematic diagrams of automatic object discovery and matching, respectively, which may be applied of various types of raw hierarchical data. 
           [0039]      FIG. 6   a  is a schematic diagram illustrating several levels of hierarchical data class and values. 
           [0040]      FIG. 6   b  is a schematic diagram illustrating a possible Object Model (SM) corresponding to an instance of object raw data. 
           [0041]      FIG. 7  is a schematic diagram illustrating a second embodiment of a method for using the system according to the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0042]    One straightforward approach to monitoring actual usage of a product by end users would be to store frequent objectshots of the end users&#39; computers, and then go over them manually for interpretation and analysis. In practice, such a procedure would result in prohibitively large amounts of raw data and consequently tedious or even impracticable manual processing. 
         [0043]    The present invention provides a means for automatically reducing the heaps of raw data into more manageable higher level information. For example, a objectshot containing several windows each displaying a word processing document is automatically summarized by a list of “objects” of class “MS Word document” together with their individual titles, status (e.g., ‘running’, ‘not responding’, error messages), and temporal information (such as the time the document was opened). Once such higher level information from several users is available, automated analysis of usage statistics is carried out, along with error analysis including whether errors were triggered by another program. It is herein acknowledged that the present invention monitors actual usage of objects including objects of the following types; screen types, Button Control Type, Calendar Control Type, CheckBox Control Type, ComboBox Control Type, DataGrid Control Type, Data Item Control Type, Document Control Type, Edit Control Type, Group Control Type, Header Control Type, HeaderItem Control Type, Hyperlink Control Type, Image Control Type, List Control Type, ListItem Control Type, Menu Control Type, MenuBar Control Type, Menu Item Control Type, Pane Control Type, ProgressBar Control Type, RadioButton Control Type, ScrollBar Control Type, Separator Control Type, Slider Control Type, Spinner Control Type, SplitButton Control Type, StatusBar Control Type, Tab Control Type, TabItem Control Type, Table Control Type, Text Control Type, Thumb Control Type, TitleBar Control Type, ToolBar Control Type, ToolTip Control Type, Tree Control Type, TreeItem Control Type, Window Control Type or any combination thereof. 
         [0044]    The collection of data may be from different sources. Some of these sources can be log files from applications or operating systems. Some Microsoft control types are extracted using UI automation. 
         [0045]    Microsoft UI Automation is an accessibility framework for Windows. It provides programmatic access to most UI elements on the desktop. It enables assistive technology products, such as screen readers, to provide information about the UI to end users and to manipulate the UI by means other than standard input. UI Automation also allows automated test scripts to interact with the UI. 
         [0046]    The goal of measuring and analyzing the data (the Discovery data flow,  FIG. 4 ) is to create models for objects, which will be used later to create “instances” of the models (the Matching Data Flow,  FIG. 5 ), in order to gather information regarding the object (For example: how much time did the user spend on it). 
         [0047]    Raw Hierarchical Data 
         [0048]    Raw hierarchical data refers to data that can be represented in some hierarchy conforming to a particular data structure. For example (see  FIG. 6   a ), a specific element in a DOM tree is a hierarchical datum, since we can trace its parents&#39; elements up to the DOM tree&#39;s root (“body” element). Another data hierarchy can be achieved by any object the user interacts with on the computer&#39;s user interface (UI). Each level in data hierarchy has a “class” and “value”, either can be constructed from one or more data types. For example, a button in a DOM document has a class that&#39;s composed of tag (“Button”), id (“button1”) and a value with is simply text (“OK”). 
         [0049]    Data Capture 
         [0050]    A possible embodiment of the present invention can use various different techniques to receive the corresponding types of raw (hierarchical) data. 
         [0051]    For Windows-based programs, use is made of windows system-call, dll-injection and system events to retrieve the data. For Web-based programs, a Browser Helper Object (BHO) technique is used. For Java-based programs, inner java-mechanics are employed. 
         [0052]    Another embodiment employs a generic data collector, based on User-Interface-Automation application programming interface. 
         [0053]    Object Models 
         [0054]    The output of the data analysis is collection of object models (SM). OM are similar to the hierarchical data, only that the class/value pairs are represented by regular expressions (and not strings), and each OM has a unique-id. The goal of the OM is to have a generic template, so that when we encounter an hierarchical data, we can try and “match” it to the model, and if there is a match, return the unique-id. 
         [0055]    For example,  FIG. 6   b  displays an OM that representing a word document (inferred from the above example and  FIG. 6   a ). 
         [0056]    Note that the OM is indifferent to the lower levels (hence, it does not matter whether the lower level is a button or a list), and on the highest level, it is indifferent to the document&#39;s title (thus will match for both values “Word Document—Timest” and “Word Document—Chocolate cake recipe”). 
         [0057]    Data Analysis 
         [0058]    In the preferred embodiment of the present invention, in order to extract object models from the raw hierarchical data, the following are used: “class”-dependent heuristics; Statistics for overall matching percentages (how much data is left unmatched? how many models we have? how much data each model matches? etc.); Statistics for extracting correct regular expressions for “values” at specific level, and in relation with other level. 
         [0059]    Example ( FIG. 1 ): The following example is a preferred embodiment of the present invention. A system comprising a number of computers (PCs) running on the MS Windows operating system and connected to the Internet, each provided with listener software; a dedicated remote computer, running on Microsoft Server operating system and connected to the Internet; an RSA based cryptographic software on PCs and server providing a secure channel of communications over the Internet. The server is provided with a memory device storing an updatable library of object models (SMs) and a log of OM Instances. 
         [0060]    An exemplary method disclosed and enabled by the present invention is as follows ( FIG. 7 ): The listener software on each PC retrieves data on usage of Windows based programs using Windows system calls, DLL injection and system events (capture raw object data pertaining to Windows based programs) ( 700   a ); additionally, the listener uses a Browser Helper Object (BHO) plugin to access Document Object Model (DOM) of web pages in use (capture raw object data pertaining to Internet web pages) ( 700   b ); data on Java applets is captured using the Java software platform (capture raw object data pertaining to Java applets) ( 700   c ); further the Microsoft User Interface Automation is used to collect information about user interface elements (capture generic raw object data) ( 700   d ). The listener program on each PC transmits said captured data to server via the secure channel. On the server, a program analyzes the captured raw data for information pertaining to the class and value of objects (identify class- and title-relevant information,  701 ), and creates for each object a candidate object model (SM) (create OM candidates,  702 ). The program then further compares the candidate OMs with OMs in said library (compare OM candidates to library and check for equivalence to OMs therein,  703 ), and stores object title, best fitting OM and time stamp in instance log ( 705 ). For objects lacking any matching OMs, the candidate OM is promoted to OM status by adding it to the library ( 706 ), and the match to new OM is recorded in log together with time stamp ( 705 ). The program periodically, and also upon request, produces a statistical summary of log.