DICCIONARIO DE INFORMÁTICA Y TECNOLOGÍA
  ¿Qué significa portabilidad del software? - Información sobre portabilidad del software

Definición de portabilidad del software

Leandro Alegsa (Contacto) 2019-03-31

Envíanos un mensaje


Enviar
Anuncios

La portabilidad en la programación de alto nivel es la usabilidad del mismo software en diferentes entornos. El prerrequisito para la portabilidad es la abstracción generalizada entre la lógica de la aplicación y las interfaces del sistema.

El software es portátil cuando el costo de portarlo a una nueva plataforma es significativamente menor que el costo de escribirlo desde cero.

Cuando se produce software con la misma funcionalidad para varias plataformas (entornos) informáticas, la portabilidad es la clave para reducir los costes de desarrollo.

Cuanto menor sea el costo de portar el software, en relación con su costo de implementación, más portátil se dice que es.


Estrategias de portabilidad

La portabilidad del software puede implicar:

- Transferir los archivos de programa instalados a otro ordenador de la misma arquitectura.

- Reinstalación de un programa a partir de archivos de distribución en otro ordenador de la misma arquitectura.

- Construir programas ejecutables para diferentes plataformas a partir de código fuente; esto es lo que normalmente se entiende en inglés como "porting" (portar el software).




Sistemas similares

Cuando los sistemas operativos de la misma familia se instalan en dos ordenadores 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 archivos pueden simplemente copiarse de una máquina a otra. Sin embargo, en muchos casos, el software se instala en un ordenador de una forma que depende de su hardware, software y configuración detallados, con controladores de dispositivos para dispositivos concretos, 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á específicamente diseñado para funcionar en diferentes ordenadores con sistemas operativos y procesadores compatibles, sin ninguna instalación que dependa de la máquina. En este caso la portabilidad no es más que transferir directorios específicos y sus contenidos. El software portátil instalado en los dispositivos de almacenamiento portátiles, como las memorias USB, se puede utilizar en cualquier ordenador compatible con sólo conectar el dispositivo en una máquina, pues almacena toda la información de configuración en el propio dispositivo extraíble. La información específica de hardware y software se almacena a menudo en archivos de configuración en ubicaciones específicas (por ejemplo, el Registro de Windows en equipos que ejecutan Microsoft Windows).

El software que no es portátil en este sentido tendrá que ser transferido con modificaciones para soportar el entorno en la máquina de destino.


Diferentes procesadores

A partir de 2011, la mayoría de los ordenadores de sobremesa y portátiles utilizan 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 grandes y pequeños es tal que la operación detallada del software es diferente; una aplicación diseñada para mostrarse adecuadamente en una pantalla grande no se puede portar simplemente a un smartphone de bolsillo con una pantalla diminuta, incluso si la funcionalidad es similar.

En tanto, las aplicaciones web deben ser independientes del procesador, por lo que la portabilidad puede lograrse utilizando técnicas de programación web, escribiendo en JavaScript. Dicho programa web puede ejecutarse en un navegador web común. Por razones de seguridad, estas aplicaciones web deben tener un control limitado sobre el ordenador central, especialmente en lo que se refiere 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, sin embargo, lograr la portabilidad del sistema al vincularse a bibliotecas portátiles que proporcionan la misma interfaz en diferentes sistemas.


Portabilidad de código fuente

El software puede ser compilado y enlazado desde el código fuente para diferentes sistemas operativos y procesadores si está escrito en un lenguaje de programación que soporte la compilación para las plataformas. Esto es generalmente una tarea para los desarrolladores de programas; los usuarios típicos no tienen acceso al código fuente ni a las habilidades requeridas.

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


Lenguajes de programación portátiles

Incluso con lenguajes aparentemente portátiles como C y C++, el esfuerzo para portar el código fuente puede variar considerablemente.

A veces el esfuerzo consiste en recompilar el código fuente, pero a veces es necesario reescribir partes importantes del software.

Algunos problemas que pueden surgir

Muchas especificaciones del lenguaje describen el comportamiento definido de la implementación (por ejemplo, el desplazamiento a la derecha de un entero de 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 muestran un comportamiento ligeramente diferente (Por ejemplo: utime() falla en Windows con EACCES, cuando es llamado para un directorio).

El código del programa también puede contener cosas no portátiles, como las rutas de los archivos include. Las letras de unidad y la barra invertida como delimitador de ruta no se aceptan en todos los sistemas operativos.

La implementación de cosas definidas como el orden de los bytes y el tamaño de un entero también puede aumentar el esfuerzo de transferencia.

En la práctica, la afirmación de que los lenguajes de programación como C y C++, tienen "la WOCA" (write once, compile anywhere = escribir una vez, compilar en cualquier parte) es discutible.


Repaso histórico de la portabilidad en la informática

El número de CPUs y sistemas operativos significativamente diferentes que se utilizan hoy en día en el escritorio es mucho menor que en el pasado. El dominio de la arquitectura x86 significa que la mayoría del software de escritorio nunca se porta a una CPU diferente. En ese mismo mercado, la elección de los sistemas operativos se ha reducido efectivamente a tres: Microsoft Windows, MacOS y Linux. Sin embargo, en los mercados de sistemas embebidos y móviles, la portabilidad sigue siendo un problema importante, siendo el ARM una alternativa ampliamente utilizada.

Las normas internacionales, como las promulgadas por la ISO, facilitan en gran medida la transferencia al especificar los detalles del entorno informático de manera que se reduzcan las diferencias entre las diferentes plataformas que cumplen las normas. Escribir software que se mantenga dentro de los límites especificados por estos estándares representa un esfuerzo práctico aunque no trivial.

La adaptación de un programa de este tipo entre dos plataformas compatibles con los estándares (como POSIX.1) puede ser sólo cuestión de cargar el código fuente y recompilarlo en la nueva plataforma. Sin embargo, los profesionales a menudo encuentran que se requieren varias correcciones menores, debido a sutiles diferencias de plataforma. La mayoría de los estándares sufren de "áreas grises" donde las diferencias en la interpretación de los estándares llevan a pequeñas variaciones de una plataforma a otra.

También existe un número cada vez mayor de herramientas para facilitar la migración, como la Colección de Compiladores GNU, que proporciona lenguajes de programación consistentes en diferentes plataformas, y Autotools, que automatiza la detección de variaciones menores en el entorno y adapta el software en consecuencia antes de la compilación.

Los compiladores de algunos lenguajes de programación de alto nivel (por ejemplo, Eiffel, Esterel) obtienen portabilidad mediante la salida de código fuente en otro lenguaje intermedio de alto nivel (como C) para el que los compiladores de muchas plataformas están generalmente disponibles.

Dos actividades relacionadas con (pero distintas de) el porting son la emulación y la compilación cruzada.


Compiladores portables

En lugar de traducir directamente al código de la máquina, los compiladores modernos traducen a un código intermedio independiente de la máquina para mejorar la portabilidad del compilador y minimizar los esfuerzos de diseño.

El lenguaje intermedio define una máquina virtual que puede ejecutar todos los programas escritos en el lenguaje intermedio (una máquina se define por su lenguaje y viceversa).

Las instrucciones de código intermedio se traducen en secuencias de código de máquina equivalentes mediante un generador de código para crear código ejecutable. También es posible omitir la generación de código de máquina implementando un intérprete o JIT para la máquina virtual.

El uso de código intermedio mejora la portabilidad del compilador, porque sólo el código dependiente de la máquina (el intérprete o el generador de código) del propio compilador necesita ser portado a la máquina de destino. El resto del compilador puede ser importado como código intermedio y luego procesado por el generador de código portado o el intérprete, produciendo así el software del compilador o ejecutando directamente el código intermedio en el intérprete. La parte independiente de la máquina puede ser desarrollada y probada en otra máquina (la máquina anfitriona). Esto reduce enormemente los esfuerzos de diseño, ya que la parte independiente de la máquina sólo necesita ser desarrollada una vez para crear un código intermedio portátil.

Un intérprete es menos complejo y por lo tanto más fácil de portar que un generador de código, porque no es capaz de hacer optimizaciones de código debido a su vista limitada del código de programa (sólo ve una instrucción a la vez, y necesita una secuencia para hacer la optimización). Algunos intérpretes son extremadamente fáciles de portar, porque sólo hacen suposiciones mínimas sobre el conjunto de instrucciones del hardware subyacente. Como resultado, la máquina virtual es aún más simple que la CPU de destino.


Terminología relacionada

Portabilidad

Portabilidad en la nube





¿Mejoramos la definición?
Puntos: 5 (1 votos)







Respondemos tus consultas o comentarios a continuación:


¿Dudas? ¿necesita más información? Escriba y responderemos a tu email: clic aquí



 




  Diccionario de informática
  Búsqueda por letras:

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0,9
 
Búsqueda por categorías
:

Almacenamiento - Aplicaciones - Audio - Compresión - Desarrollo web - Discos ópticos - Inteligencia Artificial - Memorias - Microprocesadores - Seguridad informática - Sistemas de archivos - Terminología de programación - UNIX - Windows - ver categorías

 
Búsqueda por palabras:






Preguntas

No hay ningún comentario todavía

Todos los derechos reservados © 1998 - 2018 - ALEGSA - Santa Fe, Argentina.
Políticas del sitio web - Contacto - Publicidad