El software es el conjunto de programas, datos e instrucciones que le dicen a un ordenador qué hacer. Es la parte que no se puede tocar: el sistema operativo del móvil, el navegador, la hoja de cálculo o la aplicación del banco. El hardware es la máquina; el software es lo que la máquina hace. Sin software, un ordenador es un objeto que consume electricidad; sin hardware, el software es un texto que nadie ejecuta.
Es la novena pieza de una serie, y la que reúne a las demás. El algoritmo es la secuencia de pasos; el pseudocódigo y el diagrama de flujo son cómo se escribe y cómo se dibuja; la variable guarda un dato; el bucle repite; la estructura condicional decide; la función empaqueta, y el array guarda muchos datos a la vez. Todo eso, escrito en un lenguaje y puesto a funcionar, es un programa. Y uno o varios programas, con sus datos y su documentación, son software. Este artículo sube un nivel: no cómo se escribe una línea, sino qué es lo que sale al final.
Definición
Software: «Conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora» (Diccionario de la lengua española, RAE).
Es una palabra inglesa que el español usa tal cual: la RAE la recoge como voz inglesa, en masculino. La definición técnica de referencia va un poco más allá. El glosario de ingeniería del software del IEEE (Std 610.12-1990) la describe como los programas, los procedimientos y, en su caso, la documentación y los datos asociados que tienen que ver con el funcionamiento de un sistema informático. Y añade una indicación útil: lo contrario de software es hardware.
Entre las dos definiciones salen las tres cosas que forman el software:
- Instrucciones. Lo que se ejecuta: los programas.
- Datos. Lo que esos programas necesitan para funcionar: configuración, tablas, traducciones, plantillas.
- Documentación. Lo que explica cómo se usa y cómo se mantiene. No la ejecuta nadie, pero un sistema sin ella deja de poder cambiarse.
De dónde viene la palabra
Hardware ya existía en inglés mucho antes que los ordenadores: es la ferretería, los objetos de metal. Software se formó por oposición. Si la máquina es la parte dura, lo demás es la parte blanda.
El primer uso impreso conocido con el sentido informático está en un artículo del estadístico John W. Tukey, «The Teaching of Concrete Mathematics», publicado en The American Mathematical Monthly en enero de 1958. Tukey llamaba software a las rutinas interpretativas, los compiladores y otros aspectos de la programación automática, y sostenía que para una calculadora electrónica moderna era, como mínimo, tan importante como su hardware de válvulas, transistores, cables y cintas. Lo localizó el bibliotecario Fred R. Shapiro buscando en el archivo JSTOR. Conviene leerlo como lo que es, el primer uso conocido: la búsqueda se limitó a revistas archivadas, y podría aparecer otro anterior.
Hardware y software: la diferencia
| Hardware | Software | |
|---|---|---|
| Qué es | Los componentes físicos | Las instrucciones y los datos |
| ¿Se puede tocar? | Sí | No: se toca el soporte donde está guardado |
| Cómo se copia | Fabricando otra unidad | Copiando ficheros |
| ¿Se desgasta? | Sí, con el uso | No, aunque se queda anticuado |
| Cómo se cambia | Sustituyendo piezas | Actualizando |
| Ejemplos | Procesador, memoria, disco, pantalla, teclado | Windows, Android, Chrome, Excel |
Una comparación que funciona: en un piano y una partitura, el piano es el hardware y la partitura es el software. El mismo piano toca cualquier obra, y la misma obra suena en cualquier piano. Esa separación es lo que hace que un ordenador sea una máquina general. Una lavadora mecánica de las antiguas hace una sola cosa; un ordenador hace lo que diga su software, y cambia de oficio sin cambiar una pieza.
Los dos trabajan siempre juntos, y se ve bien con el esquema de input y output: el teclado (hardware) recoge una entrada, el software decide qué hacer con ella y la pantalla (hardware) muestra la salida.
¿Y el firmware? Está en la frontera. Es software grabado en un dispositivo físico para hacerlo funcionar: el que arranca un ordenador, el de un router, el de una impresora. El IEEE lo define como la combinación de un dispositivo de hardware con instrucciones y datos que residen en él como software de solo lectura. Se actualiza poco y el usuario casi nunca lo ve.
Software, programa y aplicación
Se usan como sinónimos y no lo son del todo:
| Término | Qué es | Ejemplo |
|---|---|---|
| Algoritmo | La lógica, los pasos, antes de escribirlos en ningún lenguaje | Cómo calcular el IVA de una factura |
| Programa | Esa lógica escrita en un lenguaje para que la máquina la ejecute | Un fichero que calcula el IVA |
| Aplicación | Un programa pensado para que lo use una persona | El programa de facturación |
| Software | El término general: programas, bibliotecas, datos y documentación | Todo lo anterior, y el sistema operativo sobre el que corre |
Todo programa es software, pero no todo el software es un programa: una biblioteca de código o un fichero de configuración también lo son, y no se ejecutan solos.
Conviene distinguir además dos estados de un mismo programa. El código fuente es lo que escribe una persona:
precio = 100
iva = precio * 0.21
print(precio + iva) # 121.0
Una persona lo lee. El procesador no: solo entiende instrucciones en su propio lenguaje máquina. Por eso hace falta otro software que traduzca. Un compilador traduce el programa entero antes de ejecutarlo, y el resultado es un fichero ejecutable; un intérprete lo traduce y lo ejecuta sobre la marcha. En la práctica muchos lenguajes combinan las dos cosas. Es decir: para que exista software hace falta software.
Los tipos de software
La clasificación más extendida atiende a para qué sirve. El propio glosario del IEEE distingue tres grupos: de sistema, de aplicación y de soporte, que es el que ayuda a desarrollar o mantener otro software y que en español se suele llamar de programación.
| Tipo | Para qué sirve | A quién sirve | Ejemplos |
|---|---|---|---|
| Software de sistema | Hace funcionar la máquina y reparte sus recursos | A los demás programas | Windows, macOS, Linux, Android, iOS, controladores |
| Software de programación | Sirve para crear otro software | Al programador | Visual Studio Code, Git, GCC, Python |
| Software de aplicación | Resuelve una tarea concreta | A la persona que lo usa | Word, Excel, Chrome, Spotify, WhatsApp |
Software de sistema. El más importante es el sistema operativo: el programa que gestiona la memoria, el procesador, los ficheros y los dispositivos, y que ofrece a las aplicaciones una forma común de usarlos. Una aplicación no habla directamente con el disco; se lo pide al sistema operativo. Junto a él están los controladores, que le enseñan a manejar cada dispositivo, y las utilidades.
Software de programación. También se llama de desarrollo. Son los editores, los compiladores, los intérpretes, los depuradores y los sistemas de control de versiones. Es el software con el que se hace el software.
Software de aplicación. Es el que la mayoría de la gente llama simplemente «programas» o «apps»: ofimática, navegadores, correo, juegos, edición de fotos. Dentro de él tiene mucho peso el software de gestión de las empresas, como el ERP, que integra la contabilidad, las compras y la producción, o el CRM, que lleva la relación con los clientes. En este blog hay una clasificación más antigua que lo trata como un cuarto tipo.
Hay otras formas de clasificarlo, que no compiten con esta sino que miden otra cosa:
- Por su licencia: propietario, libre o de código abierto.
- Por cómo se entrega: instalado en el equipo o usado a través de internet.
- Por su destinatario: estándar, igual para todos, o hecho a medida para un cliente.
Un ejemplo: qué software interviene al mirar el saldo en el móvil
Una acción de dos segundos atraviesa varias capas, escritas casi siempre por organizaciones distintas:
| Paso | Software que actúa | Qué hace |
|---|---|---|
| 1 | Firmware | Hizo arrancar el teléfono y controla el hardware |
| 2 | Sistema operativo | Detecta la pulsación y abre la aplicación |
| 3 | Aplicación del banco | Dibuja la pantalla y prepara la petición |
| 4 | Bibliotecas de red y cifrado | Envían la petición protegida por internet |
| 5 | Software del servidor del banco | Comprueba quién pregunta y busca el dato |
| 6 | Base de datos | Devuelve el saldo |
Y de vuelta, por el mismo camino. Lo que el usuario llama «la aplicación» es solo la capa de arriba. Por eso un fallo que se ve en la pantalla puede estar en una capa que nadie de la empresa ha escrito, y por eso actualizar el sistema operativo a veces rompe una aplicación que no ha cambiado.
Cómo se hace el software
Escribir código es una parte del trabajo, no todo. El ciclo habitual tiene seis fases:
- Requisitos: qué tiene que hacer y para quién.
- Diseño: cómo se organiza y qué datos maneja. Aquí se usan el pseudocódigo y los diagramas de flujo.
- Programación: escribirlo en un lenguaje.
- Pruebas: comprobar que hace lo que debe y que no hace lo que no debe.
- Despliegue: ponerlo a disposición de quien lo va a usar.
- Mantenimiento: corregir errores y adaptarlo a lo que cambie alrededor.
La disciplina que se ocupa de todo esto es la ingeniería del software. El nombre se popularizó con la conferencia que la OTAN organizó en Garmisch (Alemania) del 7 al 11 de octubre de 1968, cuyas actas editaron Peter Naur y Brian Randell. Según contó Randell, la expresión era entonces casi desconocida y se eligió a propósito para provocar: la idea era que hacer software debía tomarse con el rigor de las demás ingenierías. En cómo crear programas hay una versión práctica de estos pasos.
Libre, propietario y en la nube
Software propietario. Se usa bajo una licencia que fija lo que se puede hacer con él, y normalmente no da acceso al código fuente. Windows y Microsoft Office son ejemplos.
Software libre. Lo define una idea de libertad, no de precio. Según la Free Software Foundation, garantiza cuatro libertades: ejecutar el programa con cualquier propósito, estudiar cómo funciona y modificarlo, redistribuir copias y distribuir las versiones modificadas. El proyecto GNU, que lo puso en marcha, se anunció el 27 de septiembre de 1983, y Linus Torvalds presentó Linux el 25 de agosto de 1991 en un grupo de noticias de Usenet.
Código abierto. Es un término muy cercano, con licencias que en su mayoría coinciden; pone el acento en las ventajas prácticas de compartir el código más que en la libertad del usuario.
Software como servicio (SaaS). No se instala: se usa desde el navegador, se ejecuta en los servidores del proveedor y se paga normalmente por suscripción. Gmail o Salesforce funcionan así. Es el modelo que explica que hoy se hable menos de comprar un programa y más de contratarlo.
Que el software se venda por separado no es algo natural: es una decisión con fecha. Durante años los fabricantes lo incluían con la máquina. En junio de 1969 IBM anunció que iba a poner precio aparte al hardware, al software y a los servicios, con una demanda antimonopolio de fondo, y esa separación suele citarse como el empujón definitivo a la industria del software independiente.
Una historia en ocho fechas
| Año | Qué pasó |
|---|---|
| 1843 | Ada Lovelace publica en sus notas sobre la máquina analítica de Babbage un método para calcular números de Bernoulli. La máquina no se construyó, así que nunca se ejecutó. Suele considerarse el primer programa, con matices de algunos historiadores |
| 1948 | El 21 de junio, la Manchester Baby ejecuta un programa guardado en su propia memoria electrónica. El programa pasa a ser algo que está en la memoria: para que la máquina haga otra cosa, basta con cargar otro |
| 1958 | Tukey usa la palabra software en una revista |
| 1968 | La conferencia de Garmisch populariza la expresión «ingeniería del software» |
| 1969 | IBM separa el precio del software del precio de la máquina |
| 1983 | Richard Stallman anuncia el proyecto GNU |
| 1991 | Linus Torvalds anuncia Linux |
| 2011 | Marc Andreessen publica en The Wall Street Journal su ensayo sobre por qué el software se está comiendo el mundo |
El software y la inteligencia artificial
Todo lo anterior describe software en el que una persona escribe las reglas: si el saldo es menor que cero, avisa. El aprendizaje automático cambia esa parte. Andrej Karpathy lo llamó en noviembre de 2017 Software 2.0: en lugar de escribir el programa línea a línea, se define un objetivo, se aportan datos y un proceso de optimización ajusta los pesos de una red neuronal.
Un modelo de lenguaje sigue siendo software: un programa y un fichero enorme de parámetros que corren sobre hardware. Lo que cambia es de dónde sale el comportamiento y cómo se corrige. Un error en un programa clásico se busca en una línea; en un modelo no hay una línea que señalar, y se corrige con datos y con entrenamiento. Por eso el software clásico no desaparece: es el que rodea al modelo, le da entrada y salida, comprueba sus respuestas y decide qué se hace con ellas. La frontera entre los dos, y qué parte del algoritmo queda escrita por personas, es hoy una de las decisiones de diseño más importantes.
Confusiones frecuentes
- «Software y programa son lo mismo.» El programa es una parte; el software incluye también datos, bibliotecas y documentación.
- «Software libre significa gratis.» Significa que da libertades. Se puede cobrar por él, y hay programas gratuitos que no son libres.
- «El software no se estropea.» No se desgasta, pero deja de funcionar cuando cambia lo que tiene alrededor, o cuando alguien encuentra un error que siempre estuvo ahí.
- «La nube no es software.» La nube son ordenadores de otro, con software de otro. Sigue habiendo hardware y software, solo que no se ven.
- «Un virus es un problema del hardware.» Un virus es software: un programa escrito para hacer algo que el usuario no quiere.
- «Lo importante es el código.» El código es lo que se ve. Sin requisitos, datos y mantenimiento no hay software que dure.
Preguntas frecuentes
¿Qué es el software y para qué sirve?
El software es el conjunto de programas, datos e instrucciones que le dicen a un ordenador qué hacer. Sirve para convertir una máquina general en una herramienta concreta: el mismo ordenador escribe textos, reproduce música o lleva la contabilidad según el software que ejecute.
¿Cuál es la diferencia entre hardware y software?
El hardware son los componentes físicos del ordenador, los que se pueden tocar: procesador, memoria, disco, pantalla o teclado. El software son las instrucciones y los datos que hacen funcionar esos componentes: el sistema operativo y las aplicaciones. El hardware se desgasta y se sustituye; el software se copia y se actualiza.
¿Cuáles son los tipos de software?
Hay tres grandes tipos. El software de sistema hace funcionar la máquina, como Windows, Linux o Android. El software de programación sirve para crear otro software, como Visual Studio Code o Git. El software de aplicación resuelve tareas para el usuario, como Word, Chrome o un programa de contabilidad.
¿Qué ejemplos de software hay?
Son software los sistemas operativos (Windows, macOS, Linux, Android, iOS), los navegadores (Chrome, Firefox, Safari), la ofimática (Word, Excel), las aplicaciones del móvil (WhatsApp, Spotify), las herramientas de programación (Visual Studio Code, Git) y los programas de gestión de empresas, como un ERP o un CRM.
¿Un sistema operativo es software?
Sí. Es software de sistema: el programa que gestiona el hardware y ofrece a las demás aplicaciones una forma común de usarlo. Se carga al encender el ordenador y sobre él funciona todo lo demás.
¿Quién inventó la palabra software?
El primer uso impreso conocido con sentido informático es de John W. Tukey, en un artículo de enero de 1958 en The American Mathematical Monthly. Es el primer uso conocido, no necesariamente el primero que existió.
¿Qué significa software libre?
Es el software que garantiza a quien lo usa cuatro libertades: ejecutarlo con cualquier propósito, estudiar y modificar su funcionamiento, redistribuir copias y distribuir versiones modificadas. No significa gratuito: se refiere a la libertad, no al precio.
Fuentes
- Real Academia Española, Diccionario de la lengua española, entrada «software».
- IEEE, Standard Glossary of Software Engineering Terminology, IEEE Std 610.12-1990, entradas «software» y «firmware» (copia en NIST).
- J. W. Tukey, «The Teaching of Concrete Mathematics», The American Mathematical Monthly, vol. 65, n.º 1, enero de 1958, y «Software's Origin», Science News.
- P. Naur y B. Randell (eds.), Software Engineering: Report on a conference sponsored by the NATO Science Committee, Garmisch, 7-11 de octubre de 1968.
- R. Stallman, anuncio inicial del proyecto GNU, 27 de septiembre de 1983.
- M. Andreessen, «Why Software Is Eating the World», The Wall Street Journal, 20 de agosto de 2011.
- A. Karpathy, «Software 2.0», 11 de noviembre de 2017.