The present invention relates generally to the field of software license management, and more particularly, to techniques for managing a pay-per-use model for software licensing.
Software plays a valuable role for most business and personal users. Software has typically been licensed using a perpetual software license. With a perpetual software license, the user pays for the software once and has a license to use the entire software package. In an enterprise setting, a copy of a particular software product must typically be licensed for each user. Generally, a perpetual software license employs a uniform pricing strategy that is tailored to heavy users of the software product. Many software users, however, do not wish to pay full price for a complete software package, when they use the software infrequently or use only a subset of the available features and/or functions of the complete software package.
Software vendors can further leverage their software products by licensing the software products to those users who are interested in only a subset of the available features, but are unwilling to pay the full price to purchase the complete software package. A number of techniques have been proposed or suggested for implementing pay-per-use licensing models for software. The majority of pay-per-use licensing models are implemented in the server and are targeted to web applications/services. For example, software-as-a-service (SaaS) providers, such as Amazon.com Inc., offer pricing schemes that are based on pay-per-use models. For example, the Elastic Compute Cloud (EC2) service from Amazon allows companies to host their own software and pay for it based on the number of application-hours used. In addition, the music industry has shifted from primarily selling music in the form of complete compact disks (CDs) to primarily selling individual songs to consumers.
A need remains for methods and apparatus for managing pay-per-use licensing models that determine a licensing fee based on user consumption. Yet another need exists for methods and apparatus for managing pay-per-use licensing models that allow a user to obtain and pay for software at a more granular level than with a conventional perpetual model.
Generally, methods and apparatus are provided for managing pay-per-use licensing models that determine a licensing fee based on user consumption. According to one aspect of the invention, a client-side method is provided for monitoring usage of a portion of a software application by a user, by monitoring actions of the user at an image level; determining if one or more predefined user actions are detected, wherein the predefined user actions comprise usage of a function of the software application; and providing a notification of the predefined user actions to a mediation server for payment processing. The notifications are optionally performed periodically for a plurality of the notifications. Execution of the software application can optionally be suspended if payment is not made for the usage, or if the notification is not received by the mediation server.
In one implementation, a centralized mediation server determines a license fee for the predefined user actions. The determined license fee can be based, for example, on an amount of use and/or an identifier of the function associated with a given predefined user action. The mediation server can determine the payment based on software usage agreements for monitored software applications and/or usage reports. The software usage agreements can comprise, for example, policies and rules for specifying a payment amount for the functions of a given software application.
The user actions can be monitored, for example, by sampling user interface interactions of the user with the software application. For example, one or more of menu selections, mouse button selections, mouse button click operations, additional user interface widgets and short cut keystrokes can be monitored. In addition, an image in a vicinity of the user action can be sampled and matched to determine a type of selection and instance of the selection. In one exemplary implementation, the sampling is performed by a Screen Scraping tool or a user interface widget.
Amore complete understanding of the present invention, as well as further features and advantages of the present invention, will be obtained by reference to the following detailed description and drawings.
The present invention provides methods and apparatus for managing pay-per-use licensing models for software. The disclosed pay-per-use license management system determines a licensing fee based on user consumption. According to one aspect of the invention, a monitoring and metering application monitors the use of the software on the client machine and sends a usage report to a Payment Mediator executing on a server or in a compute cloud. The Payment Mediator charges the end-user based on rules in a software usage agreement, which can vary for each software product. In this manner, rules can be established to charge the end-user for a feature the first time the user uses the feature, the nth time the user uses the feature, or charge a rate based on how often a given feature or feature set is used by the user. Among other benefits, no changes are required to software application. Rather, payment terms are completely enforced by one or more monitoring and metering applications that are independent of the software application.
In one exemplary implementation, software vendors can specify payment terms in XML or another uniform format. In this manner, the payment terms can optionally be displayed to the user in a uniform fashion for all software by the disclosed monitoring/metering application. The usage reports generated in accordance with the present invention can optionally be provided to both the software users and software vendors.
According to one aspect of the invention, a client-side monitoring program 200, as discussed further below in conjunction with
If it is determined during step 220 that a predefined user action is not detected, then program control returns to step 210. If, however, it is determined during step 220 that a predefined user action is detected, then the usage capturer 140 captures the user's actions at an image level during step 230. The user's actions can be captured, for example, via a Screen Scraping tool, using, for example, the techniques described in United States Patent Application Publication Nos. 2008/0001959 and 2009/0273597, each incorporated by reference herein. The Screen Scraping tool can capture, for example, an indication of the menu selection or button the user clicks, or the keystrokes command shortcuts for the function) the user enters through Operating System (OS) events. The use of an independent tool to capture the user's actions allows the present invention to be implemented without significant changes, if any, to the software applications 120. In a further variation, the user's actions can be obtained from a user interface widget that is instrumented to report when the widget is used. This instrumentation can be done once at the operating system level (for example, within the Windows Software Development Kit (SDK)) and then utilized by any application 120 using that SDK. A usage record 300, as discussed further below in conjunction with
As shown in
It is noted that the usage records 300 sent during step 260 can optionally be accumulated over time and sent to the mediator 150 in a batch. Thus, even if the user device 110 is offline, the user can still be allowed to use the software application 120.
Once the user has reached a predefined limit, such as a maximum time period or a number of usage actions, the connection broker 130 will be required to contact the mediator 400 to ensure continued access to the software application 120.
As previously indicated, the connection broker 130 in the user device 110 sends usage records 300 to the centralized mediator 400 for further processing.
It is noted that the software usage agreement 500 for a given monitored application 120 can optionally be stored at the user device 110, in addition to the mediator 400. The client-side software usage agreement 500 allows the usage capturer 140 of the user device 110 to filter the usage actions that are recorded in the usage records 300, for example, to only transmit to the mediator 400 those actions that correspond to functions that will trigger a charge.
Exemplary System and Article of Manufacture Details
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.
One or more embodiments of the invention, or elements thereof, can be implemented in the form of an apparatus including a memory and at least one processor that is coupled to the memory and operative to perform exemplary method steps.
One or more embodiments can make use of software running on a general purpose computer or workstation.
Analog-to-digital converter(s) 720 may be provided to receive analog input, such as analog video feed, and to digitize same. Such converter(s) may be interconnected with system bus 710.
Accordingly, computer software including instructions or code for performing the methodologies of the invention, as described herein, may be stored in one or more of the associated memory devices (for example, ROM, fixed or removable memory) and, when ready to be utilized, loaded in part or in whole (for example, into RAM) and implemented by a CPU. Such software could include, but is not limited to, firmware, resident software, microcode, and the like.
A data processing system suitable for storing and/or executing program code will include at least one processor 702 coupled directly or indirectly to memory elements 704 through a system bus 710. The memory elements can include local memory employed during actual implementation of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during implementation.
Input/output or I/O devices (including but not limited to keyboards 708, displays 706, pointing devices, and the like) can be coupled to the system either directly (such as via bus 710) or through intervening I/O controllers (omitted for clarity).
Network adapters such as network interface 714 may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
As used herein, including the claims, a “server” includes a physical data processing system (for example, system 712 as shown in
As noted, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. Media block 718 is a non-limiting example. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the FIGS. illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
Method steps described herein may be tied, for example, to a general purpose computer programmed to carry out such steps, or to hardware for carrying out such steps, as described herein. Further, method steps described herein, including, for example, obtaining data streams and encoding the streams, may also be tied to physical sensors, such as cameras or microphones, from whence the data streams are obtained.
It should be noted that any of the methods described herein can include an additional step of providing a system comprising distinct software modules embodied on a computer readable storage medium. The method steps can then be carried out using the distinct software modules and/or sub-modules of the system, as described above, executing on one or more hardware processors 702. In some cases, specialized hardware may be employed to implement one or more of the functions described here. Further, a computer program product can include a computer-readable storage medium with code adapted to be implemented to carry out one or more method steps described herein, including the provision of the system with the distinct software modules.
In any case, it should be understood that the components illustrated herein may be implemented in various forms of hardware, software, or combinations thereof; for example, application specific integrated circuit(s) (ASICS), functional circuitry, one or more appropriately programmed general purpose digital computers with associated memory, and the like. Given the teachings of the invention provided herein, one of ordinary skill in the related art will be able to contemplate other implementations of the components of the invention.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.