Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1998-09-01
2001-09-11
Powell, Mark (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
Reexamination Certificate
active
06289509
ABSTRACT:
FIELD OF THE INVENTION
The present invention relates to methods and systems used to provide software support. In particular, the present invention relates to a method and system for upgrading software used by a software vendor's customers.
BACKGROUND OF THE INVENTION
Software vendors are continually fixing, modifying, and enhancing the computer programs supplied to their customers. Typically, such changes are in response to bugs found in the programs, to the need for improved or more features, or a combination of both. In the past and still today, the predominant method of updating software and providing fixes is to supply customers a disc (e.g., floppy or CD-ROM) containing a complete new version of the program. Upon receipt of the upgrade disc, the customer installs the new version of the software on his or her computer. The installation process generally results in the old version of the program being overwritten with the new version.
There are several problems with this method of supplying upgrades. First, it generally takes a relatively large amount of time to produce sufficient quantities of discs for distribution to customers. Accordingly, such discs are released only once or twice a year. This reduces the speed at which customers can be supplied with fixes to their programs and may force them to operate the software with errors or other bugs for several months. Second, physical discs are expensive to create and deliver.
Thus, there have been some attempts to deliver upgrades via communication networks such as the Internet or by direct connection using modems. However, even with ever improving transmission capacity and reliability, transmission of large upgrade files can be difficult and time consuming to complete. In response to the difficulties of transmitting large complete files, patch technology has been developed that permits the transmission of smaller, partial programs. In many instances, only certain parts or files need to be repaired or updated in order to update a computer program. Therefore, only a partial or “patch” file needs to be transmitted to the end user. Generally, small files may be transmitted faster and more reliably than larger files. However, existing patch technology is unacceptable when anything more than minor changes need to be delivered to a customer. Accordingly, there is a need for an improved method and system of upgrading software using patches. More specifically, there is a need for an improved system and method of generating a patch file.
OBJECT AND SUMMARY OF THE INVENTION
Therefore, it is an object of the present invention to provide an improved method and system of upgrading software.
It is another object of the present invention to provide a software patch generator that efficiently produces patches of relatively small size.
These and other objects are achieved in a system for generating a patch file from an old version of computer code which consists of a series of elements and a new version of computer code which also consists of a series of elements. Both the old and new versions of computer code are stored in a memory of a computer, such as a server, in the system. The old and new versions of computer code are accessible by a data processor of the computer.
An alphabet for processing the old and new versions of computer code is first programmed into the computer. The alphabet consists of words of a desired size. Thus, for example, all sequences of three elements in each of the old and new versions of computer code may be treated as a single word.
Once the alphabet is established, the old version of computer code is sorted with the data processor alphabetically according to the established alphabet to create a first sorted list of code. A pointer is maintained in the first sorted list of code in order to indicate each element's original location in the old version of computer code. Similarly, the new version of computer code is also sorted alphabetically to create a second sorted list of code with a pointer of each element to indicate the element's original location in the new version of computer code. Once the two sorted lists are created, they are recursively compared one word at a time to search for a match of the codes. Upon finding a match of the codes, the first and second sorted lists of code are searched to find the largest sequence of coinciding elements preceding and succeeding the match of the codes. Each sequence of coinciding words is then stored in a coincidences list. The coincidences list is then processed to remove duplicative information. Finally, a patch file is created from the processed coincidences list.
The process of creating a patch file from the processed coincidences list includes the steps of (a) finding a largest block of coinciding elements of the processed coincidences list that matches the second sorted list of code and recording the location of the largest found segment in memory; (b) in the area before the previously found segment, finding the next largest block of coinciding elements of the processed coincidences list that matches the second sorted list of code and recording the location of the next largest segment in memory; (c) repeating step (b) until (1) the first member of the processed list of coincidences is reached, or (2) there are no matches between the second sorted list of code and the processed coincidences list; (d) writing a “write from the old version of computer code” command and offset and length information to the patch file if the first member of the processed list of coincidences is reached; and (e) writing a “write from patch file” command and length and patch information to the patch file if there are no matches between the second sorted list of code and the processed list of coincidences.
These are just some of the features and advantages of the present invention. Many others will become apparent by reference to the detailed description of the invention taken in combination with the accompanying drawings.
REFERENCES:
patent: 4939639 (1990-07-01), Lee et al.
patent: 5218700 (1993-06-01), Beechick
patent: 5270712 (1993-12-01), Iyer et al.
patent: 5699275 (1997-12-01), Beasley et al.
patent: 5802549 (1998-09-01), Goyal et al.
patent: 5832273 (1998-11-01), Mizuse
patent: 5832520 (1998-11-01), Miller
patent: 5937188 (1999-08-01), Freeman
Godfrey & Kahn S.C.
Nguyen-Ba Hoang-Vu Antony
PKWare, Inc.
Powell Mark
LandOfFree
Software patch generator does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Software patch generator, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Software patch generator will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2469504