stringtranslate.com

Portabilidad del software

La portabilidad del software se puede ejemplificar con múltiples dispositivos ejecutando el mismo videojuego.

La portabilidad del software es un objetivo de diseño para que el código fuente pueda ejecutarse fácilmente en diferentes plataformas . Una ayuda para la portabilidad es la abstracción generalizada entre la lógica de la aplicación y las interfaces del sistema . Cuando se produce software con la misma funcionalidad para varias plataformas informáticas , la portabilidad es la cuestión clave para reducir los costos de desarrollo.

Estrategias

La portabilidad del software puede implicar:

Sistemas similares

Cuando se instalan sistemas operativos de la misma familia en dos computadoras con procesadores con conjuntos de instrucciones similares, a menudo es posible transferir archivos que implementan archivos de programas entre ellos.

En el caso más sencillo, el archivo o archivos pueden simplemente copiarse de una máquina a otra. Sin embargo, en muchos casos, el software se instala en una computadora de una manera que depende de su hardware, software y configuración detallados, con controladores de dispositivo para dispositivos particulares, usando el sistema operativo instalado y los componentes de software de soporte, y usando diferentes unidades o directorios. .

En algunos casos, el software, generalmente descrito como " software portátil ", está diseñado específicamente para ejecutarse en diferentes computadoras con sistemas operativos y procesadores compatibles, sin ninguna instalación dependiente de la máquina. La portabilidad no es más que transferir directorios específicos y sus contenidos. El software instalado en dispositivos de almacenamiento masivo portátiles , como memorias USB, se puede utilizar en cualquier computadora compatible simplemente conectando el dispositivo de almacenamiento y almacena toda la información de configuración en el dispositivo extraíble. La información específica de hardware y software a menudo se almacena en archivos de configuración en ubicaciones específicas, como el registro de Windows ).

El software que no es portátil en este sentido debe modificarse mucho más para soportar el entorno de la máquina de destino.

Diferentes procesadores

En 2011, la mayoría de las computadoras de escritorio y portátiles utilizaban microprocesadores compatibles con los conjuntos de instrucciones x86 de 32 y 64 bits . Los dispositivos portátiles más pequeños utilizan procesadores con conjuntos de instrucciones diferentes e incompatibles, como ARM . La diferencia entre dispositivos más grandes y más pequeños es tal que el funcionamiento detallado del software es diferente; una aplicación diseñada para mostrarse adecuadamente en una pantalla grande no puede simplemente trasladarse a un teléfono inteligente de bolsillo con una pantalla pequeña, incluso si la funcionalidad es similar.

Se requiere que las aplicaciones web sean independientes del procesador, por lo que la portabilidad se puede lograr utilizando técnicas de programación web, escribiendo en JavaScript . Un programa de este tipo puede ejecutarse en un navegador web común. Estas aplicaciones web deben, por motivos de seguridad, tener un control limitado sobre el ordenador anfitrión, especialmente en lo que respecta a la lectura y escritura de archivos. Los programas que no son web, instalados en una computadora de la manera normal, pueden tener más control y, aún así, lograr portabilidad del sistema al vincularse a bibliotecas portátiles que brindan la misma interfaz en diferentes sistemas.

Portabilidad del código fuente

El software se puede compilar y vincular desde el código fuente para diferentes sistemas operativos y procesadores si se escribe en un lenguaje de programación que admita la compilación para las plataformas. Esta suele ser una tarea de los desarrolladores del programa; Los usuarios típicos no tienen acceso al código fuente ni las habilidades necesarias.

En entornos de código abierto como Linux, el código fuente está disponible para todos. En el pasado, el código fuente a menudo se distribuía en un formato estandarizado y los usuarios con conocimientos moderados podían integrarlo en código ejecutable con una herramienta Make estándar para cualquier sistema en particular si no se producían errores durante la compilación. Algunas distribuciones de Linux distribuyen software a los usuarios en formato fuente. En estos casos no suele ser necesaria una adaptación detallada del software del sistema; se distribuye de una manera que modifica el proceso de compilación para que coincida con el sistema .

Esfuerzo para portar el código fuente

Incluso con lenguajes aparentemente portátiles como C y C++ , el esfuerzo para portar el código fuente puede variar considerablemente. Los autores de UNIX/32V (1979) informaron que "[e]l shell (Bourne) [...] requirió con diferencia el mayor esfuerzo de conversión de cualquier programa supuestamente portátil, por la sencilla razón de que no es portátil". [1]

A veces el esfuerzo consiste en recompilar el código fuente, pero otras veces es necesario reescribir partes importantes del software. Muchas especificaciones del lenguaje describen un comportamiento definido por la implementación (por ejemplo, desplazar a la derecha un entero con signo en C puede realizar un desplazamiento lógico o aritmético ). Es posible que las funciones del sistema operativo o las bibliotecas de terceros no estén disponibles en el sistema de destino. Algunas funciones pueden estar disponibles en un sistema de destino, pero exhiben un comportamiento ligeramente diferente (por ejemplo, utime()falla en Windows con EACCES, cuando se llama para un directorio). El código del programa puede contener elementos que no se pueden transportar, como las rutas de los archivos incluidos, las letras de las unidades o la barra invertida. La implementación definió cosas como el orden de bytes y el tamaño de un int también puede aumentar el esfuerzo de portabilidad. En la práctica, la afirmación de lenguajes, como C y C++ , de tener WOCA ( escribir una vez, compilar en cualquier lugar ) es discutible.

Ver también

Referencias

  1. ^ Thomas B. London y John F. Reiser (1978). Un sistema operativo Unix para la computadora DEC VAX-11/780. Nota interna de Bell Labs 78-1353-4.

Fuentes