Program lifecycle phase


A program lifecycle phase is a distinct period of time that is relevant to the operation of a computer program as it transitions from development to execution. Any distinct period in a program's life cycle in which the operational state of the program changes can be identified as a time. For example, compile time is when a program is compiled and link time is when a program is linked. Also, phases can often be divided into component phases. For example, build time might be divided into compile and link times, compile time into parse and code-generation times, and run time into initialization and normal-operation times.
A program tends to transition through phases in sequences, but often not from first to last and sometimes some are skipped. For example, when programming, a developer may repeatedly edit, build, and run a program without distributing or installing it. After programming is complete, then it may be distributed to and installed by a user.
Even though the term program lifecycle phase is less than notable, the times are well-known, commonly-used and notable. The collective term is used for this article for lack of a better term.

Examples

The operational phases of a program vary by its development technology. For example, a compiled program involves compile and link phases, but an interpreted program has no such phases is distributed as source code. Even for compiled programs, the phases vary. For example, some runtimes include a just-in-time compilation phase, yet more traditional runtimes do not.
The phases for a program that is compiled to a host-native executable typically include:
; Design time : When the program source code is being authored. This includes initial coding as well as bug fixes, new features, and refactoring.
; Compile time: When source code is compiled to object code machine code plus information for linking.
; Link time: When object code and external libraries are linked combined to form an executable. Functions and data from a library are linked either via static linking or dynamic linking.
; Distribution time: When the program is transferring to a user often downloaded from the Internet or via physical media such as a USB flash drive.
; Installation time: When the program is installed. The executable and related files are stored such that the host computer can readily run the program.
; Load time: When the program is loaded including copying the machine code into executable memory and resolving dynamic linkages.
; Run time: When the program is running. The central processing unit executes the program's machine code instructions.

Use

Describe binding time

describes whether an association between entities is fixed either before or after the program starts running. The phases described here provide a way to describe when the binding occurs more precisely. For example, an early binding might be made at design, compile or link time.

Parallel computing

One of the key functions of parallel computing development is specializing the code to the host runtime environment. Such specialization cannot be performed before that environment is known. If the desire is for the same code to run on a variety of hardware platforms, then such specialization cannot happen during edit or compile phases. The earliest phase would be the distribution phase, if a system were put in place that gathers hardware information, then chooses an executable that is already specialized to that hardware or substantially similar hardware, or generates a specialized binary on the fly. Likewise, specialization could be performed at load time, by invoking a binary rewriting tool in combination with a tool that uses the control flow structure to generate a specialized form.