Software

Fiabilidad

¿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.

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:

Software de aplicación

Este tipo de software permite a los usuarios finales realizar tareas específicas. Los programas de gestión de relaciones con los clientes (CRM) y de gestión de riesgos empresariales (ERP) son ejemplos de software de aplicación.

Software Propietario Código Abierto
Procesador de Textos Microsoft Word LibreOffice Writer
Navegador Web Google Chrome Mozilla Firefox
Cliente de Correo Electrónico Microsoft Outlook Mozilla Thunderbird
Videojuego The Sims 0 A.D.
Software de Edición de Fotos Adobe Photoshop GIMP


Software de desarrollo

Este tipo de software proporciona herramientas a los desarrolladores para crear, probar y mantener aplicaciones de software. Git y Jenkins son ejemplos de software de desarrollo.

Tipo de Herramienta Propietario Código Abierto
Editor de Código Sublime Text Visual Studio Code
Compilador Intel C++ Compiler GCC (Colección de Compiladores GNU)
Depurador WinDbg GDB (Depurador GNU)
Entorno de Desarrollo Integrado (IDE) Microsoft Visual Studio Eclipse


Software del sistema

Este tipo de software actúa como base para el resto del software, gestionando los recursos de hardware y proporcionando servicios esenciales. DOS y Unix son ejemplos de software de sistema.

Tipo de Software Propietario Código Abierto
Sistema Operativo Windows, macOS Linux (Ubuntu, Fedora)
Controlador de Dispositivo Controladores Gráficos NVIDIA Controladores de GPU de código abierto (Mesa)
Firmware Firmware de Apple iOS Firmware OpenWrt
Software de Utilidades Norton Utilities

¿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.

Instrucciones

Las órdenes básicas que un procesador de ordenador entiende y ejecuta.

Guiones

Secuencia de instrucciones que automatizan tareas.

Programas

Conjunto de instrucciones y datos que realizan una función específica.

Aplicaciones

Tipo de programa diseñado para ser utilizado por usuarios finales con el fin de lograr objetivos específicos.

Suites de aplicaciones

Conjunto de aplicaciones relacionadas entre sí.

Datos

Información procesada, manipulada o almacenada por el software.

Desarrollo y mantenimiento del software

El desarrollo de software implica varias etapas, empezando por el análisis de requisitos.

  1. En este paso, los ingenieros y desarrolladores de software recopilan información para intentar comprender para qué se utilizará el software, quién lo utilizará y qué funciones deben incluirse. Este paso determinará la arquitectura del software y qué lenguaje o lenguajes de programación se utilizarán para escribir el código fuente.

  2. Una vez escrito el código fuente, se somete a rigurosas pruebas para detectar errores lógicos y corregir fallos.

  3. Una vez superadas las pruebas, el software puede desplegarse para su uso.

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.

Preguntas frecuentes

¿Cuál es la definición simple de software?

¿Qué es un ejemplo de software?

¿Cuáles son los 3 tipos de software?

¿Qué es un sistema informático?

¿Cuál es la diferencia entre un software y un programa?

Temas relacionados

Margaret Rouse
Technology expert
Margaret Rouse
Experta en tecnología

Margaret Rouse es una galardonada escritora técnica y profesora conocida por su habilidad para explicar temas técnicos complejos a una audiencia de negocios no técnica. Durante los últimos veinte años, sus explicaciones han aparecido en sitios web de TechTarget y ha sido citada como autoridad en artículos del New York Times, Time Magazine, USA Today, ZDNet, PC Magazine y Discovery Magazine. La idea de diversión de Margaret es ayudar a profesionales de TI y negocios a aprender a hablar los idiomas altamente especializados de cada uno. Si tienes una sugerencia para una nueva definición o cómo mejorar una explicación técnica,…