В процессе разработки программного обеспечения эталонная реализация (или, реже, примерная реализация или модельная реализация ) — это программа, реализующая все требования соответствующей спецификации. Эталонная реализация часто сопровождает технический стандарт и демонстрирует то, что следует считать «правильным» поведением любой другой его реализации.
Эталонные реализации алгоритмов, например криптографических алгоритмов , часто являются результатом или входными данными процессов стандартизации . В этой функции они часто передаются в общественное достояние, а их исходный код является общедоступным программным обеспечением . Примерами являются первый httpd CERN , [1] Serpent шифр, варианты base64 , [2] и SHA-3 . [3] Проект Openwall поддерживает список нескольких алгоритмов со справочным исходным кодом в открытом доступе. [4]
Эталонная реализация может быть качественным продуктом, а может и не быть. Например, эталонная реализация стандарта MP3 Фраунгофера обычно не отличается от других распространенных реализаций, таких как LAME , в тестах на прослушивание, определяющих качество звука. [ нужна цитация ] Напротив, CPython , эталонная реализация языка программирования Python , [5] также является реализацией, наиболее широко используемой в производстве.
Тестирование связи реализации и спецификации еще больше повышает эффективность межпроцессного взаимодействия :
Эталонная реализация, как правило, представляет собой реализацию спецификации, которая будет использоваться в качестве окончательной интерпретации этой спецификации. Во время разработки... набора тестов на соответствие необходима по крайней мере одна относительно надежная реализация каждого интерфейса, чтобы (1) обнаружить ошибки или двусмысленности в спецификации и (2) проверить правильность функционирования набора тестов. [6]
Характеристики эталонной реализации:
- Разрабатывается одновременно со спецификацией и набором тестов;
- Проверяет, что спецификация реализуема;
- Позволяет тестировать набор тестов;
- Служит золотым стандартом, по которому можно сравнивать другие реализации;
- Помогает прояснить цель спецификации в ситуациях, когда тесты на соответствие неадекватны [7].
Вот уже несколько лет различие между языком Python и CPython (эталонной реализацией) увеличивается.