하위 호환성

하위 호환성(下位互換性, )은 기술 및 컴퓨터 분야에서 새 제품이 이전 제품을 염두에 두고 만들어진 제품에서 별도의 수정 없이 그대로 쓰일 수 있는 것을 뜻한다. 하위호환성은 한 제품의 특성이 아닌 두 제품 (새 제품과 이전 제품) 사이에서 성립하는 관계이며, 호환성의 특수한 경우로 볼 수 있다. 두 제품을 서로 바꿔 쓸 수 있음을 보장하는 호환성과는 달리, 하위호환성은 한 제품이 다른 제품 대신에 쓰일 수 있다는 것만 보장하고 그 반대는 보장하지 않는다.

일반적으로 하위호환성은 이전 제품이 제공하던 인터페이스를 그대로 유지한 채 새로운 기능을 추가하는 식으로 이루어진다. 따라서 하위호환성은 소프트웨어가 개선되었을 때 이전 버전의 사용자들을 지원하기 위해 자주 사용된다. 하지만 하위호환성은 이전 제품의 수가 많아질수록 유지보수가 힘든 경향이 있기 때문에 의도적으로 하위호환성을 깨뜨리는 경우도 종종 있다.

파일 포맷은 하위호환성의 대표적인 예로, 이전 버전에서 만들어진 파일을 이후 버전이 정상적으로 읽고 쓸 수 있을 때 이후 버전은 이전 버전에 대해 하위호환성을 가진다고 할 수 있다. 이때 파일 포맷은 그를 해석할 수 있는 소프트웨어 없이는 무의미하기 때문에, 실제로 하위호환성이 적용되는 대상은 파일 포맷이 아닌 소프트웨어가 된다. 비슷한 개념으로 이후 버전에서 만들어진 파일을 이전 버전이 해석할 수 있을 경우 상위호환성을 가진다고 한다.

주의할 점은 이후 버전이 이전 버전의 파일을 읽을 수는 있지만 쓸 수는 없는 경우가 많은데, 이는 이전 버전의 사용자가 이후 버전으로 이동하는 데는 도움이 되지만 하위호환성이라 하지는 않는다는 것이다. 이런 방법은 종종 사용자가 새 버전을 쓸 수밖에 없도록 유도하는 데 쓰이는데, 시간이 지날수록 새 버전으로 만든 파일의 수가 증가하기 때문이다.

호환성 검사 
클라이언트 프로그램과 서버 구성요소 사이의 호환성을 검사하는 방법은 다음과 같다.:
 버전 번호에 따라 검사한다.
 IDL에 따라 검사한다.
 JIT(just-in-time) 테스트 실행으로 확인한다. (클라이언트 프로그램은 서버 구성요소에 몇 가지 샘플 입력을 제공하여 구성요소가 올바른 예제 출력을 반환하는지 확인)

같이 보기 
 상위 호환성

외부 링크 
  Why many versioning problems are caused by backwards compatibility issues.

 
상호운용성
소프트웨어 공학