Topic: software maintenance by patching

topics > computer science > programming > Group: software maintenance

design for change
dynamic code modification
incremental compilation
incremental development
interface between program modules
mobile code
monitored variable
object code linkers and loaders
revision delta
software maintenance and testing of distributed systems
system builds
Thesa compiler and loader


When bringing up a system, many errors must be corrected, but compiling programs takes time as does initializing program execution. Corrections may themselves be in error. A solution frowned upon by purists but heavily used by programmers is to "patch" temporary corrections, allowing continued testing of the program. The difficulty with patching is its ad hoc nature, general ugliness, use of assembly language, limited programming
capability, and need for additional user input.

Far better is rapid compilation or an integrated patch facility for on-line modification of program source. (cbb 5/80)

Subtopic: old and new interface up

Quote: if a module changes its exported interface, can hide it in a configuration that exports the old interface
Quote: update a distributed program by new functions with old and new interfaces [»giffDK7_1985, OK]
Quote: 'advising' patches an interface to modify its input and output [»teitW_1969]
Quote: PODUS uses interprocedures to change procedure interfaces and mapper procedures to change data formats [»segaME3_1993]
Quote: after updating a procedure under PODUS, the old binding table points to an interprocedure while the new binding table points to the procedure [»segaME3_1993]
Quote: dynamic linking does not change references to a procedure that is currently active; what if a library gets replaced? [»segaME3_1993]

Subtopic: multi-version system up

Quote: PODUS dynamically updates procedures; program must be written top-down with abstract data types [»segaME3_1993]
Quote: PODUS uses a very large, sparse virtual-address space partitioned by version; each version contains object code and a binding table [»segaME3_1993]

Subtopic: patching assignments up

Quote: use C's comma operator to syntactically add code to assignments while preserving C semantics

Subtopic: software update package up

Quote: deliver software update packages for bug fixes and new telephony features
Quote: 5ESS software link data base (SB) enables the linking of several modifications into a software update; handles dependencies

Subtopic: software aging up

Quote: software privacy protection by periodic updates of software; software aging allows reads of older files [»jakoM11_2001]

Subtopic: dynamic update of implementation up

Quote: Cedar system development by overloading a new module with the same interface; periodically rebuild to remove old versions [»swinDC7_1985]
Quote: Cedar compiler will not compile out of date interfaces; makes it easier to change interfaces [»donaJ7_1985a]
Quote: dynamic software updating of functions, types, data, or definitions; patch plus state transformer function; existing instances converted on access or update [»hickM6_2001]

Subtopic: patching an operating system up

Quote: Spy allows a user to patch the supervisor program; no wild branches, no loops, short, stores only into statistic memory [»lampBW10_1983]
Quote: an information service can automatically download updates to the communication software; ensures consistency [»needD10_1982]
Quote: update processes under the DMERT operating system by replacing the transfer address; no static state; assumes interfaces do not change [»segaME3_1993]
Quote: dynamically update Bellcore's Service Control Point by rerouting all requests to other programs that perform the same function [»segaME3_1993]

Subtopic: instrumenting code up

Quote: JRun instruments Java code by patching its bytecode; annotated class file format with constant pool [»mossK10_2000]

Subtopic: fast turnaround up

Quote: Cedar goal of under five seconds for minor program changes; makes programming think-bound [»teitW3_1985]
Quote: Modeler includes single keystroke updating a system with a newly edited program [»lampBW6_1983]
Quote: Smalltalk can translate and relink a single change in a few seconds; makes simple modifications easy [»teslL8_1981]
Quote: re-compiling a Forth system and application into memory takes only a few seconds

Subtopic: delta algorithm up

Quote: vdelta combines compressing and differencing via Tichy's block-move plus hashing; better than diff [»huntJJ4_1998]

Subtopic: history of patching up

Quote: keep pages about five-sixths full with extra space after each sequence of instructions; use for fixing mistakes or storing numbers [»turiA3_1951]
Quote: Corbato and Daggett's linking loader allowed patches in symbolic machine language [»mccaJ7_1963]

Related Topics up

Group: debugging   (10 topics, 333 quotes)
Topic: design for change (76 items)
Topic: dynamic code modification (15 items)
Topic: incremental compilation (3 items)
Topic: incremental development (74 items)
Topic: interface between program modules (55 items)
Topic: mobile code (14 items)
Topic: monitored variable (28 items)
Topic: object code linkers and loaders (31 items)
Topic: revision delta (18 items)
Topic: software maintenance and testing of distributed systems (16 items)
Topic: system builds (43 items)
Topic: Thesa compiler and loader
(23 items)

Updated barberCB 3/06
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.