stringtranslate.com

Incompatibilidad de software

La incompatibilidad de software es una característica de los componentes o sistemas de software que no pueden funcionar satisfactoriamente juntos en la misma computadora o en diferentes computadoras conectadas por una red informática . Pueden ser componentes o sistemas destinados a funcionar de forma cooperativa o independiente. La compatibilidad de software es una característica de los componentes o sistemas de software que pueden funcionar satisfactoriamente juntos en la misma computadora o en diferentes computadoras conectadas por una red informática. Es posible que algunos componentes o sistemas de software sean compatibles en un entorno e incompatibles en otro.

Ejemplos

Puntos muertos

Considere programas secuenciales de la forma:

Solicitar recurso ASolicitar recurso BRealizar acciones usando A y BLiberar recurso BLiberar recurso A

Un programa en particular podría usar una impresora (recurso A) y un archivo (recurso B) para imprimir el archivo.

Si varios de estos programas P1,P2,P3... funcionan al mismo tiempo, entonces el primero en ejecutarse bloqueará a los demás hasta que se liberen los recursos, y los programas se ejecutarán por turno. No habrá ningún problema. No importa si se utiliza un sistema monoprocesador o multiprocesador , ya que es la asignación de recursos la que determina el orden de ejecución.

Sin embargo, tenga en cuenta que los programadores , en general, no están obligados a escribir programas de una manera particular, o incluso si existen pautas, algunas pueden diferir de las pautas. Una variante del programa anterior puede ser:

Solicitar recurso BSolicitar recurso ARealizar acciones usando A y BLiberar recurso ALiberar recurso B

Los recursos A y B son los mismos que en el ejemplo anterior, no simplemente variables ficticias , ya que por lo demás los programas son idénticos.

Como antes, si hay varios programas de este tipo, Q1, Q2, Q3 que se ejecutan al mismo tiempo utilizando recursos como antes, no habrá ningún problema.

Sin embargo, si varias de las P se configuran para ejecutarse al mismo tiempo que varias de las Q, entonces puede surgir una condición de punto muerto . Tenga en cuenta que no es necesario que surja un punto muerto, pero puede ocurrir.

P: Solicitar recurso AP: Solicitar recurso BP: Solicitar recurso A (bloqueado por P)P: Solicitar recurso B (bloqueado por Q)...

Ahora ni P ni Q pueden proceder 1 .

Este es un tipo de ejemplo en el que los programas pueden demostrar incompatibilidad.

Incompatibilidad de interfaz

Otro ejemplo de tipo diferente sería cuando un componente de software proporciona servicio a otro. La incompatibilidad podría ser tan simple como un cambio en el orden de los parámetros entre el componente de software que solicita el servicio y el componente que proporciona el servicio. Esto sería una especie de incompatibilidad de interfaz . Esto podría considerarse un error , pero podría ser muy difícil de detectar en algunos sistemas. Algunas incompatibilidades de interfaz se pueden detectar fácilmente durante la etapa de construcción , particularmente para sistemas fuertemente tipados , otras pueden ser difíciles de encontrar y solo pueden detectarse en tiempo de ejecución , mientras que otras pueden ser casi imposibles de detectar sin un análisis detallado del programa.

Considere el siguiente ejemplo:

El componente P llama al componente Q con los parámetros x e y. Para este ejemplo, y puede ser un número entero.
Q devuelve f(x) que es la deseada y nunca cero, e ignora y.

Una variante de Q, Q' tiene un comportamiento similar, con las siguientes diferencias:

si y = 100, entonces Q' no termina.

Si P nunca llama a Q con y establecido en 100, entonces usar Q' es un cálculo compatible . Sin embargo, si P llama a Q con y establecido en 100, entonces usar Q' en su lugar conducirá a un cálculo no final.

Si asumimos además que f(x) tiene un valor numérico, entonces el componente Q'' se define como:

Q'' se comporta como Q excepto que si y = 100 entonces Q'' no termina si y = 101 entonces Q'' devuelve 0,9 * f(x) si y = 102 entonces Q'' devuelve un valor aleatorio si y = 103 entonces Q'' devuelve 0.

puede causar un comportamiento problemático. Si P ahora llama a Q'' con = 101, entonces los resultados del cálculo serán incorrectos, pero es posible que no causen una falla en el programa. Si P llama a Q'' con y = 102, entonces los resultados son impredecibles y pueden surgir fallas , posiblemente debido a la división por cero u otros errores como el desbordamiento aritmético . Si P llama a Q'' con y= 103, entonces, en el caso de que P use el resultado en una operación de división, entonces puede ocurrir una falla de división por cero.

Este ejemplo muestra cómo un programa P1 puede ser siempre compatible con otro Q1, pero que se pueden construir otros programas Q1' y Q1'' de manera que P1 y Q1' sean a veces incompatibles, y P1 y Q1'' sean siempre incompatibles.

Incompatibilidad de rendimiento

A veces, los programas P y Q pueden estar ejecutándose en la misma computadora y la presencia de uno inhibirá el rendimiento del otro. Esto puede ocurrir particularmente cuando la computadora usa memoria virtual . El resultado puede ser que se produzca una paliza en el disco y que uno o ambos programas tengan un rendimiento significativamente reducido. Esta forma de incompatibilidad puede ocurrir si P y Q están destinados a cooperar, pero también puede ocurrir si P y Q no están relacionados en absoluto pero simplemente se ejecutan al mismo tiempo. Un ejemplo podría ser si P es un programa que produce archivos de salida de gran tamaño, que están almacenados en la memoria principal , y Q es un programa antivirus que escanea muchos archivos en el disco duro. Si se utiliza una memoria caché para la memoria virtual, es posible que los dos programas interactúen de manera adversa y el rendimiento de cada uno se reducirá drásticamente.

Para algunos programas P y Q, su compatibilidad de rendimiento puede depender del entorno en el que se ejecutan. Pueden ser sustancialmente incompatibles si se ejecutan en una computadora con memoria principal limitada, pero es posible ejecutarlos satisfactoriamente en una máquina con más memoria. Algunos programas pueden tener un rendimiento incompatible en casi cualquier entorno.

Ver también

Referencias