¿Qué es el software?
Software es un término general para cualquier componente no físico de un sistema informático. Básicamente, el software proporciona instrucciones que indican a los componentes físicos del ordenador (hardware) qué hacer y cómo hacerlo.
El software se escribe en código fuente legible por el ser humano, que se traduce a código máquina binario. El código máquina, formado por 0 y 1, es lo que los componentes físicos entienden y ejecutan.
El software puede ser propietario o de código abierto (OSS). El software propietario es propiedad y está controlado por un individuo o una empresa. El software de código abierto está disponible libremente para que cualquiera pueda utilizarlo, modificarlo y distribuirlo.
Puntos clave
- El software consiste en instrucciones que indican al hardware del ordenador qué hacer y cómo hacerlo.
- El software puede ser propietario o de código abierto.
- El ciclo de vida del desarrollo de software es iterativo y continuo.
- El éxito del desarrollo de software depende de que se satisfagan las necesidades y expectativas de los usuarios.
- El papel del software evoluciona constantemente, impulsado por los avances tecnológicos y las necesidades cambiantes de los usuarios.
- Ver más
Breve historia del software
El concepto de utilizar instrucciones escritas por el hombre para hacer que el hardware haga algo específico se remonta a principios del siglo XIX y al desarrollo del telar de Jacquard.
El telar Jacquard utilizaba tarjetas perforadas para controlar los patrones de tejido. La presencia o ausencia de agujeros en las tarjetas creaba instrucciones de código binario.
El sistema de tarjetas perforadas del telar de Jacquard inspiró a Ada Lovelace, a quien se atribuye el mérito de ser la primera programadora, e inspiró directamente desarrollos posteriores en el desarrollo de software.
La línea de tiempo que aparece a continuación abarca hitos significativos en la historia del software digital.
Tipos de software
Tradicionalmente, ha habido tres tipos principales de software, cada uno de los cuales es complementario: software de aplicación, software de desarrollo y software de sistema.
El software de aplicación proporciona funcionalidad de cara al usuario, el software de desarrollo facilita la creación y el mantenimiento de aplicaciones de software, y el software de sistema actúa como intermediario entre el software de aplicación y el hardware.
El software también puede clasificarse en función de su modelo de licencia. El código fuente del software propietario suele mantenerse en secreto, y a los usuarios se les conceden derechos limitados para utilizar el software mediante un acuerdo de licencia de usuario final (CLUF).
El desarrollo de software de código abierto está impulsado por la comunidad y su código fuente también se licencia. La diferencia es que las licencias de software de código abierto permiten a los usuarios ver, modificar y distribuir libremente el código fuente para fomentar la colaboración y la transparencia en el desarrollo del software.
Ejemplos de software
Aquí tienes algunos ejemplos de distintos tipos de software:
¿Cómo funciona el software?
El software funciona proporcionando instrucciones al hardware de un ordenador. Estas instrucciones están escritas en código máquina, que es un lenguaje binario que el firmware integrado en los componentes del hardware interpreta y ejecuta.
El código máquina es procesado por la unidad central de procesamiento (CPU) del ordenador, que lee las instrucciones y las ejecuta una a una. A continuación, la CPU se comunica con otros componentes del ordenador, como la RAM y el almacenamiento, para completar las tareas especificadas por el código.
El software se escribe inicialmente en código fuente legible por humanos con lenguajes de programación. Dependiendo del lenguaje específico, el código se compila en código máquina antes del tiempo de ejecución o se interpreta directamente para su ejecución por la CPU de un ordenador.
El software del sistema gestiona los recursos de hardware del dispositivo informático. Facilita las interacciones entre el software de aplicación y el hardware del ordenador mediante llamadas al sistema y llamadas a la interfaz de programación de aplicaciones (llamadas API).
El código fuente del software consta de instrucciones, programas, aplicaciones y datos.
Desarrollo y mantenimiento del software
El desarrollo de software implica varias etapas, empezando por el análisis de requisitos.
Es importante tener en cuenta que el ciclo de vida de desarrollo de software (SDLC) no termina con la implantación. El desarrollo de software también incluye la actualización del software para mejorar la seguridad, así como la adición iterativa de nuevas funciones a medida que cambian las necesidades.
La gestión de proyectos es una consideración importante en este contexto, ya que los ingenieros de software necesitan trabajar con los equipos de operaciones a lo largo del SDLC para garantizar la usabilidad continua del software después de su lanzamiento.
Los equipos de desarrollo y operaciones de software (DevOps) dependen en gran medida del software de gestión de proyectos para facilitar la comunicación entre ambos equipos y garantizar el cumplimiento de los plazos.
¿Cómo mantener la calidad y la seguridad?
El aseguramiento de la calidad (SQA) y la seguridad del software requieren pruebas proactivas a lo largo del ciclo de vida de desarrollo del software.
Las pruebas unitarias, las pruebas de integración, las pruebas del sistema y las pruebas de aceptación del usuario (UAT) ayudan a identificar y corregir defectos lo antes posible en el proceso de desarrollo.
Mantener el software y sus dependencias actualizados con los últimos parches de seguridad ayudará a defenderse de las vulnerabilidades recién descubiertas.
¿Cómo se distribuye el software?
El software se distribuye de dos formas diferentes:
- Puede descargarse del sitio web del desarrollador, de una tienda de aplicaciones de terceros o de medios de almacenamiento físico como unidades USB.
- Se puede acceder a él con un navegador y utilizarlo directamente desde la nube sin descargarlo.
Cuestiones legales: Responsabilidad, licencias de software y patentes
Tanto el software de código abierto como el software propietario se enfrentan a problemas legales, pero difieren en algunas áreas clave debido a sus distintos modelos de licencia y distribución.
El software de código abierto se distribuye bajo licencias que permiten a los usuarios utilizarlo, modificarlo y distribuirlo libremente.
Las licencias de código abierto más comunes son la Licencia Pública General GNU (GPL), la Licencia MIT y la Licencia Apache.
El software de código abierto suele ir acompañado de cláusulas de exención de responsabilidad que limitan la responsabilidad de los desarrolladores y distribuidores. Los usuarios finales utilizan el software por su cuenta y riesgo, y no hay garantías de rendimiento o seguridad.
En cambio, el software propietario está patentado y se distribuye bajo licencias restrictivas que controlan cómo se puede utilizar, modificar y distribuir el software. Las licencias de software privativo suelen ofrecer garantías en sus acuerdos de licencia de usuario final que incluyen exenciones de responsabilidad.
Si el usuario final marca «Acepto», la exención de responsabilidad limita la medida en que el vendedor puede ser considerado responsable de los daños o pérdidas ocasionados por el uso del software.
El futuro del software
Se espera que el futuro del desarrollo de software se caracterice por una mayor integración con la inteligencia artificial (IA), un mayor énfasis en el desarrollo nativo en la nube y una mayor atención a la seguridad.
- La computación en nube se complementará con la computación de borde para permitir aplicaciones en tiempo real para los dispositivos del Internet de las cosas (IoT).
- Blockchain facilitará el desarrollo de aplicaciones descentralizadas (dApps) con mayor seguridad y transparencia.
- El uso de la IA generativa y el auge de las plataformas de bajo código y sin código (LCNC) democratizarán el desarrollo de software y acelerarán las innovaciones en realidad aumentada (RA) y realidad virtual (RV).
- A medida que el software esté más interconectado, la necesidad de medidas de seguridad sólidas en todo el ciclo de vida del desarrollo de software inspirará a los equipos de desarrollo de software a convertirse en equipos DevSecOps.
Lo esencial
Las definiciones de software han evolucionado a lo largo de los años en respuesta a los avances tecnológicos y al creciente uso del software en nuestra vida cotidiana.
Las nuevas tecnologías están cambiando fundamentalmente lo que el software puede hacer y cómo se crea. Esta evolución está en curso, por lo que podemos esperar que el significado del software siga sofisticándose a medida que se desarrolle la tecnología y colaboremos cada vez más con agentes inteligentes y herramientas de automatización para crear y mantener el software.
En última instancia, el objetivo final del software siempre será cumplir su propósito y satisfacer las necesidades y expectativas de sus usuarios. Por eso podemos esperar que las futuras explicaciones sobre el software se centren menos en los programas individuales y más en las redes y plataformas interconectadas en las que operan.