ALEGSA.com.ar

Definición de portabilidad del software

Significado de portabilidad del software: La portabilidad en la programación de alto nivel es la usabilidad del mismo software en diferentes entornos. El prerrequisito para la ...
01-08-2023

 


Definición de portabilidad del software

 

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.

La portabilidad en la programación de alto nivel permite que un programa pueda ejecutarse en distintos sistemas operativos y plataformas. Esto implica que el software pueda adaptarse a diferentes ambientes, sin necesidad de reescribirlo o realizar modificaciones significativas.

Cuando se logra una abstracción generalizada entre la lógica de la aplicación y las interfaces del sistema, se facilita la portabilidad del software. Esto implica separar la funcionalidad del programa de las particularidades y dependencias de cada plataforma, lo cual permite que el software pueda ser utilizado en diferentes entornos sin problemas.

La portabilidad del software es especialmente valiosa en términos de costos de desarrollo. Si se logra crear un programa con la misma funcionalidad para varias plataformas informáticas, se puede reducir notablemente el gasto de tiempo y recursos que implicaría desarrollar un programa específico para cada sistema.

El objetivo de la portabilidad es minimizar los costos de implementación del software en diferentes entornos, permitiendo que este pueda ser reutilizado. Cuanto menor sea el costo de adaptar el software a una nueva plataforma, mayor será su grado de portabilidad.

En resumen, la portabilidad en la programación de alto nivel es esencial para desarrollar software que pueda ser utilizado en diferentes sistemas operativos y plataformas. Esto permite reducir los costos de implementación y facilita la reutilización de código, aumentando la eficiencia en el desarrollo de aplicaciones.




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.



Resumen: portabilidad del software



La portabilidad en la programación significa que un software puede ser usado en diferentes entornos sin necesidad de modificaciones significativas. Esto reduce los costos de desarrollo y permite que el software tenga la misma funcionalidad en varias plataformas.



¿Por qué es importante la portabilidad del software?



La portabilidad del software es importante porque permite a los desarrolladores escribir programas que pueden ser ejecutados en diferentes plataformas y sistemas operativos. Esto significa que un programa puede ser utilizado por diferentes usuarios, sin importar el dispositivo o sistema que utilicen, lo que aumenta su alcance y usabilidad.


¿Cuál es la diferencia entre la portabilidad del software y la interoperabilidad del software?



La portabilidad del software se refiere a la capacidad de un programa para ser utilizado en diferentes entornos, mientras que la interoperabilidad del software se refiere a la capacidad de diferentes programas para funcionar juntos de manera efectiva. La portabilidad se enfoca en la capacidad del programa en sí, mientras que la interoperabilidad se enfoca en la capacidad de diferentes programas para comunicarse y colaborar entre sí.


¿Cuáles son los desafíos comunes asociados con la portabilidad del software?



Algunos de los desafíos comunes asociados con la portabilidad del software incluyen la compatibilidad de los lenguajes de programación utilizados, las diferencias en las bibliotecas y frameworks disponibles en diferentes entornos, y las limitaciones de hardware y sistemas operativos. Estos desafíos requieren que los desarrolladores realicen pruebas exhaustivas y realicen ajustes en el código para garantizar la portabilidad del software.


¿Qué estrategias se pueden utilizar para lograr la portabilidad del software?



Algunas estrategias que se pueden utilizar para lograr la portabilidad del software incluyen el uso de estándares de programación y formatos de archivo comunes, el diseño modular que permite la reutilización de componentes, el uso de abstracciones y capas de software para separar la lógica de la aplicación de los detalles de implementación, y el desarrollo de pruebas rigurosas en diferentes entornos.


¿Existen limitaciones en cuanto a la portabilidad del software?



Sí, existen limitaciones en cuanto a la portabilidad del software. Algunas limitaciones pueden ser la dependencia de características específicas de un sistema operativo o hardware, la falta de soporte de ciertos lenguajes de programación en diferentes entornos, y las diferencias en las políticas de seguridad y permisos entre sistemas. Estas limitaciones pueden requerir ajustes adicionales o incluso reescritura del código para garantizar la portabilidad del software.


¿Qué beneficios ofrece la portabilidad del software a los usuarios finales?



La portabilidad del software ofrece beneficios significativos a los usuarios finales, ya que les permite utilizar el mismo programa en diferentes dispositivos y sistemas operativos, lo que brinda flexibilidad y conveniencia. Además, la portabilidad del software facilita la migración de datos y configuraciones entre diferentes entornos, lo que ahorra tiempo y reduce la complejidad para los usuarios. Esto se traduce en una experiencia de usuario más consistente y mejorada.





Terminología relacionada



Portabilidad

Portabilidad en la nube


Autor: Leandro Alegsa
Actualizado: 01-08-2023

¿Cómo citar este artículo?

Alegsa, Leandro. (2023). Definición de portabilidad del software. Recuperado de https://www.alegsa.com.ar/Dic/portabilidad_del_software.php

Diccionario informático



 


articulos
Asistente IA
Escribe tu consulta sobre informática y tecnologías al asistente de Inteligencia Artificial
¡te responderá en segundos!




* ACLARACIÓN: el asistente ha sido entrenado para responder tus dudas con muy buenos resultados, pero puede equivocarse, esta tecnología aún está en desarrollo. Te sugiero dejar tu email para que te contactemos para corregir la respuesta de la IA: leemos todas las consultas y respuestas.


Usa nuestro buscador para definiciones, informática y tecnologías