Program lifecycle phase
Program lifecycle phase is a technical term for the stages a computer program undergoes from initial creation to deployment and execution. The phases are edit time, compile time, distribution time, installation time, link time, load time, and run time.
These phases do not necessarily happen in a linear order. Rather, they can be intertwined in various ways. For example, when modifying a program, a software developer may need to repeatedly edit, compile, install, and execute it on his own machine to ensure sufficient quality before it can be distributed to users; copies of the modified program are then downloaded, installed, and executed by users on their own machines.
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 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, which often includes storing the executable for future loading by the operating system (OS).
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 interface of each library that it needs to be linked to. There are two types of linking. Static linking is when the connection is made by the compiler, which is always prior to execution. Dynamic linking, however, is performed by the OS just before, or even during, execution.
Load time is the when the OS 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.