Method and apparatus for organizational software license sharing

A method, computer program product, and apparatus for efficiently utilizing software licenses in a large organization having multiple divisions is disclosed. A preferred embodiment of the present invention accomplishes this goal by providing for a pool of organization-wide software licenses. This license pool is subdivided into a number of reserved or dedicated licenses for each particular division and a set of shared licenses to be shared among the various divisions. A given division, when checking out licenses from the organization-wide pool, will first exhaust its reserved licenses before checking out shared licenses. In the event that all shared licenses are being used, but there are reserved licenses that are sitting idle, a division may borrow a reserved license from another division, subject to the lending division's right of preemption in the event that the borrowed license is needed by the division lending the license.

TECHNICAL FIELD

The present invention relates generally to software licensing in an enterprise or organizational setting. More specifically, the present invention provides a method and apparatus for sharing software licenses across an organization to reduce costs.

DESCRIPTION OF RELATED ART

Site licensing of software is a commonly employed technique for commercializing software and preventing software piracy, particularly in the context of large organizations. A great number of software products intended for professional or industrial use, including many electronic design automation software tools, utilize a site licensing paradigm. Generally, the organization will purchase a number of software licenses or “seats,” which allow a particular number of users to simultaneously use the software (equal to the number of licenses purchased). A “licensing server” keeps track of the number of simultaneous users of the software and grants or denies the use of a license by a particular user in accordance with the number of licenses currently available for use.

Because many large corporations and other organizations are organized into discrete “divisions,” budgeting for and procurement of software licenses are typically done on a division-by-division basis, with each division possessing its own pool of software licenses. In this case, a division will typically budget for the worst case scenario—i.e., the division will purchase a number of licenses that is approximately equal to the peak usage of the division over time, in order to insure that the division will have enough licenses to be able to handle its peak workloads.

In the aggregate, however, this scheme can result in a considerable amount of wasted resources, since a large number of licenses will sit idle over a significant amount of time. What is needed, therefore, is way to more efficiently utilize software licenses in a large organization. The present invention provides a solution to these and other problems, and offers other advantages over previous solutions.

SUMMARY OF THE INVENTION

Accordingly, the present invention provides a method, computer program product, and apparatus for efficiently utilizing software licenses in a large organization having multiple divisions. A preferred embodiment of the present invention accomplishes this goal by providing for a pool of organization-wide software licenses. This license pool is subdivided into a number of reserved or dedicated licenses for each particular division and a set of shared licenses to be shared among the various divisions. A given division, when checking out licenses from the organization-wide pool, will first exhaust its reserved licenses before checking out shared licenses. In the event that all shared licenses are being used, but there are reserved licenses that are sitting idle, a division may borrow a reserved license from another division, subject to the lending division's right of preemption in the event that the borrowed license is needed by the division lending the license.

DETAILED DESCRIPTION

FIG. 1is a diagram illustrating a conceptual model for organizational software licensing in the context of a preferred embodiment of the present invention. An organization utilizes a plurality of computers, represented here by computers100,102,104, and106. Each of computers100,102,104, and106has installed on it a copy of a common client application (client application copies101,103,105, and107). For example, in an electronics engineering firm, computers100,102,104, and106may be used by engineers to execute a common set of EDA (Electronics Design Automation) tools.

In order for any of the users of computers100,102,104, and106to execute the client application, their respective client application copies101,103,105, and107must request a license from a licensing server110, which is accessible to computers100,102,104, and106via a network108, which may be a local area network (LAN) or a wide-area network (WAN), such as the Internet. Licensing server110keeps track of a number of licenses purchased by the organization for the benefit of the organization's users. Client application copies101,103,105, and107, more specifically, must check out one of these licenses from licensing server110(in the sense of checking out a library book) before allowing the user to execute the application, as represented by checked-out licenses112,114,116, and118inFIG. 1. Once one of the users of the client application exits the application, the user's checked-out license is then released (surrendered) back to license server110. This scheme ensures that an organization does not allow more users to use an application than the organization has paid for licenses for.

FIG. 2is a diagram illustrating, by way of example, an allocation scheme for licenses in accordance with a preferred embodiment of the present invention. A common pool of licenses200is provided for use across various divisions of an organization (e.g., divisions202,204, and206). Divisions202,204, and206each have their own requirements as to how many licenses they need for their respective divisions. The requirements for each division are utilized to determine the number of licenses in license pool200to be purchased for the organization, as well as to allocate those licenses between reserved licenses and shared licenses.

Mathematically, the requirements for each division may be represented by an ordered pair of non-negative integers, (M,N), where M is a minimum number of licenses required for the division and N is an anticipated maximum number of licenses for the division. Conceptually, M may be thought of as the requirements for the division when operating under a normal or minimal workload, while N would represent the requirements for the division when operating under peak workload conditions. Obviously, these numbers will be estimates, and will not represent absolute constraints on the respective divisions. Moreover, these numbers may be arrived at by the various divisions in different ways.

According to a preferred embodiment of the present invention, the minimum and maximum requirements for a given division are utilized to determine a number of reserved and shared licenses to be allocated to a given division. In a typical setting of this preferred embodiment, the distinction between reserved licenses and shared licenses will be significant for internal cost accounting purposes, so as to equitably distribute the overall cost for license pool200among the various divisions. For example, a division may be charged periodically (e.g., quarterly) a rate of x dollars for each shared license allocated to the division, while the division may pay a rate of 2x per each reserved license allocated to the division.

Examples of differing requirements for various divisions are represented inFIG. 2with respect to divisions202,204, and206. As shown inFIG. 2, division202has stated its requirements to be (100, 100), meaning that its minimum and maximum anticipated requirements are both equal to 100 licenses. This is essentially equivalent to budgeting for the worst case. In that case, 100 reserved licenses (represented by histogram208) are allocated to division202, and division202, for internal cost accounting purposes, pays 100 times the periodic rate for reserved licenses. Division202will enjoy greater availability of software licenses than the other divisions, but at a higher internal cost.

Division204, on the other hand, has requirements of (0,100), meaning that division204makes no minimum requirements, but specifies its maximum requirements as being 100 licenses. In that case, division204will be allocated 100 shared licenses (histogram210) and will pay, for internal cost accounting purposes, 100 times the periodic rate for shared licenses. Division204will thus pay a smaller amount for its 100 allocated licenses than division202, but division204does so with the understanding that all 100 of its licenses may not be available at any given time, depending on overall demand for licenses over the organization.

Division206has requirements of (10,100), meaning that division206requires 10 licenses to be available at all times, but anticipates that under peak-load conditions, division206may need up to 100 licenses. Division206is therefore allocated 10 reserved licenses (histogram212) and 90 shared licenses (histogram214), which is calculated by subtracting the minimum requirement of 10 licenses from the 100-license maximum requirement. Division206's specification of requirements is a compromise between those of divisions202and204. Division206pays for 10 reserved licenses (at a higher cost) to ensure a certain minimum degree of license availability, but pays a lower rate for the 90 additional shared licenses, which saves cost for division206, as well as for the organization as a whole.

As also illustrated inFIG. 2, the number of licenses in the common license pool, license pool200, is calculated based on the allocations of reserved and shared licenses may for the various divisions. The total number of licenses held in common is determined by first summing the minimum requirements from all of the divisions (i.e., adding together the “M's” from all of the divisions) to obtain a total number of reserved licenses for the organization. Next, the difference between the maximum and minimum requirements for each division (i.e., “N-M”) is determined, and these differences are summed together to obtain a subtotal. This subtotal is then multiplied by a fractional constant λ, which is typically less than 0.5, to obtain a number of shared licenses to be included in license pool200. It thus follows that the total number of licenses to be purchased for license pool200is obtained by adding the number of reserved licenses for the organization to the number of shared licenses for the organization. Mathematically, this may be expressed as

In the example provided inFIG. 2, a λ value of 0.5 is assumed. There are 110 reserved licenses allocated (100 for division202and 10 for division206), and there are 190 total shared licenses allocated among the divisions (100 for division204and 90 for division206). The total number of licenses for license pool200is therefore205, which is obtained by multiplying the 190 total shared licenses figure by the fractional constant A to obtain 95 and then adding the total number of reserved licenses (110) to that number to obtain205.

The fractional constant λ that is applied to determine the size of the set of shared licenses will generally be set based on empirical data regarding the usage of software licenses by various divisions over time. As shown inFIG. 3, the degree of usage of software licenses may vary greatly over time. InFIG. 3, a Gantt chart300is juxtaposed with a corresponding line graph310. Gantt chart300and line graph310illustrate how license usage among different divisions will vary over time, as well as how license usage within a given division will vary over time in a typical large, international organization. In Gantt chart300, for example, there are three bars representing the hours of greatest software license usage for three different company divisions located in different parts of the world. As can be seen, bar302, representing a division located in Dallas, Tex. has a usual period of greatest usage that does not coincide with that of the other two divisions depicted, since the other two divisions are located in a different hemisphere. Bars304and306, representing divisions in Munich, Germany and Bangalore, India, respectively, have a limited degree of overlap in their periods of greatest usage, due to the fact that these two locations are geographically closer to each other longitudinally than to Dallas.

Line graph310shows that a finer level of granularity reveals significant changes in software license usage within a single division over time. Each of plots312,314, and316in line graph310represents the license usage of a different division of an organization over a period of a day. Each of the plots is generally hill-shaped, due to the fact that software licenses are most often used during the regular work day. Each of the plots, however, also contains a notch-like feature. This represents most people's lunch break, when many (but not all) users will log out of or shut down whatever licensed software they are running prior to their lunch break. Thus, as can be seen, the actual usage of a given division or group of divisions will vary considerably over time. This variation, and the degree to which the division(s) activities overlap in time, are factors that must be considered in determining a value for the fractional constant λ.

According to a preferred embodiment of the present invention, enforcing the distinction between reserved and shared licenses is accomplished by way of a series of accounting principles governing the manner in which licenses are obtained and released. According to this preferred embodiment, when a user within a division needs to obtain a license and that division has reserved licenses that are available for use, the user is automatically granted the license, and the license is counted against the number of available reserved licenses for that division.

When the division does not have any available reserved licenses (either because all reserved licenses have been utilized or because the division does not have any reserved licenses), a determination is made as to whether there exist any available shared licenses in the common license pool (i.e., license pool200inFIG. 2). If so, then the user is granted the license, and the license is counted against the total number of shared licenses available from the common license pool.

If there are no shared licenses available in the common pool, a determination is made as to whether there are any reserved licenses in the common pool that are not currently being used. This situation may occur when it is night-time in a part of the world in which a division having reserved licenses is located—even though that division may have reserved licenses, the licenses will be sitting idle while the members of that division are presumably asleep. In such a situation, a preferred embodiment of the present invention allows the division seeking a license to borrow a reserved license from another division. The division that “owns” the reserved license, however, is given a right of pre-emption, so that when that owning division requires the use of its reserved license, it may pre-empt use of that license by the borrowing division, so as to reclaim the license for the owning division. When pre-emption is warranted, the user from the borrowing division may be granted a limited amount of time in which to save his or her work-in-progress before use of the license is turned over to the owning division.

FIGS. 4A–4Dillustrate, by way of example, how a process of obtaining licenses may play out in a preferred embodiment of the present invention.FIGS. 4A–4Dinclude a series of diagrams, in which each diagram (e.g., diagram400A) represents the state of an organization at a given time. A first division (division402A inFIG. 4A) is represented in the diagram as a series of variable/value pairs that denote the current state of that division with respect to licenses available to the division and being used by the division. The variable “MAX_AVAIL” represents a total number of allocated licenses available to the division. “SHR_USED” represents the number of shared licenses currently being used by the division. “RES_AVAIL” and “RES_USED” represent the number of reserved licenses currently available to the division and the number of (non-borrowed) reserved licenses currently used by the division, respectively. “RES_BORWD” and “RES_LOAND” represent the number of reserved licenses currently on loan from another division for use in the present division and the number of reserved licenses from the present division currently on loan to other division(s), respectively.

Similarly, a second division (division404A inFIG. 4A) is represented with an analogous set of variable/value pairs. Finally, a total number of shared licenses available for the organization is represented by a variable “SHARED_AVAIL” (SHARED_AVAIL variable406A inFIG. 4A).

Referring now toFIG. 4A, division402A is a division possessing 10 reserved licenses of its own, and division402A does not have any shared licenses allocated to it. Division404A also possesses10reserved licenses of its own, but unlike division402A, division404A has 90 shared licenses allocated to it for a total of 100 available licenses. Neither division is currently using any licenses inFIG. 4A.

InFIG. 4B, which represents a change of state fromFIG. 4A, division404B now utilizes 10 licenses. Since, inFIG. 4A, this division had 10 reserved licenses available to it, all 10 of the licenses used by division404B inFIG. 4Bare reserved licenses. Thus, RES_USED is set to 10 and MAX_AVAIL is lowered to 90 (indicating 10 allocated licenses being used).

FIG. 4Crepresents a change of state fromFIG. 4B. Now, division404C requires the use of 60 additional licenses. Since division404C has no more available reserved licenses (i.e., RES_AVAIL=0), division404C begins using shared licenses from the common pool. However, since only 50 shared licenses were available in the common pool, only 50 shared licenses are granted to division404C (i.e., SHR_USED=50).

Division404C requires 10 additional licenses. Since all shared licenses are being used, however, division404C can only obtain those 10 licenses if one or more divisions having unused reserved licenses can be located. In this case, since division402B had 10 unused reserved licenses, division404C borrows those unused reserved licenses from division402C. Hence, RES_LOAND=10 for division402C and RES_BORWD=10 for division404C. At this point, all licenses in the organization (assuming there are only the two divisions shown) are in use.

It should be noted that at this point, division404C still has a positive MAX_AVAIL of 30, meaning that division404C has not utilized more than its total allocated number of reserved and shared licenses. This MAX_AVAIL number may be used to assess how well the current allocation scheme is working. For example, inFIG. 4C, because both MAX_AVAIL and RES-BORWD for division404C are positive, there is an indication that the selection of λ for the organization as a whole may be too low (since there are not enough shared licenses available to meet the stated demands of division404C). Likewise, MAX_AVAIL may reach a negative number if more licenses are used by the division than were originally allocated to the division—this may be an indication that the division's stated requirements were too low.

FIG. 4Drepresents a change of state fromFIG. 4C. Now, division402D requires the use of 5 licenses. However, division402C had no licenses immediately available to it, since its 10 reserved licenses were all loaned to division404C. In this case, division402D must pre-empt division404D and reclaim5of its licenses for itself. Thus, for division402D, RES_USED is now 5 and RES_LOAND is decreased from 10 to 5, while for division404D, RES_BORWD is reduced to 5.

FIGS. 5 and 6are flowcharts explicitly define the processes that are illustrated by way of example inFIGS. 4A–4D.FIG. 5is a flowchart representation of a process of obtaining a license for a requesting division in accordance with a preferred embodiment of the present invention. If the division has not exhausted its quota of reserved licenses (block500:Yes), the license accounting for the division is updated to show that a reserved license is now being used (block502). The license is then issued to the division (block516).

If not (block500:No), a determination is then made as to whether any of the requesting division's reserved licenses have been loaned to another division (block504). If a reserved license has been loaned (block504:Yes), the license is reclaimed for the requesting division's use (block506) and issued to the requesting division (block516).

If no (block504:No), a determination is then made as to whether the pool of software licenses contains any available shared licenses (block508). If so (block508:Yes), then the license accounting for the division is updated to show that a shared license is now being used (block510) and the license is issued to the requesting division (block516).

If not (block508:No), a determination is then made as to whether any other division has a reserved license that it is not currently utilizing (block512). If so (block512:Yes), then that reserved license is borrowed from the other division for temporary use of the requesting division (block514) and the license is issued to the requesting division (block516). If not (block512:No), the process loops back to block500to await the availability of a software license.

FIG. 6is a flowchart representation of a process of releasing a license for a division in accordance with a preferred embodiment of the present invention. If the license to be released is a reserved license borrowed from another division (block600:Yes), the license is returned to the other division for its exclusive use (block602), and the license is surrendered (block610).

If not (block600:No), a determination is made as to whether the license to be released is a shared license (block604). If so (block604:Yes), then the license accounting for the division is updated to show that the shared license is no longer being used (block606), and the license is surrendered (block610).

If not (block604:No), then the license being released must be a reserved license. Accordingly, the license accounting for the division is updated to show that the reserved license is no longer being used (block608), and the license is surrendered (block610).

FIG. 7is a block diagram of a computer system in which a preferred embodiment of the present invention may be implemented. One or more processors700are coupled to a system bus702, which connects processor(s)700to various memory components. Main memory706, comprising Random Access Memory (RAM), represents the bulk of primary memory storage available to processor(s)700. A level 2 cache memory704, which is smaller than main memory706but constructed using faster memory components than main memory706, is a temporary intermediate storage area that allows processor(s)700to operate at a higher speed than would otherwise be possible with only main memory706. System BIOS708, a non-volatile memory, contains system firmware for loading an operating system at system startup and for performing various other low-level functions. BIOS is an acronym for “Basic Input/Output System.” For performance purposes, it is common for processor(s)700to copy the contents of BIOS708into main memory706for faster access, as RAM generally allows faster access than non-volatile memories; this copying is referred to as “shadowing.”

Typically, system bus702will follow a proprietary specification associated with processor(s)700. While this arrangement is acceptable for interfacing processor(s)700to memory, because it provides for maximum performance, the proprietary nature of most microprocessor bus signal specifications seriously limits the ability of system buses like bus702to interface with off-the-shelf peripheral devices. For that reason, it is customary in computer design to include one or more backplane buses following a standard bus specification, to allow third-party peripheral devices to be connected to the computer system. InFIG. 7, a bus712following the Peripheral Component Interconnect (PCI) industry standard is provided for the connection of various peripherals. A system/PC bus bridge710connects system bus702to PCI bus712and translates bus signals between the two buses.

A number of peripheral devices are shown connected to PCI bus712. One of ordinary skill in the art will recognize that any of a great number of different kinds of devices may be connected to such a bus and that the devices described here as connected to bus712are intended to be merely examples. A local disk controller714allows data to be read or written to a locally-attached disk device such as a fixed-disk drive or a removable-disk drive. A display adapter716provides an interface between PCI bus712and a display device, such as a cathode-ray tube (CRT), liquid crystal display (LCD), or plasma display device. Local area network (LAN) adapter718connects PCI bus712to an Ethernet, 802.11 wireless network, or other form of local area network infrastructure. An IDE (Integrated Drive Electronics) controller728to a RAID array (Redundant Array of Inexpensive Disks)730is provided. RAID array730provides efficient, reliable mass storage of data through an array of individual disk drives working in cooperation with each other to provide rapid throughput and error detection/correction capabilities.

Universal Serial Bus (USB) controller720provides an interface between PCI bus712and USB hub722, to which peripheral devices conforming with the USB interface standard may be attached. USB devices are generally “hot-swappable,” meaning that they may be safely added or removed from the system while the system is turned on. USB devices are typically used in applications where a removable or external device is desirable, such as in the case of human input devices. For example, in the computer system depicted inFIG. 7, USB keyboard724and USB mouse726are shown connected to USB hub722.

It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions or other functional descriptive material and in a variety of other forms and that the present invention is equally applicable regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system. Functional descriptive material is information that imparts functionality to a machine. Functional descriptive material includes, but is not limited to, computer programs, instructions, rules, facts, definitions of computable functions, objects, and data structures.