Что такое обратная совместимость (backward compatibility) в разработке ПО?

«Что такое обратная совместимость (backward compatibility) в разработке ПО?» — вопрос из категории DevOps, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Обратная совместимость — это свойство новой версии системы (ОС, библиотеки, API, формата файла) корректно работать с приложениями, данными или компонентами, созданными для её предыдущих версий, без необходимости их модификации.

Пример из iOS-разработки: Приложение, скомпилированное с целевой версией iOS 15, должно запускаться и функционировать на устройстве с iOS 16, даже если в iOS 16 появились новые API. Старые API, которые использовало приложение, должны продолжать работать.

Как это обеспечивается и используется:

  1. Условная компиляция и проверка доступности:
    // Проверка доступности API во время выполнения
    if #available(iOS 16, *) {
        // Используем новый, более эффективный метод
        useNewModernAPI()
    } else {
        // Fallback на старый метод для поддержки предыдущих версий
        useLegacyAPI()
    }
  2. Устаревание (deprecation): Перед удалением API помечаются как устаревшие с предупреждением для разработчиков, что даёт время на миграцию.
  3. Совместимость форматов данных: Новая версия приложения должна уметь читать файлы, созданные старой версией.

Обратное понятие — прямая совместимость (forward compatibility): Способность старой версии системы хотя бы частично работать с данными/кодом от новой версии (встречается реже).