Jump to content

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

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

Примеры [ править ]

Тупики [ править ]

Рассмотрим последовательные программы вида:

Request resource A
Request resource B
Perform action using A and B
Release resource B
Release resource A

Конкретная программа может использовать принтер (ресурс A) и файл (ресурс B) для печати файла.

Если одновременно работают несколько таких программ P1,P2,P3..., то первая выполнившаяся остальные до заблокирует освобождения ресурсов, и программы будут выполняться по очереди. Не будет никаких проблем. Не имеет значения, используется ли однопроцессорная или многопроцессорная система, поскольку именно распределение ресурсов определяет порядок выполнения.

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

Request resource B
Request resource A
Perform action using A and B
Release resource A
Release resource B

Ресурсы A и B такие же, как и в предыдущем примере, а не просто фиктивные переменные , так как в остальном программы идентичны.

Как и прежде, если таких программ будет несколько, Q1, Q2, Q3, которые запускаются одновременно, используя ресурсы, как и раньше, проблем не возникнет.

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

P: Request resource A
Q: Request resource B
Q: Request resource A (blocked by P)
P: Request resource B (blocked by Q)
...

Теперь ни P, ни Q не могут продолжить 1 .

Это один из примеров, когда программы могут демонстрировать несовместимость.

Несовместимость интерфейса [ править ]

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

Рассмотрим следующий пример:

 Component P calls component Q with parameters x and y. For this example, y may be an integer.
 Q returns f(x) which is desired and never zero, and ignores y.

Вариант Q, Q' имеет аналогичное поведение со следующими отличиями:

 if y = 100, then Q' does not terminate.

Если P никогда не вызывает Q со значением y, равным 100, то использование Q' вместо этого является совместимым вычислением . Однако если P вызывает Q со значением y, равным 100, то использование вместо этого Q' приведет к непрерывным вычислениям.

Если далее предположить, что f(x) имеет числовое значение, то компонент Q'' определяется как:

 Q'' behaves as Q except that
 if y = 100 then Q'' does not terminate
 if y = 101 then Q'' returns 0.9 * f(x)
 if y = 102 then Q'' returns a random value
 if y = 103 then Q'' returns 0.

может вызвать проблемное поведение. Если P теперь вызовет Q'' с = 101, то результаты вычислений будут неверными, но это не может привести к сбою программы. Если P вызывает Q'' с y = 102, тогда результаты непредсказуемы, и может возникнуть сбой , возможно, из-за деления на ноль или других ошибок, таких как арифметическое переполнение . Если P вызывает Q'' с y= 103, то в случае, если P использует результат в операции деления, может произойти сбой деления на ноль.

Этот пример показывает, как одна программа P1 может быть всегда совместима с другой программой Q1, но могут быть построены другие программы Q1' и Q1'', такие, что P1 и Q1'' иногда несовместимы, а P1 и Q1'' несовместимы всегда.

Несовместимость производительности [ править ]

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

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

См. также [ править ]

Ссылки [ править ]

  • К. М. Кришна, К. Г. Шин, Системы реального времени, McGraw-Hill, 1997 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 39a68e7710061aff74368c30572e9a82__1711407600
URL1:https://arc.ask3.ru/arc/aa/39/82/39a68e7710061aff74368c30572e9a82.html
Заголовок, (Title) документа по адресу, URL1:
Software incompatibility - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)