WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method and apparatus for updating software at remote locations    
United States Patent5155847   
Link to this pagehttp://www.wikipatents.com/5155847.html
Inventor(s)Kirouac; Donald L. (Thornhill, CA); Porrett; William A. (Unionville, CA); Czerwinski; Marek J. (Scarborough, CA)
AbstractA method and system are provided for updating the software used in remote computer systems from a central computer system. The method includes storing in the central computer system, copies of the software executable used in each remote computer system. When the copies of the software in the central computer system are upgraded, for example, to correct the software, to add new facilities, to change user interfaces, to make cosmetic changes, to improve performance, etc., each change made to the software is monitored and stored. The remote computer systems are permitted access to the central computer system via communication links and the software in the remote computer systems and the corresponding software in the central computer system are compared. All of the changes that have been made to the software at the central computer system which have not been made to the corresponding software at the remote computer system accessing the central computer are detected. The detected changes are then transmitted to the remote computer system and applied to the software therein in order to upgrade the software in the remote computer system. The upgraded software in the remote computer system is examined to ensure that the software has been changed correctly. The method allows the software at the remote computer systems to be upgraded even while the software at the remote site is being used. The system and method also allow the software used in the remote computer systems to be upgraded when the remote computer systems use different versions of the software and allow the software to be upgraded in a variety of hardware environments and operating systems.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5155847
Method and apparatus for updating software at remote locations - US Patent 5155847 Drawing
Method and apparatus for updating software at remote locations
Inventor     Kirouac; Donald L. (Thornhill, CA); Porrett; William A. (Unionville, CA); Czerwinski; Marek J. (Scarborough, CA)
Owner/Assignee     Minicom Data Corporation (Markham, CA)
Patent assignment
All assignments
Publication Date     October 13, 1992
Application Number     07/227,799
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     August 3, 1988
US Classification     709/221 717/170 717/171
Int'l Classification     G06F 007/00 G06F 009/00 G06F 013/00
Examiner     Hecker; Stuart N.
Assistant Examiner     Whitfield; Michael A.
Attorney/Law Firm     Nixon & Vanderhye
Address
Parent Case    
Priority Data    
USPTO Field of Search     364/300 364/200 MS File 364/900 MS File 395/600 395/650 395/200
Patent Tags     updating software remote locations
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5019963
Alderson
707/201
May,1991

[0 after 0 votes]
4866611
Cree
708/112
Sep,1989

[0 after 0 votes]
4858114
Heath
703/27
Aug,1989

[0 after 0 votes]
4849879
Chinnaswamy
706/45
Jul,1989

[0 after 0 votes]
4845665
Heath
703/21
Jul,1989

[0 after 0 votes]
4827399
Shibayama
707/202
May,1989

[0 after 0 votes]
4794519
Koizumi
707/10
Dec,1988

[0 after 0 votes]
4748561
Brown
711/164
May,1988

[0 after 0 votes]
4714996
Gladney
707/203
Dec,1987

[0 after 0 votes]
4641274
Swank
715/531
Feb,1987

[0 after 0 votes]
4630234
Holly
707/3
Dec,1986

[0 after 0 votes]
4558413
Schmidt
707/203
Dec,1985

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. A method of upgrading, from a central computer system, the executable code used in at least one remote computer system, comprising the steps of:

storing in said central computer system a record of the executable code in use at said at least one remote computer system and executable code corresponding to the executable code used in said at least one remote computer system;

upgrading the corresponding executable code and recording the changes made to said corresponding executable code at said central computer system, wherein said changes are in the form of patches, each patch including at least one change to said corresponding executable code;

assigning first and second checksums to each said patch, said first checksum representing an image of the corresponding executable code before the patch is applied thereto and said second checksum representing an image of the corresponding executable code after the patch has been applied thereto;

establishing a communications link between said at least one remote computer system and said central computer system, said central computer system identifying said at least one remote computer system and examining said record to determine the executable code used therein;

examining said record to determine the changes that have been made to said corresponding executable code that have not been made to the executable code used at said at least one remote computer system;

transmitting the changes made to said corresponding executable code to said at least one remote computer system to upgrade the executable code therein; and

verifying transmission of the changes and examining the upgraded executable code used at said at least one remote computer system to ensure that the executable code used therein has been properly upgraded.

2. A method as defined in claim 1 further comprising the step of assigning a patch number to each of said patches, said patch number indicating the total number of patches made to the corresponding executable code stored at said central computer system.

3. A method as defined in claim 2 including a plurality of remote computer systems wherein each remote computer system is assigned a threshold value, said threshold value capable of being different for each remote computer system, the threshold value being used to allow remote computer systems to receive patches having patch numbers less than or equal to said threshold value.

4. A method as defined in claim 3 further comprising the steps of testing said patches at said central computer system prior to making said patches available for release to said plurality of remote computer systems, said patches being tested in numerical order as determined by said patch number, said threshold values assigned to said plurality of remote computer systems being determined by the numbers assigned to said patches.

5. A method as defined in claim 4 wherein said patches can be tested out of numerical order, said threshold values being equal to a number less than or equal to the highest patch number assigned to a patch that has been tested and wherein all patches having a patch number less than the highest patch number have also been tested.

6. A method as defined in claim 5 further comprising the step of allowing said central computer system to transmit priority patches to said remote computer systems having patch numbers exceeding said threshold value, said central computer system transmitting said priority patches, any patches related to the priority patches and any patches made to the corresponding executable code at said central computer system having patch numbers of a value between the threshold value and the priority patch number.

7. A method as defined in claim 1 further comprising the steps of examining each patch made to the corresponding executable code stored at the central computer system to determine if a patch is related to a previous patch made to said corresponding executable code and coding the related patches to ensure that said at least one remote computer system being upgraded receives all related patches when the executable code therein is being upgraded.

8. A method as defined in claim 7 wherein the patches made to the corresponding executable code are manually coded as being related to previous patches.

9. A method as defined in claim 1 wherein there are at least two remote computer systems, each of said remote computer systems have a mandatory set of executable code, each of said remote computer systems being capable of having a different version of said mandatory set of executable code and wherein at least one of said remote computer systems is supplied with at least one additional set of executable code which co-operates with said mandatory set of executable code being of the same version in said at least one remote computer system, said mandatory and additional sets of executable code constituting said corresponding executable code and being upgraded at said central computer system.

10. A method as defined in claim 9 further comprising the steps of:

determining at said central computer system the mandatory and additional sets of executable code used at said at least one remote computer system and the version thereof once a communication link has been established and said at least one remote computer system has been identified and prior to transmitting said patches; and

transmitting automatically said patches from said central computer system to said remote computer system relating to said mandatory and additional sets of executable code used at said one remote computer system.

11. A method as defined in claim 1 further comprising the steps of:

examining each patch made to the corresponding executable code stored at said central computer system to detect whether said patch is applicable to other versions of the same executable code and

applying the patch to the other versions of the same executable code stored at said central computer when said patch is detected as being applicable thereto.

12. A method as defined in claim 11 wherein said other versions of the same executable code are detected automatically by said central computer system, said method further comprising the step of the said central computer system applying said patches to the other versions of the same executable code stored at said central computer automatically upon an input confirmation.

13. A method as defined in claim 1 further comprising the steps of:

comparing automatically at said central computer system the first checksum assigned to a patch to be applied to said corresponding executable code with the second checksum assigned to the previous patch made to the corresponding executable code to ensure that the checksums are identical; and

recording the patches at said central computer system when said checksum are identical.

14. A method as defined in claim 13 wherein said central computer system stores a first version of executable code and at least one different of the same executable code, said at least one different version being used in said remote computer systems, and wherein a patch made to said first version can be applied to said at least one different version, further comprising the steps of:

comparing automatically at said central computer system the first checksum assigned to said patch with the second checksum of the last patch applied to said at least one different version;

applying said patch to said at least one different version when said first and second checksums correspond;

making a copy of said at least one different version and applying said patch to said copy, when said checksums do not correspond;

determining a first set of differences between said copy and a patched first version;

determining a second set of differences between the unpatched first version and said at least one different version; and

applying the patch to said at least one different version when said first and second sets of differences are equivalent.

15. A method as defined in claim 1 wherein the step of verifying transmission of said patches further comprises the step of transmitting said first and second checksums to said remote computer system, said remote computer system examining the checksums assigned to said patches to determine if the transmission of the patches is correct.

16. A method as defined in claim 15 wherein the step of verifying transmission of said patches further comprises the steps of making a copy at said at least one remote computer system of the executable code used at said at least one remote computer system and applying the transmitted patch thereto;

said remote computer assigning a checksum to the copy of the executable code with the patch applied thereto and comparing said checksum to said transmitted second checksum; and

replacing the executable code with the copy of the executable code having the patch applied thereto when said assigned and said transmitted second checksum are equivalent.

17. A method as defined in claim 1 wherein there are a plurality of said remote computer systems and further comprising the step of allowing two or more of said plurality of remote computer systems to gain access to said central computer system at the same time.

18. A method as defined in claim 17 further comprising the steps of assigning at least one of said plurality of remote computer system with access priority;

providing said central computer system with a predetermined number of reserved communication inputs;

inhibiting remote computer systems without priority access from establishing a communication link via said reserved inputs; and

allowing said at least one of said plurality of remote computer systems assigned access priority to establish a communication link with said central computer system via one of said reserved inputs when the other inputs to said central computer system are occupied.

19. A method as defined in claim 1 further comprising the step of releasing said patches to different remote computer systems at different times.

20. A method as defined in claim 19 wherein the times at which said patches are released to said at least one remote computer system are based on a predetermined logical grouping of said remote computer systems.

21. A system for upgrading, from a central computer system, the executable code used in at least one remote computer system comprising:

storage means located in said central computer system for storing a record of the executable code in use at said at least one remote computer system and executable code corresponding to the executable code used in said at least one remote computer system;

input means located at said central computer system for allowing the corresponding executable code stored therein to be upgraded;

upgrade detection means located in said central computer system for detecting and recording automatically each change made to the corresponding executable code stored therein, wherein said changes are in the form of patches with each patch including at least one change to said corresponding executable code;

checksum assignor means in said central computer system and said at least one remote computer system for assigning each patch a pair of checksums, said checksums representing an image of the corresponding executable code with and without the patch applied thereto;

communication means for establishing a communication link between said at least one remote computer system and the central computer system;

first identifying means located in said central computer system to identify said at least one remote computer system and to examine said record to determine the executable code used therein;

second identifying means for examining said record to identify the changes that have been made to the corresponding executable code stored in said central computer system which have not been made tot he executable code in said at least one remote computer system;

transmission means for transmitting the identified changes from said central computer system to said at least one remote computer system; and

verification means at one of said central computer system and said at least one remote computer system for comparing the checksums assigned to said patch by said central computer system with those assigned by said at least one remote computer system thereby to ensure that each patch is received at said at least one computer system correctly.

22. A system as defined in claim 21 wherein the input means includes at least one computer terminal.

23. A system as defined in claim 21 wherein said communication link is in the form of a packet switching network, said transmission means transmitting said patches from the central computer system to said at least one remote computer system over said packet switching network.

24. A system as defined in claim 21 wherein there are a plurality of remote computer systems and said central computer system includes multi-taking capabilities and a plurality of inputs to allow at least two of said plurality of remote computer systems to gain access to the central computer system at the same time.

25. A system as defined in claim 2 wherein at least one remote computer system is given access priority to said central computer system, said central computer system further including at least one predetermined input reserved to allow said at least one remote computer system assigned access priority to establish a communication link via said at least one predetermined input when the other inputs to said central computer system are occupied.

26. A system as defined in claim 21 wherein said central computer system assigns a patch number to each patch made to said corresponding executable code said patch number increasing consecutively with each patch made.

27. A system as defined in claim 26 further comprising a related patch detector in said central computer system for detecting and coding patches which are related to previous patches made to the corresponding executable code to ensure that said at least one remote computer system receives all related patches when the executable code used therein is being upgraded.

28. A system as defined in claim 27 further comprising a plurality of remote computer systems and threshold assigning means at said central computer system for assigning a threshold value to each of said plurality of remote computer systems, said threshold value capable of being different for each of said plurality of remote computer systems, said threshold value being used to allow each of said plurality of remote computer systems to receive patches having patch numbers and related patch numbers less than or equal to said threshold value.

29. A system as defined in claim 28 wherein said central computer system tests said patches before making them available for release to said remote computer systems, said threshold values being equal to a number less than or equal to the highest number assigned to a patch tested by said central computer system and wherein all patches having a number below said highest number have also been tested.

30. A system as defined in claim 29 further comprising means for allowing patches having a number greater than said threshold value to be transmitted to predetermined ones of said remote computer systems.

31. A system as defined in claim 21 wherein said central computer system releases patches to different remote computer systems at different times.

32. A system as defined in claim 31 wherein the times at which said patches are released to said at least one remote computer system are based on a predetermined logical grouping of said remote computer systems.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

The present invention relates to software support and in particular to a method and system for upgrading software used in remote computer systems from a central computer system.

Presently, a plurality of methods are used by software suppliers to upgrade the existing software that is used by their customers. These methods include floppy disk distribution, tape distribution and modem support. For example, Lotus Development Corporation typically uses floppy disk distribution to supply its users with Lotus 1-2-3 (trademark) software. This method requires Lotus Development Corp. to write the upgraded versions of their software on floppy disks and distribute the disks via an appropriate service to all of its customers.

However, a number of problems exist in this type of software support method in that an upgraded floppy disk version of the software is typically released once a year. Thus, a user must use the existing software even after faults have been recognized, until the new disk version of the software is received, since there is no immediate software support for individual users. Furthermore, since the upgrading process often results in the addition of new program errors, the user must cope with the program faults of the new version until yet another version of the software is released. Moreover, further time delays exist in obtaining upgraded versions of the software, since the floppy disks are typically distributed via the postal service.

A similar manner of software support has been attempted using tape distribution to supply new versions of software to consumers. Although this method reduces the occurrence of damage to the physical medium containing the software, the process is still time consuming, since the tapes must be forwarded to each of the software users.

Modem support has also been attempted as a method of upgrading existing software. In this method, an operator at the software supplier links with the consumer's remote computer system and manually upgrades the software. However, this method of upgrading software is time consuming, expensive and prone to error, since the method involves manual processes. Accordingly, there is a need for an improved method of upgrading software.

SUMMARY OF THE INVENTION

It is therefore an object of the present invention to obviate or mitigate the above disadvantages.

According to the present invention there is provided a method of upgrading software used in remote computer systems from a central computer system comprising the steps of:

storing in said central computer system, software corresponding to the software used in each of said remote computer systems;

upgrading the corresponding software at said central computer system;

recording the changes made to said corresponding software;

allowing access of said remote computer systems to said central computer system via communication links;

identifying said remote computer systems accessing said central computer system and the software used therein;

comparing the software in said remote computer system with the corresponding software in said central computer system;

identifying changes that have been made to the corresponding software that have not been made to the software in said remote computer systems;

transmitting the identified changes to said remote computer system and applying the changes to the software therein; and

verifying transmission of the changes and examining the upgraded software in said remote computer systems to ensure that the software has been properly upgraded.

In another aspect of the present invention there is provided a software support system for upgrading software used in remote computer systems from a central computer system comprising:

a central computer system including data storage for storing software corresponding to the software used in said remote computer systems;

input terminals at the central computer system through which the corresponding software may be upgraded, with the changes made for the upgrade being recorded by the central computer system;

communication links allowing the remote computer system to access the central computer system;

a comparator for comparing the software at a remote computer system with the corresponding software at the central computer system and identifying the changes made to the corresponding software which have not been made to the software at the remote computer system;

a data transmission device to transmit the identified changes to the remote computer system and to apply the changes to the software therein to upgrade the software, the central computer system and the remote computer system verifying the correct transmission of the changes and proper upgrading of the software in the remote computer system.

Preferably, at least one conventional computer terminal is provided for allowing a user to apply changes to the corresponding software stored in the central computer system. It is also preferred that the data transmission device implement "handshaking" between the central computer system and each remote computer system accessing the central computer system.

Preferably, the central and remote computer systems implement checksums to verify the correct transmission of the software changes sent to the remote computer systems and to ensure that the software at the remote computer systems has been properly upgraded.

Preferably, the central computer system is capable of upgrading the software used in the remote computer systems at any time and has multi-tasking capabilities to allow a plurality of remote computer systems to gain access to the central computer system at the same time. Furthermore, it is preferred that the system provides software support for all remote computer systems when the remote computer systems are using different versions of the software.

The present system and method provide the advantages of allowing the software used in the remote computer systems to be upgraded from a central system at any time regardless of the magnitude of the upgrade. Furthermore, the system can operate on various software and hardware environments thereby allowing substantially all types of software to be upgraded. As used herein, executable code comprises data which represents the program of a computer system and the associated data for such a program.

BRIEF DESCRIPTION OF THE DRAWINGS

An embodiment of the present invention will now be described, by way of example only, with reference to the accompanying drawings in which:

FIG. 1 is a schematic diagram of a software support system;

FIG. 2a is a schematic diagram of a portion of the system illustrated in FIG. 1;

FIG. 2b is a schematic diagram of another portion of the system illustrated in FIG. 1;

FIG. 3a is a portion of a flow chart illustrating the operation of the portion illustrated in FIG. 2a;

FIG. 3b is another portion of a flow chart illustrating the operation of the portion illustrated in FIG. 2a.

FIG. 4a is a portion of a flow chart illustrating the operation of the portion illustrated in FIG. 2b; and

FIG. 4b is another portion of a flow chart illustrating the operation of the portion illustrated in FIG. 2b.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring to FIG. 1, a software support system 10 is shown for upgrading software used in remote computer systems 12 from a central computer system 14. The central computer system 14 stores software corresponding to the software used in each of the remote systems 12 and permits the corresponding software to be upgraded. The central computer system 14 is connected to the remote computer systems 12 via communication links 16, the links typically being a packet switching network to allow the changes that have been made to the corresponding software to be transmitted from the central computer system 14 to the remote computer systems 12.

The remote computer systems 12 are divided into groups as schematically represented by concentric circles 20. Each group of remote computer systems 12 is assigned a group threshold which determines the relative time that the remote systems of one group must wait to receive the changes that have been made to the software used at remote systems of a different group. For example, the remote computer systems 12 of one group, those positioned between the pair of concentric circles 20a and 20b are assigned a different group distribution number than the other group of remote computer systems positioned between concentric circles 20b and 20c thus, may receive upgrades to the software used therein prior to the remote computer systems in the other group. This feature permits staged release of the software upgrades and allows the operation of the upgraded software to be monitored on a select group of remote computer systems 12 prior to global release of the software upgrades to all of the remote computer systems 12.

Referring now to FIGS. 2a and 2b, the central computer system 14 which is typically located at the headquarters of the software supplier is shown. The central computer system 14 includes a large data store 28 for storing copies of the software corresponding to the software used in each of the remote computer systems 12. The software supplier provides to the remote computer systems, mandatory programs MP.sub.x ("x" denoting the version number of the program) which are used in all of the remote computer systems. The supplier also makes available to the remote computer systems 12, optional programs OP.sub.xy ("x" denoting the version number of the program and "y" denoting the number of the optional program since a variety of optional programs are available) which are used in some of the remote computer systems 12 to perform additional functions particular to the business of the user.

Initially, the software supplier distributes via tape distribution, the first version of the mandatory programs MP.sub.1 to all of its purchasers who use the software in their remote computer systems 12 for daily business operations. Some of the customers are also supplied with the first version of one or more optional programs OP.sub.1y. Whenever a remote computer system 12 is receiving the mandatory programs MP.sub.x and optional programs OP.sub.xy, the mandatory programs and the optional programs are distributed in a package and are the same version "x" of software.

After the remote computer systems 12 have been supplied with the first version of available software, the software supplier often desires to upgrade the software to add user facilities, to make cosmetic changes, to change user interfaces, to correct errors, to improve performance, etc. Since a copy of the first version of the mandatory programs MP.sub.1 and all of the available optional programs OP.sub.1y are maintained in the data store 28, changes or patches P can easily be made to the software via the central computer system 14. As patches P are made to either the mandatory programs MP.sub.1 or to any of the optional programs OP.sub.1y, the central computer system 14 monitors and records the changes made to the software and of course, changes the software in the remote computer systems 12, if the changes are applicable, the details of which will be described herein.

However, after a plurality of changes have been made to a version of the software stored in the data store 28, it is uneconomical to supply a new purchaser of the software with an unaltered version of the mandatory programs MP.sub.x and optional programs OP.sub.xy and afterwards transmit to the purchaser, all of the changes that have been made to the programs. Accordingly, after a number of changes have been made to the original mandatory and optional programs, another version of the mandatory and optional programs is released to new purchasers of the software via tape distribution, the second version of the programs including some or all of the changes and any additions that have been made to the first version of the programs, so that the new purchasers are initially supplied with an up-to-date version of the available programs. When the second version of the software is released, a copy of the mandatory programs MP.sub.2 and optional programs OP.sub.2y are stored in the data store 28 so that upgrades can be made to the second version of software. This process is performed for each new version of the mandatory and optional programs that is released by the supplier for use by its customers. This allows the system 14 to upgrade the software used in all of the remote computer systems 12, even if the computer systems 12 operate using different versions of the software.

The central computer system 14 includes at least one computer terminal 30 comprising a conventional keyboard and video display terminal for allowing a user to access the various versions of the mandatory and optional programs MP.sub.x and OP.sub.xy held in the data store 28. Each time a user accesses the data store 28 to upgrade one or more of the mandatory or optional programs stored therein, all of the changes made to a program during that session are categorized as a patch P.sub.N (V=i to z), wherein "N" is the number of the patch and "V" is equal to the numbers of the all of the versions of the same program to which that the patch is applicable and to which it is to be applied. The patch number "N" is determined by the value of a counter 29, the counter incrementing upon the creation of each patch made to any program. Thus, the first patch P made to any program regardless of its version will be assigned patch number 1 (N=1), the second patch made to any program will be assigned patch number 2 (N=2), etc.

The control software used in the central computer system 14 for allowing the programs in the data store 28 and in the remote computer systems to be upgraded is partitioned mainly into two major sections, namely a program history section 32 and a system patcher section 34.

The program history section 32 functions to monitor and record all of the upgrades or patches P that have been made to the various versions of any of the programs held in the data store 28. The system patcher section 34 functions to ensure that the appropriate changes made to the software in central computer system 14 are transmitted to the correct remote computer systems 12 and applied to the corresponding software therein. The system patcher section S4 also ensures that the software in the remote computer systems 12 is the same as the upgraded version stored in the central computer system 14, once the changes have been applied to the software.

The program history section 32 includes a copy function 38 which is associated with the data store 28. The function 38 copies the version of the program stored in the data store 28 that the user of the terminal 30 wishes to upgrade. A processor function 40 receives the copied program and allows the user to make the desired changes thereto. When the user has completed making all of the changes, an upgrade detect function 42 monitors and records all of the changes made to the program during that session by comparing the upgraded program with the program copied by the function 38. The changes detected by the function 42 are then grouped as a patch P. A patch and version assign function 44 communicates with the processor function 40, the upgrade detect function 42 and the counter 29 and assigns the patch P, its patch number "N" and the version numbers "V" of the same program to which the patch P applies.

For example, if a patch P is made to the first version of one of the mandatory programs MP.sub.1 and there are six different versions of the mandatory programs MP.sub.1 to MP.sub.6 that have been released by the vendor that are used in the remote computer systems 12, the value of the counter 29 is examined and its value is assigned to the patch P as its patch number N. As mentioned previously, the value of the counter 29 indicates the total number of patches that have been made to the programs in the data store 28. Thus, if a total of six patches have been previously made, the above-mentioned patch P made to the first version of the one mandatory program will be assigned patch number 7 (N=7).

Thereafter, the other versions of the mandatory programs MP.sub.2 to MP.sub.6 are examined to detect if the patch P.sub.7 made to the program MP.sub.1 is applicable to those versions of the same program. The version numbers of all of the programs to which the patch is applicable are displayed on the terminal 30 and the user is requested to confirm whether the patch P.sub.7 should be applied to the other applicable programs as well. If the patch P.sub.7 is to be applied to the other detected versions of the same program, the patch number "N" is maintained and the patch is automatically applied and stored in the data store 28 under all of the versions of the mandatory program to which it applies.

A checksum assign function 46 also communicates with the processor function 40 and with the upgrade detect function 42 and assigns every patch made to a program a pair of checksums Ck.sub.N and Ck.sub.N+1. The checksums Ck.sub.N and Ck.sub.N+1 represent an image of the program to which the patch is being applied before the patch is applied to the program and an image of the program after the patch has been applied to the program.

A related patch detect function 50 is also provided for detecting when the user making the changes to the software, codes a patch as being related to a previous patch made to the same program or codes the patch as being related to a patch made to another program in the same version of programs. When the related patch detect function 50 detects related patches, the related patches are coded. After the patch has been assigned a patch number, examined to determine the other versions of the same program to which it applies, assigned the checksums, and has been examined for any relationship with other patches, the patch, the assigned patch number, the checksums and any assigned codes are stored in the data store 28 for the various versions of the program that were upgraded.

As should be realized, the same processes apply whether changes are made to a mandatory program or to an optional program. For example, if a patch P.sub.N is made to the optional program OP.sub.11 and there are six released versions of the software, the patch P.sub.N will be assigned the next available patch number "N" as determined by the value of the counter 29. Similarly, the other versions OP.sub.21 to OP.sub.61 of the optional program OP.sub.11 will be examined to determine if the patch P.sub.N is applicable thereto. The process of detecting related patches is also performed for patches made to the optional programs.

The program history section 32 also includes a patch threshold valve memory 48 for storing a predetermined patch threshold value which is equal to the highest patch number with no untested patches below it. The patch threshold value determines the patches that can be transmitted to the remote computer systems 12 and is used to determine the value of the group thresholds. The patch threshold value is determined by a quality assurance process used by the software vendor for monitoring the operation of each patch to attempt to ensure that the patches operate with the programs without error or without introducing errors. For example, if the threshold value is set at 10, only patches P.sub.1 to P.sub.10 can be transmitted to the remote computer systems 12, since those patches will have been tested by the quality assurance process and will have been determined to operate satisfactorily. Other patches that have been created yet have not passed through the quality assurance process which have a patch number greater than the threshold value may be transmitted to specific remote systems 12, if special provisions have been made for the systems, the details of which are described herein but typically will be maintained in the data store 28 until the patch threshold value has been raised