The present invention relates to a license management system for software; more particularly, it relates to a license management system which can flexibly issue a license for software to a user in accordance with a use environment of the user when a software maker supplies the desired software to the user.
Recently, computers have been widely utilized in various fields, and not only development of the software itself but also license management for the software, is important when the software maker issues the software to the user or after issuance of the software.
In general, the software have been developed by the software maker, and have been used by the user who has a hardware (computer) based on a predetermined license contract. After the software was supplied to the user, the software maker performs the license management, i.e., checks as to whether the software is used properly based on the predetermined license contract.
Conventionally, there are mainly two types of license contracts, i.e., a floating-license system and a node-lock license system. In the former, the number of the licenses are decreased one by one for every start of the software, and are increased one by one for every termination thereof. In the latter, the hardware to be used is fixed in the user side, and the software maker issues the license at a predetermined constant price regardless the number of the software.
Further, in the former, when the user wants to operate a plurality of workstations (for example, 10) by using the same software, the software maker issues a license contract to the user at the price of ten licenses.
According to the former, the software maker has an advantage in which he can set a high unit price of the software. Furthermore, the user also has an advantage of flexibility in use of the software since he can optionally change the number of the hardware to be used.
On the other hand, in the latter, the hardware to be used in the user is fixed, and the software maker issues the license contract in a predetermined constant price regardless the number of the software and performance of the software.
According to the latter, the user has an advantage in which he can set a low unit price of the software. However, since the hardware to be used is fixed, there is no flexibility in use of the software. Further, since all the software is handled by only one hardware, there is a problem in which the whole throughput of the system becomes worse.
As explained above, there are various problems for both software maker and the user in the conventional license system. Particularly, there is a problem in which the software maker cannot issue a license, as to which sales strategy was considered. Accordingly, the software maker has always searched for and developed an optimum license management in order to supply the software, which have been developed at large expense, to the user, at a suitable price.
The object of the present invention is to provide a license management system enabling issuance of a license in which the sales strategy of the software maker was considered.
The present invention is a license management system for software which drives a single computer or a plurality of computers, and includes an application program for requesting a decision of the number of the license, required to drive itself and for receiving issuances of the license, a number of licenses decision unit for determining the necessary number of licenses in accordance with the request from the application program, and a license management unit for issuing the number of licenses which was determined by the number of licenses decision unit, to the application program.
The number of license decision unit includes means for determining the number of licenses based on the following multi-nominal function.
LK=f (x1, x2, . . . , xn)
Where, LK is the number of licenses, and xn is a parameter which is needed to determine the number of license.
Further, the present invention is a license managing method in a license management system including at least a license management unit, an application program, and a number of license decision unit, and for driving a single computer or a plurality of computers, the method comprising the steps of;
delivering parameters from the application program to the number of licenses decision unit in order to substitute the number of license, which needed to start the application program, for the multi-nominal function, when the application program starts;
determining the number of license by checking values of the necessary parameters which need to determine the number of licenses in the number of licenses decision unit, substituting the determined number of license for the parameters delivered from the application program, and returning the parameters to the application program;
notifying the necessary number of licenses from the application program to the license management unit by delivering the parameters, and requesting the license; and subtracting the necessary number of licenses from the number of licenses which are held in the license management unit when the license management unit receives a normal flag from the number of licenses decision unit, and returning the normal flag to the application program when the number of licenses, which are held in the license management unit, is not negative, and issuing the license to the application program.
FIGS. 40(A) to 40(I) are actual function lists for determining the number of key;
FIGS. 41(A) to 41(F) are explanatory views of one example of the program; and
FIGS. 42(A) to 42(C) are explanatory views of a result of execution of the same program.
The following five patterns must be considered in the sales strategy of the software maker as shown in
As shown in
As shown in
As shown in
As shown in
As shown in
As explained above, it is necessary to provide the license management system so as to determine the number of key in accordance with various factors in the use of the software, i.e., a factor caused by the hardware, a factor caused by the processing time, a factor caused by cost, etc.
The present invention aims to perform issuance of the number of keys enabling setting of parameters in flexibility in the software maker.
In order to solve the above problem, the present invention comprises a function for determining the necessary number of keys (the number of key decision units). The number of license decision units determines the number of licenses based on the following multi-nominal function.
LK=f (x1, x2, . . . , xn) (1)
Where, LK is the number of licenses, and xn is a parameter required to determine the number of licenses. As parameters, as explained in
Further, the present invention comprises a function for acquiring the values of parameters which are needed to determine the number of keys (a parameter value acquiring, unit).
When the number of keys LK is set so as to always become “1”, this becomes equivalent to the conventional system. This means that the system of the present invention is ranked to an upper position of the conventional system, and is compatible with the conventional system. Accordingly, based on the function of the present invention, it is possible to realize an issuance of the number of keys in which the sales strategy was considered in the software maker. Further, it is possible to utilize a fixed number of keys in the conventional art. As a result, it is possible to provide an improved license management system for the software.
Process 1: When the application program B starts, it delivers parameters (for example, NoOfKeys) to the number of license decision unit in order to substitute a necessary number of keys required to start the application program.
Process 2: The number of keys decision unit C checks values of the necessary parameters which are needed to determine the number of keys and determines the number of keys, substitutes the determined number of keys for the parameters (NoOfKeys) delivered from the application program, and returns the parameters to the application program B.
Process 3: The application program B notifies the necessary number of keys to the license management unit A by delivering the parameters (NoOfKeys), and requests the license.
Process 4: The license management unit A notifies the number of keys (NoOfKeys), which are notified from the application program, to the number of keys decision unit C in order to confirm whether the number of keys requested by the application program B is correct.
Process 5: The number of keys decision unit C compares the number of keys, which is notified from the application program to the license management unit A, with the necessary number of keys which notified to the application program. When the number of keys is correct, the number of keys decision unit C returns a normal flag to the license management unit A.
The processes 4 and 5 are optional because these steps are used for confirmation as to whether a correct request is performed.
Process 6: When the license management unit A receives the normal flag from the number of keys decision unit C, the license management unit subtracts the necessary number of keys from the number of keys which are held therein, returns the normal flag to the application program B when the number of keys which are held in the license management unit, is not negative, and issues the license to the application program B. When the application program B receives issuance of the license, it becomes an executable application program. If the abnormal flag, which indicates rejection, for example, the flag indicating that the number of keys become negative, is returned from the license management unit A, the application program is terminated at that time.
Process 1: When the application program B starts, it delivers the parameter (NoOfKeys) to the number of key decision function C′ in order to receive the number of keys required to start itself.
Process 2: The number of keys decision function C′ checks the necessary value of the parameter, and determines the number of keys. Further, the number of keys decision function C′ substitutes the values for the parameters delivered from the application program B, and returns the parameter (NoOfKeys) with the values to the application program B.
Process 3: The application program B notifies the necessary number of keys to the license management unit A by delivering the parameter (NoOfKeys), and requests the license.
The processes 4 and 5 in the first embodiment are omitted because these steps are optional.
The process 6: When the license management unit A receives the request from the application program B, it subtracts the necessary number of keys from the number of keys which are held in the license management unit A itself. As a result of subtraction, if the stored number of keys is not negative, the license management unit A returns the normal flag to the application program B, and issues the license thereto. When the application program B receives the issuance of the license, it becomes the executable application program. If the abnormal flag is returned from the license management unit A, the application program B terminates at that time.
Process 1: When the application program B starts, it delivers the parameter (NoOfKeys) to the number of keys decision function C in order to substitute the number of keys which it needs to start itself.
Process 2: The number of keys decision unit C reads the data from the database D (see process 7), and determines the multi-nominal function. Further, the number of keys decision function C checks the necessary value of the parameter, and determines the number of keys. Still further, the number of key decision function C substitutes the values for the parameters delivered from the application program B, and returns the parameters with the values to the application program B.
Process 3: The application program B notifies the necessary number of keys to the license management unit A by delivering the parameter (NoOfKeys), and requests the license.
The processes 4 and 5 in the first embodiment are omitted because these steps are optional.
The process 6: When the license management unit A receives the normal flag from the number of keys decision function C, it subtracts the necessary number of keys from the number of keys which are held in the license management unit A itself. As a result of subtraction, if the stored number of keys is not negative, the license management unit A returns the normal flag to the application program B, and issues the license thereto. When the application program B receives the issuance of the license, it becomes the executable application program. If the abnormal flag is returned from the license management unit A, the application program B terminates at that time.
Process 1: When the application program B starts, it delivers the parameter (NoOfKeys) to the number of keys decision function C′ in order to receive the number of keys which it needs to start itself.
Process 2: The number of keys decision unit C′ reads the data from the database D′ (see process 7), and determines the multi-nominal function. Further, the number of keys decision function C′ checks the necessary value of the parameter, and determines the number of keys. Still further, the number of keys decision function C′ substitutes the values for the parameters delivered from the application program B, and returns the parameters with the values to the application program B.
Process 3: The application program B notifies the necessary number of keys to the license management unit A by delivering the parameter (NoOfKeys), and requests the license.
The processes 4 and 5 in the first embodiment are omitted because these steps are optional.
The process 6: When the license management unit A receives the request from the application program B, it subtracts the necessary number of keys from the number of keys which are held in the license management unit A itself. As a result of subtraction, if the stored number of keys is not negative, the license management unit A returns the normal flag to the application program B, and issues the license thereto. When the application program B receives the issuance of the license, it becomes the executable application program. If the abnormal flag is returned from the license management unit A, the application program B terminates at that time.
The processes shown in
Conventionally, the license management unit A checked whether the operation of the application program was normal, in such a way that one license daemon (daemon program) communicates with each application program.
In this method, however, the license daemon must have many complicated communications with each application program. For example, the license daemon sends a check request for checking a predetermined item to each application program, and each application program returns an answer for the check request to the daemon program. In this case, since the answer is returned simultaneously from each application program to the daemon program, many answers become wait states in the license daemon. This is because many loads are applied to the license daemon. As a result, the processing time for each answer in the license daemon is delayed so that the performance of the software also becomes worse.
Accordingly, the present invention aims to reduce the loads in the license daemon and to eliminate the delay of the processing time in the software (i.e., application program).
Accordingly to achieve the above purpose, one private license daemon (APSM: Application Program Server Manager) and one private application manager (APCM: Application Program Client Manager) are provided in addition to the license daemon and the application program, and various communications are performed between the private license daemon APSM and the private application manager APCM as explained in detail below.
a) When the approval of execution CIRC cannot be obtained from the private license daemon APSM1, the application program AP1 terminates the process.
b) When the approval of execution CIRC can be obtained from the private license daemon APSM1, but it includes “invalid” contents, the application program AP1 notifies an invalidation to the user.
c) When the approval of execution CIRC can be obtained from the private license daemon APSM1, and it includes “valid” contents, the application program AP1 generates the fork instruction in order to establish the private application manager APCM1.
Next, the polling operation between the private license daemon and the private application manager is explained in detail below. The periodical polling is performed between the private license daemon and the private application manager in order to check whether the normal communication is performed therebetween.
Next, the polling operation from the private application manager APCM1 to the private license daemon APSM1 is explained below.
Next, the abnormal termination of the private license daemon is explained below.
When the private application manager APCM1 receives the termination instruction SDC from the private license daemon APSM1, the private application manager APCM1 deals with this as a preferential message, and immediately determines termination itself. The private application manager APCM1 forces the application program AP1 to surely send the instruction SIGUSR2 (one kind of signal in UNIX) to the private application program APCM1 before termination of the application program AP1 (step 2). The private application program APCM1 performs the normal termination after reception of the instruction SIGUSR2 from the application program AP1 in accordance with the processes shown in
The private application manager APCM1 terminates itself after a predetermined time (step 3), and notifies this termination to the license daemon LDP using the instruction CORC (step 4). In this case, the license daemon LDP waits for the instruction CORC from the private application manager APCM1 during a predetermined time. If the license daemon LDP does not receive the instruction CORC from the private application manager APCM1, the license daemon LDP terminates the private license daemon APSM1 (step 5).
The license daemon LDP checks the pending state of the instruction APRIR in the private application manager APCM1. If the instruction APRIR is pending in the private application manager APCM1, the license daemon LDP receives the instruction APRIR from the private application manager APCM1 (step 4). The private license daemon APSM1′ recovers only when the license daemon LDP received the instruction APRIR from the private application manager APCM1 (step 5). The license daemon LDP starts normal operation.
After the private license daemon APSM1 found the termination of the private application manager APCM1 (step 4), the private license daemon APSM1 checks for the existence of the application program AP1. If the application program AP1 exists, the private license daemon APSM1 waits for termination of the application program AP1 by polling thereto (step 5). After the above process, the private license daemon APSM1 notifies the termination of the application program AP1 to the license daemon LDP using the instruction CORC (step 6). The license daemon LDP releases the license keys assigned to the application program AP1.
In this situation, the private application manager APCMl interrupts the application program AP1 after setting of information −ve (negative value) to the pipe between the application program AP1 and the private application manager APCM1 (step 1), and sends the request APRIR to the license daemon LDP (step 2).
Next, the following explanations are given for the concrete decision method for the number of keys according to the present invention.
The actual program using the functions shown in FIGS. 40(A), to 40(I) is provided for processing a predetermined file. In this program, the following items, for example, file size to be processed, platform, number of CPU, capacity of memory, etc., are considered. Based on above consideration, this program has been designed so as to automatically start a plurality of processes in parallel so that it is possible to realize high speed processing of the program. Accordingly, it is necessary to increase/decrease the number of keys in accordance with the number of processes to be started in parallel.
The actual function for determining the number of key is explained in detail below.
In FIGS. 40(A) to 40(I), a first function “GetSystemParameters” gets five parameters, such as, number of CPUs (Ncpu), page size of memory (Psize), number of page for all physical memory capacity (PhyPage), number of pages of vacant memory capacity (AvPage), and platform (Platform). These parameters are delivered to a second function “DetermineNumberOfLicense”.
The second function “DetermineNumberOfLicenses” receives a size of the file and five parameters from the first function “GetSystemParmaters”, and determines the number of parallel processing. At the same time, the second function “DetermineNumberOfLicenses” determines the necessary number of keys and returns the number of keys as “return value”.
At first, the first function “GetSystemParameters” is explained in detail regarding a first block (lines 53 to 68) and a second block (lines 71 to 89) in FIG. 40(D).
Regarding the first block (lines 53 to 68), the first function “GetSystemParameters” gets the following parameters, i.e., number of CPUs(sysconf(_SC_NPPROCESSORS ONLN)), page size of memory (sysconf(_SC_PAGESIZE)), number of pages of all physical memory capacity (sysconf( SC_PHYS_PAGES)), and number of pages of vacant memory capacity (sysconf (_SC_AVPHYS_PAGES)). If there is an error in any one of parameters, the process is interrupted.
Regarding the second block (lines 71 to 89), the first function “GetSystemParameters” gets the platform (PLATFORM). If there is an error in the platform, the process is interrupted. When the first function “GetSystemParameters” gets normally all parameters, each value of the following parameters, i.e., number of CPUs (Ncpu), page size of memory (Psize), number of page for all physical memory capacity (PhyPage), and number of pages for vacant memory capacity (AvPage), are substituted for predetermined variables.
Second, the second function “DetermineNumberOfLicenses” is explained in detail with reference to FIG. 39 and FIGS. 40(F) to 40(I).
Regarding the first block (lines 125 to 134), whether a given argument is normal or not is checked. If the argument is abnormal, the process is interrupted. If the argument is normal, the number of licenses (number of key) is set to “default number” (NL=NL_DEFAULT) (see (1) on line 126).
Regarding the second block (lines 138 to 147), either if the number of CPUs within the hardware is one, or if it is not a SPARC server, it is determined that the parallel processing cannot be executed. In this case, it is determined that the number of processes is one and the number of licenses is the default number. Then, the process is terminated in the range of this function. If it is the SPARC server having two or more CPUs, the number of licenses (keys) is set to double that of of default number (NL=NL_DEFAULT+NL_DEFAULT) (see (2) on line 139).
Regarding the third block (lines 150 to 157), a given file size is changed to the number of memory page (see (3) on line 150).
Regarding the fourth block (lines 160 to 181), whether the parallel processing (specified program) should be performed is determined, and the number of parallel processes and the number of key are determined.
Regarding lines 163 to 166, if the value (file size * NL_MEM_FACTOR) is larger than the vacant memory capacity, it is meaningless to perform the parallel processing (According to an experiment, it is obvious that the high speed processing cannot be obtained.). Accordingly, a single process is performed, and the number of key is determined to the default number (i.e., NL =2).
Regarding lines 167 to 181, if the value (file size * NL_MEM_FACTOR) is smaller than the vacant memory capacity, the process is divided into the following three cases.
1) Regarding lines 167 to 171, if the value (file size * NL_MEM_FACTOR) is smaller than 106 bytes, it is meaningless to perform the parallel processing (As mentioned above, as a result of an experiment, it is obvious that the high speed processing cannot be obtained.). Accordingly, a single process is performed, and the number of key is determined to (default number * number of process)
2) Regarding lines 172 to 176, if the value (file size * NL_MEM_FACTOR) is larger than 106 bytes, but less than 2 * 106 bytes, two parallel processes are performed, and the number of key is determined by the value (default number * number of process).
3) Regarding lines 177 to 181, if the value (file size * NL_MEM_FACTOR) is larger than 2 * 106 bytes, the number of parallel processing is performed based on the value (number of CPU−1), the number of key is determined by the value (default number * number of process).
Next, the explanation is given of one sample of the program shown in FIGS. 41(A) to 41(F). This sample program utilizes the function “GetSystemParameters” and gets the information of the hardware, i.e., platform, number of CPU, page size of memory, number of page for all physical memory capacity, and number of page of vacant memory capacity. Result of the above is displayed on a screen. Furthermore, by using the function “DetermineNumberOfLicense”, the number of process and the number of license (number of key) for twelve kinds of file sizes are displayed on the screen.
The sample program shown in FIGS. 41(A) to 41(F) is explained in detail below.
Regarding the first block (lines 54 to 62), first, variables are initialized (reset). That is, the number “0” is substituted for the information of the hardware, i.e., number of CPU(Ncpu), page size memory(Psize), number of page for all physical memory capacity(PhyPage), and number of page of vacant memory capacity(AvPage). Further, “NULL” is substituted for the platform (PLATFORM).
Regarding the second block (lines 65 to 81), actual numbers of the hardware, i.e., number of CPU(Ncpu), page size of memory(Psize), number of page for all physical memory capacity(PhyPage), and number of page of vacant memory capacity(AvPage), are determined and displayed on the screen.
Regarding the third block (lines 85 to 103), regarding twelve kinds of file sizes, the number of parallel processing (number of process) and the number of license (number of key) are determined based on the information of the hardware given by the above processes. The determined number of process and number of license are displayed on the screen.
The result of execution of the sample program is explained in detail with reference to FIGS. 42(A) to 42(C). The sample program was executed by using two kinds of workstations (model S-4/1 and model S-4/1000) each using Solaris 2.5.
In FIG. 42(A), the sample program was executed by the model S-4/1 as the platform. In this case, since the number of CPU is only one, the number of license (number of key) is always one regardless file size.
In FIG. 42(B), the sample program was executed by the model S-4/1000 as the platform. In this case, the SPARC server having four CPUs was used for this model, and the number of parallel processing and the number of license (number of key) are different each other in accordance with the file size.
In FIG. 42(C), the sample program was also executed by the model S-4/1000 as the platform. In this case, the SPARC server having four CPUs was also used for this model. Since the number of pages of the vacant memory capacity (AvPage) is small, the parallel processing was not performed. Accordingly, all number of license (number of key) are two.
As is obvious from above explanations, basically, the number of key decision function is created so as to satisfy the following items.
First, the performance of the CPU has been checked previously. When the CPU has high performance, it is necessary to provide many number of keys.
Second, the vacant memory capacity and the file size are compared each other. When the parallel processing should be performed, it is necessary to provide many number of keys.
Third, if there is another parameter to be considered, it is possible to change the number of license (number of key) by making functions similar to the above.
Capability of Utilization in Industry
As explained above, according to the present invention, it is possible to solve various problems existing in both software maker and the user in the conventional license system. Accordingly, the software maker has always searched and developed an optimum license management in order to supply the software, which have been developed at large expense, to the user based on a suitable price. As a result, the license management system according to the present invention can provide an issuance of license in which the sales strategy was sufficiently considered so that the present invention includes very high possibility for utilization in an industry.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/JP97/02460 | 7/15/1997 | WO | 00 | 6/4/1999 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO99/04354 | 1/28/1999 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
3614745 | Podvin et al. | Oct 1971 | A |
4924378 | Hershey et al. | May 1990 | A |
4937863 | Robert et al. | Jun 1990 | A |
5204897 | Wyman | Apr 1993 | A |
5230051 | Quan | Jul 1993 | A |
5260999 | Wyman | Nov 1993 | A |
5375206 | Hunter et al. | Dec 1994 | A |
5390297 | Barber et al. | Feb 1995 | A |
5438508 | Wyman | Aug 1995 | A |
5579222 | Bains et al. | Nov 1996 | A |
5619656 | Graf | Apr 1997 | A |
5671412 | Christiano | Sep 1997 | A |
5752041 | Fosdick | May 1998 | A |
5754763 | Bereiter | May 1998 | A |
5758068 | Brandt et al. | May 1998 | A |
5758069 | Olsen | May 1998 | A |
5825883 | Archibald et al. | Oct 1998 | A |
5864620 | Pettitt | Jan 1999 | A |
5905860 | Olsen et al. | May 1999 | A |
5930357 | Fukui | Jul 1999 | A |
5940504 | Griswold | Aug 1999 | A |
5991876 | Johnson et al. | Nov 1999 | A |
6021438 | Duvvoori et al. | Feb 2000 | A |
6023766 | Yamamura | Feb 2000 | A |
Number | Date | Country |
---|---|---|
0332304 | Feb 1989 | EP |
0613073 | Aug 1993 | EP |
2004-43673957 | Oct 2004 | KR |
WO 9220021 | Nov 1992 | WO |
93 01550 | Jan 1993 | WO |
WO 9311480 | Jun 1993 | WO |
WO 9534857 | Dec 1995 | WO |