소프트웨어는 하드웨어 위에서 동작하지만, 그 사이에는 여러 계층이 있습니다. 이 해설에서는 호환성이 무엇을 의미하는지, 그리고 그것을 책임감 있게 평가하는 관점을 살펴봅니다.
호환성의 계층
호환성은 하나의 스위치가 아니라 여러 계층의 일치 여부입니다.
- 아키텍처: 명령어 집합이 일치해야 합니다.
- 운영체제: 시스템 호출과 런타임이 일치해야 합니다.
- 의존성: 라이브러리와 런타임 버전이 범위 안에 있어야 합니다.
- 자원: 자원 요구가 기기의 자원 범위 안에 있어야 합니다.
그림 1. 소프트웨어와 하드웨어 사이의 계층
동작한다는 것의 의미
“동작한다”는 것은 위 계층이 모두 맞물렸다는 뜻입니다. 한 계층이라도 어긋나면 실행되지 않거나, 실행되더라도 예상과 다르게 동작할 수 있습니다. 에뮬레이션과 번역은 어긋남을 줄여주지만, 원래 환경과 같다고 단정하지 못합니다.
변동성
호환성은 고정되지 않습니다. 운영체제 업데이트, 라이브러리 단종, 하드웨어 교체가 언제든 호환 관계를 바꿀 수 있습니다. 한 시점의 동작을 영구한 보장으로 해석하면 안 됩니다.
주의
가용성, 호환성, 기능은 기기와 소프트웨어 버전에 따라 달라질 수 있습니다. 이 점은 데스크톱 앱을 사용할 때도 동일하게 적용됩니다.
평가 관점
- 요구사항을 읽고, 사용하려는 용도와 비교합니다.
- 해당 환경용 빌드가 실제로 존재하는지 확인합니다.
- 의존성 범위를 점검하고, 환경 변화에 대비합니다.
- 한 번의 확인으로 끝내지 않고, 환경이 바뀔 때 다시 살핍니다.
이 관점은 특정 제품의 추천이 아니라, 호환성을 다루는 보편적 태도를 다룹니다.