Несовместимость интерфейсов в компьютерных сетях

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

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

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

    См. Также

    Ссылки

    Источник

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

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

    Примеры

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

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

    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, которые работают одновременно с использованием ресурсов, как и раньше, проблем не возникнет.

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

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

    использованная литература

    Источник

    Читайте также:  Математическое моделирование в компьютерных сетях
Оцените статью
Adblock
detector