Program lifecycle phase
Program lifecycle phase is a technical term for the stages a computer program must undergo from initial creation to execution. The main phases are edit time, compile time, distribution time, installation time, link time, load time, and run time.
Note that these phases do not necessarily happen in a linear order. Rather, they can be intertwined in various ways. For example, when writing new source code, a software developer may need to repeatedly edit and compile to get the desired functionality in a good enough condition to start rigorous testing.
Phases
Edit time (or Design time) is when the source code of the program is being edited. This spans initial creation to any bug fix or addition of new features. Editing is typically performed by a person, but automated design tools and meta-programming systems are also used.
Compile time is when source code is translated into machine code by a compiler. Part of this involves language checking, such as ensuring proper use of the type system. The result of successful compilation is an executable.
Distribution time is process of transferring a program for deployment on its target system. The distribution format is typically an executable, but may also be source code, especially for a program written in an interpreted language. The means of distribution can be either physical media such as a USB flash drive or a remote download via the Internet.
Installation time gets the distributed program ready for execution on the target system. Note that the installation process may invoke other lifecycle phases, such as analyzing and re-compiling the program in order to improve its execution efficiency on the particular platform.
Link time is when the names of implementations are looked up and connected together. For example, a program that invokes libraries does so by stating both the name and an interface of each library so that particular library implementations can be connected to it. There are two types of linking. Static linking is when the connection is made by the compiler, thus always prior to execution. Dynamic linking, however, is performed by the operating system just before, or even during, program execution.
Load time is the when the operating system takes the program's executable from storage (typically a hard disk drive) and places it into active memory, in order to begin execution.
Run time is the execution phase, when the program's behavior is carried out by the processor. Programs may run indefinitely. If execution terminates it will either be normal, expected behavior or an abnormality such as a crash.