Abstract:
An embodiment generally relates to a method of software support. The method includes receiving a request for assistance for a selected device and analyzing an associated fault log for the selected device, where the associated fault log logging at least one fault. The method also includes determining at least one software release for the at least one fault.

Description:
FIELD 
       [0001]    This invention relates generally to customer support, more particularly, to methods and systems for automatic customer support notification of applicable software releases based on fault analysis. 
       DESCRIPTION OF THE RELATED ART 
       [0002]    Manufacturers (or developers, suppliers, etc.) of devices such as network printers, copiers, software systems, etc. may be required to provide a customer support team for the users of the devices. A typical user may invest a large sum of money into the device for many years of use from the device. Sometimes, a user may pay additional sums of money for a service contract expecting the manufacturer to keep their respective devices current and functioning. 
         [0003]    The manufacturer may also have a product development team (or group, division or the like) to develop new products as well to maintain existing product lines. The product development team may release software updates that correct known problems as well as the addition of new features. 
         [0004]    However, the customer support team may struggle with how to get the most pertinent information and/or software from the product development team, especially, if there are multiple releases available. This may be a function of schedules of the two groups, a cultural artifact of the manufacturer, or other similar reason. For example, the product development team may deliver software updates quarterly to support users but may not forward the list of supported users and associated releases to the customer support team for another six months. As a result, the customer support team may not be familiar with newer software updates that correct existing problems. Accordingly, there is a need for a method and system for updating the customer support team with the latest software releases. 
       SUMMARY 
       [0005]    An embodiment generally relates to a method of software support. The method includes receiving a request for assistance for a selected device and analyzing an associated fault log for the selected device, where the associated fault log logging at least one fault. The method also includes determining at least one software release for the at least one fault. 
         [0006]    Another embodiment generally pertains to a system for customer support. The system includes a database configured to store information associating a plurality of software releases with respective faults and an advisor module configured to interface with the database. The advisor module is configured to receive a fault log from a selected device, where the fault log containing at least one fault. The advisor module is also configured to determine a recommended software release based on the at least one fault. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    Various features of the embodiments can be more fully appreciated, as the same become better understood with reference to the following detailed description of the embodiments when considered in connection with the accompanying figures, in which: 
           [0008]      FIG. 1  illustrates an exemplary system in accordance with an embodiment; 
           [0009]      FIG. 2  illustrates a more detailed diagram of a device in accordance with another embodiment; 
           [0010]      FIG. 3  illustrates view of a software advisor module in accordance with another embodiment; 
           [0011]      FIG. 4  illustrates an exemplary database schema implemented by the software advisor module in accordance with yet another embodiment; 
           [0012]      FIG. 5  illustrates an exemplary flow diagram implemented by the software advisor module in accordance with yet another embodiment; 
           [0013]      FIG. 6  illustrates another exemplary flow diagram implemented by the software advisor module in accordance with yet another embodiment; 
           [0014]      FIG. 7  illustrates an exemplary user interface in accordance with yet another embodiment; and 
           [0015]      FIG. 8  illustrates an exemplary computing platform for executing the software advisor module. 
       
    
    
     DETAILED DESCRIPTION OF EMBODIMENTS 
       [0016]    For simplicity and illustrative purposes, the principles of the present invention are described by referring mainly to exemplary embodiments thereof. However, one of ordinary skill in the art would readily recognize that the same principles are equally applicable to, and can be implemented in, all types of network systems that execute multiple applications, and that any such variations do not depart from the true spirit and scope of the present invention. Moreover, in the following detailed description, references are made to the accompanying figures, which illustrate specific embodiments. Electrical, mechanical, logical and structural changes may be made to the embodiments without departing from the spirit and scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense and the scope of the present invention is defined by the appended claims and their equivalents. 
         [0017]    Embodiments generally relate to methods and systems for assisting customer support teams. More particularly, a software advisor may be configured to receive fault logs from devices. The devices may be copiers, scanners, printers, multi-functional devices and the like. The devices may be networked to the software advisor through private data networks, public data networks and/or combinations thereof to receive the fault logs of the supported devices. The software advisor may also be configured to store information related to software release and associated faults. For example, a 3.1 software release for a network color scanner model number X123 may correct a single or a small number of faults related to color mapping. 
         [0018]    Accordingly, when a customer support team member answers a call from a supported user of a malfunctioning device, the team member may access the software advisor module. The software advisor module may have already received fault log from the defective machine. Alternatively, the software advisor module may query the defective machine for the fault log. The software advisor module may then analyze the received fault log and associated software releases for the recorded faults. 
         [0019]      FIG. 1  illustrates an exemplary system  100  in accordance with an embodiment. It should be readily apparent to those of ordinary skill in the art that the system  100  depicted in  FIG. 1  represents a generalized schematic illustration and that other components may be added or existing components may be removed or modified. Moreover, the system  100  may be implemented using software components, hardware components, or combinations thereof. 
         [0020]    As shown in  FIG. 1 , the system  100  includes a plurality of entities  105  connected with a manufacturer/developer/supplier entity (“supplier”)  110  via the Internet  115 . Each entity  105  may be a business entity, academic institution or other similar entity. Each entity  105  may include multiple devices  120  interconnected by a private data network  125 . 
         [0021]    Each device  120  may be accessed and managed by a server (not shown) of an entity using Simple Network Management Protocols (“SNMP”), HyperText Transfer Protocols (“HTTP”) protocols or a combination thereof over the respective private data network  125 . The device  120  may be an imaging device such as a printer, copier, scanner, etc., a software system such as middleware, accounting software, etc., or application/device produced and supported by the supplier  110 .  FIG. 2  illustrates an exemplary block diagram of the device  120  in accordance with another embodiment. 
         [0022]    As shown in  FIG. 2 , each device  120  may include a processor  205 , a device interface  210 , a memory  215  and a bus  220 . The processor  205  may be configured to execute a computer program embodiment of the functionality of the device  120 . The processor  205  may retrieve the computer program from the memory  215  over the bus  220  during boot-up. The processor  205  may control and manage the device  105  through the device interface  210 . The device  120  may be a copier, printer, scanner, or other similar imaging device. 
         [0023]    The processor  205  may also interface with a maintenance agent or applet  225 . The maintenance agent  225  may be configured to log or record faults that occur during the operation of the device  120  in the memory  215  as a fault log. The maintenance agent  225  may also be configured to periodically forward the fault log to the supplier of the device  120  (e.g. supplier  110 ) through the network interface  230 . The fault log may contain information such as the error code of a fault, the time of occurrence, the serial number of the device  120 , current software version of the device, etc. Alternatively, the supplier  110  may query the maintenance agent  225  for the fault log using SNMP commands, HTTP commands or combinations thereof to retrieve the fault log. 
         [0024]    Returning to  FIG. 1 , the devices  120  may provide their respective fault logs to the supplier  110  through their respective network interfaces  230 . The private data networks  125  may connect to a supplier network  130  via the Internet  115 . The supplier network  130  may be configured to interconnect at least one product development client  135 , at least one customer support client  140 , and the customer support server  145 . The supplier network  130  may be implemented as a local area network using network protocols such as Ethernet, FDDI, token ring, or other similar network protocols. 
         [0025]    The product development client  135  may be configured to provide a computing platform where product development team members develop solutions for existing faults with currently released software and/or products as well as develop new software and/or products. One of the product development clients  135  may be configured to send a software release update to the customer support server  145 . The software release update may contain information such as a tracking number (e.g., version number), device, application notes, i.e., what faults are corrected by the software release when a software release is about to be released to the users. 
         [0026]    The customer support client  140  may be configured to provide a computing platform to assist customer support team members to assist supported users with faults, questions or issues. More specifically, the customer support client  140  may, among other things, execute a client version of a software advisor module  150 . The software advisor module  150  may be configured to provide an interface to the server software advisor  155 . The server software advisor  155  may be configured to analyze a fault log of a selected device and automatically determine the appropriate software releases based on the faults in the fault log. 
         [0027]    The customer support server  145  may be configured to provide services to the customer support clients  140 . The services may include applications needed by the customer support team members, data, etc. The customer support server  145  may also execute an instance of a server software advisor  155 , as illustrated in  FIG. 3 . 
         [0028]      FIG. 3  illustrates a more detailed diagram of the server software advisor  155  in accordance with yet another embodiment. It should be readily apparent to those of ordinary skill in the art that the server software advisor  155  depicted in  FIG. 3  represents a generalized schematic illustration and that other components may be added or existing components may be removed or modified. 
         [0029]    As shown in  FIG. 3 , the server software advisor  155  may include a database  305 . The database  305  may store, among other things, information related to software releases. More particularly, a selected software release may be associated with a device (or a family of devices), an operating system, a version of the basic input/output system (“BIOS”), a date, list of faults that are corrected, a list of new features, or other similar information. Collectively, this information may be aggregated as the software release data  315  in these embodiments. The software release data  315  may be provided by member(s) of the product develop team. 
         [0030]    The database  305  may also be configured to receive queries from the customer support clients  140 . More particularly, a supported user may call the customer support team member at a customer support client  140 . The customer support team member may assist the supported user, among other things, to resolve any errors or defaults the supported user may have received. The customer support team member may retrieve a fault log from the selected device or from the database  305 , which may receive and store periodic fault logs from supported devices  120 . Accordingly, a database engine (not shown) may generate an analysis result  320  based on the fault log  310  input. The analysis result  320  may provide a listing of any relevant software releases associated with the faults listed in the fault log  310 . Thus, the customer support team member may assist the user by ensuring that the user has the latest updated software. 
         [0031]      FIG. 4  illustrates a database schema  400  that may be implemented by the database  305  in accordance with yet another embodiment. It should be readily apparent to those of ordinary skill in the art that the database schema  400  depicted in  FIG. 4  represents a generalized illustration and that other elements may be added or existing elements may be removed or modified. 
         [0032]    As shown in  FIG. 4 , database schema  400  may include record  405  with the data elements of device  410 , a fault code  415 , and a release version  420 . Other data elements may also include version of BIOS, date of the release, etc. The device  410  represents the model number of a device targeted by a software release. The fault code  415  represents the error or failure that the software release is correcting. The release version  420  represents the version of the software. Records  420 ,  425 , and  430  represent instances of records in the database schema  400 . 
         [0033]      FIG. 5  illustrates a flow diagram  500  implemented by the system  100  in accordance with yet another embodiment. It should be readily apparent to those of ordinary skill in the art that the flow diagram  500  depicted in  FIG. 5  represents a generalized schematic illustration and that other steps may be added or existing steps may be removed or modified. 
         [0034]    As shown in  FIG. 5 , the database  305  may be configured to receive an update (e.g., a software release data  315 ) from a product team development member, in step  505 . The software release data  315  may be in a predetermined format that includes information such as the model number of the device(s) targeted by the software, the release or version number, and a name of the software release. In step  510 , a database engine may be configured to update the database schema  400  with the information from the received software release data  315 . 
         [0035]      FIG. 6  illustrates a flow diagram  600  implemented by the server software advisor  155  in accordance with yet another embodiment. It should be readily apparent to those of ordinary skill in the art that the flow diagram  600  depicted in  FIG. 6  represents a generalized schematic illustration and that other steps may be added or existing steps may be removed or modified. 
         [0036]    As shown in  FIG. 6 , a customer support team member may receive a help message from a supported user that a device  105  may be malfunctioning, in step  605 . More specifically, the message may be in a form of a telephone call or an electronic mail message. 
         [0037]    In step  610 , the customer support team member may retrieve the fault log for the selected device  105 . In some embodiments, the customer support team member may query the selected device  105  for the recent fault log using SNMP or HTTP protocols. Alternatively, the selected device  105  may periodically transmit its fault log to the database  305 . Accordingly, the customer support team member may receive the fault log from the database  305 . 
         [0038]    In step  615 , the customer support team member may formulate a query with the data from the fault log and submit to the server software advisor  155 . The server software advisor  155  may then analyze the inputted faults with the faults stored in the database  305 , in step  620 . 
         [0039]    In step  625 , the server software advisor  155  may output a result showing any relevant software releases for the inputted faults. More specifically, the server software advisor  155  may generate a user interface at a customer support client  140  that displays this information as shown in  FIG. 7 . As shown in  FIG. 7 , user interface  700  shows the applicable device model field  705 , a fault code field  710  and an applicable software release field  715 . The fault code field  710  may indicate the fault code generated by the device  120 . The applicable software release field  715  indicates a software release written for the fault code listed in fault code field  710 . The listing of the software release in the applicable software release field  715  may be hypertext link to a location where a copy of the named software is stored. The customer support team member may transfer a copy of the named software to the user or install the named software. If there is not an applicable software release, the applicable software release field  715  may be left blank or a message such as “N/A”. 
         [0040]      FIG. 8  illustrates an exemplary block diagram of a computing platform  800  where an embodiment may be practiced. The functions of the server software advisor, customer support client, and product development client may be implemented in program code and executed by the computing platform  800 . The server software advisor, customer support client, and product development client may be implemented in computer languages such as PASCAL, C, C++, JAVA, etc. 
         [0041]    As shown in  FIG. 8 , the computer system  800  includes one or more processors, such as processor  802  that provide an execution platform for embodiments of the server software advisor, customer support client, and product development client. Commands and data from the processor  802  are communicated over a communication bus  804 . The computer system  800  also includes a main memory  806 , such as a Random Access Memory (RAM), where the server software advisor, customer support client, and product development client may be executed during runtime, and a secondary memory  808 . The secondary memory  808  includes, for example, a hard disk drive  810  and/or a removable storage drive  812 , representing a floppy diskette drive, a magnetic tape drive, a compact disk drive, etc., where a copy of a computer program embodiment for the server software advisor, customer support client, and product development client may be stored. The removable storage drive  812  reads from and/or writes to a removable storage unit  814  in a well-known manner. A user interfaces with the server software advisor, customer support client, and product development client with a keyboard  816 , a mouse  818 , and a display  820 . The display adapter  822  interfaces with the communication bus  804  and the display  820 , which receives display data from the processor  802  and converts the display data into display commands for the display  820 . 
         [0042]    Certain embodiments may be performed as a computer program. The computer program may exist in a variety of forms both active and inactive. For example, the computer program can exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats; firmware program(s); or hardware description language (HDL) files. Any of the above can be embodied on a computer readable medium, which include storage devices and signals, in compressed or uncompressed form. Exemplary computer readable storage devices include conventional computer system RAM (random access memory), ROM (read-only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes. Exemplary computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running the present invention can be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of executable software program(s) of the computer program on a CD-ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general. 
         [0043]    While the invention has been described with reference to the exemplary embodiments thereof, those skilled in the art will be able to make various modifications to the described embodiments without departing from the true spirit and scope. The terms and descriptions used herein are set forth by way of illustration only and are not meant as limitations. In particular, although the method has been described by examples, the steps of the method may be performed in a different order than illustrated or simultaneously. Those skilled in the art will recognize that these and other variations are possible within the spirit and scope as defined in the following claims and their equivalents.