stringtranslate.com

Portabilidad del software

La portabilidad del software se puede ejemplificar con múltiples dispositivos que ejecutan 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 la reducción de 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 los archivos que implementan los archivos de programa entre ellos.

En el caso más simple, el archivo o los 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 dispositivos para dispositivos específicos, utilizando el sistema operativo instalado y componentes de software compatibles, y utilizando 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 su contenido. El software instalado en dispositivos de almacenamiento masivo portátiles , como memorias USB, se puede utilizar en cualquier computadora compatible con solo conectar el dispositivo de almacenamiento y almacena toda la información de configuración en el dispositivo extraíble. La información específica del hardware y el software a menudo se almacena en archivos de configuración en ubicaciones específicas, como el registro en Windows .

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

Diferentes procesadores

A partir de 2011, la mayoría de las computadoras de escritorio y portátiles usaban microprocesadores compatibles con los conjuntos de instrucciones x86 de 32 y 64 bits . Los dispositivos portátiles más pequeños usan 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 se puede trasladar simplemente a un teléfono inteligente de bolsillo con una pantalla pequeña, incluso si la funcionalidad es similar.

Las aplicaciones web deben ser independientes del procesador, por lo que la portabilidad se puede lograr mediante el uso de técnicas de programación web, escritas en JavaScript . Un programa de este tipo puede ejecutarse en un navegador web común. Por razones de seguridad, estas aplicaciones web deben tener un control limitado sobre el equipo anfitrión, especialmente en lo que respecta a la lectura y escritura de archivos. Los programas no web, instalados en un equipo de la manera normal, pueden tener más control y, sin embargo, lograr la portabilidad del sistema al vincularse a bibliotecas portátiles que brinden la misma interfaz en diferentes sistemas.

Portabilidad del código fuente

El software puede compilarse y vincularse a partir del código fuente para diferentes sistemas operativos y procesadores si está escrito en un lenguaje de programación que admita la compilación para las plataformas. Esta suele ser una tarea para 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 épocas anteriores, el código fuente se distribuía a menudo en un formato estandarizado y podía ser integrado en código ejecutable con una herramienta Make estándar para cualquier sistema en particular por usuarios con conocimientos moderados si no se producían errores durante la compilación. Algunas distribuciones de Linux distribuyen el software a los usuarios en formato fuente. En estos casos, normalmente no es necesario realizar una adaptación detallada del software para el 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 portables 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 mucho el mayor esfuerzo de conversión de cualquier programa supuestamente portable, por la sencilla razón de que no es portable". [1]

A veces, el esfuerzo consiste en volver a compilar el código fuente, pero a veces es necesario reescribir partes importantes del software. Muchas especificaciones de lenguaje describen el comportamiento definido por la implementación (por ejemplo, desplazar a la derecha un entero con signo en C puede hacer 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 exhibir un comportamiento ligeramente diferente, como utime()falla en Windows con EACCES, cuando se llama para un directorio). El código del programa puede contener cosas no portables, como las rutas de los archivos incluidos, las letras de unidad o la barra invertida. Las cosas definidas por la implementación, como el orden de bytes y el tamaño de un int, también pueden 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.

Véase también

Referencias

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

Fuentes