Здравствуйте админ! На моём ноутбуке установлена Windows 10 и несколько раз в день выходит сообщение: «Oneclickstarter. Программа запущена в режиме совместимости. Настройки совместимости следует отключить, так как они могут приводить к нежелательным последствиям. Тем не менее запустить приложение?» Как избавиться от этого сообщения?
Привет, друзья. В этой публикации предлагаю рассмотреть один неприметный функционал Windows. Неприметный, но в некоторых случаях он может вам пригодиться – это режим совместимости программ. Наверняка многие из вас работают со старыми программами. Потому что программа более не поддерживается, потому что новые версии программы тяжёлые, грузные, напичканы новыми ненужными функциями или с новым интерфейсом, лично вам неприятным. У каждого свои причины использовать старые программы. Но бывает так, что старые программы, которые не адаптированы под используемую современную версию операционной системы Windows, работают с проблемами, либо не запускаются или даже не устанавливаются. Устранить эти проблемы и призван режим совместимости программ. Давайте разберёмся, что это такое, и как его использовать.
Для вызова мастера необходимо вызвать контекстное меню исполняемого файла (или ярлыка запуска программы). Выбрать пункт «Исправление неполадок совместимости». Откроется инструмент, позволяющий в автоматическом режиме настроить совместимость устаревшего приложения с новой системой.
В данном окне необходимо выбрать пункт «Диагностика программы» для перехода в режим диагностики появившихся проблем. В новом окне отобразится группа флажков, при помощи которых необходимо конкретизировать возникшие проблемы.
После нажатия кнопки «Далее» появится следующий уточняющий вопрос, который напрямую зависит от выбора флажков в предыдущем окне. Например, система может попросить указать версию Windows, в которой программа работала корректно. В некоторых случаях на следующем этапе могут появиться дополнительные уточняющие вопросы.
После получения ответов на все заданные вопросы, мастер автоматически установит параметры, необходимые для корректной работы приложения. После этого в окне отобразится кнопка «Проверить программу».
На данном этапе программа предлагает три ссылки: сохранение результатов, установка других параметров совместимости и поиск решения в интернете. Первый вариант необходимо использовать, если программа начала работать и отображаться корректно. В этом случае новые настройки сохраняются и используются при каждом запуске программы.
Вторая ссылка запускает мастер настройки с самого начала. Это позволяет попробовать указать другие параметры.
Третий вариант можно использовать, если настройка совместимости не дала положительных результатов. В этом случае сведения о проблеме отправляются специалистам Microsoft. Это поможет исправить проблему в последующих версиях Windows, однако в текущий момент проблема решена не будет.
- Настройка клиента под управлением ОС Windows Vista/ Windows 7 для работы с DHCP
- Настройка клиента под управлением ОС Windows XP для работы с DHCP
- Бизнес идея: Разработка и продажа программ для автобизнеса
- Характеристики, на которые стоит обратить внимание при выборе планшета
- Эппл будет получать данные из соцсети: теперь удаление информации просто необходимо
При переходе на новую версию операционной системы неизбежно возникает проблема совместимости приложений, которая должна быть решена в ходе обслуживания компьютеров.
Проблема совместимости чаще всего возникает, когда приложение некорректно обращается к функциям операционной системы.
Как правило, ведущие производители программного обеспечения стараются своевременно выпускать новые версии программных продуктов, совместимые с актуальными операционными системами, но нередко предприятия для решения некоторых специфических задач вынуждены использовать ПО, совместимость которого с новой версией операционной системы находится под вопросом.
С учетом возможных проблем совместимости используемых приложений и новой версии операционной системы рекомендуется в обязательном порядке включить в подготовку к обновлению ОС на компьютерах предприятия следующие этапы:
· обязательная проверка используемого ПО на совместимость с новой операционной системой и сбор информации о выявленных в процессе этого тестирования проблемах
· Анализ приложений, у которых выявлены проблемы совместимости. В процессе этого анализа нужно выяснить, насколько необходимы предприятию данные приложения, выпущены ли для них новые версии, в которых решена проблема совместимости, и в случае отсутствия таких версий — поиск инструментов для решения проблем совместимости
· тестирование инструментария для решения проблем совместимости, желательно не слишком усложняющего обслуживание компьютеров.
Тестирование на совместимость позволяет проверить приложение в различных браузерах, на разных ОС, с различным программным обеспечением и аппаратными средствами.
Знаете ли вы, что 10% пользователей используют нестандартные браузеры?
Вы знаете, как выглядит ваш сайт в этих браузерах? И работает ли он во всех этих браузерах? Не очень то бы хотелось потерять 10% потенциальных клиентов.
Во время тестирования на совместимость команда тестировщиков проверяет, насколько хорошо приложение может работать с различными типами аппаратных технологий, драйверами и операционными системами.
Инсталляционное тестирование (installation testing)
В процессе инсталляционного тестирования проверяется корректность установки и удаления программного продукта в среде, максимально приближенной к эксплутационной. Об этом аспекте корректной работы программного обеспечения очень часто просто забывают (и напрасно). Правильно выполненная установка программы — необходимое условие её корректной дальнейшей работы. Проверка правильности установки должна быть обязательным элементом проекта по тестированию любого продукта. Если программу невозможно корректно установить, и при этом что-то не будет работать или будет работать неправильно, работа по тестированию самого программного тестирования бессмысленна. Почему? Потому что заказчику не нужен продукт, который даже невозможно установить. Если пользователь уже на этапе установки сталкивается с проблемами в разработанном программном продукте, что он подумает о самом программном продукте? Будет ли он связываться с такой фирмой-разработчиком?
Регрессионное тестирование (regression testing)
Повторное выполнение тестов для проверки того, что изменения, внесённые в программу в результате разработки новой или изменения существующей функциональности, устранения ошибок, не повлияли на функциональность, которая не изменялась (т. текущая версия ведёт себя идентично предыдущей, за исключением измененных областей).
Тестирование новой функциональности (new feature testing)
В данном виде тестирования акцент делается на тестировании новой функциональности, появившейся в конкретном выпуске (build) программного продукта.
Конфигурационное тестирование (configuration testing)
С помощью конфигурационных тестов проверяется совместимость продукта с различным программным (software) и аппаратным (hardware) обеспечением. Как правило, программный продукт делается с тем расчётом, чтобы он сразу работал в максимально разнообразной внешней среде. Если же речь идёт о «коробочном продукте», то фактор совместимости приобретает ещё более важное значение. Для того, чтобы выяснить реакцию продукта на окружение и соседство с другим программным обеспечением, и проводят данные тесты.
Тестирование совместимости (compatibility testing)
Тестирование совместимости помогает убедиться в функциональных возможностях и надёжности работы продукта в поддерживаемых браузерах (если речь идет о Web-приложениях) и операционных системах. Также может проверяться работоспособность продукта при использовании различных аппаратных платформ.
Тестирование удобства эксплуатации (usability testing)
Тестирование интерфейса человек/машина производится в отношении таких моментов как внешний вид пользовательского интерфейса, удобство навигации (преимущественно для Web-сайтов). Практичность и удобство использования – очень важные характеристики программного продукта. Например, программа может вполне соответствовать всем предъявляемым к ней требованиям с точки зрения функциональности. Но функции реализованы неудобно: некоторые шаги приходится повторять много раз, тогда как по логике достаточно выполнить однажды; расположение элементов интерфейса нелогично, программа быстро вызывает утомление и т. Для выявления такого рода недочётов и применяют тесты на удобство использования. Часто эта группа тестов относится к категории некритичных, но когда речь идёт, например, о рыночном готовом продукте, пренебрегать удобством эксплуатации весьма опасно.
Методы выявления проблем совместимости
Методы исправления проблемы установки приложений, вызванных старыми программами или новыми функциями
Часто при установке новых версий ОС Microsoft Windows у обычных пользователей возникали проблемы с поддержкой старых приложений. ОС Microsoft Windows XP является исключением из правил. Теперь практически любое приложение может быть запущено в ОС Windows XP благодаря расширенной поддержке совместимости приложений.
При переходе на новую операционную систему Вы можете быть обеспокоены тем, будут ли Ваши старые приложения нормально работать или хотя бы просто запускаться на новой платформе. Корпорация Microsoft понимала эту проблему и предприняла значительные шаги, позволяющие пользователям чувствовать себя уверенно при работе с ОС Windows XP. В данной статье описывается, как заставить старые приложения нормально работать в этой новой операционной системе.
Как работает Исправление совместимости
Корпорация Microsoft включила в ОС Windows XP поддержку совместимости приложений в виде исправлений совместимости. Эти исправления являются маленькой частью кода, с помощью которого осуществляется перехват программных действий, не поддерживаемых ОС Windows XP и перенаправление их к поддерживаемым методам.
Пример: Определение версии ОС Windows
В том случае, если программа была написана специально для работы с определенной версией ОС Windows (отличной от Windows XP), то при запуске в ОС Windows XP, будет выдаваться ошибка о неверной версии ОС. Есть ряд исправлений совместимости, которые можно использовать в этом случае. Ваш выбор будет зависеть от того, для какой версии ОС Windows было разработано это приложение.
После того, как Вы выберете подходящее исправление совместимости в соответствии с версией ОС Windows, требуемое программой, исправления совместимости в любое время будут перехватывать все запросы программы к ОС о ее версии и возвращать ту информацию о версии ОС, которую программа ожидает получить.
Определение необходимых исправлений совместимости
Приложение, у которого существует одна или несколько проблем с совместимостью при работе в ОС Windows XP, часто выдает сообщение об ошибке, в котором указывается, в чем именно проблема. Однако возможна ситуация, когда приложение просто нельзя запустить или сразу после запуска оно некорректно завершает свою работу.
В одних случаях сообщения об ошибках, которые выдает приложение, могут послужить ключом к решению возникших проблем для выявления необходимых исправлений совместимости. В других же, определение необходимых исправлений совместимости необходимо будет получить экспериментальным путем.
Использование Режима совместимости в случае, если необходимо несколько исправлений
Рисунок 1: Использование вкладки Совместимость (Compatibility) для применения к приложению режима совместимости
Для применения режима совместимости к отдельно взятому приложению:
С помощью значка Мой компьютер (My Computer) или Проводника Windows (Explorer) найдите и выберите исполняемый файл приложения.
Щелкните правой кнопкой мыши на исполняемом файле программы и выберите пункт Свойства (Properties) из контекстного меню.
Установить флажок Запустить программу в режиме совместимости с (Run this program in compatibility mode for) и затем выберите необходимый режим совместимости. Нажмите OK.
Запустите приложение и проверьте эффективность выбранного режима совместимости.
Возможно, Вам придется повторить этот процесс несколько раз, пока не найдете наиболее подходящий режим.
Использование визуальных тем при работе со старыми приложениями
Если примененный к Вашему приложению режим совместимости не помог, попробуйте использовать настройки из раздела Параметры экрана (Display settings) на вкладке Совместимость (Compatibility).
В состав ОС Windows XP входит несколько визуальных тем, из-за которых могут возникать ошибки при работе старых приложений. Если показалось, что приложение запустилось, но при этом изображение на экране искажено или экран погас, попробуйте установить флажок Отключить визуальное оформление (Disable visual themes). Возможно, также понадобится установить флажки Разрешение экрана 640×480 (Run in 640×480 screen resolution) или 256 цветов (Run in 256 colors).
Использование Мастера совместимости программ
В данном разделе рассматривается использование Мастера совместимости программ для решения различных проблем совместимости, которые могут быть причиной некорректной работы старых приложений в ОС Windows XP.
Мастер совместимости программ
ОС Windows XP также включает в себя и другой очень простой подход в решении проблемы совместимости приложений — Мастер совместимости программ. Этот мастер позволяет с легкостью устранить различные проблемы с совместимостью, которые могут препятствовать нормальному выполнению старых программ на ОС Windows XP.
Мастер совместимости программ обладает графическим интерфейсом для настройки режимов совместимости и входит в состав Центра справки и поддержки.
Для использования Мастера совместимости программ:
Нажмите Пуск (Start), Программы (All Programs), Стандартные (Accessories) и затем выберите Мастер совместимости программ (Program Compatibility Wizard).
Внимание: Примите во внимание то, что нельзя использовать данный мастер для того, чтобы заставить нормально работать под ОС Windows XP старые антивирусные программы, дисковые утилиты, программы для резервирования данных, а также системные утилиты. При работе эти старые программы обращаются к драйверам на уровне ядра, что может нарушить стабильность системы. Также не используйте этот мастер для приложений, которые специально разрабатывались для работы в ОС Windows XP.
Нажмите Далее (Next). Будет задан вопрос о том, каким образом необходимо открыть программу, для которой требуется настроить параметры совместимости. Будут предложены следующие варианты: Выбрать из списка программ (choose from a list of programs), Использовать программу на компакт-диске (use the program in the CD-ROM drive) или Найти программу вручную (locate the program manually). С помощью переключателя выберите необходимый вариант и нажмите Далее (Next).
Выберите программу, для которой необходимо установить параметры совместимости. Содержание диалогового окна на данном этапе будет зависеть от того, какой вариант Вы выбрали на шаге 2. Нажмите Далее (Next) после того, как выберете приложение,.
Выберите режим совместимости для программы. Выберите рекомендованную для данного приложения операционную систему или систему, в которой приложение работало корректно. Также Вы можете отказаться от применения режима совместимости. Закончив, нажмите Далее (Next).
В списке предоставляется возможность выбора трех дополнительных настроек параметров экрана для установки совместимости программы: 256 цветов (256 colors), Разрешение экрана 640×480 точек (640×480 resolution), Отключить визуальное оформление (disable visual themes). Вы можете, как выбрать, какие из них использовать, так и вообще отказаться от их использования. Закончив, нажмите Далее (Next).
Мастер отобразит всю суммарную информацию о тех настройках, которые Вы выбрали. Если все верно, нажмите Далее (Next), чтобы проверить настройки в работе. Это приведет к запуску программы с выбранными для нее настройками.
Последняя страница мастера позволяет Вам выбрать, что делать дальше: применить эти параметры совместимости и всегда использовать их с этой программой, отменить внесенные изменения из-за того, что они не помогли, или сохранить их и запустить мастер еще раз, чтобы попробовать применить другие параметры совместимости.
После того, как Мастер совместимости программ закончит свою работу, все исправления совместимости будут применены к Вашей программе и будут действовать до тех пор, пока Вы не удалите их или не переустановите приложение. Вам не нужно будет больше предпринимать никаких дополнительных шагов во время выполнения программы, чтобы пользоваться всеми преимуществами технологии совместимости программ ОС Windows XP.
Выявление проблем совместимости с помощью программы QFixApp
В данном разделе рассматриваются различные части программы QFixApp и методы их использования для выявления необходимых приложению исправлений, а также возможность их переноса на другие компьютеры. Также рассматривается вопрос создания XML файла, основанного на собственной базе данных совместимости.
Программа QFixApp является графическим средством, созданным для оказания помощи в нахождении необходимых исправлений совместимости для особых исполняемых файлов. Программа QFixApp обеспечивает Вам прямой доступ к исправлениям совместимости, включенных в состав ОС Windows XP, позволяя контролировать особые исправления совместимости для Ваших старых приложений.
Главное окно программы QFixApp содержит две вкладки:
Вкладка Оболочки (Layers) отображает полный список доступных к использованию режимов (оболочек) совместимости (вид вкладки показан на Рисунке 2).
Вкладка Исправления (Fixes) предоставляет полный список исправлений совместимости доступных в ОС Windows XP.
Рисунок 2: Вкладка Оболочки программы QFixApp, используемая для применения режимов совместимости к приложению
Программа QFixAPP и перенос исправлений на другие компьютеры
Программу QFixApp наиболее эффективно использовать для определения необходимых точных исправлений совместимости, требуемых приложению. Выявленные таким образом исправления могут быть перенесены на другие компьютеры. Этот процесс включает в себя выбор наиболее подходящего режима совместимости с последующим тестированием работы программы в этом режиме.
Работа выбранного Вами Режима совместимости
После того, как Вы смогли найти тот режим совместимости, в котором приложение правильно работает:
Воспользуйтесь сведениями из журнала программы QFixApp, для определения того, какие индивидуальные исправления совместимости используются, а какие можно исключить.
Используйте вкладку Исправления (Fixes), чтобы выбрать или исключить исправления совместимости в зависимости от того, действительно ли они необходимы приложению.
Откройте Дополнительные (Advanced) параметры и завершите процесс, введя необходимую дополнительную информацию, благодаря чему ОС Windows XP сможет точно определить программу, даже если на компьютер будет установлена другая программа с таким же названием.
Вы можете записать эту информацию в файл. SDB базы данных совместимости для дальнейшего переноса на другие компьютеры.
Примечание: Хотя программа QFixApp и может использоваться для создания файлов собственной базы данных совместимости, с помощью которых можно осуществить дальнейший перенос исправлений на другие компьютеры, однако с ее помощью можно создать базу данных всего лишь для одного приложения. Для обеспечения переноса исправлений совместимости одновременно для нескольких приложений Вам необходимо воспользоваться Администратором совместимости, который будет рассмотрен в следующих разделах.
DEMOAPP. EXE—демонстрационное приложение
В Пакет средств обеспечения совместимости приложений включено демонстрационное приложение с названием DEMOAPP. EXE, которое находится в папке Demoapp внутри папки Application Compatibility Toolkit. Оно имитирует приложение, которое должно запускаться только в ОС Windows 95 и у которого возникают ошибки совместимости при работе в ОС Windows XP. Данное демонстрационное приложение было разработано специально для того, чтобы Вы могли попрактиковаться со средствами, рассмотренными в данной статье.
Для применения режима совместимости к DEMOAPP. EXE:
Запустите программу QFixApp, нажав Пуск (Start), Программы (All Programs), Пакет средств обеспечения совместимости приложений (Application Compatibility Toolkit) и затем щелкните QFixApp.
При выбранной вкладке Оболочки (Layers), нажмите кнопку Обзор (Browse). Используйте диалоговое окно Выбор исполняемого файла (Select an executable), чтобы найти исполняемый файл, который необходимо «исправить». Выберите файл и нажмите Открыть (Open).
Если необходимы какие-либо параметры командной строки, введите их в текстовом поле Командной строки (Command line).
Выберите необходимый режим совместимости. (Необходимо знать, что демонстрационное приложение DEMOAPP. EXE рассчитано на работу под ОС Windows 95 , поэтому во время выполнения упражнения, когда Вы запустите исполняемый файл. EXE, будет выдано сообщение о том, что приложению для работы необходима ОС Windows 95).
Выбрав для тестирования необходимый режим совместимости, нажмите кнопку Выполнить (Run), чтобы проверить работу выбранного режима совместимости. Если Вам кажется, что удалось добиться нормальной работы программы, Вы сможете в программе QFixApp выбрать одно из двух действий: создать постоянное исправление или продолжить работу, чтобы выбрать другие исправления совместимости.
Создание файла Собственной базы данных совместимости с помощью программы QFixApp
Ограничением программы QFixApp является то, что все те исправления совместимости, которые Вы применили к приложению, действуют только во время работы самой программы QFixApp.
Режим совместимости программ Windows
Режим совместимости впервые появился ещё в Windows Vista. И с тех пор он является неотъемлемой частью классического функционала операционной системы, давая нам возможность запускать старые программы в тех версиях Windows, под которые они не адаптированы своими разработчиками, в режиме совместимости с версиями Windows постарше. Но не только запускать, а также устанавливать: режим совместимости может быть применён и к файлам запуска установленных программ, и к их инсталляторам. Этот режим обнаруживает и устраняет проблемы совместимости с текущей версией Windows и делает возможным установку, запуск и работу старых программ. Если ваша старая программа не устанавливается, не запускается или работает со сбоями, например, в Windows 10, но эта программа исправно работала в Windows 7, запустите программу в режиме совместимости, соответственно, с Windows 7. Как запустить программу в режиме совместимости со старой версией?
Иногда Windows после сбоя работы программы сама предлагает нам запустить её в режиме совместимости. По инициативе же пользователя сделать это можно двумя способами, хотя суть их и одинакова.
Настройка режима совместимости в свойствах файла запуска программы
Если мы точно знаем, что наша старая программа без проблем работала в старшей какой-то версии Windows, мы можем настроить запуск программы в совместимости конкретно с этой версией Windows. На инсталляторе программы или значке её запуска вызываем контекстное меню, кликаем «Свойства».
В окошке свойств идём во вкладку «Совместимость». Активируем «Режим совместимости». Из выпадающего списка выбираем одну из старших версий Windows, где наша старая программа работала исправно. Применяем изменения.
Пробуем запустить и поработать с программой. Либо пробуем установить программу, если мы работали с инсталлятором.
Средство устранения проблем с совместимостью
В той же вкладке «Совместимость» свойств инсталлятора или файла запуска программы будет кнопка запуска средства устранения проблем с совместимостью.
Это средство также можно запустить непосредственно в контекстном меню на инсталляторе или файле запуска программы.
На первом этапе средства можем выбрать «Использовать рекомендуемые параметры».
В Windows 10 по умолчанию будет применена совместимость с Windows 8. Кликаем «Проверить программу». Наша программа запустится, тестируем её. Жмём «Далее» в окошке средства устранения проблем с совместимостью.
Если наша проблема решена, жмём «Да, сохранить эти параметры для программы». Если нет, жмём «Нет, попытаться использовать другие параметры».
В последнем случае далее ставим галочку первого пункта проблем. Жмём «Далее».
Выбираем другую какую-то версию Windows, жмём «Далее».
***
Друзья, иногда с режима совместимости нет никакого толку, более того, бывает так, что он работает некорректно, и запущенная в этом режиме программа может работать ещё с большими проблемами, чем ранее. Вплоть до того, что программа может вообще не запускаться, если без этого режима хотя бы запускалась. И бывает так, что Windows по умолчанию запускает программу в режиме совместимости. Если в этом режиме, автоматически запущенном, программа работает с ошибками или не запускается, нужно попробовать её запустить без режима совместимости. А для этого его необходимо отключить путём остановки его службы, детали смотрите в статье «Как отключить режим совместимости Windows 10».
Как отключить режим совместимости Windows 10
Привет друзья! Данное сообщение в Windows 10 появляется из-за программы Tune Up Utilities 2014, так как она не совместима с операционной системой Windows 10, и если нажать на кнопку «Да», то сообщение пропадёт. Чтобы избавиться от этого сообщения и не нажимать постоянно «Да», попробуйте установить новейшую версию этого оптимизатора Windows — AVG PC TuneUp 2016.
Что такое — Режим совместимости Windows?
Данный режим обнаруживает и устраняет проблемы совместимости новейшей операционной системы с устаревшими приложениями, не имеющими драйверов для работы в новой Windows. Другими словами, если какая-либо старенькая программа не совместима с установленной у вас операционной системой Windows 10, но вы всё равно установили эту программу, то Windows 10 запустит её в так называемом режиме совместимости, то есть создаст среду, способствующую запуску этой устаревшей программы.
Хочу сказать, что иногда данный режим работает некорректно и устаревшая программа либо не запускается, либо работает с ошибками, либо выходит окно, как у нашего читателя. В этом случае лучше всего найти самую новую версию нужной вам программы (совместимую с Windows 10) и установить её, а если таковой нет, то можно попробовать то, что один раз сделал я, а именно — отключить режим совместимости Windows 10, в моём случае это помогло, то есть, перестало выходить окно с предупреждением, а устаревшее приложение работало как ни в чём не бывало.
Пуск—>Выполнить, введите в поле ввода команду services. mscи нажмите «Ок».
Появляется окно управления службами. Находим службу помощника по совместимости программ. Видим, что служба выполняется.
Правой кнопкой мыши щёлкаем на этой службе и в контекстном списке выбираем «Остановить».
Служба останавливается.
Всё, служба помощника по совместимости программ остановлена до следующей перезагрузки.
Для полного отключения режима совместимости программ в Windows 10, щёлкаем правой кнопкой мыши на службе помощника по совместимости программ и в контекстном списке выбираем «Свойства».
Вкладка «Общие», выберите Тип запуска ставим «Отключена» и жмём «ОК».
Всё, служба помощника по совместимости программ отключена.
Бесконечность проблемы обратной совместимости
Обратная совместимость применительно к аппаратным или программным системам означает способность успешно использовать интерфейсы и данные из более ранних версий системы. Этот принцип распространяется не только на программы, которые работают с файлами, созданными в более ранних версиях этих же программ, но и касается ситуаций работы со схожими алгоритмами. Например, Perl поддерживает обратную совместимость с другим языком — Awk, — который Perl был предназначен заменить.
Обратную совместимость легче выполнять, если предыдущие версии системы были разработаны с поддержкой встроенных функций, таких как хуки, плагины или API, которые позволяют добавлять новые возможности вашему софту, однако все из области backward compatibility (c упором на back) может стать головной болью для разработчиков.
Откажешься от нее совсем — расстроятся пользователи предыдущих версий систем и продуктов, вмиг потеряв весь парк накопленных гаджетов или программ. Обеспечишь полную обратную совместимость — станешь заложником прошлых решений, сделав свой продукт тяжелым, неповоротливым, или даже не способным на нужный прирост характеристик.
Разработчик каждый раз принимает трудное решение: должен ли продукт быть обратно совместимым. «Объективно правильного» решения здесь просто нет — в мире достаточно примеров успешной обратной совместимости и отказов от нее. Возможно, чей-то опыт поможет сделать вам правильный выбор прямо сейчас.
Давайте снова поменяем стандарт
Один из самых ярких примеров, когда об обратной совместимости решили забыть, это появление разъема USB 3. 1 Type C (USB-C). Многие годы мы не ведали проблем: любой гаджет с разъемом micro- или miniUSB можно было воткнуть в любой соответствующий USB-порт. Но консорциум USB-IF создал разъем Type C, совершенно несовместимый механически ни с одним из сотен миллионов, а то и миллиардов смартфонов, кабелей, зарядных устройств и прочих гаджетов.
Еще одна проблема заключается в том, что не каждый USB-C кабель, порт, устройство и питание совместимы между собой: некоторые кабели с USB-C на обоих концах могут передавать лишь 5 Гбит/с, другие совместимы с 10 Гбит/с, а есть и те, что нельзя использовать для питания.
Ситуация привычная для тех, кто когда-то собирал себе компьютеры самостоятельно или занимался их апгрейдом. За последние 20–30 лет на наших глазах сменилось множество поколений шин и портов, почти каждое из которых не было обратно совместимо с предыдущими. Поменялись буквально все разъемы на материнской плате, и не по одному разу: сокеты процессоров, шины видеокарт и оперативной памяти, разъемы для подключения накопителей и периферии.
Нездоровая чехарда в мире процессоров продолжается до сих пор: вполне себе бодрые модели, которые гонять и гонять, через несколько лет уже нельзя поставить на новые материнские платы. Производителям трудно устоять перед соблазном регулярно делать бесполезными запасы железа у пользователей, заставляя их нести деньги на новые модели. Отсутствие обратной совместимости не греет душу, когда купленный три года назад процессор приходится менять на практически такой же, потому что умерла материнская плата.
Универсальный разъем, предназначенный для передачи данных и питания, способен стать единственным портом на устройстве — и в этом несомненный плюс USB Type-C. Можно смириться с отсутствием обратной совместимости в гаджетах, и даже отметить для себя плюсы (более высокую скорость передачи данных и иные параметры электропитания), но в сфере ПО болезненнее воспринимается несовместимость новых версий со старыми. Особенно это касается корпоративных продуктов, стоимость которых и влияние на бизнес-процессы слишком велики.
Геймдев
В экосистеме ПК игры обратно совместимы в течение десятилетий. Такие утилиты как DOSBox позволяют нам играть даже в самые ранние ПК-релизы. Фактор совместимости, при которой переход на новую версию системы с большой вероятностью не влечет за собой проблем, похоже, сыграл роль в текущем доминировании Windows. Да, в результате 32-битные версии Windows поддерживали запуск 16-битного программного обеспечения Windows и некоторый софт MS-DOS (а в 64-битных версиях, соответственно, работают 32-битные программы), но Microsoft получили огромную тяжелую платформу, в которой есть совместимость даже с ошибками.
А как дела у приставок?
Некоторые сайты проводили свои собственные опросы в преддверии выхода Xbox One и PS4 — тогда было отмечено, что многие игроки заявляли о желании обратной совместимости. Microsoft привлекла большое внимание к обратной совместимости с Xbox One. Функция была в целом хорошо реализована, но сейчас не особо привлекает геймеров.
В линейках Nintendo DS и Wii также есть много примеров обратной совместимости. Геймдевелоперы усилия компаний встретили более воодушевленно — больше не требуется изучать архитектуру с нуля, чтобы воспользоваться преимуществами нового консольного оборудования. Обратная совместимость позволяет относительно просто поддерживать релизы для всех устройств, созданных на основе общей архитектуры.
Обратная совместимость в языках
Каждый популярный язык программирования имеет ясную эволюцию, большую часть его жизни обозначенную версией: у вас есть Java 5, 6, 7 и т. , PHP 5. 1, 5. 2, 5. 3 и т. Каждая новая версия исправляет ошибки и добавляет функции, но если язык (или платформа) имеет фундаментальные изъяны, то разработчики либо избегают их (если могут), либо учатся жить с ними.
Разработчики языков получают много отзывов от программистов, использующих тот или иной язык программирования в своей работе. Кажется, что однажды выйдет версия языка, в которой все проблемы исчезнут. Но этого не происходит. Почему так? Один из вариантов — обратная совместимость.
У популярного PHP есть недостатки, и те, кто давно с ним работают, прекрасно знают, как можно обойти все ловушки и ямы языка. Теперь предположим, что в новой версии языка исправили все минусы, но потеряли обратную совместимость. В результате разработчик тратит время на обновление кода до актуальной версии PHP. То самое время, которое он мог бы потратить на выполнение запросов клиентов или внедрение новых функций.
Есть продукты, которые в принципе не могут поломать обратную совместимость, потому что это поставит на них крест. Например, Java: основная сфера применения этого языка — бизнес-приложения, по всему миру написано астрономическое количество строк кода, в том числе в огромных корпоративных кодовых базах. Код, написанный 20 лет назад, до сих пор работает. И если завтра выйдет версия Java, в которой разработчики накрутят фантастические фичи, но без обратной совместимости, то никто больше не станет инвестировать очень большие деньги в разработку серьезных — и дорогих — приложений. Так что Oracle придется либо всю жизнь тянуть за собой груз старых версий, либо открывать дорогу нововведениям, но при этом теряя большую долю клиентов. На третий вариант — поддерживать одновременно две ветки Java, с полноценным сопровождением и развитием — не согласится сама корпорация.
В свое время разработчики Python нарушили обратную совместимость, тем самым разозлив кучу пользователей. Большинство программистов не считало язык Python 2. x «ошибочным» или содержащим «фундаментальные изъяны». У них не было таких жалоб, какие появляются у разработчиков на PHP.
Сегодня сообщество языка разделено на два лагеря, при этом масса готовых библиотек под вторую версию не дает многим мигрировать на третью, хотя та и привнесла в язык ряд сильных улучшений. В результате закрепилось мнение, что «Python 3 — это худшее, что могло случиться с сообществом Python».
У проблемы есть и обратная сторона — Python 3 был выпущен в декабре 2008 года, но поддержка языка во фреймворке Django появилась только спустя пять лет.
Хотя нет 100% совместимости между C и C ++, но даже в C ++ есть обратная совместимость с очень ранними функциями языка (включая некоторые функции, унаследованные непосредственно от C).
Накопление технического долга
Иногда проблема возникает потому, что мы просто не в силах предсказать будущее. В 1981 году «Интернета» хватало всем и каждому — была описана первая широко используемая версия протокола IPv4, использующая 32-битные адреса, ограничивающие адресное пространство 4 294 967 296 возможными уникальными адресами.
4,3 миллиарда адресов IPv4 выглядели более чем достаточно для ARPANet. IPv6 появился в 1998 году (описан в RFC2460), но популярности протокол не снискал. Потребовалось более десяти лет, чтобы на проблему ограниченного количества адресов обратили внимание. И вот тогда стало понятно, что гигантская база разработанного и установленного программного и аппаратного обеспечения IPv4 требует сохранения обратной совместимости IPv6 с IPv4.
«Внезапно» выяснили, что IPv6 был разработан без полноценной совместимости с предыдущей версией — узел с поддержкой только IPv6 не может подключиться к узлу, работающему только по IPv4. Переход от IPv4 к IPv6 требовал «двухстековой» фазы, во время которой хост-компьютер взаимодействовал бы с обоими стеками протоколов одновременно, используя стек протокола IPv6 для взаимодействия с другими хост-компьютерами IPv6, а стек протокола IPv4 для взаимодействия с другими хост-компьютерами IPv4.
Некоторые коммутаторы, маршрутизаторы и устройства безопасности также оказались не совместимы с IPv6. Таким образом процесс перехода на IPv6 столкнулся со множеством проблем, решать которые предлагается разными способами. Ни одно из существующих решений нельзя назвать идеальным, но каждое из них найдет свое применение.
Философия обратной совместимости в ПО
Когда задумался, нужно ли в новой версии поддерживать совместимость (с)
В софте обратная совместимость, как правило, подразумевает сильное увеличение размеров файлов и всего приложения, но самое главное не это. Обратная совместимость обычно требует тащить за собой исторический багаж, что в интерпретируемых языках нередко приводит к заметным потерям в производительности.
При обратной совместимости раздувается кодовая база, усложняется архитектура приложения, затрудняется апгрейд приложений. Возникает желание отринуть старое и написать компактный, легкий код, использующий самые современные наработки.
Например, новая версия Skype больше не может устанавливать голосовые и видеосоединения с версиями под Windows XP. И, конечно, некоторые пользователи хотят проигнорировать новый релиз, предпочтя остаться на старом, но таком привычном.
Да, обратная совместимость сегодня считается одним из важнейших условий при разработке программных продуктов. Она позволяет пользователям наименее безболезненно — а значит, и комфортно — переходить на новые продукты. Производителям игровых приставок, например, важно обеспечивать обратную совместимость новых игр со старыми гаджетами, чтобы максимально расширять аудиторию потенциальных покупателей. Но при этом разработчикам труднее реализовывать новый уровень реалистичности графики и физики, что, по иронии, может снизить привлекательность системы для геймеров.
Мы сами периодически сталкиваемся со схожими вопросами. При написании облачного решения «горячего» хранения данных Hotbox можно было все полностью создать с «нуля» или использовать существующие наработки в Почте и Облаке Mail. Написание с нуля позволяет разом избавиться от всего накопившегося технического долга, однако это долго. Минус использования текущих наработок в том, что мы остаемся на языке Perl, для которого сложно находить новых разработчиков в связи с его не самой большой популярностью. Но плюсы этого решения существенно перевешивают: в этом языке у нас огромная экспертиза и наработанные годами инструменты. Так как было критично выпустить продукт в срок — мы решили остановиться на использовании Perl.
В результате получился продукт, который на данный момент нас полностью устраивает. В этом случае «обратная совместимость» вышла за пределы одного лишь сервиса — мы сделали совместимость не только с наработками в других проектах, но и с нашим собственным опытом. Осознание этого факта приводит к простой мысли: не всегда новый язык, новая версия программы или новый гаджет является универсальным решением поставленной перед вами задачи.