참조 구현

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

참조 구현은 알고리즘이나 사양을 구현한 것으로, 표준화 과정의 결과 또는 입력으로 사용된다. 소스 코드와 함께 퍼블릭 도메인 소프트웨어로 제공되기도 하며, 사양의 이해를 돕고 개발자들이 해당 사양을 활용하도록 돕는 역할을 한다. 참조 구현은 품질이 다를 수 있으며, 테스트 및 다른 구현과의 비교 기준으로 사용되기도 한다. 상용 라이선스 이용을 제한하는 목적으로 활용되기도 한다.

참조 구현
📚 더 읽어볼만한 페이지
  • 표준 - 국제단위계
    국제단위계(SI)는 7개의 기본 상수 값을 고정하여 정의되는 국제적인 측정 단위 체계로, 2019년 재정의를 통해 자연 상수에 기반하여 측정의 정확도와 재현성을 향상시켰다.
  • 표준 - QR 코드
    QR 코드는 1994년 일본 덴소 웨이브가 개발한 2차원 바코드로, 기존 바코드보다 많은 정보를 저장하고 오류 정정 기능이 있으며, 자동차 부품 관리에서 시작하여 다양한 분야에서 활용되지만 악성 QR 코드에 의한 피해에도 주의해야 한다.

2. 특징 및 예시

알고리즘의 참조 구현은 종종 표준화 과정의 결과물로 나타나며, 퍼블릭 도메인 소프트웨어로 제공되어 소스 코드를 누구나 자유롭게 사용하고 수정할 수 있도록 한다. 이는 기술 확산에 기여한다.

하드웨어 및 소프트웨어 사양은 작동하는 실제 예시(참조 구현)가 있으면 이해하기 쉽다. 참조 구현의 일반적인 목적은 개발자가 해당 사양을 쉽게 알 수 있도록 하는 것이다. 순수한 학문적 목적으로 제공되기도 하지만, 시장 인지도를 높이거나 상업적 구현을 유도하기 위한 목적으로도 활용된다.

2.1. 소프트웨어

다양한 소프트웨어 알고리즘 및 프로토콜의 참조 구현이 존재한다. 참조 구현의 품질은 다양할 수 있다.

알고리즘의 참조 구현, 예를 들어 암호 알고리즘은 종종 표준화 과정의 결과 또는 입력이다. 이 기능에서 참조 구현은 종종 퍼블릭 도메인에 소스 코드와 함께 퍼블릭 도메인 소프트웨어로 제공된다. 예로는 최초의 CERN의 httpd, 서펜트 암호, base64 변형,SHA-3가 있다. 오픈월 프로젝트는 퍼블릭 도메인에 있는 여러 알고리즘과 해당 참조 소스 코드의 목록을 관리한다.

참조 구현은 프로덕션 품질일 수도 있고 아닐 수도 있다. 예를 들어, 프라운호퍼MP3 표준 참조 구현은 일반적으로 LAME과 같은 다른 일반적인 구현과 비교했을 때 음질을 결정하는 청취 테스트에서 우수한 평가를 받지 못한다. 반면에 CPython은 파이썬 프로그래밍 언어의 참조 구현이면서 프로덕션에서 가장 널리 사용되는 구현이기도 하다.

참조 구현은 일반적으로 특정 사양을 구현함으로써 정의를 결정하는 데 사용된다. 인증 시험을 개발할 때 다음 점에서 신뢰할 수 있는 구현이 각 인터페이스에 필수적이다.

* 사양의 오류나 부정확성을 발견하기 위해.
* 시험 프로그램에 버그가 없음을 확인하기 위해.

참조 구현의 특징은 다음과 같다.

* 사양 및 테스트와 병행하여 개발된다.
* 사양이 구현 가능한지 확인하는 데 사용된다.
* 테스트 프로그램 자체를 테스트할 수 있다.
* 다른 구현과의 비교 기준으로 삼을 수 있다.
* 테스트 프로그램으로는 평가할 수 없는 사양의 세부 사항을 명확하게 할 수 있다.

프라운호퍼MP3 참조 구현은 LAME과 같은 다른 구현에 비해 품질이 떨어진다. 반면 X 윈도 시스템X.Org 재단에 의한 참조 구현은 충분히 실용적일 뿐만 아니라 현재의 오픈 소스 유닉스계 운영 체제에서도 계속 사용되고 있다(이는 X.Org가 인기가 있었던 XFree86에서 파생하여 참조 구현을 선언한 데서 비롯되었다).

썬 마이크로시스템즈의 Java EE애플리케이션 서버 참조 구현은 Java EE를 배우는 목적으로는 사용 가능하지만, 제품으로 상업적으로 이용할 수는 없는 라이선스였다. 그러나 썬의 애플리케이션 서버 제품은 참조 구현과 완전히 동일한 기능을 가지고 있었고, 라이선스만 달랐다.

2.2. 하드웨어

엔비디아AMD(AMD)는 자사의 GPU를 확산시키기 위해 그래픽 카드 제조사에 참조 구현을 제공하고, 그래픽 카드 개발에 협력하고 있다.

3. 테스트

테스팅은 구현과 명세 간의 관계를 발전시켜 생산의 상호 프로세스 효율성을 향상시킨다. 하드웨어 및 소프트웨어 사양은 작동하는 실제 예시가 있으면 이해하기 쉽다. 참조 구현은 순수한 학문적 목적보다는 주로 시장 인지도를 높이거나, 참조 구현 구매 또는 상업적 구현을 유도하기 위해 활용된다.

3.1. 참조 구현의 역할 (테스트 관점)

참조 구현은 일반적으로 명세에 대한 확실한 해석으로 사용되는 명세의 구현이다. 참조 구현은 다음과 같은 특징을 가진다.

* 명세 및 테스트 스위트와 동시에 개발된다.
* 명세가 구현 가능한지 확인한다.
* 테스트 스위트의 테스트를 가능하게 한다.
* 다른 구현을 측정할 수 있는 기준이 되는 골드 표준 역할을 한다.
* 적합성 테스트가 부적절한 상황에서 명세의 의도를 명확히 하는 데 도움을 준다.

인증 시험을 개발할 때 다음 점에서 신뢰할 수 있는 구현이 각 인터페이스에 필수적이다.

* 사양의 오류나 부정확성을 발견한다.
* 시험 프로그램에 버그가 없음을 확인한다.

위와 동일한 특징들은 다음과 같이 요약될 수 있다.

* 사양 및 테스트와 병행하여 개발된다.
* 사양이 구현 가능한지 확인하는 데 사용된다.
* 테스트 프로그램 자체를 테스트할 수 있다.
* 다른 구현과의 비교 기준으로 삼을 수 있다.
* 테스트 프로그램으로는 평가할 수 없는 사양의 세부 사항을 명확하게 할 수 있다.

4. 상용 라이선스와의 관계

참조 구현은 때때로 상용 라이선스 이용을 막는 목적으로 사용되기도 한다. 썬 마이크로시스템즈의 Java EE 애플리케이션 서버 참조 구현은 Java EE를 배우는 목적으로는 사용 가능하지만, 제품으로 상업적으로 이용할 수는 없는 라이선스였다. 그러나 썬의 애플리케이션 서버 제품은 참조 구현과 완전히 동일한 기능을 가지고 있었고, 라이선스만 달랐다.