通常、コンピュータ上で動作するプログラムは、中心となるプログラムコードがサブルーチンを呼び出して処理を進める形で構成される。処理の基本の流れは同じでも、処理内容の詳細が異なるアプリケーションコードを作る場合には、いくつかのサブルーチンを入れ替えることにより実現する。例えば、「ビットマップ画像ファイルを読み込んで画面に表示をする」というアプリケーションの場合、ファイル読み込みのサブルーチンを差し替えることにより、「PNGを読み込んで画面に表示をする」プログラムや「JPEGを読み込んで画面に表示をする」プログラムなどのバリエーションを作ることができる。逆の操作すなわちファイル保存に関しても同様である。
多くのソフトウェアでは、この差し替え可能な部分のサブルーチンの呼び出し手順（インターフェイス）は公開されておらず、アプリケーション・コードを開発した者だけが差し替え作業ができるようになっている。しかし、上記の画像ファイルのフォーマットの例のように、必要とされる全てのサブルーチンを大元の開発者が用意できるとは限らない場合がしばしば発生する。このような場合、サブルーチンの呼び出し手順を規格化して公開・公表し、さらにサブルーチンの差し替え方法を提供すれば、大元の開発者以外の第三者もアプリケーションの機能を変更・拡張できるようになる。
このようにアプリケーションコードの一部分が誰でも差し替え可能になっている状態をプラグ可能（）と呼び、外部から注入されるプログラムコードおよびそのモジュールをプラグインと呼ぶ。
プラグインの機構を実現するためには、次の点を外部公開仕様として明確に規格化しなければいけない。
また、プラグインとなるサブルーチンのコードを開発しやすいように、プラグイン開発用のライブラリ（フレームワーク）が大元のホストアプリケーション開発者から提供されることが多い。
なお、スクリプト言語の処理系をアプリケーションに組み込んでおくことで、プラグインと類似の機構を実現することもできる。
セキュリティ.