A process that assists a computer programmer to perform an upgrade to a
computer program while that program continues to operate and provide
service. The upgrade process includes three phases: (1) the preparation by
a computer programmer of a new computer program P" that is to replace an
existing computer program P, (2) an offline preparation of the upgrade
from P to P" with the assistance of the computer programmer, and (3) an
online, fully automatic, live upgrade from P to P".