상위 호환성

**미래 호환성**() 또는 **상위 호환성**(上位互換性, )은 시스템이 자신의 미래 버전을 위해 설계된 입력을 수용할 수 있도록 하는 설계 특성이다. 이 개념은 전체 시스템, 전기적 사용자 인터페이스, 전기 통신 신호, 데이터 통신 프로토콜, 파일 형식 및 프로그래밍 언어에 적용될 수 있다. 기술 표준을 준수하는 상품이 이전 버전을 따르면서도, 자신이 이해하지 못하는 새로운 부분을 무시함으로써 최신 버전용으로 설계된 입력을 "부드럽게" 처리할 수 있다면 상위 호환성을 지원하는 것이다.

상위 호환 기술의 목표는 구형 장치가 데이터가 신형 장치를 위해 생성되었음을 인식하도록 하는 것이다.

구형 시스템에 대한 상위 호환성은 보통 신형 시스템의 하위 호환성, 즉 구형 시스템의 데이터를 처리할 수 있는 능력을 의미한다. 신형 시스템은 대개 구형 시스템의 형식으로 데이터를 처리하고 생성할 수 있으므로 구형 시스템과 완전한 호환성을 갖는다.

상위 호환성은 확장 가능성과 동일하지 않다. 상위 호환 설계는 미래 버전 데이터의 적어도 일부를 처리할 수 있다. 확장 가능한 설계는 업그레이드를 쉽게 만든다. 두 설계 아이디어의 예시는 웹 브라우저에서 찾을 수 있다. 특정 시점에서 현재 브라우저가 더 새로운 버전의 HTML을 무사히 수용한다면 상위 호환성이 있는 것이며, 브라우저 코드가 새로운 HTML을 처리하기 위해 얼마나 쉽게 업그레이드될 수 있는지가 확장 가능성을 결정한다.

## 예시

### 전기 통신 표준
FM 스테레오 방송이나 컬러 텔레비전의 도입은 상위 호환성을 허용했는데, 모노 FM 라디오 수신기와 흑백 TV 세트가 여전히 새로운 송신기로부터 신호를 받을 수 있었기 때문이다. 또한 새로운 수신기가 구형 송신기에서 생성된 모노 또는 흑백 신호를 받을 수 있었으므로 하위 호환성도 허용되었다.

### 비디오 게임
* 게임보이는 게임보이 컬러용으로 출시된 특정 게임들을 플레이할 수 있다. 이 게임들은 오리지널 게임보이 게임과 동일한 카트리지 설계를 사용하지만, 사용된 플라스틱은 보통 회색이 아닌 검은색이며 라벨과 포장에 GBC 로고가 있다. 닌텐도는 공식적으로 이러한 타이틀을 "듀얼 모드"라고 불렀다.
* Leapster는 Leapster L-Max 게임을 플레이할 수 있으며, Leapster L-Max는 Leapster2 게임을 플레이할 수 있다.
* 오리지널 플레이스테이션은 듀얼쇼크 2 컨트롤러와 호환된다. 마찬가지로 플레이스테이션 3는 듀얼쇼크 4 및 듀얼센스 컨트롤러로 플레이할 수 있다.
* 네오지오 포켓은 네오지오 포켓 컬러의 대부분의 게임을 플레이할 수 있었다.
* 원더스완은 일부 원더스완 컬러 게임을 플레이할 수 있다.
* 엑스박스 원은 엑스박스 시리즈 X 및 엑스박스 시리즈 S의 컨트롤러를 사용할 수 있으며, 반대로 엑스박스 원 컨트롤러도 엑스박스 시리즈 X 및 시리즈 S에서 작동한다.
* V.Smile 스마트릿지는 모든 VTech 콘솔 및 휴대용 게임 시스템과 호환된다. 그러나 V.Smile Baby, PC Pal, V.Flash 시스템은 지원하지 않는다. 삽입된 장치에 따라 일부 기능이 제한될 수 있으며, 이는 각 콘솔의 다양한 성능을 반영한다.
* 닌텐도 스위치는 디지털 및 물리적 "닌텐도 스위치 2 에디션" 게임을 플레이할 수 있다. 닌텐도 스위치 2에서 이러한 버전은 기본 게임과 업그레이드 팩을 모두 포함하며, 더 나은 성능, 그래픽, 추가 콘텐츠(보통 특정 퍼스트 파티 게임에 한함) 등을 제공한다. 그러나 업그레이드 팩 자체는 오리지널 닌텐도 스위치에서 실행되지 않으며 기본 게임만 실행된다.

### HTML
HTML은 모양이나 동작이 브라우저의 기본 설정이나 페이지에 포함된 스크립트 또는 스타일에 의해 재정의되지 않는 한 모든 태그를 동일한 방식(비활성, 스타일이 지정되지 않은 인라인 요소)으로 취급하도록 설계되었다. 이 덕분에 대부분의 새로운 기능은 구형 브라우저에서 성능이 완만하게 저하되도록(degrade gracefully) 설계되었다. 이것이 의도대로 작동하지 않았던 한 가지 사례는 스크립트 및 스타일 블록으로, 그 내용은 페이지의 일부가 아니라 브라우저에 의해 해석되어야 하는 것이었다. 이러한 사례는 내용을 주석 블록으로 감싸서 처리되었다.

컴퓨터나 웹 브라우저의 강제적인 업그레이드가 없기 때문에, 많은 웹 개발자들은 점진적 향상 접근 방식을 사용한다. 이는 자바스크립트를 껐거나 구형 컴퓨터 또는 구형 웹 브라우저를 사용하거나 연결 속도가 느린 사람들이 사용할 수 있는 웹사이트를 만들면서도, 현대적인 웹 브라우저에서 더 빠른 하드웨어와 더 나은 자바스크립트 지원을 활용하도록 시도하는 것이다.

### 광학 매체
가장 흔한 세 가지 12cm 광학 매체 형식(CD, DVD, 블루레이) 각각은 기록 가능한 형태가 나오기 수년 전에 읽기 전용 형태로 먼저 출시되었다. 각 형식 내에는 상위 호환성과 하위 호환성이 모두 존재하는데, 대부분의 구형 읽기 전용 드라이브와 플레이어는 동일한 형식의 기록 가능 매체를 읽을 수(쓰기는 불가) 있으며, 읽기/쓰기 드라이브는 구형 읽기 전용 매체를 읽을 수 있다. 형식 간에는 상위 호환성이 없다. 예를 들어 CD 플레이어는 DVD(더 새로운 형식)를 읽을 수 없으며 오디오 트랙조차 읽지 못한다. 시장성을 위해 하위 호환성(DVD 플레이어가 오디오 CD를 재생하는 등)은 있을 수 있으나, 이는 표준에 본질적인 것은 아니다.

## 상위 호환되지 않음
일부 제품은 상위 호환되도록 설계되지 않는데, 이를 NUC(not upwardly compatible)라고 한다. 어떤 경우에는 설계자가 공급자 종속이나 소프트웨어 회귀의 한 형태로 의도적으로 이를 선택할 수도 있다.

예를 들어, 칸막이 생산자가 칸막이 설계를 변경하는 것을 고려한다고 하자. 한 설계자가 점유 면적을  사각형에서 1.2 미터 사각형으로 변경하자고 제안한다. 즉시 영업 관리자가 "NUC"를 외치며 문제가 파악된다. 점유 면적이 변경되고 기존 고객이 생산자로부터 더 많은 제품을 구매하려 한다면, 4피트 사각형 칸막이에 맞춰 설계된 사무실에 다른 크기의 유닛을 맞춰 넣어야 하는 문제가 발생하기 때문이다.

계획적 구식화는 상위 호환성의 일종이지만, 하위 호환성 정책을 채택하는 대신 기업들은 하위 비호환성이라는 상업적 정책을 채택하여 최신 앱이 최신 장치를 요구하도록 만든다.

## 같이 보기
* 과거 호환성
* 확장성
* 컴퓨터 호환

## 각주

## 외부 링크
*  * Rule of Extensibility: Design for the future, because it will be here sooner than you think, in The Art of Unix Programming

분류:소프트웨어 공학
분류:상호운용성
분류:하위 호환성