La noción de portabilidad alude a la condición de portable. Este adjetivo (portable), en tanto, refiere a lo portátil: es decir, que resulta movible o que se puede trasladar con facilidad.
El concepto tiene varios usos. Uno de los más frecuentes se vincula a la posibilidad de cambiar de compañía de telefonía celular (móvil) sin perder el número telefónico.
Esta portabilidad implica el traslado de un número de una empresa a otra. El usuario, de este modo, deja de ser cliente de un operador y pasa a utilizar el servicio de otro, aunque manteniendo el mismo número de teléfono (el que utilizaba con el primer prestador).
En Argentina, por ejemplo, la portabilidad numérica es un derecho de todos los usuarios de telefonía móvil. Las empresas tienen la obligación de completar el proceso en no más de un día hábil y con una interrupción del servicio menor a tres horas.
Con la portabilidad, se busca que las corporaciones telefónicas compitan entre sí para ofrecer mejores servicios y precios. La posibilidad de conservar el número hace que el cliente no esté atado a ninguna en particular.
La idea de portabilidad también se emplea en el terreno de la informática. En el marco de la programación de alto nivel, se habla de portabilidad para nombrar a la propiedad del programa que se puede ejecutar en distintas plataformas.
Con la portabilidad, por lo tanto, es posible volver a utilizar el código fuente de un software creado para una cierta plataforma en otra diferente. La dependencia a la plataforma se incrementa a medida que disminuye la portabilidad.
Por lo tanto, la portabilidad habla de la relación que existe entre un programa (que puede ser de cualquier tipo, desde una aplicación de escritorio hasta un videojuego) y la plataforma en la que se puede ejecutar, entendida ésta como un dispositivo o un sistema operativo. Dicho esto, podemos reconocer dos casos extremos: la portabilidad absoluta, en la cual un programa podría correr en cualquier plataforma, y la nula, la absoluta dependencia del programa hacia una plataforma en particular.
Cabe señalar que si bien en las definiciones más comunes de portabilidad se hace referencia al código fuente del programa, esto da lugar a una interpretación errónea, ya que en este concepto no importa el código sino el programa y sus requisitos para ser ejecutado. Diferente es el caso de la familia .NET, un framework independiente de la plataforma creado por Microsoft, y Java, uno de los lenguajes de programación más populares del mundo, que corren el código en máquinas virtuales, abriendo las puertas a usar la misma fuente en distintos sistemas operativos.
Para que tenga lugar la portabilidad debe cumplirse un requisito clave: entre las interfaces del sistema en el que se desea ejecutar y la aplicación lógica debe existir una abstracción generalizada; esto quiere decir que el programador debe poder ver el mismo código aunque una vez compilado sea muy diferente. Aquí también se puede hablar de los programas multiplataformas, aquellos que pueden compilar en más de una plataforma, como ser x86, amd64 o IA-64.
Dado que el desarrollo de software es una tarea que puede extenderse a lo largo de varios años y acarrear la colaboración de decenas de empleados, la portabilidad puede convertirse en una de las claves para reducir los costes a corto plazo (enfocar todos los recursos en un proyecto que luego generará más de un producto) y a largo plazo (cuando de sus diferentes versiones ingrese dinero para cubrir todos los gastos y obtener ganancias).
El software interpretado no requiere ser compilado para cada plataforma, ya que sus instrucciones son leídas en tiempo de ejecución por un intérprete, que lo convierte a lenguaje de máquina.