Title of Invention

A LICENCE MANAGEMENT SYSTEM AND A METHOD FOR ISSUING THE LICENSES

Abstract A license management system for software which drives a single computer or a plurality of computers includes: an application program for requesting a decision of the number of license which it needs to drive itself and for receiving issuance of the license; a number of license 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 license decision unit. Further, the number of license decision unit has means for determining the number of licenses based on the following multi-nominal function, LK = f (xl, x2,.. xn), where, LK is the number of licenses, and xl to xn are parameters which are needed to determine the number of licenses. According to the present invention, it is possible to provide a license management system enabling issuance of a license in which the sales strategy of a software maker was considered.
Full Text TECHNICAL FIELD
The present invention relates to a license management system for software, particularly it relates to a license management system which can flexibly issue a license for software to a user in accordance with an environment in use of the user when a software maker supplies the desired software to the user. BACKGROUND ART
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 takes the license contract from the user in 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 the license which the 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. DISCLOSURE OF THE INVENTION
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 which needed to drive itself and for receiving issuance of the license, a number of license decision

unit for determining the necessary number of license in accordance with the request from the application program, and a license management unit for issuing the number of license which was determined by the number of license * 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 (xl, 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 license 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 license 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 license from the application program to the license management unit by delivering the parameters, and requesting the license; and
subtracting the necessary number of license 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 license 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.
Accordingly, the present invention relates to a license management system for software which drives a single computer or a plurality of computers, comprising:
a means for requesting a decision of the number of license which needs to drive itself and for receiving issuance of the license;
a number of license decision means for determining the necessary number of license in accordance with the request from the application program; and
a license management means for issuing the number of license which was determined by the number of license decision means.
The present invention also relates to a method for issuing the licenses by a license management system, the method comprising the steps of:
delivering parameters from the application program means to the number of license decision means in order to substitute the number of license, which needed to start the application program itself, 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 license in the number of license decision means, substituting the determined number of license for the parameters delivered from the application program means, and returning the parameters to the application program;
notifying the necessary number of license from the application program means to the license management means by delivering the parameters, and requesting the license; and
subtracting the necessary number of license from the number of licenses, which are held in the license management means, when the

license management means receives a normal flag from the number of license decision means, and returning the normal flag to the application program means when the number of licenses, which are held in the license management means, is not negative, and issuing the license.
BRIEF DESCRIPTION OF THE ACCOMPANYING DRAWINGS

rj-yures i X.O b are explanatory views of sales strategy for a software maker;
Figure 6 is a basic structural view of a first embodiment of a license management system according to the present invention;
Figure 7 is a basic structural view of a second embodiment of a license management system according to the present invention;
Figure 8 is a basic structural view of a third embodiment of a license management system according to the present invention;
Figure 9 is a basic structural view of a fourth embodiment of a license management system according to the present invention;
Figure 10 is an explanatory view of a start process between a license daemon and an application program;
Figure 11 is an explanatory view of a fork process in the license daemon;
Figure 12 is an explanatory view of the fork process in the application program;
Figure 13 is an explanatory view of a termination process of the application program;
Figure 14 is an explanatory view of a compulsory termination from a private application manager;
Figure 15 is an explanatory view of a termination report of the application program;
Figure 15 is an explanatory view of the termination process to the private license daemon;
Figure 17 is an explanatory view of a check request from the private license daemon;
Figure 18 is an explanatory view of a normal notification from the private application manager;

Figure 19 is an explanatory view of a restart process from the private license daemon;
Figure 20 is an explanatory view of a license releasing process in the private license daemon;
Figure 21 is an explanatory view of the check request from the private application manager to the private license daemon;
Figure 22 is an explanatory view of the normal notification from the private license daemon to the private application manager;
Figure 23 is an explanatory view of invalid information in the private application manager;
Figure 24 is an explanatory view of the termination process in the private application manager;
Figure 25 is an explanatory view of a restart in the private license daemon;
Figure 26 is an explanatory view of an invalid notification from the license daemon;
Figure 27 is an explanatory view of a restart notification from the license daemon;
Figure 28 is an explanatory view of a polling process from the private license daemon to the license daemon;
Figure 29 is an explanatory view of the termination process in the license daemon;
Figure 30 is an explanatory view of the termination process in the license daemon, when the private application manager APCMl does not receive the instruction COR from the application program API within a predetermined time in the process;
Figure 31 is an explanatory view of an abnormal termination in the license daemon;
Figure 32 is an explanatory view of the abnormal termination in the application program;
Figure 33 is an explanatory view of the abnormal termination between the license daemon and the private application manager;

Figure 34 is an explanatory view of the abnormal termination in both the application program and the private application manager;
Figure 35 is an explanatory view of the abnormal termination in both the application program and the private license daemon;
Figure 36 is an explanatory view of the abnormal termination in both the license daemon and the private license daemon(No. 1);
Figure 37 is an explanatory view when the license daemon LDP restarts after the situation described in the explanation of Fig. 36;
Figure 38 is an explanatory view of a system structure;
Figure 39 is a flowchart for determining the number of license (the number of key);
Figures 40(A) to 40(1) are actual function lists for determining the number of key;
Figures 41(A) to 41(F) are explanatory views of one example of the program; and
Figures 42(A) to 42(C) are explanatory views of a result of execution of the same program. BEST MODE OF CARRYING OUT THE INVENTION
Figures 1 to 5 are explanatory views of sales strategy in a software maker. In this specification, a license is called a "key", and the number of licenses is called "the number of keys". In the present license system, the number of keys is equal to the number of licenses, and it is possible to consider the number of keys as the same as the value of the software. However, in order to realize suitable license management, it is desirable to realize a predetermined relative relationship between the number of licenses and the number of keys (this relationship corresponds to a function "f" as mentioned below). For example, it is desirable to have the relationship in which the number of keys is proportional to the number of licenses.

The following five patterns must be considered in the sales strategy of the software maker as shown in Figs. 1 to 5.
As shown in Fig. 1, when the application program is particularly designed so as to operate at high speed in accordance with a high speed hardware including many memories, the design of the software becomes complicated so that the software has a high value. Accordingly, when the hardware having many memories is used in a user side, the software maker should request the more number of keys to the user in accordance with the more number of memories.
As shown in Fig. 2, in the case of Fig. 1, when a performance of the computer is high, the throughput of the computer per a unit time is also high. Accordingly, the software maker should request the more number of keys to the user in accordance with the higher performance of the computer.
As shown in Fig. 3, in the case that the application program is not particularly designed, according to a view point of the user, since the performance of the computer becomes higher so that an appearance performance of the software also becomes higher, the application program should be operated based on less number of keys. According to this view point, the software maker should consider so as to be able to start the software based on less number of keys. However, the above is particular case. For example, when the software is on the way of development and design, and when the performance thereof is not finally determined in the software maker, the software maker wishes to use that software in the user side in order to improve the performance.
As shown in Fig. 4, for the user who buys a large amount of software, the necessary number of keys are gradually reduced in accordance with the number of purchased the keys. Accordingly, in this case, it is necessary to reduce a substantial unit price of the

software in the software maker.
As shown in Fig. 5, the software maker supplies the software free of charge until a predetermined date (this corresponds to "the necessary number of keys is zero"), and supplies the software for a fee after that predetermined date (this corresponds to "the number of key is larger than zero").
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 unit). The number of license decision unit determines the number of licenses based on the following multi-nominal function.
LK = f (xl, x2, , xn) (1)
Where, LK is the number of licenses, and xn is a parameter which needs to determine the number of licenses. As parameters, as explained in Figs. 1 to 5, there are the memory capacity of the hardware, the clock speed of the system, and items which can set freely by the software maker and so on.
Further, the present invention comprises a function for acquiring the values of parameters which are needed to determine the number of keys (parameter value acquiring means).
When the number of key 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 the fixed number of key in the conventional art. As a result, it is possible to provide an improved license management system for the software.
Figure 6 is a basic structural view of the first embodiment of the license management system according to the present invention. In the drawing, A denotes a license management unit, B denotes an application program, and C denotes a number of key decision unit (daemon program). As is known, a daemon program is the program which is automatically executed in a background based on an operating system (OS). In the present invention, all transmission and reception of the data are performed through a network UNIX systems using, for example, the TCP/IP (Transmission Control Protocol/Internet Protocol). In the following drawings, each numeral denotes an order of process.
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 necessary number of keys which need to start the application program.
Process 2: The number of key 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 key 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 key 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 key 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 correct request is performed.
Process 6: When the license management unit A receives the normal flag from the number of key 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.
Figure 7 is a basic structural view of the second embodiment of the license management system according to the present invention. In the above first embodiment, the number of key decision unit C operates as an independent daemon program. In this embodiment, the number of key decision function C is included within the application program as a function call. In this case, it

is different from the first embodiment, the process 1 is applied as the function call of a variable argument, and the process 2 is applied as a return value thereof. Further, the number of keys is determined by the application program including the number of key decision unit C itself based on the formula (1).
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 key which it needs to start itself.
Process 2: The number of key decision function C checks the necessary value of the parameter, and determines the number of keys. Further, the number of key 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.
Figure 8 is a basic structural view of the third

embodiment of the license management system according to the present invention. In the above first embodiment, when changing the multi-nominal function according to the situation at the software maker, a method of directly changing the number of key decision unit C is employed to change multi-nominal function. In the present embodiment, a database D for determining the multi-nominal function is separately provided in order to read the multi-nominal function to the number of key decision unit C. In this case, when changing the multi-nominal function, the database D is changed so that it is not necessary to change the multi-nominal function in the number of key decision unit C.
Process 1: When the application program B starts, it delivers the parameter (NoOfKeys) to the number of key decision function C in order to substitute the number of keys which it needs to start itself.
Process 2: The number of key decision unit C reads the data from the database D (see process 7), and determines the multi-nominal function. Further, the number of key decision function C checks the necessary value of the parameter, and determines the number of key. 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 key 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 key 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.
Figure 9 is a basic structural view of the fourth embodiment of the license management system according to the present invention. In the above second embodiment, the number of key decision function C is included within the application program B as the function call. In the present embodiment, a database D" for determining the multi-nominal function is separately provided in order to read the m.ulti-nominal function to the number of key decision unit C. In this case, when changing the multi-nominal function, the database D" is changed so that it is not necessary to change the multi-nominal function in the number of key decision function C.
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 key which it needs to start itself.
Process 2: The number of key decision unit C reads the data from the database D" (see process 7), and determines the multi-nominal function. Further, the number of key 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 key 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 key 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 Figs. 6 to 9 are explained in detail with reference to the drawings. The following explanations are given in detail to the processes 3 and 6 between the license management unit A and the application program B.
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).
According 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.
Figure 10 is an explanatory view of the start process between the license daemon and the application program. When a user performs the start process of the application program, the application program API sends a request CIR (Check-In Request) to the license daemon LDP in order to acquire an approval of execution (i.e., license).
Figure 11 is an explanatory view of the fork process in the license daemon. The license daemon LDP generates a fork instruction in order to establish the private license daemon APSMl. The private license daemon APSMl sends the approval of execution CIRC (Check-In Request Confirmation) to the application program API and issues the license. In this case, the following three states are considered.
a) When the approval of execution CIRC cannot be obtained from the private license daemon APSMl, the application program API terminates the process.
b) When the approval of execution CIRC can be obtained from the private license daemon APSMl, but it includes "invalid" contents, the application program API notifies an invalidation to the user.
c) When the approval of execution CIRC can be obtained from the private license daemon APSMl/ and it includes "valid" contents, the application program API

generates the fork instruction in order to establish the private application manager APCMl.
Figure 12 is an explanatory view of the fork process in the application program. As explained in the above item (c), when the approval of the execution CIRC can be obtained from the private license daemon APSMl, and it includes "valid" contents, the application program API generates the fork instruction in order to establish the private application manager APCMl. After this process, the communications as to the license management are performed between the private license daemon APSMl and the private application manager APCMl. The application program API starts to execute a proper program itself.
Figure 13 is an explanatory view of the termination process of the application program. When the user performs the termination process of the application program API, the application program API sends a request for the termination SIGUSR2 (one kind of signal in UNIX) to the private application manager APCMl, and the application program API is terminated.
Figure 14 is an explanatory view of the compulsory termination from the private application manager. For the case, if the application program does not terminate after sending the request for the termination SIGUSR2 accidentally, the private application manager APCMl sets an invalid information +ve (positive value) into a pipe. The application program API reads the invalid information +ve and terminates itself.
Figure 15 is an explanatory view of the termination report of the application program. When the application program API terminates, the private application manager APCMl sends the termination report CORC (Checkout Request Confirmation) indicating the termination of the application program API to the license daemon LDP, and the private application manager APCMl terminates.
Figure 16 is an explanatory view of the termination process of the private license daemon. Finally, the

license daemon LDP writes the information into the database after the application program API terminates, and generates a termination instruction SIGKILL (one kind of signal in UNIX) to the private license daemon APSMl so as to terminate the private application daemon APSMl itself.
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.
Figure 17 is an explanatory view of the check request from the private license daemon. The private license daemon APSMl sends the check request APPR (Application Program Poll Request) to the private application manager APCMl in order to check whether the private application manager APCMl is operating normally.
Figure 18 is an explanatory view of the normal notification from the private application manager. The private application manager APCMl sends the normal notification APPC (Application Program Poll Conformation) to the private license daemon APSMl when the check of contents from the private license daemon APSMl and the check of contents in the private application manager itself APCMl are successful.
Figure 19 is an explanatory view of the restart process from the private license daemon. When the private license daemon APSMl gets an abnormal response from the private application manager APCMl (Heart beat message exchange fails), the private license daemon APSMl sends the CORC message to the license daemon LDP and terminates itself.
Figure 20 is an explanatory view of the license releasing process in the private license daemon. The license daemon LDP invalidates the application program API, and releases the license key which was

assigned to the application program API.
Next, the polling operation from the private application manager APCMl to the private license daemon APSMl is explained below.
Figure 21 is an explanatory view of the check request from the private application manager to the private license daemon. The private application manager APCMl sends the check request APRR (Application Program Re-validation Request) to the private license daemon APSMl.
Figure 22 is an explanatory view of the normal notification from the private license daemon to the private application manager. The private license daemon APSMl sends the normal notification APRC (Application Program Re-validation Confirmation) to the private application manager APCMl when the check of the contents from the private application manager APCMl and the check of the contents in the private license daemon itself are successful.
Figure 23 is an explanatory view of the invalid information in the private application manager. When the check of the contents in the private application manager APCMl and the check of the contents in the private license daemon APSMl are unsuccessful, the private application manager APCMl sets an invalid information +ve (positive value) into the pipe. The application program API reads the invalid information and terminates itself.
Figure 24 is an explanatory view of the termination process in the private application manager. The private application manager APCMl terminates itself after sending of the termination instruction to the parent application program.
Next, the abnormal termination of the private license daemon is explained below.
Figure 25 is an explanatory view of the restart in the private license daemon. When the private application

manager APCMl detects the abnormal termination of the private license daemon APSMl, the private application manager APCMl sends the request APRIR (Application Program Re-initiation Confirmation) to the license daemon LDP in order to restart the private license daemon APSMl.
Figure 2 6 is an explanatory view of the invalid notification from the license daemon. When the license daemon detects that the private license daemon APSMl invalidates the request for a restart, the license daemon LDP sends the notification APRIC (Application Program Re-initiation Confirmation) indicating that the private license daemon APSMl has not restarted, to the private application manager APCMl. Further, the private application manager APCMl terminates itself, and the application program API terminates.
Figure 27 is an explanatory view of the restart notification from the license daemon. When the license daemon LDP detects that the private license daemon APSMl validates the request of restart, the license daemon LDP provides a new private license daemon APSMl" based on the fork instruction. The new private license daemon APSMl" updates the database, and sends the notification APRIC indicating that the private license daemon is restarted, to the private application manager APCMl.
Figure 2 8 is an explanatory view of the polling process from the private license daemon to the license daemon. The private license daemon APSMl performs the periodical polling to the license daemon LDP. If the private license daemon APSMl finds an EXIT of the license daemon LDP (step 1), the private license daemon APSMl terminates itself (step 2). Accordingly, the normal operation of the application program API is interrupted by the private application manager APCMl (step 3), and the private application manager APCMl loops trying to send APRIR to the LDP (step 4).
Figure 29 is an explanatory view of the termination

process in the license daemon. The license daemon LDP terminates in accordance with a request from a system administrator. There are two modes for termination, i.e., a normal termination (TRl) and another termination (TR2). The license daemon LDP checks a valid application program API having the license key after reception of the request of termination TR2, and the private license daemon APSMl sends a termination instruction SDC (Shut Down Command) to the private application manager APCMl (step 1).
When the private application manager APCMl receives the termination instruction SDC from the private license daemon APSMl, the private application manager APCMl deals with this as a preferential message, and immediately determines termination itself. The private application manager APCMl forces the application program API to surely send the instruction SIGUSR2 (one kind of signal in UNIX) to the private application program APCMl before termination of the application program API (step 2). The private application program APCMl performs the normal termination after reception of the instruction SIGUSR2 from the application program API in accordance with the processes shown in Figs. 13 to 16.
Figure 30 is an explanatory view of the termination process in the license daemon, when the private application manager APCMl does not receive the instruction SIGUSR2 from the application program API within a predetermined time in the process shown in Fig. 29. The private application manager APCMl sends the signal SIGKILL to the application program API (step 1) so that the application program API terminates (step 2). The private application manager APCMl 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 APCMl during a predetermined

time. If the license daemon LDP does not receive the instruction CORC from the private application manager APCMI, the license daemon LDP terminates the private license daemon APSMl (step 5).
Figure 31 is an explanatory view of the abnormal termination in the license daemon. When the license daemon LDP terminates abnormally, the private application manager APCMI interrupts the normal operation in the application program API (step I), and interrupts itself (step 2). When the license daemon LDP restarts after abnormal termination, the license daemon LDP checks whether the private license daemon APSMl terminated after abnormal termination (step 3).
The license daemon LDP checks the pending state of the instruction APRIR in the private application manager APCMI. If the instruction APRIR is pending in the private application manager APCMI, the license daemon LDP receives the instruction APRIR from the private application manager APCMI (step 4). The private license daemon APSMl" recovers only when the license daemon LDP received the instruction APRIR from the private application manager APCMI (step 5). The license daemon LDP starts normal operation.
Figure 32 is an explanatory view of the abnormal termination in the application program. When the application program API terminates without sending of the instruction SIGUSR2 to the private application manager APCMI, the private application manager APCMI sends the instruction APRR to the private license daemon APSMl (step 1), and checks existence of the application program API (polling) (step 2). If the private application manager APCMI finds that the application program API terminated without notifying to the private application manager APCMI, the private application manager APCMI sends the instruction CORC to the license daemon LDP (step 3).
Figure 33 is an explanatory view of the abnormal

termination of the private license daemon and the private application manager. After the private application manager APCMl terminates (step 1), the application program API also terminates after checking the information +ve (positive value) of the pipe provided between the application program API and the private application manager APCMl (step 2). The license daemon LDP receives the signal SIGCLD from the private license daemon APSMl (step 3), and releases the license key for the application program API.
Figure 34 is an explanatory view of the abnormal termination in both application program and the private application manager. When both the application program API and the private application manager APCMl terminated abnormally without notifying to either the license daemon LDP or the private license daemon APSMl (step 1), the private license daemon APSMl does not acquire the confirmation APPC (Application Program Poll Confirmation) for the request APPR (Application Program Poll Request) (step 2).
After the private license daemon APSMl found the termination of the private application manager APCMl (step 4), the private license daemon APSMl checks for the existence of the application program API. If the application program API exists, the private license daemon APSMl waits for termination of the application program API by polling thereto (step 6). After the above process, the private license daemon APSMl notifies the termination of the application program API to the license daemon LDP using the instruction CORC. The license daemon LDP releases the license key assigned to the application program API.
Figure 35 is an explanatory view of the abnormal termination in both application program and the private license daemon. When the application program API terminates abnormally (step 1), the private application manager APCMl detects this abnormal termination (step 2)

and sends the confirmation CORC to the license daemon LDP (step 3). The license daemon LDP releases all license keys which are held in the application program API and terminates the private license daemon APSMl (step 4). If the private license daemon APSMl has already terminated, there is no problem.
Figure 36 is an explanatory view of the abnormal termination in both license daemon and the private license daemon. There are two cases in the termination of the license daemon LDP and the private license daemon APSMl as follows. 1) Both the license daemon LDP and the private license daemon APSMl are killed by the signal SIGKILL. 2) The license daemon LDP is abnormally killed, the private license daemon APSMl checks the license daemon LDP. When the private license daemon APSMl found that the license daemon LDP terminated and executed the EXIT, the private license daemon APSMl is killed by itself.
In this situation, the private application manager APCMl interrupts the application program API after setting of information -ve (negative value) to the pipe between the application program API and the private application manager APCMl (step 1), and sends the request APRIR to the license daemon LDP (step 2).
Figure 37 is an explanatory view when the license daemon LDP restarts after the situation described in the explanation of Fig. 36. When the license daemon LDP restarts, it recognizes the request APRIR (step 1), and recovers a new private license daemon APSMl" in order to communicate with the private application manager APCMl.
Figure 38 is an explanatory view of the system structure. As shown in the drawing, for example, one license daemon LDP can establish two groups, I and II, each having the application program AP, the private application manager APCM, and the private license daemon APSM. According to this structure, it is possible to reduce the load of the license daemon LDP. As a

result, it is possible to eliminate the delay of the processing time in the software.
Next, the following explanations are given for the concrete decision method for the number of key according to the present invention.
Figure 39 is a flowchart for determining the number of license (number of key). Further, Figures 40(A) to 40(1) are actual function lists for determining the number of key. Figures 41(A) to 41(F) are explanatory views of the sample program, and Figures 42(A) to 42(C) are explanatory views of the execution result of the sample program.
The actual program using the functions shown in Figs. 40(A) to 40(1) 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 key 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(1), a first function "GetSystemParameters" gets five parameters, such as, number of CPU (Ncpu), page size of memory (Psize), number of page for all physical memory capacity (PhyPage), number of page of vacant memory capacity (AvPage), and platform (Platform). These parameters are delivered to a second function "DetermineNumberOfLicense".
The second function "DetermineNumberOfLicense" 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 "DetermineNumberOfLicense" 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 CPU (sysconf(_SC_NPPROCESSORS ONLN)), page size of memory (sysconf(_SC_PAGESIZE)), number of page of all physical memory capacity (sysconf( SC_PHYS_PAGES)), and number of page 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 CPU (Ncpu), page size of memory (Psize), number of page for all physical memory capacity (PhyPage), and number of page for vacant memory capacity (AvPage), are substituted for predetermined variables.
Second, the second function "DetermineNumberOfLicense" is explained in detail with reference to Fig. 39 and Figs. 40(F) to 40(1).
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 license (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 CPU 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 process is one and the number of license 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 license (key) is set to double 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 10 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 10^ bytes, but less than 2 * 10 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 * 10* 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.


We claim:
1. A license management system for software which drives a single
computer or a plurality of computers, comprising:
a means for requesting a decision of the number of license which needs to drive itself and for receiving issuance of the license;
a number of license decision means for determining the necessary number of license in accordance with the request from the application program and
a license management means for issuing the number of license which was determined by the number of license decision means.
2. A license management system as claimed in claim 1, wherein
the number of license decision means comprises means for
determining the number of license based on the following multi-
nominal function,

where, LK is the number of license, xl to xn are parameters which need to determine the number of license.
3. A license management system as claimed in claim 1, wherein said means for requesting a decision of the number of license is an application program means.
4. A license management system as claimed in claim 1, wherein the license management means comprises means for subtracting the necessary number of license from the number of licenses, which are held in the license management means, when the number of license is correct, and issuing the license to the application program when the number of license held therein are not negative.
5. A license management system as claimed in any one of the preceding claims, wherein a number of license decision means is included in said application program means.
6. A license management system as claimed in claim 1 or 5, further comprising a private license daemon means separately

provided from the license daemon of the license management means, and a private application managing means separately provided from the application program means, wherein communication is performed between the private license daemon and the private application manager.
7. A license management system as claimed in claim 6, wherein a plurality sets of the private license daemon means and the private application managing means are established for one license daemon of said private lincense daemon means.
8. A method for issuing the licenses by a license management system, the method comprising the steps of:
delivering parameters from the application program means to the number of license decision means in order to substitute the number of license, which needed to start the application program itself, 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 license in the number of license decision means, substituting the determined number of license for the parameters delivered from the application program means, and returning the parameters to the application program;
notifying the necessary number of license from the application program means to the license management means by delivering the parameters, and requesting the license; and
subtracting the necessary number of license from the number of licenses, which are held in the license management means, when the license management means receives a normal flag from the number of license decision means, and returning the normal flag to the application program means when the number of licenses, which are held in the license management means, is not negative, and issuing the license.
9. A method as claimed in claim 8, wherein the license
management means further comprises the step of notifying the
number of license notified from the application program means

to the number of license decision means in order to confirm whether the number of license requested by the application program means is correct; and the step of comparing the number of license notified from the application program means to the license management means with the necessary number of license notified to the application program means, and of returning the normal flag to the license management means when a result of comparison is correct.
10. A method as claimed in claim 8, wherein the license management means further comprises the step of terminating the application program means at a time when an abnormal flag is returned from the license management means.
11. A method as claimed in claim 8, wherein the number of license decision means is a daemon program,
12. A method for issuing the licenses by a license management system, the method comprising the steps of:
delivering parameters from the application program means to the number of license decision function in order to receive the necessary number of licenses which needed to start itself when the application program starts;
determining the number of license by checking values of the necessary parameters which need to determine the number of license in the number of license decision means, substituting the determined number of license for the parameters delivered from the application program means, and returning the parameters to the application program means;
notifying the necessary number of license from the application program to the license management means by delivering the parameters, and requesting the license; and
subtracting the necessary number of license from the number of licenses, which are held in the license management means, when the license management means receives a request from the application program means, and returning a normal flag to the application program means when the number of

licenses, which are held in the license management means, is not negative, and issuing the license.
13. A method as claimed in claim 12, wherein the license management means further comprises the step of terminating the application program means at a time when an abnormal flag is returned from the license management means.
14. A method as claimed in claim 12, wherein the number of license decision function is a functional call.
15. A method for issuing the licenses by a license management system, the method comprising the steps of;
delivering parameters from the application program means to the number of license decision means in order to substitute or to receive the necessary number of licenses, which needed to start itself when the application program starts;
reading data from the database means to the number of license decision means, determining a multi-nominal function and the number of license by checking the values of necessary parameters in order to determine the number of license, substituting the determined number of license for parameters delivered from the application program means, and returning the parameters to the application program means, in the number of license decision means;
notifying the necessary number of license from the application program means to the license management means by delivering the parameters, and requesting the license; and
subtracting the necessary number of license from the number of licenses, which are held in the license management means, when the license management means receives a normal flag from the number of license decision means, returning the normal flag to the application program means when the number of licenses, which are held in the license management means, is not negative, and issuing the license.
16. A method as claimed in claim 15, wherein the license
management means further comprises the step of notifying the
number of license notified from the application program means
-36 -

to the number of license decision means in order to confirm whether the number of license requested by the application program means is correct; and the step of comparing the number of license notified from the application program means to the license management means with the necessary number of license notified to the application program means, and of returning the normal flag to the license management means when a result of comparison is correct.
17. A method as claimed in claim 15, wherein the license
management means further comprises the step of terminating
the application program means at a time when an abnormal flag
is returned from the license management means.
18. A method as claimed in claim 15, wherein the number of license
decision means is a daemon program.
19. A method as claimed in claim 15, wherein the database means
is changed when the multi-nominal function is changed without
changing the number of license decision means.
20. A method as claimed in claim 15, wherein the number of license decision function is a function call.
21. A license management system substantially as hereinbefore described with reference to and as illustrated in the accompanying drawings.
22. A method for issuing the licenses substantially as hereinbefore
described with reference to and as illustrated in the accompanying drawings.

Documents:

1169-mas-1997 abstract.pdf

1169-mas-1997 claims duplicate.pdf

1169-mas-1997 claims.pdf

1169-mas-1997 correspondence others.pdf

1169-mas-1997 correspondence po.pdf

1169-mas-1997 description (complete) duplicate.pdf

1169-mas-1997 description (complete).pdf

1169-mas-1997 drawings.pdf

1169-mas-1997 form-1.pdf


Patent Number 200266
Indian Patent Application Number 1169/MAS/1997
PG Journal Number 08/2007
Publication Date 23-Feb-2007
Grant Date 02-May-2006
Date of Filing 02-Jun-1997
Name of Patentee M/S. SILICON AUTOMATION SYSTEMS PVT LTD
Applicant Address 3008, 12TH 'B' MAIN, 8TH CROSS, HAL 2ND STAGE, INDIRANAGAR, BANGALORE 560 008
Inventors:
# Inventor's Name Inventor's Address
1 SUPRIYA K. PATEL SILICON AUTOMATION SYSTEMS PVT LTD, 3008, 12TH 'B' MAIN, 8TH CROSS, HAL 2ND STAGE, INDIRANAGAR, BANGALORE 560 008
2 SANJAY .D SANKOLLI SILICON AUTOMATION SYSTEMS PVT LTD, 3008, 12TH 'B' MAIN, 8TH CROSS, HAL 2ND STAGE, INDIRANAGAR, BANGALORE 560 008
3 KAZUNARI SEKIGAWA C/O SHINKO ELECTRIC INDUSTRIES CO., LTD 711 AZA SHARIDEN, OAZA KURITA, NAGANO-SHI, NAGANO 380,
4 TOMOMI SATO C/O SHINKO ELECTRIC INDUSTRIES CO., LTD 711 AZA SHARIDEN, OAZA KURITA, NAGANO-SHI, NAGANO 380,
PCT International Classification Number G06F 12/00
PCT International Application Number N/A
PCT International Filing date
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 NA