Method and apparatus for creating a software patch by...

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S168000, C707S793000

Reexamination Certificate

active

06594822

ABSTRACT:

BACKGROUND
1. Field of the Invention
This invention relates to a process of patching by comparing object files. In particular, this invention relates to a method and apparatus for creating a software patch using the object files of two software sources to create individual reduced program dependency graphs and comparing these reduced program dependency graphs to determine a minimal set of changes for the patching process.
2. Description of the Problem Solved
“Software patch” is a term which refers to a software file, generally a binary file, that comprises data or instructions to upgrade an old version of a software program to a new version of that same software program. The existing process of producing patches for computer programs such as C/C++ traditionally is very tightly coupled to a particular process and the particular behavior of a specific toolset, i.e., compiler, linker and assembler. There is little cohesiveness amongst toolsets available for development. For example, they may not support the same syntax for C or assembly, may not generate object files in the same format, and may not provide the same functionality. Lack of uniformity of standards causes problems in portability of applications among toolsets. Also, software developers will typically develop software patches specific to code written in C/C++ languages rather than developing the patches to be language independent. While technology exists that is used to create patches for a variety of manufacturers, it is future limited, difficult to maintain and requires parallel strategies and processes to support patching code written in other languages even for the same product or the same logical in-field update.
In general, a patch-writer, the person who develops a patch, typically is creates a patch by comparing the code of an old software program with the code of an updated version of the program and determining the upgraded changes. The resulting software patch, therefore, essentially comprises only the changes contained in the new software program that are not found in the old software program. Typically, a patch-writer will create the software patch at his desktop computer or workstation. The patch is then physically taken to a computer system, installed on a disc or storage medium having the old software program to be upgraded, and is installed or downloaded onto the computer. Alternatively, a patch may be electronically delivered to a computer system through a communications network, e.g., the Internet.
A patch, when applied to a computer system, will change the behavior of the computer system from the old version of the software to the upgraded or new version of the software. A patch can be installed, downloaded or delivered to a computer system and thereby upgrade the software without taking the computer system off-line. Patching, therefore, as defined above, is typically used to upgrade existing software of a computer system in the field, where changes must be made without interrupting the operations of the computer system. For example, a computer at a telephone switch is in constant use, i.e., connecting telephone calls, and therefore, cannot be conveniently pulled off-line to have its software upgraded. Thus, the software patch may be utilized to upgrade the computer software without interrupting its operations.
The benefits, therefore, of patching software versus updating a computer system's software in its entirety are several. First, patching produces a small fix for a small software error and thus is a quick way to deliver and administer “quick fixes,” particularly in emergency situations. Patching also provides a way to change the software on-the-fly, so that the entire system need not be taken out-of-service and reloaded. Finally, patching can be implemented to provide a mechanism called “activatable patches”. The term, activatable patches, as used herein means patches which may be turned on and off while the program is being utilized as deemed appropriate by a patch-writer. This essentially allows the system to have two possible behaviors for a particular functionality, patches that are either in the on or off state. Computer programs are generally written in high level languages, such as FORTRAN, C/C++, Pascal, and BASIC. A computer programmer writes programs in a high level language to direct the computer to execute certain commands. Commands in a high level language are relatively easy to learn and users can run many programs on many different computers using the same high level language commands. Computers, on the other hand, cannot execute commands from a high level language. Typically, the microprocessor understands and executes commands using only a set of commands unique to the computer. The high level language must be compiled, that is, translated, from the high level language to a machine readable language computers can understand.
Compiling a program written in a high level language to machine executable object code is well known in the art. After the entire program is written in the high level language, the user requests that the program be compiled for execution in machine language. A software program known as a compiler reads the commands and data in the high level language and generates an object file having machine readable code corresponding to the commands of the high level language.
Traditionally telecommunications companies had control over the software that was used on computer systems in the field. Telecommunications companies wrote their own proprietary software tools to control the computer systems and developed their own internal compilers to translate software into machine code which can be understood and acted upon by a computer. Such companies, therefore, had total control over the computer system hardware, the software, and the process of developing and upgrading software, including creating patches.
However, with the evolution of new software languages and the rapidly improving technology of compilers producing faster and smaller code, many companies now do not have the luxury of developing and using their own proprietary languages to control computer systems, but have had to yield to market pressure and use languages, such as C/C++, which are today's mainstream programming languages. This has made the job of controlling a computer system's software and creating patches more difficult. Given that C/C++ is the preferred and commonly used software language and that telecommunications companies generally purchase off the shelf compilers for programs written in C/C++, there is no direct way to develop and create a patch for software programs written in C/C++ languages.
The known method of creating patches for software modules written in C/C++ languages is very difficult to maintain and time consuming. For example, to create a patch for programs written in C/C++ languages, a patch-writer must: 1) compile the software into an intermediate language, the assembly language, and 2) perform an analysis on that language. Under this method, the patch-writer would have to take the entire software package and analyze all of the software programs to determine the changes for the patching process. In addition, to create a patch using the assembly language, the patch writer must compare each textual line in the old software program to each corresponding textual line in the upgraded version of the software program. Because of numerous branching sequences which jump to various places in a program, it is difficult to create a patch by making line-by-line comparisons of programs with branching sequences. For example, the assembly language of an old software program may comprise a first function and a second function in numerical order. Although the assembly language of the new upgraded software program might comprise the same first and second functions, they might be in reverse order. The patch writer, therefore, might not be able to readily determine that the functions in the old

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and apparatus for creating a software patch by... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and apparatus for creating a software patch by..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for creating a software patch by... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3044545

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.