Несовместимость программного обеспечения - Википедия - Software incompatibility

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

Примеры

Тупиковые ситуации

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

Запрос ресурс Ресурс ARequest BP Выполните действие с использованием ресурса A и ресурса BRelease BRelease ресурса A

Особый программа может использовать принтер (ресурс A) и файл (ресурс B), чтобы распечатать файл.

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

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

Запросить ресурс BRequest ресурс AP Выполнить действие с использованием A и BR освободить ресурс AR освободить ресурс B

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

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

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

P: ресурс запроса AQ: ресурс запроса BQ: ресурс запроса A (заблокирован P) P: ресурс запроса B (заблокирован Q) ...

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

Это один из примеров несовместимости программ.

Несовместимость интерфейсов

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

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

 Компонент P вызывает компонент Q с параметрами x и y. В этом примере y может быть целым числом.
 Q возвращает желаемую f (x) и никогда не принимает ноль, и игнорирует y.

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

 если y = 100, то Q 'не завершается.

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

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

 Q ведет себя как Q, за исключением того, что если y = 100, то Q '' не завершается, если y = 101, тогда Q '' возвращает 0,9 * f (x), если y = 102, тогда Q '' возвращает случайное значение, если y = 103, тогда Q '' возвращает 0.

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

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

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

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

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

Смотрите также

Рекомендации

  • К. М. Кришна, К. Г. Шин, Системы реального времени, McGraw-Hill, 1997