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

редактировать

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

Содержание
  • 1 Примеры
    • 1.1 Тупики
    • 1.2 Несовместимость интерфейсов
    • 1.3 Несовместимость производительности
  • 2 См. Также
  • 3 Ссылки
Примеры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. Также
Ссылки
  • C. М. Кришна, К. Г. Шин, Системы реального времени, McGraw-Hill, 1774
Последняя правка сделана 2021-06-08 08:27:27
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте