Embodiments of the present invention generally relate to computer resource management and, more particularly, to a method and apparatus for remotely managing a resource at a computer.
Today, a computer has become a basic necessity, and used in all aspects of modern life, for example, electronic communication, business applications, and the like. Such applications are facilitated by software packages developed for storage and execution on the computer.
For a user to operate a software package, the user needs to acquire and install the software package as well as acquire a license to use the software package. The software package may be downloaded or purchased on a medium (e.g., CD, DVD, and the like). The software package is usually associated with a software serial number assigned by the software vendor/owner. Typically, a license (e.g., an agreement to use the software package) is purchased and executed (signed or otherwise acknowledged accepted of the license terms).
Most users are not familiar with the installation process, configuration and license management of various software packages. As a result, users may fail to renew the licenses before such licenses expire. Without a current license, the user is not provided with software updates. Without such updates, the software package may not function properly. To receive assistance with license and update management, software producers send reminder mail and/or email, push updates to the user, provide help desks and so on. All such techniques require time-consuming and error-prone interaction with users.
Accordingly, there is a need in the art for a method and apparatus for remotely managing a resource at a computer such that software acquisition, licensing, installation and the like are performed by a remote delegate.
Embodiments of the present invention comprise a method and apparatus for remote administration of a client computer. In one embodiment, a method comprising evaluating information identifying software packages resident in a client computer and licenses associated with the software packages. A remote delegate enables use of a resource at the client computer based on the information gathered from the client computer.
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
The network 110 comprises a communication system that connects a computer system by wire, cable, fiber optic and/or wireless link facilitated by various types of well-known network elements, such as hubs, switches, routers, and the like. The network 110 may employ various well-known protocols to communicate information amongst the network resources. For example, the network 110 may be a part of the internet or intranet using various communications infrastructure such as Ethernet, WiFi, WiMax, General Packet Radio Service (GPRS), and the like.
In one embodiment, the first server 106 is a web server for a community management web site, as described below. In another embodiment, the system 100 comprises a software purchasing server and a software management server instead of the second server 108, as described below. For the purpose of simplicity, the software management server and the software purchasing server are combined to form the second server 108 in the following description.
The client computer 102 is any form of computing device. The client computer 102 comprises a central processing unit (CPU) 112, various support circuits 114, and a memory 116. The CPU 112 may comprise one or more commercially available microprocessors or microcontrollers that facilitate data processing and storage. The various support circuits 114 facilitate the operation of the CPU 112 and comprise at least one of clock circuits, power supplies, cache, input/output circuits, and the like. The memory 116 comprises at least one of read only memory (ROM), random access memory (RAM), disk drive storage, optical storage, removable storage, and the like. The memory 116 includes an agent 136 and various resources 137
The term “resource”, as used herein, refers to any physical or virtual component of availability within a computer system. Every computing entity connected to a computer system is, potentially, a resource. Every internal system component is a resource. Every software package stored in a memory is a resource. Resources also include files, virtual block devices, network connections, applications, processes, memory areas and the like. In its broadest sense, a resource is a component (whether physical or virtual) that facilitates the operation of the computing system for its intended purpose.
The first server 106 comprises a central processing unit (CPU) 124, support circuits 126 and a memory 128. The CPU 124 may comprise one or more commercially available microprocessors or microcontrollers that facilitate data processing and storage. The various support circuits 126 facilitate operation of the CPU 124 and comprise at least one of clock circuits, power supplies, cache, input/output circuits, and the like. The memory 128 comprises at least one of read only memory (ROM), random access memory (RAM), disk drive storage, optical storage, removable storage, and the like. The memory 128 includes various data such as remote administration information 140.
In one or more embodiments, the first server 106 may be a web server that hosts the community management web site. The community management web site installs the client agent 136 on the client computer 102. The community management web site also allows the user to designate and authorize the remote delegate 104 to acquire resources, such as software packages and licenses, on behalf of the user of the client computer 102. In one embodiment, the user may authorize the remote delegate 104 to manage installation of any of the acquired resources (e.g., software packages). The community management web site maintains the remote administration information 140, which specifies the remote delegate is responsible for remotely administrating a particular client computer. For example, the remote administration information 140 indicates that the remote delegate 104 is responsible for remotely managing the various resources 137 (e.g., software applications) at the client computer 102. Alternatively, the user searches a plurality of remote delegates using the community management web site, selects the remote delegate 104 and stores the selection in the remote administration information 140.
The database 107 comprises a structured collection of various information, such as agent generated information 146. The database 107 is configured to receive and store the agent generated information 146 from the agent 136, as explained below. The database 107 is further configured to enable search and retrieval of the agent generated information 146 for the remote delegate 104, the first server 106 and/or the second server 108.
The remote delegate 104 is a computing device comprising a central processing unit (CPU) 118, various support circuits 120, and a memory 122. The CPU 118 may comprise one or more commercially available microprocessors or microcontrollers that facilitate data processing and storage. The various support circuits 120 facilitate operation of the CPU 118 and comprise at least one of clock circuits, power supplies, cache, input/output circuits, and the like. The memory 122 comprises at least one of read only memory (ROM), random access memory (RAM), disk drive storage, optical storage, removable storage, and the like. The memory 122 includes various software packages, such as a control module 138.
The second server 108 comprises a central processing unit (CPU) 130, various support circuits 132, and a memory 134. The CPU 130 may comprise one or more commercially available microprocessors or microcontrollers that facilitate data processing and storage. The various support circuits 132 facilitate operation of the CPU 130 and comprise at least one of clock circuits, power supplies, cache, input/output circuits, and the like. The memory 134 comprises at least one of read only memory (ROM), random access memory (RAM), disk drive storage, optical storage, removable storage, and the like. The memory 134 includes a software library 142. The memory 134 includes various information, such as license information 144.
The software library 142 comprises a plurality of software packages available for acquisition by the user of the client computer 102. The license information 144 indicates one or more licenses associated with each of the plurality of software packages that are available for acquisition by the user of the client computer 102. The license information 144 may be in a form of a table that reflects that the client computer 102 acquired one or more licenses associated with a particular software package.
The term “license”, as used herein, refers to an agreement to use the software package. A license may be executed between the second server 108 and the remote delegate 104 on behalf of the user of the client computer 102. The license defines the terms (e.g., price, duration, scope of use and the like) under which the user may utilize the software package. The license is indexed according to a software serial number generated by a software vendor. Generally software licenses are not “physically” communicated to the user because they are, essentially, intangible rights to use the software package. Occasionally, billing information, the software serial number and/or an activation/confirmation code may be communicated to the user.
In one or more embodiments, the second server 108 provides purchasing and licensing services to the user of the client computer 102 and the remote delegate 104. These services are associated with the software library 142 stored within the second server 108 and/or any third party software. As mentioned above, the software library 142 may be stored in a separate server (e.g., the software management server). In one embodiment, the second server 108 may notify the agent 136 of software packages and/or licenses acquired by the remote delegate 104. In one embodiment, the agent 136 automatically downloads the software packages upon the notification from the second server 108. In another embodiment, the agent 136 automatically executes or agrees to execute the licenses. Alternatively, the user may decide to decline the recommended software packages and/or licenses in which case the acquisition orchestrated by the remote delegate 104 is reversed (e.g., the user is refunded any money used to acquire the software packages and/or licenses).
In another embodiment, the second server 108 may also be a web server for a software management web site. In this embodiment, the remote delegate 104 interacts with the second server 108 through the software management web site to remotely acquire (e.g., purchase) the software packages and/or licenses on behalf of the user of the client computer 102. Furthermore, the remote delegate 104 accesses the agent generated information 146 through the software management website.
The agent 136 on the client computer 102 provides information regarding to various software packages resident on the client computer 102. The information identifies various software packages at the client computer 102 and licenses associated with the various software packages. In one embodiment, information also includes the client computer 102 resource parameters, for example, available bandwidth, storage space, processing power and the like. In another embodiment, the information also includes usage history of each of the various software packages, reported problem history from trouble tickets, cost comparison information, and the like. The information may also include version and/or expiration information associated with each of the identified software packages and licenses. The information is reported to the database 107 via the network 110, where the information is stored as the agent generated information 146. Alternatively, the information is reported to the second server (e.g., the software management website).
In operation, the remote delegate 104 controls the acquisition of one or more software packages and/or management of one or more licenses associated with the client computer 102. In one embodiment, the control module 138 accesses the agent generated information 146 stored in the database 107 and evaluates the software packages and/or licenses identified in the agent generated information 146. Based on the evaluation, the remote delegate 102 enables access to and/or use of any of the various resources 137 at the client computer 102 for the user. In another embodiment, the remote delegate 104 determines which software package and/or license to recommend to the user of the client computer 102. In yet another embodiment, the control module 138 determines which software packages are to be acquired (e.g., automatically purchased) and/or licenses are to be acquired (e.g., automatically purchased, renewed or brokered) on behalf of the user. In this embodiment, the remote delegate 104 is authorized by the user to complete the acquisition process using information associated with the user (e.g., billing information, contact/delivery information and the like). Furthermore, in other embodiments of the present invention, the remote delegate 104 may remotely control the installation process of the acquired software packages on the client computer 102 on behalf of the user. In addition, the remote delegate 104 may schedule or delay the installation process. For example, the remote delegate 104 may schedule the installation process at a time when the client computer 102 is idle and/or online. As another example, the remote delegate 104 may delay the installation process if the client computer 102 is in use and/or offline.
Optionally, the remote delegate 104 may broker a dynamic license in accordance with a desired use of any of the various resources 137 (e.g., software packages resident on the client computer or recommended for acquisition). For example, the user may wish to scan the memory 116 for viruses, but the user cannot afford the cost of purchasing an anti-virus application and a license to use the anti-virus application and/or download updates. The user, however, can afford to purchase a license to use the anti-virus application for only one scan or one day, but such a license is not available for purchase (e.g., not indicated in the license information 144). Accordingly, the remote delegate 104 negotiates the dynamic license with the second server 108 where the user can use the anti-virus application for one scan or one day.
Optionally, the remote delegate 104 may determine an appropriate acquisition method for one or more software packages at the client computer 102. For example, the remote delegate 104 may observe that the client computer 102 has a very slow internet connection (e.g., small amount of available bandwidth) from the resource parameters within the agent generated information 146. Accordingly, the user will experience an exorbitant amount of difficulty in downloading a 4 Gigabyte software package from the software library 142. In fact, such a task may take days to complete. Moreover, the unknowledgeable user may inadvertently cause disruptions in the download process. Hence, in one embodiment, the remote delegate 104 determines that mailing the 4 Gigabyte software package in the form of DVDs is more efficient and/or less prone to the problems that may befall the unknowledgeable user. Moreover, the remote delegate 104 is configured to remotely control the installation process as the user inserts each DVD. Alternatively, the second server 108 may provision the 4 Gigabyte software package on a network shared volume that the remote delegate 104 could mount.
The method 200 starts at step 202 and proceeds to step 204, at which the agent 136 is installed into the memory 116 of the client computer 102. Installation is performed by the first server 106 once the user designates the remote delegate 104 for remote administration of the client computer 102. In one embodiment, the user of the client computer 102 authorizes the remote delegate 104 to act as their remote administrator via the community management web site hosted by the first server 106.
At step 206, the agent 136 on the client computer 102 gathers the information identifying various software packages that reside in the memory 116 and/or licenses associated with the various software packages (e.g., the agent generated information 146). In one embodiment, the gathered information includes license expiration and version information associated with the identified software packages as well as various resource parameters (e.g., storage capacity, processing power, available bandwidth, and the like). At step 208, the agent 136 communicates the gathered information to the database 107. In one embodiment, the gathered information is stored as the agent generated information 146. At step 210, the gathered information is accessed. In one embodiment, the agent generated information 146 is accessed from the database 107. At step 212, the gathered information is evaluated. At step 214, use of any of the various resources 137 is enabled based on the evaluation of the agent generated information 146 as explained above. The step 214 is discussed further with respect to
At step 306, a determination is made as to whether a software package is to be purchased. If one or more software package is to be purchased (option “YES”), the method 300 proceeds to step 310 or to optional step 308. At optional step 308, the remote delegate 104 determines an acquisition method based on the agent generated information 146, as described above. At step 310, the remote delegate 104 remotely controls the installation process of the software package at the client computer 102. As mentioned above, if the remote delegate 104 determines that mailing the determined software package in the form of the DVDs is the most efficient acquisition method, the remote delegate 104 remotely controls each step of the installation process as the user inserts each DVD. If, at step 306 it is determined that software package is not to be purchased (option “NO”) then the method 300 proceeds to step 312. The method 300 ends at step 312.
At optional step 406, the remote delegate 104 creates a dynamic license based on the agent generated information 146, as explained above. At step 408, a determination is made as to whether the user desires to acquire the license. If the license is to be acquired (option “YES”) then the method 400 proceeds to step 410. At step 410, the remote delegate 104 brokers the license on behalf of the user of the client computer 102. In the case of the dynamic license, the remote delegate 104 negotiates terms suggested by the agent generated information 146 include instructions from the user at the step 410. As described above, the remote delegate 104 is authorized to complete the acquisition of the licensing (e.g., execute a license agreement) using sensitive information provided by the user (e.g., billing information, contact information and the like). If, at step 408 it is determined that the license is not to be acquired (option “NO”) then the method 400 proceeds to step 412. The method 400 ends at step 412.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
Number | Name | Date | Kind |
---|---|---|---|
5671412 | Christiano | Sep 1997 | A |
5742829 | Davis | Apr 1998 | A |
6195678 | Komuro | Feb 2001 | B1 |
6360334 | Kavanagh | Mar 2002 | B1 |
6510513 | Danieli | Jan 2003 | B1 |
6574612 | Baratti et al. | Jun 2003 | B1 |
6681323 | Fontanesi | Jan 2004 | B1 |
7065507 | Mohammed et al. | Jun 2006 | B2 |
7171662 | Misra | Jan 2007 | B1 |
7197466 | Peterson et al. | Mar 2007 | B1 |
7266731 | Ali-Santosa et al. | Sep 2007 | B2 |
7337147 | Chen et al. | Feb 2008 | B2 |
7581217 | Jhanwar | Aug 2009 | B2 |
7636693 | Faur et al. | Dec 2009 | B2 |
7752138 | Dean | Jul 2010 | B1 |
7752139 | Hu | Jul 2010 | B2 |
7797678 | Moulckers et al. | Sep 2010 | B2 |
7840490 | Sellers | Nov 2010 | B1 |
7949608 | Li | May 2011 | B2 |
8660961 | Raley et al. | Feb 2014 | B2 |
20010034712 | Colvin | Oct 2001 | A1 |
20020091645 | Tohyama | Jul 2002 | A1 |
20020107809 | Biddle et al. | Aug 2002 | A1 |
20020138441 | Lopatic | Sep 2002 | A1 |
20020161718 | Coley et al. | Oct 2002 | A1 |
20020164025 | Raiz | Nov 2002 | A1 |
20030028488 | Mohammed | Feb 2003 | A1 |
20030061136 | Inoue | Mar 2003 | A1 |
20030088516 | Remer | May 2003 | A1 |
20030126135 | Gaxiola | Jul 2003 | A1 |
20030135756 | Verma | Jul 2003 | A1 |
20030220880 | Lao et al. | Nov 2003 | A1 |
20040003269 | Waxman | Jan 2004 | A1 |
20040015857 | Cornelius et al. | Jan 2004 | A1 |
20040260748 | Springer, Sr. | Dec 2004 | A1 |
20040267590 | Clark et al. | Dec 2004 | A1 |
20050004873 | Pou et al. | Jan 2005 | A1 |
20050240985 | Alkove | Oct 2005 | A1 |
20050289072 | Sabharwal | Dec 2005 | A1 |
20060053080 | Edmonson | Mar 2006 | A1 |
20060179058 | Bram et al. | Aug 2006 | A1 |
20060265337 | Wesinger, Jr. | Nov 2006 | A1 |
20070005504 | Chen et al. | Jan 2007 | A1 |
20070066282 | Roman | Mar 2007 | A1 |
20070100768 | Boccon-Gibod et al. | May 2007 | A1 |
20070107067 | Fountian | May 2007 | A1 |
20070198427 | Vajjiravel et al. | Aug 2007 | A1 |
20070198428 | Satkunanathan et al. | Aug 2007 | A1 |
20070244823 | Motley et al. | Oct 2007 | A1 |
20080083040 | Dani | Apr 2008 | A1 |
20080162360 | Bantz | Jul 2008 | A1 |
20080215474 | Graham | Sep 2008 | A1 |
20080235141 | Hilerio | Sep 2008 | A1 |
20080256349 | Dennis et al. | Oct 2008 | A1 |
Entry |
---|
Ron White, How Computers Work, Sep. 1999, Que Corporation, Millennium Ed., p. 1-421. |
Korzeniowski, Paul. “When Licensing c/s Software, One Size does Not Fit all.” Software Magazine, vol. 14, No. 6, 1994, pp. 73-77. |