プログラムライフサイクルフェーズ

プログラムライフサイクルフェーズ (英: program lifecycle phases)は、最初の作成から展開および実行まで、コンピュータープログラムが実行する段階 (フェーズ)のこと。段階には、編集時、コンパイル時、リンク時、配布時、インストール時、ロード時、および実行時がある。

ライフサイクルフェーズは必ずしも順番に発生するわけではなく、さまざまな方法で絡み合う可能性がある。たとえば、プログラムを変更する場合、ソフトウェア開発者は、ユーザーに配布する前に、十分な品質を確保するために、自分のコンピューターでプログラムを繰り返し編集、コンパイル、インストール、および実行し、確認が取れた後で、変更されたプログラムのコピーをユーザーがダウンロード、インストールして、自分のコンピューターで実行する。

段階 
編集時は、プログラムのソースコードを編集している段階のこと。これは、最初の作成からバグ修正、リファクタリング、または新機能の追加にまで及ぶ。編集は通常、人が行うが、自動化された設計ツールやメタプログラミングシステムを使用することもある。

コンパイル時は、ソースコードがコンパイラによってマシンコードに変換される段階のこと。この段階には、型システムの適切な使用の確認など、言語チェックが含まれる。コンパイルが成功すると、実行可能ファイルとなる。

リンク時は、外部を含む、プログラムに必要なすべてのマシンコードコンポーネントを接続 (リンク)する段階のこと。プログラムが外部ライブラリの関数を呼び出すことは非常に一般的であり、それらはすべて適切にリンクされている必要がある。リンクには2つのタイプがある。静的リンクとは、コンパイラによって接続が確立される場合であり、常に実行前に行われる。動的リンクは、実行の直前または実行中にオペレーティングシステム（OS）によって実行される。

配布時は、プログラムのコピーをユーザーに転送するプロセスのこと。配布形式は通常、実行可能ファイルだが、特にインタープリター言語で記述されたプログラムの場合は、ソースコードの場合もある。配布方法は、 USBフラッシュドライブなどの物理メディアまたはインターネット経由のリモートダウンロードなどである。

インストール時により、プログラムをユーザーのコンピューターで実行できるようになる。OSで将来ロードするために、実行可能ファイルを記憶装置に保存することも含まれる。

ロード時は、OSがプログラムの実行可能ファイルをハードドライブなどの記憶装置から取り出し、実行を開始するためにアクティブメモリに配置する段階のこと。

実行時は、中央処理装置がプログラムのマシンコード命令を実行する実行段階のこと。プログラムは無期限に実行される場合がある。実行が終了すると、正常な動作、予期される動作、またはクラッシュなどのランタイムエラーが発生する。

プログラミング言語の実装