プラグイン
プラグインの機構を実現するためには、次の点を外部公開仕様として明確に規格化しなければいけない。
サブルーチンに与える(入力)パラメータのフォーマットと意味の定義
サブルーチンから受け取る(出力)データのフォーマットと意味の定義
サブルーチンを呼び出す手順(サブルーチンの名前や呼び出し規約なども含む)
サブルーチンが呼び出されるタイミング(実行されるスレッドなども含む)
モジュールを配置する場所(ディレクトリ)
また、プラグインとなるサブルーチンのコードを開発しやすいように、プラグイン開発用のライブラリ(フレームワーク)が大元のホストアプリケーション開発者から提供されることが多い。
コンパイラを用いて作られたアプリケーションコードでは、原則としてサブルーチンの実行メモリアドレス(相対アドレス)はコンパイル時に決定されてしまうため、サブルーチンの差し替えをする度に再度コンパイルが必要となる。プラグインの場合、ダイナミックリンクライブラリと呼ばれる機構を使って、アドレスをOSのローダーに決定させることによりこの問題を回避する。また、ヒープ上に動的メモリ確保されるオブジェクトは、ランタイムライブラリにバイナリ互換性がない限り、モジュール境界を越えて確保・解放することができないが、対となる動的なメモリ確保と解放の処理をプラグインのモジュール内に閉じ込めてしまうことで、プラグインの開発者とアプリケーションの開発者が異なるコンパイラや異なるコンパイルオプション、異なるプログラミング言語を使用することも可能である。