`Umted States Patent
`
`[19]
`
`[11] Patent Number:
`
`4 937 863
`9
`9
`
`
`Robert et al.
`[45] Date of Patent:
`Jun. 26, 1990
`
`[54] SOFTWARE LICENSING MANAGEMENT
`7
`SYSTEM
`[75]
`Inventors: Gregory Robert’ Nashua, NH_;
`David Chase Wellesley; Ronald
`Schaefer, Ac,ton, both of Mass.
`.
`.
`.
`.
`.
`I731 Awsnea DIM Eu-w-mt Corvorat-on»
`Maynard’ Mass‘
`- [21] Appl. No.: 164,944
`[22] Filed:
`Mm,_ 7, 1988
`'
`
`1111- C1-5 ----
`------- HML 9/09
`[51]
`US. Cl. .............n
`.n
`' [58] Field of Search ................................ 380/4, 23, 25
`[56]
`Refgrgnceg cited
`US. PATENT DOCUMENTS
`
`Fascenda ..............................
`380/4
`4,740,890 4/1988 William .......
`
`380/4
`4,791,565 12/1988 Dunham et al.
`1/1989 Wiedeiner ............................... 380/4
`4,796,181
`
`Primary Examiner-—Thomas H. Tarcza
`Assistant Examiner——David Cain
`Attorney, Agent, or Fzrm—Fish & Richardson
`TR Q
`1
`[5711
`ABS C; h
`1 d
`A '
`t
`t
`'
`'
`'
`mZ°gi‘$§£??§§§£'§’?h;’§§?mwjn; w‘L‘§J£e§i§a;Z“3‘FZ
`licensed program is within the scope of the license. The
`license management system maintains a license unit
`value for each licensed program and a pointer to a table
`identifying an allocation unit value associated with each
`use of the licensed program. In response to a request to
`use a licensed program’ the license management
`respond with an indication as to whether the license
`unit value exceeds the allocation unit value associated
`vvith the use. ‘Upon receiving the response, the opera-
`tion of the licensed program depends upon policies
`licenson
`
`13 Claims, 8 Drawing Sheets
`
`
`
`14
`
`LICENSE)
`PROGRAM
`
`RELEASE
`LICENSE
`LICENSING
`POLICY
`MODULE
`
`
`
`LICENSE
`MANAGEMENT
`FACILITY (UTILITY)
`
`LICENSE
`DATA
`BASE
`
`Petitioner Apple Inc. - Ex. 1015, p. 1
`
`Petitioner Apple Inc. - Ex. 1015, p. 1
`
`
`
`U.S. Patent
`
`Jun. 26, 1990
`
`Sheet 1 of 3
`
`4,937,863
`
`LICENSED
`PROGRAM
`
`
`
`
`
` LICENSING
`POLICY
`MODULE
`
`
`
`
`
`SYSTEM
`HARDWARE
`MODEL
`
` LICENSE
`DATA
`BASE
`
` LICENSE
`MANAGEMENT
`FACILITY (UTILITY)
`
`FIG.
`
`I
`
`Petitioner Apple Inc. - Ex. 1015, p. 2
`
`Petitioner Apple Inc. - Ex. 1015, p. 2
`
`
`
`US. Patent
`
`Jun_.26, 1990
`
`Sheet 2 of 8
`
`4,937,863
`
`ENTRY
`20(J.)
`
`LICENSE
`DATA
`
`BASE 1
`
`FIG. 2
`
`Petitioner Apple Inc. - Ex. 1015, p. 3
`
`Petitioner Apple Inc. - Ex. 1015, p. 3
`
`
`
`U.S. Patent
`
`Jun. 26, 1990
`
`Sheet 3 of 8
`
`4,937,863
`
`42
`
`43(1)
`
`43(M)
`
`_ LICENSE UNIT TABLE L10
`
`FIG. 3
`
`Petitioner Apple Inc. - Ex. 1015, p. 4
`
`Petitioner Apple Inc. - Ex. 1015, p. 4
`
`
`
`US. Patent
`
`Jun. 26, 1990
`
`Sheet 4 of 3
`
`4,937,863
`
`FWCi.41l\-1
`GRANT LICENSE
`
`50USER ISSUES GRANT LICENSE REQUEST TO REQUEST
`USAGE OF LICENSED PROGRAM 1A
`I
`ELICENSING POLICY MODULE TRANFERS GRANT LICENSE
`REQUEST TO OPERATING SYSTEM
`'
`
`I
`
`52OPERATING SYSTEM TRANSFERS GRANT LICENSE REQUEST
`AND SMM VALUE TO LICENSE MANAGEMENT FACILITY
`
`I
`
`54 LICENSE MANAGEMENT FACILITY RETRIEVES ENTRY FROM
`LICENSE DATA BASE ASSOCIATED WITH LICENSED PROGRAM
`
`\
`
`I
`
`55 DOES AVAILABITY TABLE FIELD 26 OF ENTRY 70 RETRIEVED NO
`FROM LICENSING DATA BASE HAVE A NON-ZERO VALUE
`
`YES
`
`56 RETRIEVE CONTENTS OF FIELD OF LICENSE USAGE
`ALLOCATION UNIT VA
`TABLE A3 IDENTIFIED BY
`AVAILABILITY TABLE FIELD 26 ASSOCIATED WITH
`SYSTEM 16 USED BY
`
`NUMBER FIELD 25 EXCEED VALUE YE
`M LICENSE USAGE ALLOCATION
`
`
`
`
`
`LICENSEMANAGEMENTFACILITY1O
`
`60 LICENSE MANAGEMENT FACILITY TRANSMITS REFUSE
`RESPONSE TO OPERATING SYSTEM 13
`<:>——~———»+
`FIG
`SIOPERATING SYSTEM 13 TRANSMITS REFUSE RESPONSE TO
`LICENSING POLICY MODULE 15
`4A-3
`
`
`
`A
`
`9
`
`FIG.
`4A‘3
`
`Petitioner Apple Inc. - Ex. 1015, p. 5
`
`Petitioner Apple Inc. - Ex. 1015, p. 5
`
`
`
`U.S. Patent
`
`Jun. 26,1990
`
`Sheet 5 of8
`
`4,937,863
`
`FIG. 4A-2
`
`FlG.4A'I
`
`62 LICENSING POLICY MODULE 15 RECEIVES REFUSE
`RESPONSE FROM OPERATING SYSTEM 13
`
`LICENSED PROGRAM COVERED BY A GROUP
`63 IS‘
`LI
`CENSE?
`
`I 1
`
`Y
`
`64ADJUST CONTENTS OF GROU
`17 TO REFLECT USAGE OF
`UNDER GROUP LICENSE
`
`P LICENSE TABLES
`LICENSED PROGRAM 14
`
`
`
`I
`GSPERMIT USAGE OF LICENSED PROGRAM 1A
`
`5518 USAGE OF LICENSED PROGRAM 1A PERMITTED
`BY LICENSOR’S OTHER LICENSING POLICIES?
`I
`
`N0
`
`57PERMIT USAGE OF LICENSED PROGRAM BY USER
`
`YES
`
`TOTERMINATE USAGE OF LICENSED PROGRAM 14
`
`Petitioner Apple Inc. - Ex. 1015, p. 6
`
`
`
`
`
`LICENSINGPOLICYMODULE15
`
`Petitioner Apple Inc. - Ex. 1015, p. 6
`
`
`
`U.S. Patent
`
`Jun. 26, 1990
`
`Sheet 6 of 8
`
`4,937,863
`
`FIG. 4A-3
`
`B
`
`TIDOES ACTIVITY TABLE FIELD 27 OF ENTRY 20
`RETRIEVED FROM LICENSING DATA BASE ll HAVE
`A NON—ZERO VALUE?
`
`N0
`
`
`
`YES
`
`I
`
`72RETRIEVE CONTENTS OF FIELD OF LICENSE USAGE
`ALLOCATION UNIT VALUE TABLE 43 IDENTIFIED
`BY ACTIVITY TABLE FIELD 27 ASSOCIATED WITH
`SYSTEM 16 USED BY USER
`
`73DOES VALUE IN LICENSE UNIT NUMBER FIELD 25
`EXCEED VALUE IN RETRIEVED FIFID FROM
`.
`LICENSE USAGE ALLOCATION UNIT VALUE TABLE A3?
`
`IN
`
`O
`
`E IN
`EITHER LICENSOR
`74IS SYSTEM DATE AFTER DAT
`TERMINATION DATE FIELD 31 OR LICENSE
`TERMINATION DATE FIELD 32 RETRIEVED FROM
`ENTRY 20 RETRIEVED FROM LICENSING DATA
`RASE ll?
`
`N0
`
`<i%:) FIG. A'1
`
`
` YES
`
`7SDECREMENT CONTENTS OF LICENSE UNIT NUMBER
`FIELD 25 BY FUNCTION OF CONTENTS OF FIELDS
`OF LICENSE USAGE ALLOCATION UNIT VALUE
`TABLE 43 RETRIEVED IN STEPS 56 AND 72
`
`I
`
`75TRANSMIT POSITIVE RESPONSE TO OPERATING
`SYSTEM 13
`-
`
`FlG.4A+4
`
`Petitioner Apple Inc. - Ex. 1015, p. 7
`
`
`
`
`
`LICENSEMANAGEMENTFACILITY10
`
`Petitioner Apple Inc. - Ex. 1015, p. 7
`
`
`
`U.S. Patent
`
`Jun. 26, 1990
`
`Sheet 7 of 8
`
`4,937,863
`
`FIG. 4A-4
`
`F|G.4A—3
`
`77 OPERATING SYSTEM 13 TRANSMITS POSITIVE
`RESPONSE TO LICENSING POLICY MODULE 15
`I
`80 LICENSING POLICY MODULE 15 PERMITS USAGE
`OF LICENSED PROGRAM 14 BY USER
`
`F|G.4B-1
`RELEASE LICENSE
`
`90 USER ISSUES RELEASE LICENSE REQUEST TO REQUEST
`'
`RELEASE OF LICENSED PROGRAM 14
`
`9!II
`I":lV-«CD
`
`NSI
`]><”)GNTI E O
`NSO
`(3
`
`N6 POLICY MODULE 15 DETERMINES WHETHER_________MQ
`F LICENSED PROGRAM 1A WAS PURSUANT TO
`R’S OTHER LICENSING POLICIES
`
`E
`
`92END'
`
`MODULE 15 DETERMINES WHETHER
`PROGRAM 1A WAS PURSUANT
`
`YES
`
`LICY MODULE ADJUSTS CONTENTS OF
`
`
`
`E
`
`LE TO REFLECT RfLEASE OF
`
`
`95END
`
`95LICENSIN
`LICENSE
`
`G POLICY MODULE 15 TRANSFERS RELEASE
`REQUEST TO OPERATING SYSTEM 13
`l
`
`97OPERATING SYSTEM 13 TRANSFERS R
`REQUEST TO LICENSE MANAGEMENT F
`
`Petitioner Apple Inc. - Ex. 1015, p. 8
`
`Petitioner Apple Inc. - Ex. 1015, p. 8
`
`
`
`U.S. Patent
`
`'1 Jun. 26, 1990
`
`Sheet 8 of8
`
`4,937,863
`
`FIG. 4B-2
`
`FIG.4B‘I
`
`
`
`
`
`LICENSEMANAGEMENTFACILITY10
`
`I00 LICENSE MANAGEMENT FACILITY RETRIEVES
`ENTRY 20 FROM LICENSE DATA BASE ASSOCIATED
`WITH LICENSED PROGRAM 14
`
`I
`lOlDOES AVAILABILITY TABLE FIELD 26 OF ENTRY 20
`RETRIEVED FROM LICENSING DATA BASE ll HAVE A
`NON-ZERO VALUE?
`
`No
`
`IOZRETRIEVE CONTENTS OF
`UNIT VALUE TABLE ID
`AVAILABILITY TABLE
`
`EEBE USAGE ALLOCATION
`BY CONTENTS OF
`
`
`
`7 OF ENTRY 2O RETRIEVED
`II HAVE A NON-ZERO VALUE?
`
`NC
`
`I04 RETRIEVE CONTENTS OF LI ENSE USAGE ALLOCATION
`ID
`UNIT VALUE TABLE
`ENTIFIED BY CONTENTS OF
`ACTIVITY TABLE FIEL
`
`
`
`IT NUMBER FIELD 25
`IOSINCREMENT CONTENTS OF LICENSE UN
`E
`USAGE ALLOCATION
`BY FUNCTION OF FIELDS OF LICENS
`UNIT VALUE TABLE RETRIEVED IN STEPS lO2 AND 104
`
`EIVD
`
`Petitioner Apple Inc. - Ex. 1015, p. 9
`
`Petitioner Apple Inc. - Ex. 1015, p. 9
`
`
`
`1
`
`SOFTWARE LICENSING MANAGEMENT
`SYSTEM
`
`4,937,863
`
`2
`fied processors or by the numbers of users permitted by
`the license.
`
`BACKGROUND OF THE INVENTION
`
`5
`
`1. Field of the Invention
`The invention relates generally to the field of digital
`data processing systems, and more specifically to a
`system for managing licensing for, and usage of, the
`various software programs which may be processed by
`the systems to ensure that the software programs are
`used within the terms of the software licenses.
`2. Description of the Prior Art
`A digital data processing system includes three basic
`elements, namely, a processor element, a memory ele-
`ment and an input/output element. The memory ele-
`ment stores information in addressable storage loca-
`tions. This information includes data and instructions
`for processing the data. The processor element fetches
`information from the memory element, interprets the
`information as either an instruction or data, processes
`the data in accordance with the instructions, and returns
`the processed data to the memory element for storage
`therein. The input/output element, under control of the
`processor element, also communicates with the memory
`element to transfer information, including instructions
`and data to be processed, to the memory, and to obtain
`processed data from the memory.
`Typically, an input/output element includes a num-
`ber of diverse types of units, including video display
`terminals, printers, interfaces to the public telecommu-
`nications network, and secondary storage subsystems,
`including disk and tape storage devices. A video display
`terminal permits a user to run programs and input data
`and view processed data. A printer permits a user to
`obtain a processed data on paper. An interface to the
`public telecommunications network permits transfer of
`information_oyer the public telecommunications net-
`work.
`
`l0
`
`15
`
`20
`
`25
`
`30
`
`35
`
`The instructions processed by the processor element 40
`are typically organized into software programs. Re-
`cently, generation and sales of software programs have
`become significant businesses both for companies which
`are primarily vendors of hardware, as well as for com-
`panies which vend software alone. Software is typically 45
`sold under license, that is, vendors transfer copies of
`software to users under a license which governs how
`the users may use the software. Typically, software
`costs are predicated on some belief as to the amount of
`usage which the software program may provide and the 50
`economic benefits, such as cost saving which may oth-
`erwise be incurred, which the software may provide to
`the users. Thus, license fees may be based on the power
`of the processor or the number of processors in the
`system, or the number of individual nodes in a network, 55
`since these factors provide measures of the number of
`users which may use the software at any give time.
`In many cases, however, it may also be desirable, for
`example, to have licenses and license fees more closely
`relate to the actual numbers of users which can use the
`program at any given time or on the actual use to which
`a program may be put. Furthermore, it may be desirable
`to limit the use of the program to specified time periods.
`A problem arises particularly in digital data processing
`systems which have multiple users and/or multiple
`processors, namely, managing use of licensed software
`to ensure that the use is within the terms of the license,
`that is, to ensure that the software is only used on identi-
`
`65
`
`SUMMARY OF THE INVENTION
`
`The invention provides a new and improved licensing
`management system for managing the use of licensed
`software in a digital data processing system.
`In brief summary, the license management system
`includes a license management facility and a licensing
`policy module that jointly determine whether a licensed
`program may be operated. The license management
`facility maintains a license unit value for each licensed
`program and a pointer to a table identifying a license
`usage allocation unit value associated with usage of the
`licensed program. In response to a request to use a
`licensed program, the license management facility de-
`termines whether the remaining license unit value ex-
`ceeds the license usage allocation unit value associated
`with the use. If the license unit value does not exceed
`the license usage allocation unit value, the license man-
`agement facility permits usage of the licensed program
`and adjusts the license unit value by a function of the
`license usage allocation unit value to reflect the usage.
`On the other hand, if the license unit value associated
`with use of the license program does exceed the license
`usage allocation unit value, the licensing policy module
`determines whether to allow the licensed program to be
`used in response to other licensing policy factors.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`This invention is pointed out with particularity in the
`appended claims. The above and further advantages of
`this invention may be better understood by referring to
`the following description taken in conjunction with the
`accompanying drawings, in which:
`FIG. 1 is a general block diagram of a new system in
`accordance with the‘ invention;
`FIGS. 2 and 3 are diagrams of data structures useful
`in understanding the detailed operation of the system
`depicted in FIG. 1; and
`FIGS. 4A-1 through 4B-2 are flow diagrams which
`are useful in understanding the detailed operations of
`the system depicted in FIG. 1.
`
`DETAILED DESCRIPTION OF AN
`ILLUSTRATIVE EMBODIMENT
`
`FIG. 1 depicts a general block diagram of a system in
`accordance with the invention for use in connection
`with a digital data processing system which assists in .
`managing software use in accordance with software
`licenses. With reference to FIG. 1, the new system
`includes a license management facility 10 which oper-
`ates in conjunction with a license data base 11 and li-
`cense unit tables 12, and under control of an operating
`system 13 and licensing policy module 15 to control use
`of licensed programs, such as licensed program 14, so
`that the use is in accordance with the terms of the soft-
`ware license which controls the use of the software
`
`program on a system 16 identified by a system market-
`ing model (SMM) code in a digital data processing
`system.
`As is conventional, the digital data processing system
`including the licensing management system may include
`one or more systems 16, each including one or more
`processors, memories and input/output units, intercon-
`nected in a number of ways. For example, the digital
`data processing system may comprise one processor,
`
`Petitioner Apple Inc. - Ex. 1015, p. 10
`
`Petitioner Apple Inc. - Ex. 1015, p. 10
`
`
`
`4,937,863
`
`3
`which may include a central processor unit which con-
`trols the system and one or more auxiliary processors
`which assist the central processor unit. Alternatively,
`the digital data processing system may comprise multi-
`ple processing systems, in which multiple central pro-
`cessor units are tightly coupled, or clustered or net-
`worked systems in which multiple central processor
`units are loosely coupled, generally operating relatively
`autonomously, interacting by means of messages trans-
`mitted over a cluster or network connection. In a
`tightly coupled multiple processing system, for exam-
`ple, it may be desirable to control the number of users
`which may use a particular software program at one
`time. A similar restriction may be obtained in a cluster
`or network environment by controlling the number of
`particular nodes, that is, connections to the communica-
`tions link in the cluster or network over which messages
`are transferred. In addition, since the diverse processors
`which may be included in a digital data processing
`system may have diverse processing speeds and powers,
`represented by differing system marketing model
`(SMM) codes, it may be desirable to include a factor for
`speed and power in determining the number of proces-
`sors on which a program may be used concurrently.
`As will be explained in greater detail below, the li-
`cense data base ll contains a plurality of entries 20
`(described below in connection with FIG. 2) each con-
`taining information relating to the terms of the license
`for a particular licensed program 14. In one embodi-
`ment such information may include a termination date,
`if the license is for a particular time period or expires on
`a particular date, and a number of licensing units if the
`license is limited by usage of the license program. In
`that embodiment, the entry also includes identification
`of a license unit table 40 (described below in connection
`with FIG. 3) in the license unit tables 12 that identifies
`the number of allocation units for usage of the licensed
`program.onJ:he types of systems 16 which may be used
`in the digital data processing system as represented by
`the system marketing model (SMM) codes.
`When a user wishes to use a licensed program 14, a
`GRANT LICENSE request message is generated
`which requests information as to the licensing status of
`the licensed program 14. The GRANT LICENSE re-
`quest message is transmitted to the licensing policy
`module 15, which notifies the operating system of the
`request. The operating system 13, in turn, passes the
`request, along with the system marketing model of the
`specific system 16 being used by the user, to the license
`management facility 10 which determines whether use
`of the program is permitted under the license.
`In response to the receipt of the GRANT LICENSE
`request from the user and the system marketing model
`(SMM) code of the system 16 being used by the user on
`which the licensed program will be processed, the li-
`cense management facility 10 obtains from the license
`data base the entry 20 associated with the licensed pro-
`gram 14 and determines whether the use of the licensed
`program 14 is within the terms of the license as indi-
`cated by the information in the license data base 11 and
`the license unit tables 12.
`In particular, the license management facility 10 re-
`trieves the contents of the entry 20 associated with the
`licensed program. If the entry 20 indicates a termination
`date, the license management facility 10 compares the
`system date, which is maintained by the digital data
`processing system in a conventional manner, with the
`termination date identified in the entry. If the system
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`65
`
`4
`date is after the termination date identified in the entry
`20, the license has expired and the license management
`facility 10 generates a usage disapproved message,
`which it transmits to the operating system 13. On the
`other hand, if the termination date indicated in the entry
`20 is after the system date, the license has not expired
`and the license management facility 10 proceeds to
`determine whether the usage of the licensed program 14
`is permitted under other terms of the license which may
`be embodied in the entry 20.
`In particular, the license management facility 10 then
`determines whether the usage of the licensed program is
`permitted under usage limitations. In that operation, the
`license management facility obtains the number of li-
`cense units remaining, which indicates usage of the
`licensed program 14 not including the usage requested
`by the user, as well the identification of the table 40 in
`license unit tables 12 associated with the licensed pro-
`gram 14. The license management facility 10 then com-
`pares the number of license units which would be allo-
`cated for use of the licensed program 14, which it ob-
`tains from the table 40 identified by entry 20 in the
`license data base 11, and the number of remaining li-
`cense units to determine whether sufficient license units
`remain to permit usage of the licensed program 14.
`If the number of remaining license units indicated by
`entry 20 in the licensed data base 11 exceeds the num-
`ber, from license unit tables 12, of license units which
`would be allocated for use of the licensed program 14,
`the usage of the licensed program is permitted under the
`license. Accordingly, the license management facility
`transmits a usageapproved response to the operating
`system 13. In addition, the license management facility
`10 adjusts the number of remaining license units in entry
`20 by a function of the license units allocated to use of
`the licensed program to reflect the usage.
`On the other hand, if the number of remaining license
`units indicated by entry 20 in the license data base is less
`than the number of license units which would be allo-
`cated for use of the licensed program 14, the usage of
`the licensed program 14 is not permitted by the license.
`In that case, the license management facility 10 trans-
`mits a usage disapproved response to the operating
`system 13. In addition, the license management facility
`10 may also log the usage disapproved response; this
`information may be used by a system operator to deter-
`mine whether usage of the licensed program 14 is such
`as to warrant obtaining an enlarged license.
`Upon receipt of either a usage approved response or
`a usage disapproved response to the GRANT LI-
`CENSE request, the operating system 13 passes the
`response to the licensing policy module 15. If a usage
`approved response is received,
`the licensing policy
`module normally allows usage of the licensed program
`14. If a usage disapproved response is received, the
`licensing policy module determines whether the usage
`of the licensed program may be permitted for other
`reasons. For example, usage of the licensed program 14
`may be permitted under a group license, whose terms
`are embodied in entries in group license tables 17.
`Under a group license, usage may be permitted of any of
`a group of licensed programs. The operations to deter-
`mine to whether usage is permitted may be performed
`in the same manner as described above in connection
`with license management facility 10. In addition, if the
`usage of the licensed program 14 is not permitted under
`a group license, usage may nonetheless be permitted
`under the licensor’s licensing practices, which may be
`
`Petitioner Apple Inc. - Ex. 1015, p. 11
`
`Petitioner Apple Inc. - Ex. 1015, p. 11
`
`
`
`5
`embodied in the licensing policy module 15. If the li-
`censing policy module determines that usage of the
`program should be permitted, notwithstanding a usage
`disapproved response from the license management
`facility 10, because the usage is permitted under a group
`license or the licensor’s licensing practices, the licensing
`policy module 15 permits usage of the licensed pro-
`gram. Otherwise, the licensing policy module does not
`permit usage of the licensed program in response to the
`GRANT LICENSE request.
`charge When a user no longer requires use of a li-
`censed program 14,
`it
`transmits a RELEASE LI-
`CENSE request to the licensing policy module 15. The
`operations performed by the licensing policy module
`depend on the basis for permitting usage of the licensed
`program. If usage was permitted as a result of a group
`license, if the group license is limited by usage, the
`licensing policy module 15, if necessary, adjusts the
`records in the group license tables 17 related to the
`group license to reflect the fact that the licensed pro-
`gram 14 is not being used. If the usage was permitted as
`a result of a group license which is not limited by usage,
`"but instead is limited in duration, or if the usage was
`permitted in response to the licensor’s licensing policies,
`the licensing policy module 15 need do nothing. If the
`licensing policy module 15 maintains a log of usage
`outside the scope of a group or program license, it may
`make an entry in the log of the RELEASE LICENSE
`request.
`_
`Finally, if usage was permitted as a result of the li-
`cense management facility 10 providing an approve
`usage response to the GRANT LICENSE request, the
`licensing policy module 15 transmits the RELEASE
`LICENSE request to the operating system 13. In re-
`sponse,
`the operating system 13 transfers the RE-
`LEASE LICENSE request to the license management
`facility 10, along with an identification of the system 16
`using thelicensed program 14. The license management
`facility 10 then obtains from the license data base the
`identification of the appropriate license usage allocation
`unit value table in license unit tables 12, and determines
`the number of allocation units associated with this use
`of the licensed program 14 based on the identified allo-
`cation table and the processor. The license management
`facility 10 then adjusts the number of license units -for
`the licensed program 14 in the license data base 11 to
`reflect the release.
`
`It will be appreciated by those skilled in the art that,
`the license management facility 10 may, in response to a
`GRANT LICENSE request, instead of deducting allo-
`cation units from the entries in the license data base 11
`associated with the licensed programs 14, determine the
`number of allocation units which would be in use if
`usage of the licensed program 14 is permitted, and re-
`spond based on that determination. If the license man-
`agement facility 10 operates in that manner, it may be
`advantageous for the entries in license data base 11
`relating to each licensed program 14 to maintain a run-
`ning record of the number of allocation units associated
`with its usage. The licensing policy module 15 may
`operate similarly in connection with group licenses that
`are limited by usage.
`It will also be appreciated that the new license man-
`agement system thus permits the digital data processing
`system to control use of a licensed program 14 based on
`licensing criteria in the license data base 11, the license
`unit tables 12, the group licensing tables 17 and the
`licensor’s general licensing policies rather than requir-
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`SO
`
`55
`
`65
`
`4,937,863
`
`6
`ing an operator to limit or restrict use of a licensed
`program or charging for the license based on some
`function of the capacity of all of the processors in the
`digital data processing system. The new license man-
`agement system allows for very flexible pricing of li-
`censes and licensing policies, since the digital data pro-
`cessing system itself enforces the licensing terms con-
`trolling use of the licensed programs 14 in the system.
`FIG. 2 depicts the detailed structure of the license
`data base 12 (FIG. 1) used in the license management
`system depicted in FIG. 1. With reference to FIG. 2,
`the license data base includes a plurality of entries gen-
`erally identified by reference numeral 20, with each
`entry being associated with one licensed program 14.
`Each entry 20 includes a number of fields, including an
`issuer name field 21 identifying the issuer of the license,
`an authorization number field 22 which contains an
`authorization number, a producer name field 23 which
`identifies the name of the vendor of the licensed pro-
`gram, and a product name field 24 which contains the
`name of the licensed program. The contents of these
`fields may be used, for example, in connection with
`other license management operations, such as determin-
`ing the source of licensed programs in the event of
`detection of errors in programs, and in locating dupli-
`cate entries in the license data base or entries which may
`be combined as a result of licenses being obtained and
`entered by, perhaps.different operators or at different
`times.
`
`Each entry 20_in the licensing data base 11 also in-
`cludes a license number field 25 whose contents identify
`the number of licensing units remaining. A license of a
`licensed program 14 identifies a number of licensing
`units, which may be a function of the price paid for the
`license. An availability table field 26 and an activity
`table field 27 identify license usage allocation unit value
`tables in the license unit tables 12 (described below in
`connection with FIG. 3) to be used in connection with
`the GRANT LICENSE and RELEASE LICENSE
`requests.
`'
`By way of background, a license may be in accor-
`dance with a licensing paradigm which requires concur-
`rent use of the licensed program 14 on several proces-
`sors to be a function of the processor power and capac-
`ity, and the availability table field 26 identifies a license
`usage allocation unit table to be used in connection with
`that. In an alternative, a license may be in accordance
`with a licensing paradigm which requires concurrent
`use of the licensed program to be a function of the
`number of users using the program, and the activity
`table field 27 identifies a license usage allocation unit
`value table in the license unit tables 12 to be used in
`connection with that. If either licensing paradigm is
`used to the exclusion of the other, one field contains a
`non-zero value and the other field contains a zero value.
`In addition, a license may be in accordance with both
`licensing paradigms, that is, concurrent use of a pro-
`gram may be limited both by processor power and ca-
`pacity and by the number of concurrent users, and in
`that case both fields 26 and 27 have non-zero values.
`In one embodiment of the licensing management
`system, fields 21 through 27 of an entry 20 in the licens-
`ing data base 11 are required. In that embodiment, an
`entry 20 in the licensing data may also have several
`optional fields. In particular, an entry 20 may include a
`date/version number field 30 whose contents comprise
`either a date or version number to identify the licensed
`program. If a license is to terminate on a specific date,
`
`Petitioner Apple Inc. - Ex. 1015, p. 12
`
`Petitioner Apple Inc. - Ex. 1015, p. 12
`
`
`
`4,937,863
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`65
`
`7
`the entry 20 may include a licensor termination date
`field 31 or a licensee termination date field 32 whose
`contents specify the termination date assigned by the
`licensor or licensee. This may be particularly useful, for
`example, as a mechanism for permitting licensees to
`demonstrate or try a program before committing to a
`long or open term license.
`Finally, an entry 20 in the license data base includes a
`checksum field 33, which includes a checksum of the
`contents of the other fields 21 through 27 and 30
`through 32 in the entry 20, which may be established by
`means of a mathematical algorithm applied to the con-
`tents of the various fields. The general mechanism for
`establishing checksums is well known in the art, and
`will not be described further herein. The contents of all
`fields 21 through 27 and 30 through 33 of a new entry 20
`are entered by an operator. Prior to establishment of an 4
`entry in the license data base 11, the license manage-
`ment facility 10 may verify correct entry of the informa-
`tion in the various fields by calculating a checksum and
`comparing it to the checksum provided by the operator.
`If the checksum provided by the operator and the
`checksum determined by the license management facil-
`ity are the same, the entry 20 is established in the license
`data base 11. On the other hand, if the checksum pro-
`vided by the operator and the checksum determined by
`the license management facility differ, the license man-
`agement facility 10 determines that the information is
`erroneous or the license is invalid and does not establish
`the entry 20 in the license data base 11. It will be appre-
`ciated that, if the checksum-generation algorithm is
`hidden from an operator,
`the checksum provides a
`mechanism for verifying, not only that the information
`has been properly loaded into the entry, but also that
`the license upon which the entry is based is authorized
`by the licensor.
`The structure of group license tables 17 may be simi-
`lar to the structure of the license data base 11, with the
`addition that the entries for each license reflected in the
`group license tables 17 will need to identify all of the
`licensed programs covered thereby.
`As described above, the licensing unit tables 12 (FIG.
`1) contain information as to the allocation units for use
`in determining the number of licensing units associated
`with use of a licensed program. The structure of a li-
`censing unit table 40 is depicted in FIG. 3. With refer-
`ence to FIG. 3, the licensing unit table includes a plural-
`ity of entries 41(1) through 4l(N) (generally identified
`by reference numeral 41) each identified by a particular
`type of processor. One entry 41 in the table 40 is pro-
`vided for each type of processor which can be included
`in the digital data processing system which can use the
`licensed programs 14 which reference the license unit
`table 40. The processor associated with each entry is
`identified by a processor identification field 42.
`The successive fields in the entries 41 (which form
`the various columns in the table 40 depicted in FIG. 3)
`form license usage allocation unit value tables 43(1)
`through 43(M) (generally identified by reference nu-
`meral 43) The contents of the availability table field 26
`and theactivity table field 27 identify a license usage
`allocation unit value table 43. If there are non-zero
`contents in both availability field 26 and activity field
`27,
`the contents which identify be the same license
`usage allocation unit value table 43 or different license
`usage allocation unit value tables 43. As described
`above, the contents of the license usage allocation unit
`value table identify the number of licensing units associ-
`
`8
`ated with use of the licensed programs which identify
`the particular license usage allocation unit value table,
`for each of the identified processors.
`The operation of the licensing management system is
`depicted in detail in FIGS. 4A-1 through 4B. FIGS.
`4A-1 through 4A-4 depict, in a number of steps the
`details of operation of the licensing management system
`in connection with the GRANT LICENSE request
`from a licensed program 14. FIGS. 4B-1 and 4B-2 de-
`pict, in a number of steps, the details of operation in
`connection with the RELEASE LICENSE request
`from a licensed program 14. In the Figs., the parti