ソフトウェア開発プロセスにおいて、参照実装(または、頻度は低いが、サンプル実装やモデル実装)とは、対応する仕様のすべての要件を満たすプログラムのことです。参照実装は多くの場合、技術標準に付随し、その標準の他の実装において「正しい」動作とみなされるべき、あるいはみなされなければならない動作を示します。
アルゴリズムのリファレンス実装、例えば暗号アルゴリズムなどは、標準化プロセスの結果または入力となることが多い。この機能において、それらはソースコードとともにパブリックドメインソフトウェアとして公開されることが多い。例としては、 CERNの最初のhttpd [ 1 ]、Serpent暗号、base64のバリアント[ 2 ]、SHA-3 [ 3 ]などがある。Openwallプロジェクトは、リファレンスソースコードがパブリックドメインにあるいくつかのアルゴリズムのリストを維持している[ 4 ] 。
リファレンス実装は、必ずしも製品品質であるとは限りません。たとえば、MP3規格のFraunhoferリファレンス実装は、音質を判断するリスニングテストにおいて、LAMEなどの他の一般的な実装と比べて優れているとは限りません。 [ 5 ]対照的に、Python プログラミング言語のリファレンス実装であるCPython [ 6 ]は、製品で最も広く使用されている実装でもあります。
実装と仕様の関係性を検証することで、生産工程間の効率性がさらに向上する。
参照実装とは、一般的に、仕様の決定的な解釈として使用される仕様の実装のことです。 適合性テストスイートの開発中は、(1)仕様のエラーや曖昧さを発見し、(2)テストスイートの正しい動作を検証するために、各インターフェースの少なくとも1つの比較的信頼できる実装が必要です。[ 7 ]
リファレンス実装の特徴:
Keccak スポンジ機能、設計者: Bertoni、Guido。デーメン、ジョアン。ピーターズ、マイケル。ヴァン・アッシュ、ジル。詳細、フィードバック、質問については、当社の Web サイトを参照してください: keccak.noekeon.org/ / 設計者による実装 (ここでは「実装者」と表記します)。法律で認められる範囲において、実装者はこのファイルに含まれるソースコードに関するすべての著作権および関連する権利または隣接権を放棄します。creativecommons.org/publicdomain/zero/1.0/
ここ数年、Python 言語と CPython (リファレンス実装) の区別は拡大し続けている。この変化のほとんどは、Jython、IronPython、PyPy が Python の代替実装として登場したことによるものである。