Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Понятие совместимости. Обратная и прямая совместимость программного обеспечения,программная регрессия, депрекация

Лекция



Привет, Вы узнаете о том , что такое ошибка совместимости, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое ошибка совместимости, обратная совместимость, прямая совместимость, совместимость, программная регрессия, депрекация, deprecation , настоятельно рекомендую прочитать все из категории Разработка программного обеспечения и информационных систем.

1 Понятие совместимости

совместимость — способность различных объектов — аппаратных или программных компонентов — взаимодействовать друг с другом. По отношению к компьютерам можно выделить аппаратную (техническую), программную и информационную совместимость :

  • Аппаратная (техническая) совместимость (англ. hardware compatibility) — способность одного устройства работать с узлами другого устройства. Включает в себя электромагнитную совместимость.
  • Информационная совместимость (англ. data compatibility) — способность двух или более систем адекватно воспринимать одинаково представленные данные.
  • Программная совместимость (англ. software compatibility) — способность выполнения одинаковых программ с получением одних и тех же результатов . В случае представления программ в виде двоичного кода, говорят о двоичной совместимости.

При наличии аппаратной, информационной и программной совместимости устройств без ограничений для конечных пользователей говорят о полной совместимости этих устройств .

Совместимостью программ (англ. program compatibility) называется способность программ к взаимодействию друг с другом, возможно, в рамках более крупного программного комплекса

Совместимость — это легкость сочетания одних элементов программного обеспечения с другими.

Совместимость важна, поскольку программные продукты не разрабатываются в вакууме: им необходимо взаимодействовать друг с другом.

При этом слишком часто возникают проблемы, поскольку суждения разных элементов об остальном мире противоречивы. Простейшим примером может служить широкое разнообразие несовместимых файловых форматов, из-за чего, например, одна программа не может непосредственно использовать результат работы другой программы.

Ключ к совместимости находится в однородности построения и в стандартных соглашениях на коммуникации между программными системами. Эти подходы включают использование:

  • стандартных форматов файлов;
  • стандартных структур данных;
  • стандартных пользовательских интерфейсов;
  • стандартных протоколов взаимодействия.

При эволюции программных продуктов и технологий важной проблемой становится совместимость разных версий одного и того же продукта. Именно поэтому методология разработки программных продуктов всегда сопровождается обсуждениями вопросов версификации и управления зависимостями.

2 Решение проблемы совместимости

2.1 Режим совместимости

Режим совместимости является программным механизмом , в котором программное обеспечение , либо эмулирует старую версию программного обеспечения, или имитируют другую операционную систему для того , чтобы обеспечить старое или несовместимое программное обеспечение или файлы для совместимости с новым компьютером аппаратным или программным обеспечением. Примерами программного обеспечения, использующего этот режим, являются операционные системы и Internet Explorer .

Операционные системы

Режим совместимости в операционной системе является программным механизмом , в котором компьютер операционной система эмулирует старый процессор , операционную систему и / или аппаратную платформу для того , чтобы позволить старше программному обеспечение для совместимости с новым компьютером аппаратным или программным обеспечением.

Это отличается от полноценного эмулятора тем, что эмулятор обычно создает виртуальную аппаратную архитектуру в хост-системе, а не просто переводит вызовы функций старой системы в вызовы, которые хост-система может понять.

Примеры включают классический режим в Mac OS X и режим совместимости Windows 2000 / Windows XP / Windows Vista / Windows 7 , которые позволяют запускать приложения, разработанные для более старых версий операционной системы. Другие примеры включают Wine для запуска программ Windows в Linux / OS X и Mono для запуска программ .NET в различных Unix-подобных системах.

Internet Explorer

«Представление совместимости» - это функция режима совместимости веб-браузера Internet Explorer версии 8 и выше. Когда этот режим активен, в режиме совместимости IE отображает веб-страницу в режиме «Причуды», как если бы она просматривалась в IE7. Когда представление совместимости не активировано, IE, как говорят, работает в основном режиме. В IE11 пользователь может включить режим совместимости для веб-сайта, щелкнув значок Gears и щелкнув Параметры представления совместимости.

IE8 +

Microsoft продвигал Internet Explorer 8 как более строгую приверженность описанным веб-стандартам W3C, чем Internet Explorer 7 . В результате, как и в каждой предыдущей версии IE, некоторый процент веб-страниц, закодированных в соответствии с поведением более старых версий, будет нарушен в IE8. Это было бы повторением ситуации с IE7, который, исправляя ошибки в IE6, ломал страницы, которые использовали специфичные для IE6 хаки, чтобы обойти его несоответствие. Это было особенно проблемой для автономных документов HTML, которые могут не обновляться (например, храниться на носителе только для чтения, таком как CD-ROM или DVD-ROM).

Чтобы избежать этой ситуации, в IE8 была реализована форма ориентации на версии, при которой страница могла быть создана для определенной версии браузера с использованием X-UA-Compatibleобъявления в качестве метаэлемента или в заголовках HTTP .

Чтобы поддерживать обратную совместимость, сайты могут использовать IE7-подобную обработку контента, вставляя специально созданный метаэлемент в веб-страницу, которая запускает режим совместимости в браузере, используя:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Более новая версия браузера, чем была закодирована страница, будет эмулировать поведение более старой версии, так что предположения, сделанные на странице относительно поведения браузера, верны.

Microsoft предложила, чтобы страница с типом документа, который запускает стандартный режим (или почти стандартный режим) в IE7, по умолчанию запускала поведение, подобное IE7, называемое «стандартным режимом» (теперь называемое «строгим режимом») в IE8 и будущих версиях IE. Новые функции IE8 позволяют запускать то, что Microsoft назвала «режим стандартов IE8» (теперь называется «режим стандартов»). Типы Doct, которые запускают режим причуд в IE7, продолжат делать это в IE8.

Питер Брайт из Ars Technica утверждал, что идея использования мета-тега для выбора конкретного режима рендеринга в корне не подходит для основанной на стандартах разработки, но позиционирует эту проблему как проблему идеализма и прагматизма в веб-разработке, отметив, что не вся сеть и что «требовать, чтобы веб-разработчики обновляли сайты, чтобы они продолжали работать должным образом в любой будущей версии браузера, вероятно, слишком много».

Результатом IE 8 Beta 1 стало то, что он может отображать три режима: «Причуды», «Строгий» и «Стандартный». Когда есть старый DOCTYPE или когда нет DOCTYPE, IE отображает его как IE5 (режим причуд). Если на веб-странице включен специальный метаэлемент или соответствующий ему заголовок HTTP , IE8 отобразит эту страницу так же, как и IE7 (строгий режим). В противном случае IE8 отображает страницы с собственным движком (стандартный режим). Пользователи могут переключаться между тремя режимами с помощью нескольких кликов. Выпуск Internet Explorer 8 Beta 1 показал, что многие веб-сайты не работают в этом новом режиме стандартов.

Microsoft поддерживает список веб-сайтов, о которых сообщалось о проблемах в стандартном режиме IE8, который называется списком совместимости. Когда пользователь включает этот список, IE8 будет отображать сайты в списке, используя режим просмотра совместимости. Список периодически обновляется, чтобы добавить новые сообщаемые проблемные веб-сайты, а также удалить веб-сайты, владельцы которых запросили удаление. Группа Internet Explorer также проверяет веб-сайты в списке на наличие проблем совместимости и удаляет те, которые не были обнаружены.

2.2 обратная совместимость

Обра́тная совмести́мость — наличие в новой версии компьютерной программы или компьютерного оборудования интерфейса, присутствующего в старой версии, в результате чего другие программы (или человек) могут продолжать работать с новой версией без значительной переделки (или переучивания). Полная обратная совместимость означает, что при замене старой версии компонента на новую функционирование всей системы в целом не нарушится.

Обратная совместимость представляет собой один из важнейших приоритетов в компьютерной индустрии. Обеспечение обратной совместимости позволяет пользователям при переходе к новой версии частично или полностью сохранить ценность тех наработок, которые они приобрели при адаптации к работе с предыдущими версиями программного или аппаратного обеспечения.

В то же время обеспечение обратной совместимости обладает и недостатками, сдерживая развитие технологий. Так, в современных компьютерах очень много «унаследовано» от их предыдущих поколений, от чего нельзя отказаться из-за совместимости. Это позволяет сохранить предыдущие инвестиции производителей и потребителей, но одновременно не позволяет реализовать более прогрессивные функции и повышает вероятность возникновения ошибок.

Обратная совместимость (иногда обратная совместимость ) - это свойство системы, продукта или технологии, которая обеспечивает возможность взаимодействия со старой устаревшей системой или с входными данными, разработанными для такой системы, особенно в области телекоммуникаций и вычислительной техники . Обратная совместимость иногда также называется обратной совместимостью .

Модификация системы способом, который не допускает обратную совместимость, иногда называется « нарушением » обратной совместимости.

Дополнительной концепцией является прямая совместимость . Проект с прямой совместимостью обычно имеет план совместимости с будущими стандартами и продуктами.

В программировании на жаргоне понятие иногда называют истерическими причинами или истерическими изюминками , гомофонами по «историческим причинам»

Обратная совместимость в аппаратном обеспечении

Обратная совместимость применительно к аппаратному обеспечению означает способность более новых типов оборудования эмулировать работу предшествующих. Так, например, некоторые микропроцессоры Intel до сих пор поддерживают весь набор инструкций, использовавшихся еще в самых первых представителях этого ряда.

Простым примером обратной и прямой совместимости является внедрение FM-радио в стерео . Первоначально FM-радио было монофоническим , только один аудиоканал представлен одним сигналом, С введением двухканального стерео FM-радио у многих слушателей были только монофонические FM-приемники. Прямая совместимость для моноприемников со стереосигналами была достигнута путем отправки суммы левого и правого аудиоканалов в одном сигнале и разности в другом сигнале. Это позволяет монофоническим FM-приемникам принимать и декодировать суммарный сигнал, игнорируя разностный сигнал, который необходим только для разделения аудиоканалов. Стереофонические FM-приемники могут принимать моносигнал и декодировать его без необходимости второго сигнала, и они могут разделять суммарный сигнал на левый и правый каналы, если принимаются как суммарные, так и разностные сигналы. Без требования обратной совместимости можно было бы выбрать более простой метод.

Полная обратная совместимость особенно важна в архитектурах компьютерных команд , одной из самых успешных из которых является семейство микропроцессоров x86 . Их полные отсталые пролеты обратной совместимости с 16-битом Intel 8086 / 8088 процессоров , введенные в 1978 г. (The 8086/8088, в свою очередь, были разработаны с легкой машинной переводимостью программ , написанными для его предшественника в виде, хотя они не были инструкциями совместим с 8-разрядным процессором Intel 8080 с 1974 года. Однако Zilog Z80 был полностью обратно совместим с Intel 8080.) Полностью обратно совместимые процессоры могут обрабатывать те жебинарные исполняемые программные инструкции как их предшественники, позволяющие использовать более новый процессор без необходимости приобретать новые приложения или операционные системы . Точно так же успех стандарта цифровой связи Wi-Fi объясняется его широкой прямой и обратной совместимостью; он стал более популярным, чем другие стандарты, которые не были обратно совместимы.

Обратная совместимость в программном обеспечении

Обратная совместимость применительно к программному обеспечению означает способность более поздних версий программы работать с файлами, созданными более ранней версией этой же программы или программы, реализующей те же алгоритмы, что и более ранняя версия. Так, например, в Microsoft Office присутствует поддержка целого ряда форматов, которые на данный момент почти не используются.

Обратная совместимость компилятора может относиться к способности компилятора более новой версии языка принимать программы или данные, которые работали в предыдущей версии

Считается, что формат данных обратно совместим со своим предшественником, если каждое сообщение или файл, действительный в старом формате, все еще действителен, сохраняя свое значение в новом формате.

Преимущества и недостатки обратной совместимости

Главным недостатком обратной совместимости является усложнение аппаратного или программного обеспечения. В случае с программным обеспечением это чаще всего приводит к увеличению размеров программного продукта, а в случае с аппаратным обеспечением это приводит к усложнению архитектуры, то есть строения, соответствующего элемента аппаратного обеспечения. В конечном итоге все это приводит к увеличению стоимости производства и поддержки (часто после смены базовой технологии невозможно найти специалистов поддержки, владеющих обеими технологиями в достаточной степени).

Между тем отсутствие обратной совместимости вызывает ряд неудобств. Об этом говорит сайт https://intellect.icu . Так, например, в операционных системах Windows 2000/XP эмулятор MS-DOS не обладает полной обратной совместимостью с реальной ОС MS-DOS, в отличие от Windows 9x (в состав которой входит не эмулятор, а «настоящая» MS-DOS, запускаемая до Windows и используемая для работы DOS-приложений). Вследствие этого во многих случаях предприятия вынуждены пользоваться более ранними версиями этой операционной системы, либо устанавливать полноценную MS-DOS на виртуальные компьютеры, поскольку используемое программное обеспечение требует полноценной ОС MS-DOS, а не урезанной в возможностях.

В ядре Linux применен эффективный механизм, удовлетворяющий обоим противоречивым требованиям. Поддержка (драйверы) устаревших устройств постепенно выносится из основного кода в динамически загружаемые модули. Это, с одной стороны, позволяет иметь самое современное ядро, при этом небольшое, не обремененное «атавизмами». С другой стороны, поддержка, к примеру, IDE- или даже MFM-диска возможна благодаря подгружаемым модулям. Причем это происходит без виртуализации, что означает, что все ранее написанное ПО остается полностью функциональным.

Преимущества использованя обратной совместимости

У компании есть несколько стимулов для реализации обратной совместимости. Обратная совместимость может использоваться для сохранения более старого программного обеспечения, которое в противном случае было бы потеряно, если производитель решил прекратить поддержку более старого оборудования. Классические видеоигры являются распространенным примером, используемым при обсуждении ценности поддержки старого программного обеспечения. Культурное влияние видеоигр является большой частью их дальнейшего успеха, и некоторые считают, что игнорирование обратной совместимости может привести к исчезновению этих названий. Обратная совместимость также служит дополнительным преимуществом для нового оборудования, так как существующая база игроков может более доступно модернизироваться.для последующих поколений консоли. Это также помогает восполнить недостаток контента при раннем запуске новых систем, так как пользователи могут использовать большую библиотеку игр предыдущей консоли, в то время как разработчики постепенно переходят на новое оборудование.

Одним из примеров этого является Sony PlayStation 2 (PS2), которая была обратно совместима с играми для своей предшественницы PlayStation (PS1). Хотя выбор игр для PS2, доступных при запуске, был небольшим, продажи консоли, тем не менее, были высокими в 2000-2001 годах благодаря большой библиотеке игр для предыдущей версии PS1. Это выиграло время для PS2, чтобы вырастить большую установленную базу и разработчиков, чтобы выпустить больше качественных игр для PS2 в решающий праздничный сезон 2001 года.

Кроме того, несмотря на то, что Microsoft не включала его в свой запуск, она постепенно включала обратную совместимость для некоторых игр на Xbox One в течение нескольких лет в жизненный цикл своего продукта. [10] Игроки потратили более миллиарда часов на игры с обратной совместимостью, и ходят слухи, что консоль следующего поколения, такая как XBOX Series X, также будет поддерживать эту функцию. Большая часть успеха и реализации этой функции заключается в том, что аппаратное обеспечение в консолях нового поколения является одновременно мощным и достаточно похожим на устаревшие системы, так что старые версии могут быть разбиты и перенастроены для работы на Xbox One. [11] Программа обратной совместимости поддерживает не только Xbox 360 предыдущего поколения, но также и версии из оригинальной системы Xbox. [11]Некоторые названия даже получают небольшие визуальные улучшения и дополнительные уровни бесплатно для пользователя. Эта программа зарекомендовала себя невероятно популярной среди игроков Xbox и идет вразрез с недавней тенденцией ремастеров классических игр, созданных студией, создавая то, что некоторые считают важным изменением в стратегиях производителя консолей.

Недостатки использованя обратной совместимости

Буквальные затраты на поддержку старого программного обеспечения считаются большим недостатком использования обратной совместимости. Сопутствующие затраты на обратную совместимость представляют собой более высокую спецификацию, если для поддержки устаревших систем требуется оборудование; повышенная сложность продукта, что может привести к увеличению времени выхода на рынок , технологическим помехам и замедлению инноваций; и увеличенные ожидания от пользователей с точки зрения совместимости. Из-за этого несколько игровых консолей решили отказаться от обратной совместимости ближе к концу поколения консолей, чтобы снизить затраты и ненадолго оживить продажи до появления более нового оборудования. [12]

Примечательным примером является Sony PlayStation 3 , [13] поскольку первая итерация PS3 была дорогостоящей в производстве из-за включения Emotion Engine из предыдущей PS2 для запуска игр PS2, [14], поскольку архитектура PS3 была совершенно другой от PS2. Последующие пересмотры аппаратного обеспечения PS3 устранили механизм Emotion Engine, поскольку он позволил сэкономить на производственных затратах, исключив возможность запуска игр PS2 [14], так как Sony обнаружила, что обратная совместимость не была основным преимуществом для PS3 в отличие от PS2. [14] Главный конкурент PS3, Microsoft Xbox 360, использовал другой подход к обратной совместимости, используя программную эмуляцию для запуска игр с первого Xbox , [15] вместо включения устаревшего оборудования от оригинального Xbox, который сильно отличался от Xbox 360, однако Microsoft прекратила выпуск профилей эмуляции после того, как 2007.

Однако, учитывая текущее снижение продаж физических игр и рост числа цифровых магазинов и загрузок, некоторые полагают, что обратная совместимость скоро будет столь же устаревшей, как и устаревшие консоли, которые она поддерживает. [12]Многие игровые студии пересматривают и выпускают свои самые популярные игры, улучшая качество графики и добавляя новый контент. Эти ремастеры добились успеха, обратившись как к ностальгическим игрокам, которые помнят, как наслаждались оригинальными версиями, когда они были моложе, так и к новичкам, у которых, возможно, не было оригинальной системы, на которой они были выпущены. Для большинства потребителей цифровые ремастеры более привлекательны, чем держаться за громоздкие картриджи и устаревшее оборудование. Для производителей консолей цифровые переиздания классических игр являются большим преимуществом. Это не только устраняет финансовые недостатки поддержки устаревшего оборудования, но также переносит все расходы на обновление программного обеспечения для разработчиков. Производитель получает новое дополнение к своей системе с сильным распознаванием имени,

2.3 Прямая совместимость

Прямая совместимость или восходящая совместимость - это конструктивная характеристика, которая позволяет системе принимать ввод, предназначенный для более поздней версии самой себя. Эта концепция может применяться ко всем системам, электрическим интерфейсам , телекоммуникационным сигналам , протоколам передачи данных , форматам файлов и языкам программирования . Стандарт поддерживает прямой совместимости , если продукт , который соответствует более ранних версий могут " изящно«Процесс ввода, предназначенный для более поздних версий стандарта, игнорирует новые части, которые он не понимает.

Цель технологии прямой совместимости состоит в том, чтобы старые устройства распознавали, когда были сгенерированы данные для новых устройств.

Прямая совместимость для более старой системы обычно означает обратную совместимость для новой системы, то есть способность обрабатывать данные из старой системы; Новая система обычно полностью совместима со старой, благодаря возможности обрабатывать и генерировать данные в формате более старой системы.

Прямая совместимость - это не то же самое, что расширяемость . Вперед совместимый дизайн может обрабатывать, по крайней мере, некоторые данные из будущей версии самого себя. Расширяемый дизайн облегчает обновление. Пример обеих дизайнерских идей можно найти в веб-браузерах. В любой момент времени текущий браузер является совместимым с прямой совместимостью, если он корректно принимает более новую версию HTML. Принимая во внимание, насколько легко можно обновить код браузера для обработки более нового HTML, он определяет, насколько он расширяемый.

Поступательная совместимость


Основы концепции:

Стараемся предвидеть будущие потребности кода, который мы пишем сейчас, и написать его достаточно гибко, для того чтобы не беспокоиться об обратной совместимости потом.


Вот это благородная цель… Нецелесообразно?
Ну, не совсем. Нам не нужно, чтобы код работал идеально — нам нужно, чтобы он выполнял свою задачу. Лучше мы ошибемся и сделаем неправильно сначала, но нам будет проще в будущем, чем изначально вообразим, что этот код решит все необходимые задачи и удовлетворит потребности в будущем.

Примеры прямой совместимости

Телекоммуникационные стандарты

Внедрение FM-стереопередачи или цветного телевидения позволило обеспечить прямую совместимость, поскольку однотонные FM-радиоприемники и черно-белые телевизоры все еще могли принимать сигнал от нового передатчика. Это также позволило обеспечить обратную совместимость, поскольку новые приемники могут принимать монофонические или черно-белые сигналы, генерируемые старыми передатчиками.

Видео игры

  • Game Boy может играть некоторые игры , выпущенные для Game Boy Color . В этих играх используется тот же дизайн картриджей, что и в играх для оригинального Game Boy, хотя используемый пластик, как правило, черный, а не серый, и имеет логотип GBC на этикетке и упаковке; Nintendo официально называет такие названия «Двойной режим». [
  • Leapster способен играть Leapster L-Max игры.
  • Leapster L-Max может играть в игры Leapster2 .
  • Оригинальная PlayStation совместима с контроллером DualShock 2 . Аналогично PlayStation 3 можно играть с контроллером DualShock 4 .
  • Neo Geo Карман был в состоянии играть в большинстве игр от Neo Geo карманного цвета .
  • WonderSwan умеет играть в некоторые игры WonderSwan цвета.

HTML

HTML разработан так, чтобы обрабатывать все теги одинаково (как инертные, неотстилированные встроенные элементы ), если только их внешний вид или поведение не переопределены; либо настройками браузера по умолчанию, либо скриптами или стилями, включенными в страницу. Это делает большинство новых функций изящно ухудшающимися в старых браузерах. Одним из случаев, когда это не сработало должным образом, были блоки скриптов и стилей, содержимое которых должно интерпретироваться браузером, а не быть частью страницы. Такие случаи решались путем помещения контента в блоки комментариев.

Поскольку не требуется обязательного обновления компьютеров или веб-браузеров, многие веб-разработчики используют подход постепенной деградации или постепенного улучшения (часто с использованием ненавязчивого JavaScript ), пытаясь создать вновь созданные веб-сайты, которые будут использоваться людьми, которые отключили Javascript или у которых есть старые компьютеры или старые веб-браузеры или при медленном соединении, но все еще использующие преимущества более быстрого оборудования и лучшей поддержки JavaScript в более современных веб-браузерах, когда они доступны.

Оптические носители

Каждый из трех наиболее распространенных 12-сантиметровых форматов оптических носителей ( CD , DVD и Blu-ray ) был впервые выпущен только для чтения за годы до того, как стали доступны записываемые формы. Внутри каждого формата существует прямая и обратная совместимость, так как большинство старых дисков и проигрывателей, доступных только для чтения, могут читать (но не записывать) записываемые носители в одном и том же формате, в то время как диски чтения / записи могут читать (но не записывать) старое чтение. только СМИ. Нет прямой совместимости между форматами; проигрыватель компакт-дисков, например, не может читать DVD (более новый формат), даже аудиодорожки. Может быть обеспечена обратная совместимость для лучшей конкурентоспособности (например, проигрыватель DVD, воспроизводящий аудио-CD), но это не присуще стандартам.

NUC (не совместимый сверху)

Некоторые продукты не предназначены для прямой совместимости, которая упоминается как NUC (не совместима вверх). В некоторых случаях это может быть преднамеренным для разработчиков как форма блокировки поставщика или регрессии программного обеспечения .

Например, производитель кабины рассматривает возможность изменения их конструкции. Один дизайнер продвигает изменение площади от 4 футов до 1,2 метра. Менеджер по продажам сразу же называет «NUC», и проблема понятна: если площадь следа меняется, и существующие клиенты рассматривают возможность покупки большего количества у производителя, им придется разместить устройство другого размера в офисе, рассчитанном на 4-футовую квадратную ячейку.

Запланированное устаревание - это тип восходящей совместимости, но вместо того, чтобы принимать политику обратной совместимости, компании применяют коммерческую политику обратной несовместимости, поэтому новым приложениям требуются новые устройства.

Программный код

Когда я разрабатывал API для пароля, использовался именно этот подход. Вот почему там есть параметр $options, вместо $cost и $salt. Я постарался предусмотреть будущие изменения и адаптировал под это API. Хорошо ли я это сделал? На этот вопрос мы сможем ответить в будущем. Но я думаю, что получилось намного лучше, чем если бы я следовал идеологии обратной совместимости(в соответствии с которой я мог делать все что хочу и как считаю нужным).

function password_hash($password, $algo, array $options = array())

3 Совместимость ошибок

Считается, что компьютерное оборудование или программное обеспечение совместимо с ошибками, если оно точно копирует даже нежелательную функцию предыдущей версии. Фраза находится в файле Jargon .

Одним из аспектов обеспечения обратной совместимости со старой системой является то, что клиентские программы таких систем часто зависят не только от своих указанных интерфейсов, но также от ошибок и непреднамеренного поведения. Это также должно быть сохранено новой заменой. Помимо значительно более высокой сложности, которую необходимо поддерживать в ходе естественного развития кода или интерфейса, она может иногда вызывать проблемы с производительностью или безопасностью, а несоответствия в поведении интерфейсов могут иногда приводить к новым ошибкам в программном обеспечении, использующем его, создавая трудно разрешить разнонаправленные перекрестные зависимости между различными частями кода.

Примеры можно найти в MS-DOS / PC DOS ; при работе на процессорах 286 или более поздней версии резидентный исполняемый загрузчик содержит код, специально разработанный для обнаружения и исправления некоторых распространенных приложений и загрузчиков-заглушек (таких как программы, связанные с более старыми версиями Microsoft EXEPACK или расширителями DOS Rational Systems 386) путем исправления загруженной программы изображение перед его выполнением, или где DOS исправляет Windows ( WINA20.386 ) В ходе разработки DR-DOS также пришлось модифицировать, чтобы не только эмулировать многие недокументированные особенности MS-DOS и PC DOS, но также и фактические ошибки в ядре и некоторых драйверах, чтобы некоторые другие драйверы и приложения работали на DR-DOS, когда они тестировались только на определенных версиях MS-DOS.

Windows , которая традиционно эмулировала многие старые системные ошибки, позволяя запускать старые низкоуровневые программы, является еще одним примером. В результате Wine , который позволяет запускать многие приложения Windows на других платформах, также должен поддерживать совместимость ошибок с Windows.

В процессе разработки ее IBM PC совместимых , Compaq инженеры обнаружили , что Microsoft Flight Simulator не будет работать из - за того, что subLOGIC «s Брюс Артвик описывается как«ошибка в одном из Intel »чипов s», заставляя их , чтобы сделать их компьютер ошибку , совместимой с IBM PC. Другой пример аппаратного обеспечения можно найти в дизайне адресной строки IBM Personal Computer / AT A20 для эмуляции поведения в старых процессорах.

В Microsoft Excel всегда была преднамеренная ошибка високосного года , которая ошибочно рассматривает 29 февраля 1900 г. как фактическую дату для обеспечения обратной совместимости с Lotus 1-2-3

4. программная регрессия

Регрессия программного обеспечения является программной ошибкой , которая делает остановки работы функции по назначению после определенного события (например, обновление системы, система исправления или изменений в летнее время ). регрессии производительности программного обеспечения является ситуация , когда программа по- прежнему работает правильно, но выполняет более медленно или использует больше памяти или ресурсов , чем раньше.

Регрессии часто вызваны включенными исправлениями ошибок, включенными в патчи программного обеспечения . Одним из подходов к избежанию такого рода проблем является регрессионное тестирование . Правильно разработанный план тестирования направлен на предотвращение этой возможности перед выпуском любого программного обеспечения. ] Автоматизированное тестирование и хорошо написанные тестовые случаи могут снизить вероятность регрессии.

Программная регрессия может быть одного из трех типов:

  • Локальное - изменение вносит новую ошибку в измененный модуль или компонент.
  • Удаленный - изменение в одной части программного обеспечения нарушает функциональность другого модуля или компонента.
  • Unmasked - изменение снимает маску с уже существующей ошибки, которая не имела эффекта до изменения.

5 Примеры проблем и их решений совместимости

5.1 Изменения стандартов коннекторов и протоколов обмена данными

Один из самых ярких примеров, когда об обратной совместимости решили забыть, это появление разъема 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. Можно смириться с отсутствием обратной совместимости в гаджетах, и даже отметить для себя плюсы (более высокую скорость передачи данных и иные параметры электропитания), но в сфере ПО болезненнее воспринимается несовместимость новых версий со старыми. Особенно это касается корпоративных продуктов, стоимость которых и влияние на бизнес-процессы слишком велики.

5.2 Совместимость при разработке игр

В экосистеме ПК игры обратно совместимы в течение десятилетий. Такие утилиты как DOSBox позволяют нам играть даже в самые ранние ПК-релизы. Фактор совместимости, при которой переход на новую версию системы с большой вероятностью не влечет за собой проблем, похоже, сыграл роль в текущем доминировании Windows. Да, в результате 32-битные версии Windows поддерживали запуск 16-битного программного обеспечения Windows и некоторый софт MS-DOS (а в 64-битных версиях, соответственно, работают 32-битные программы), но Microsoft получили огромную тяжелую платформу, в которой есть совместимость даже с ошибками.

Понятие совместимости. Обратная и прямая совместимость программного обеспечения,программная регрессия, депрекация

А как дела у приставок?

Понятие совместимости. Обратная и прямая совместимость программного обеспечения,программная регрессия, депрекация

Отчет Ars Technica показал, как пользователи Xbox One и Xbox 360 используют свои устройства. Интересно, что данные из отчета по приставке Microsoft совпадают с мнением корпорации Sony, которая не рассматривает обратную совместимость в PlayStation 4 как нечто важное. По мнению руководителя Sony Interactive Entertainment Europe Джима Райана, об этой функции больше говорят, чем реально пользуются. Хотя Sony действительно предоставила возможность скачать игры для PS1 и PS2 на PS4.

Некоторые сайты проводили свои собственные опросы в преддверии выхода Xbox One и PS4 — тогда было отмечено, что многие игроки заявляли о желании обратной совместимости. Microsoft привлекла большое внимание к обратной совместимости с Xbox One. Функция была в целом хорошо реализована, но сейчас не особо привлекает геймеров.

В линейках Nintendo DS и Wii также есть много примеров обратной совместимости.
Геймдевелоперы усилия компаний встретили более воодушевленно — больше не требуется изучать архитектуру с нуля, чтобы воспользоваться преимуществами нового консольного оборудования. Обратная совместимость позволяет относительно просто поддерживать релизы для всех устройств, созданных на основе общей архитектуры.

5.3 Обратная совместимость в языках программирования

Каждый популярный язык программирования имеет ясную эволюцию, большую часть его жизни обозначенную версией: у вас есть Java 5, 8 и т. д., PHP 5.1, 5.2, 7.3 и т. д. Каждая новая версия исправляет ошибки и добавляет функции, но если язык (или платформа) имеет фундаментальные изъяны, то разработчики либо избегают их (если могут), либо учатся жить с ними.

Разработчики языков получают много отзывов от программистов, использующих тот или иной язык программирования в своей работе. Кажется, что однажды выйдет версия языка, в которой все проблемы исчезнут. Но этого не происходит. Почему так? Один из вариантов — обратная совместимость.

У популярного PHP есть недостатки, и те, кто давно с ним работают, прекрасно знают, как можно обойти все ловушки и ямы языка. Теперь предположим, что в новой версии языка исправили все минусы, но потеряли обратную совместимость. В результате разработчик тратит время на обновление кода до актуальной версии PHP. То самое время, которое он мог бы потратить на выполнение запросов клиентов или внедрение новых функций.

Учитывая эти проблемы, понятен мотив тех, кто не хочет переходить на новую версию PHP, даже если она лучше, понятнее и безопаснее и т. д. Вы скажете, что это гипотетический пример. Возможно… Но в мире еще есть программисты, которые до сих пор работают на COBOL! Язык появился в 1958 году. К 1997 году активно использовалось около 240 миллиардов строк кода на COBOL, кодом на этом языке обрабатывалось около 90% финансовых транзакций в мире и 75% коммерческих транзакций. Самое интересное — это потрясающая совместимость языка: тот COBOL, который использовался в 60-х, может работать и на современном оборудовании.

Есть продукты, которые в принципе не могут поломать обратную совместимость, потому что это поставит на них крест. Например, Java: основная сфера применения этого языка — бизнес-приложения, по всему миру написано астрономическое количество строк кода, в том числе в огромных корпоративных кодовых базах. Код, написанный 20 лет назад, до сих пор работает. И если завтра выйдет версия Java, в которой разработчики накрутят фантастические фичи, но без обратной совместимости, то никто больше не станет инвестировать очень большие деньги в разработку серьезных — и дорогих — приложений. Так что Oracle придется либо всю жизнь тянуть за собой груз старых версий, либо открывать дорогу нововведениям, но при этом теряя большую долю клиентов. На третий вариант — поддерживать одновременно две ветки Java, с полноценным сопровождением и развитием — не согласится сама корпорация.

В свое время разработчики Python нарушили обратную совместимость, тем самым разозлив кучу пользователей. Большинство программистов не считало язык Python 2.x «ошибочным» или содержащим «фундаментальные изъяны». У них не было таких жалоб, какие появляются у разработчиков на PHP.

Сегодня сообщество языка разделено на два лагеря, при этом масса готовых библиотек под вторую версию не дает многим мигрировать на третью, хотя та и привнесла в язык ряд сильных улучшений. В результате закрепилось мнение, что «Python 3 — это худшее, что могло случиться с сообществом Python».

У проблемы есть и обратная сторона — Python 3 был выпущен в декабре 2008 года, но поддержка языка во фреймворке Django появилась только спустя пять лет.

Хотя нет 100% совместимости между C и C ++, но даже в C ++ есть обратная совместимость с очень ранними функциями языка (включая некоторые функции, унаследованные непосредственно от C).

Часто для достижения обратной совместимости используют деприкацию и единоразовые конверторые данных и структур данных с целью их актуализации.

депрекация (англ. deprecation, букв. «неодобрение», объявление возможности нерекомендованной или устаревшей) — в программировании некоторое указание нежелательности применения какой-либо части программы, процедуры или языка программирования. Чаще всего используется какой-либо стандартный для данного языка программирования или системы документации кода способ указания, например служебная метка (тег), специальная конструкция языка и т. п. В среде разработчиков компьютерных программ и документации термин deprecation может обозначать очередную стадию в жизненном цикле программного обеспечения, замену устаревших частей на новые.

Часть программы или метод, обозначенный как deprecated, являются сомнительными, и использование их в дальнейшем необоснованно. Эта часть работает в текущей версии ПО, однако может вызывать сообщение об ошибке в качестве предупреждения. Это служит для предупреждения пользователя о том, что данная часть кода может быть удалена в следующих релизах программы.

Основной причиной объявления части кода (функций, методов, классов) как deprecated является желание улучшать код, и, при этом, со временем избавляться от устаревших подходов. Оставление старого кода наряду с новым приводило бы к неоправданному разрастанию программного продукта, что усложняло бы его поддержку, изучение и использование. В то же время, просто удалять устаревшие части кода нежелательно, так как это нарушит обратную совместимость для пользователей данного ПО.

При пометке кода deprecated обычно указывается рекомендуемая замена, например новый компонент с другим программным интерфейсом, но, по сути, с той же функциональностью. Но иногда часть кода объявляется deprecated безо всякой замены. Обычно это бывает при обнаружении багов, которые принципиально неустранимы при сохранении использованного подхода.

Когда части программы зависят от части, помеченной как deprecated, программисту следует переписать код, чтобы избавиться от использования части, планируемой к удалению. Также рекомендуется переписать код существующих программ, особенно если они и так зависят от версии, в которой появилась функциональность, рекомендуемая в качестве замены.

5.4 Накопление технического долга

Иногда проблема возникает потому, что мы просто не в силах предсказать будущее. В 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 столкнулся со множеством проблем, решать которые предлагается разными способами. Ни одно из существующих решений нельзя назвать идеальным, но каждое из них найдет свое применение.

5.5 Философия обратной совместимости в ПО


Когда задумался, нужно ли в новой версии поддерживать совместимость (с)

В софте обратная совместимость, как правило, подразумевает сильное увеличение размеров файлов и всего приложения, но самое главное не это. Обратная совместимость обычно требует тащить за собой исторический багаж, что в интерпретируемых языках нередко приводит к заметным потерям в производительности.

При обратной совместимости раздувается кодовая база, усложняется архитектура приложения, затрудняется апгрейд приложений. Возникает желание отринуть старое и написать компактный, легкий код, использующий самые современные наработки.

Например, новая версия Skype больше не может устанавливать голосовые и видеосоединения с версиями под Windows XP. И, конечно, некоторые пользователи хотят проигнорировать новый релиз, предпочтя остаться на старом, но таком привычном.

Да, обратная совместимость сегодня считается одним из важнейших условий при разработке программных продуктов. Она позволяет пользователям наименее безболезненно — а значит, и комфортно — переходить на новые продукты. Производителям игровых приставок, например, важно обеспечивать обратную совместимость новых игр со старыми гаджетами, чтобы максимально расширять аудиторию потенциальных покупателей. Но при этом разработчикам труднее реализовывать новый уровень реалистичности графики и физики, что, по иронии, может снизить привлекательность системы для геймеров.

Мы сами периодически сталкиваемся со схожими вопросами. При написании облачного решения «горячего» хранения данных Hotbox можно было все полностью создать с «нуля» или использовать существующие наработки в Почте и Облаке Mail.Ru. Написание с нуля позволяет разом избавиться от всего накопившегося технического долга, однако это долго. Минус использования текущих наработок в том, что мы остаемся на языке Perl, для которого сложно находить новых разработчиков в связи с его не самой большой популярностью. Но плюсы этого решения существенно перевешивают: в этом языке у нас огромная экспертиза и наработанные годами инструменты. Так как было критично выпустить продукт в срок — мы решили остановиться на использовании Perl.

В результате получился продукт, который на данный момент нас полностью устраивает. В этом случае «обратная совместимость» вышла за пределы одного лишь сервиса — мы сделали совместимость не только с наработками в других проектах, но и с нашим собственным опытом. Осознание этого факта приводит к простой мысли: не всегда новый язык, новая версия программы или новый гаджет является универсальным решением поставленной перед вами задачи.

Вау!! 😲 Ты еще не читал? Это зря!

Исследование, описанное в статье про ошибка совместимости, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое ошибка совместимости, обратная совместимость, прямая совместимость, совместимость, программная регрессия, депрекация, deprecation и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Разработка программного обеспечения и информационных систем

создано: 2020-06-13
обновлено: 2021-07-27
132265



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Разработка программного обеспечения и информационных систем

Термины: Разработка программного обеспечения и информационных систем