참조 구현
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
참조 구현은 알고리즘이나 사양을 구현한 것으로, 표준화 과정의 결과 또는 입력으로 사용된다. 소스 코드와 함께 퍼블릭 도메인 소프트웨어로 제공되기도 하며, 사양의 이해를 돕고 개발자들이 해당 사양을 활용하도록 돕는 역할을 한다. 참조 구현은 품질이 다를 수 있으며, 테스트 및 다른 구현과의 비교 기준으로 사용되기도 한다. 상용 라이선스 이용을 제한하는 목적으로 활용되기도 한다.
알고리즘의 참조 구현은 종종 표준화 과정의 결과물로 나타나며, 퍼블릭 도메인 소프트웨어로 제공되어 소스 코드를 누구나 자유롭게 사용하고 수정할 수 있도록 한다.[1][2][3][4] 이는 기술 확산에 기여한다.
테스팅은 구현과 명세 간의 관계를 발전시켜 생산의 상호 프로세스 효율성을 향상시킨다. 하드웨어 및 소프트웨어 사양은 작동하는 실제 예시가 있으면 이해하기 쉽다. 참조 구현은 순수한 학문적 목적보다는 주로 시장 인지도를 높이거나, 참조 구현 구매 또는 상업적 구현을 유도하기 위해 활용된다.
2. 특징 및 예시
하드웨어 및 소프트웨어 사양은 작동하는 실제 예시(참조 구현)가 있으면 이해하기 쉽다. 참조 구현의 일반적인 목적은 개발자가 해당 사양을 쉽게 알 수 있도록 하는 것이다. 순수한 학문적 목적으로 제공되기도 하지만, 시장 인지도를 높이거나 상업적 구현을 유도하기 위한 목적으로도 활용된다.
2. 1. 소프트웨어
다양한 소프트웨어 알고리즘 및 프로토콜의 참조 구현이 존재한다. 참조 구현의 품질은 다양할 수 있다.
알고리즘의 참조 구현, 예를 들어 암호 알고리즘은 종종 표준화 과정의 결과 또는 입력이다. 이 기능에서 참조 구현은 종종 퍼블릭 도메인에 소스 코드와 함께 퍼블릭 도메인 소프트웨어로 제공된다. 예로는 최초의 CERN의 httpd,[1] 서펜트 암호, base64 변형,[2] 및 SHA-3가 있다.[3] 오픈월 프로젝트는 퍼블릭 도메인에 있는 여러 알고리즘과 해당 참조 소스 코드의 목록을 관리한다.[4]
참조 구현은 프로덕션 품질일 수도 있고 아닐 수도 있다. 예를 들어, 프라운호퍼의 MP3 표준 참조 구현은 일반적으로 LAME과 같은 다른 일반적인 구현과 비교했을 때 음질을 결정하는 청취 테스트에서 우수한 평가를 받지 못한다.[5] 반면에 CPython은 파이썬 프로그래밍 언어의 참조 구현[6]이면서 프로덕션에서 가장 널리 사용되는 구현이기도 하다.
참조 구현은 일반적으로 특정 사양을 구현함으로써 정의를 결정하는 데 사용된다. 인증 시험을 개발할 때 다음 점에서 신뢰할 수 있는 구현이 각 인터페이스에 필수적이다.
참조 구현의 특징은 다음과 같다.
프라운호퍼의 MP3 참조 구현은 LAME과 같은 다른 구현에 비해 품질이 떨어진다. 반면 X 윈도 시스템의 X.Org 재단에 의한 참조 구현은 충분히 실용적일 뿐만 아니라 현재의 오픈 소스 유닉스계 운영 체제에서도 계속 사용되고 있다(이는 X.Org가 인기가 있었던 XFree86에서 파생하여 참조 구현을 선언한 데서 비롯되었다).
썬 마이크로시스템즈의 Java EE애플리케이션 서버 참조 구현은 Java EE를 배우는 목적으로는 사용 가능하지만, 제품으로 상업적으로 이용할 수는 없는 라이선스였다. 그러나 썬의 애플리케이션 서버 제품은 참조 구현과 완전히 동일한 기능을 가지고 있었고, 라이선스만 달랐다.
2. 2. 하드웨어
엔비디아나 AMD(AMD)는 자사의 GPU를 확산시키기 위해 그래픽 카드 제조사에 참조 구현을 제공하고, 그래픽 카드 개발에 협력하고 있다.
3. 테스트
3. 1. 참조 구현의 역할 (테스트 관점)
참조 구현은 일반적으로 명세에 대한 확실한 해석으로 사용되는 명세의 구현이다.[7] 참조 구현은 다음과 같은 특징을 가진다.[8]
인증 시험을 개발할 때 다음 점에서 신뢰할 수 있는 구현이 각 인터페이스에 필수적이다.[9]
위와 동일한 특징들은 다음과 같이 요약될 수 있다.[10]
4. 상용 라이선스와의 관계
참조 구현은 때때로 상용 라이선스 이용을 막는 목적으로 사용되기도 한다. 썬 마이크로시스템즈의 Java EE 애플리케이션 서버 참조 구현은 Java EE를 배우는 목적으로는 사용 가능하지만, 제품으로 상업적으로 이용할 수는 없는 라이선스였다. 그러나 썬의 애플리케이션 서버 제품은 참조 구현과 완전히 동일한 기능을 가지고 있었고, 라이선스만 달랐다.
참조
[1]
웹사이트
Licensing the Web: For everyone
https://home.web.cer[...]
2014-08-17
[2]
웹사이트
libb64: Base64 Encoding/Decoding Routines
https://libb64.sourc[...]
2005-11-20
[3]
웹사이트
KeccakReferenceAndOptimized-3.2.zip
http://keccak.noekeo[...]
2013-02-27
[4]
웹사이트
Source code snippets and frameworks placed in the public domain
https://openwall.inf[...]
2009-11-05
[5]
웹사이트
Media Info doesn't match Format Options selected for Exported MP3's - #6 by steve - Windows
https://forum.audaci[...]
2019-06-11
[6]
웹사이트
PEP 421 {{ndash}} Adding sys.implementation
https://peps.python.[...]
Python Software Foundation
2012-04-26
[7]
웹사이트
Requirements for GSC-IS Reference Implementations
http://xw2k.sdct.itl[...]
2003-03-26
[8]
웹사이트
Conformance Testing: An Industry Perspective
http://vote.nist.gov[...]
Sun Microsystems
2003-12-10
[9]
간행물
Requirements for GSC-IS Reference Implementations
http://xw2k.sdct.itl[...]
National Institute of Standards and Technology, Information Technology Laboratory
2003
[10]
간행물
Conformance Testing: An Industry Perspective
http://vote.nist.gov[...]
Sun Microsystems
2003
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com