Software: toda la información que necesitas conocer

El software es una pieza fundamental de la informática en nuestros días. Estés familiarizado con este concepto o no, se trata de algo tan complejo y variado que seguro que en este artículo puedes aprender mucho, acerca de sus tipos, cómo funciona y se desarrolla, y mucho más. Así que no dudes quedarte a leer. ¡Comenzamos!

Qué es el software

¿Qué es el software?

Hay mil maneras de definir el software, y una de las más sencillas es hablar de una colección de instrucciones y datos que le dicen a un ordenador qué tiene que hacer. Son los programas del ordenador, ni más ni menos, incluyendo además aplicaciones web y móviles, y básicamente cualquier otra cosa que entre dentro de esta definición.

El objetivo del software es desempeñar una determinada función cumpliendo una serie de requisitos, como pueden ser:

  • Mantenibilidad: facilidad para realizar cambios y mejoras.
  • Confiabilidad: capacidad de seguir funcionando correctamente.
  • Eficiencia: desperdiciar la menor cantidad de recursos de la máquina posible, usando solo los necesarios.
  • Usabilidad: permitir que las personas puedan usar el software con facilidad.

También podemos irnos a definiciones más sofisticadas del software, como la detallada en el libro Ingeniería del Software. Un Enfoque Práctico de Roger S. Pressman, que nos dice que el software es:

  1. Instrucciones de ordenador que, cuando se ejecutan, proporcionan la función y el comportamiento deseado.
  2. Estructuras de datos que facilitan a los programas manipular adecuadamente la información.
  3. Documentos que describen la operación y el uso de los programas.

Esta sería una definición más amplia, pues lo que entendemos intuitivamente por software sería solo el primer punto, mientras que los otros dos lo acompañan necesariamente.

Software y hardware

La diferencia entre el hardware y el software es evidente en el sentido de que son tangibles e intangibles, respectivamente, y de aquí podemos sacar una de las características del software más importantes, propuestas por Pressman: el software se desarrolla, no se fabrica.

Tampoco se «estropea», al no ser susceptible de los factores externos que llevan al hardware al estropearse, pero sí se deteriora si no se desarrolla adecuadamente, algo de lo que hablaremos luego (mantenimiento del software).

Tipos de software

Es realmente complicado clasificar algo tan amplio como el software, pero podemos intentarlo, haciéndolo en base a distintos criterios, como el tipo de usuarios al que se dirige o su manera de distribuirse. Veamos algunas clasificaciones importantes.

Según sus usos dirigidos

La clasificación del software más obvia es según a qué se dirija, siendo un ámbito tremendamente amplio.

Software de sistema

Este será el software pensado para controlar e interactuar con el hardware de la máquina, y que tendrá tan poca interacción con el usuario que podemos ignorar su existencia. A su vez, es absolutamente fundamental, pues sin él no podría funcionar el software de aplicación, que es el que nos interesa a los usuarios.

Núcleo linux

  • Sistema operativo. Es un software fundamental, sobre el que se ejecutarán todos los programas, ya que les proveerá una visión «amigable» y simplificada del ordenador, ya que será el sistema operativo y no los programas quien tenga que lidiar con la gestión de todos los recursos del sistema.
  • Procesadores de lenguajes. Son todos aquellos que consiguen traducir el código programado en un lenguaje concreto a un lenguaje más cercano a la máquina, como serían los compiladores.
  • Controladores y utilidades de dispositivos. No somos nadie sin los drivers o controladores, que son básicamente las piezas de software capaces de que el sistema operativo pueda interactuar con un periférico, esto es, una tarjeta gráfica, tarjeta de red, etc. Los sistemas operativos suelen traer drivers básicos e instalar los necesarios de forma automática, así que es un software que está más “en la sombra”, pero antes su instalación manual era absolutamente fundamental.

Aunque no tengan por qué estar a muy bajo nivel ni interactuar con el hardware, podemos añadir una parte más en esta clasificación:

  • Las piezas usadas para crear otros software, denominadas bibliotecas. Estas son piezas de código que de por sí no pueden ser aprovechadas por una persona normal, pero que usan los programadores para crear sus aplicaciones, porque proveen un conjunto de funcionalidade concretas ya implementado. Si estas no se usasen, los desarrolladores tendrían que estar “inventando la rueda” constantemente. Todo software normal usa un montón de bibliotecas.

Software de aplicación

Pasamos ahora a hablar del software que usamos, con el que interactuamos deliberadamente para obtener un resultado específico, más que para permitir que el equipo funcione.

  • Software de propósito general. Es todo aquel que se puede usar para una variedad de tareas y se orienta a un amplio rango de usuarios.
Algunos tipos de software de propósito general: procesadores de texto, hojas de cálculo, gestores de correo, navegadores web, bases de datos básicas, visores de PDF, software de presentaciones, software colaborativo, de mensajería, antivirus, etc.

  • Software especializado. En esta parte hablamos de programas que no se dirigen al gran público, sino a personas de sectores muy concretos. Es evidente que no a todo el mundo le interesa SolidWorks o AutoCAD, ni Adobe Premiere, porque están especializados para cierto propósito. La gran norma es que tenga un propósito especial y un conjunto de usuarios limitado.
Tipos de software especializado: CAD (diseño asistido por ordenador), diseño gráfico, médicos, científicos, financieros, videojuegos, etc…
  • Software a medida. También llamado, en inglés, bespoke software. Aquí el nivel de especialización llega hasta el punto de que se desarrolla para un único cliente, para cumplir de manera personalizada con exactamente todo lo que necesite. Pensemos, por ejemplo, en el software que se usaría para el control de una fábrica, del tráfico de una ciudad, etc.

Destacar también que se podría entender que el sistema operativo está dentro de esta clasificación, ya que interactuamos con él. Pero realmente estamos interactuando con su interfaz gráfica, y no con su núcleo, que es algo mucho más próximo al hardware que a nosotros.

Otros tipos

Se podría continuar esta clasificación hasta la saciedad, podríamos hablar por ejemplo de software embebido como el que está dentro del chip de una tarjeta de crédito o en un cajero, o entrar más en detalle en las clasificaciones anteriores. O de las redes neuronales, programas científicos «devoradores de números», middleware, etc.

Y es que, como decimos, absolutamente todo lo que sea tecnológico hoy en día cuenta con algún software. Podemos ir desde un mini-programa que escribe por pantalla “Hola Mundo” hasta los complejos y vitales sistemas que controlan un avión moderno.

En el artículo, para hacer ejemplos simples y entendibles nos estamos centrando en aplicaciones de escritorio de ordenador y aplicaciones web para hablar de software. Lo dejamos claro para evitar que se asocie únicamente al software con un programa de un ordenador.

Según su plataforma

Esta es una clasificación bastante evidente, aunque podemos encontrar muchos tipos distintos. Como decimos, el software está en todo tipo de dispositivos, pero nos vamos a quedar solo con los tipos de plataformas que «se nos quedan cerca» a los usuarios:

  • Aplicaciones de escritorio, que funcionan en sistemas operativos de ordenador como macOS, Windows o bajo sistemas Linux.
  • Apps de móvil, que funcionan en sistemas como Android o iOS.
  • Aplicaciones web, que ejecutamos online y que podemos ejecutar (normalmente) desde cualquier plataforma. Corren sobre sus servidores, de los que quienes las usamos no sabemos nada.

Dentro de cada categoría, o incluso entre varias, podemos hablar de software multiplataforma para todo aquel que puede ejecutarse en distintos sistemas operativos. Podríamos continuar la clasificación hablando de aspectos como el software usado en el internet de las cosas, pero en este caso lo dejaremos así.

Según su forma de distribución / licencia / modelo de negocio

Un aspecto muy importante por el que podemos clasificar es la manera de distribuirse del software, relacionada con el tipo de licencia que tiene, pues puede dar más o menos poder a los usuarios, y el modelo de negocio de la compañía que lo desarrolla. En muchos casos se obtendrán ingresos directamente con la venta del producto, en otros se buscará por otras vías.

No vamos a entrar a detallar los distintos tipos de licencia de software, ya que hay muchas opciones distintas, pero sí en una de las clasificaciones más comunes de software que se suelen hacer: freeware, freemium, shareware y adicionalmente SaaS.

Freeware

Comprende todo programa que está disponible de manera gratuita, de forma que cualquiera puede utilizarlo, pero viene acompañado de una licencia que impide modificar su estructura o su código.

Hay ejemplos muy buenos de freeware como buena parte de las aplicaciones de mensajería que usamos en el día a día (WhatsApp) o navegadores como Opera.

Freemium

Spotify PremiumEste tipo de software es quizás el más común a día de hoy en todas las plataformas. Básicamente consiste en proveer una parte freeware, de forma que tenemos una serie de funcionalidades que podemos usar de forma totalmente gratuita, y otra parte que es de pago, requiriendo generalmente el pago de una suscripción.

Así, se nos atrae a usar el programa proporcionando funcionalidades gratuitas, pero en cuanto queramos expandir el uso hasta ciertas otras tendremos que pagar, de ahí viene el beneficio de ese tipo de aplicaciones.

Hay todo tipo de ejemplos de software freemium, como podría ser Spotify, pues dependiendo de si paguemos o no tendremos más o menos funcionalidades en sus distintas aplicaciones.

Shareware

Realmente, se suele considerar al freemium como un tipo de shareware, pero vamos a indicarlos por separado. En este caso hablamos de programas que se proporcionan de forma gratuita solo durante un período de prueba determinado, para que así los usuarios puedan probarlo, y decidir a posteriori si comprarlo o no.

La gran diferencia con el modelo freemium es que en este último el período de uso es ilimitado, pero simplemente tendremos acceso a un conjunto de características bastante inferior. En todo caso, este es también un modelo muy empleado, por ejemplo en la suite de programas de Adobe.

Otras variantes del shareware son:

  • Cripleware. Sería una especie de modelo freemium especialmente restrictivo, porque entre esas funcionalidades de pago se encuentran algunas que son esenciales, como por ejemplo guardar un fichero generado con el programa, o incorporar marcas de agua muy molestas.
  • Donationware. En este caso, también es un tipo de freeware, puesto que estos programas no obligan a hacer ningún pago para disfrutar de todas las funcionalidades, pero sí piden donaciones de manera activa.
  • Nagware. El perfecto ejemplo de esta forma de shareware es WinRAR: se nos deja acceso total a todo el programa de manera gratuita, pero cada vez que lo abrimos y de manera insistente se nos pide que paguemos por el software. En el ejemplo que damos, siempre que lo abramos recibiremos un aviso de que debemos pagar el programa.

De código abierto o software libre

Vamos ahora con uno de los tipos de software más populares y positivos para los usuarios y desarrolladores, como es el software de código abierto, también denominado OSS (abreviatura de open source software).

Este tipo de programas no solo son gratuitos, sino que además el desarrollador hace público su código fuente, algo que generalmente se acompaña de una licencia altamente permisiva que da la potestad a cualquiera de cambiarlo a su gusto, e incluso en muchos casos aceptar contribuciones de los usuarios. Así es cómo se consigue, por ejemplo, cualquier sistema basado en Linux, lleno de pequeñas piezas creadas por miles de personas.

Cualquiera puede encontrar el código fuente del kernel de Linux en sitios como su repositorio de GitHub.

Con código fuente nos referimos a todos los ficheros en los que están las líneas de programación que hacen posible que el programa funcione, por lo que todo su desarrollo está expuesto.

Entre los ejemplos más importantes de software de código abierto, que la mayoría de nosotros usamos, están:

  • Sistemas operativos como Android o el núcleo Linux (que usa Android y otros SO GNU/Linux).
  • Programas de ordenador básicos como Firefox, Google Chromium (en el que se basan Chrome y Edge), LibreOffice o 7-zip, avanzados como Blender
  • Servicios web y software gestores de contenido como WordPress (gracias al que funcionan esta web y decenas de millones más).

Pero sobre todo hay que tener en cuenta una cosa: casi todo el software que usamos hace uso de bibliotecas (os hablaremos de ellas) de código abierto. Es decir, que aunque sea privativo usa partes de terceros que son de código abierto, o incluso hace públicas algunas, como es común en grandes empresas como Google y Facebook. El software libre es fundamental para entender el mundo tal y como lo conocemos.

Hay que tener en cuenta que los términos de software de código abierto y software libre no son totalmente intercambiables, ya que se pueden diferenciar en su filosofía. Es algo que depende mucho de a quién preguntes y de cómo de rigurosos queramos ser. Conceptualmente, hablar de “código abierto” no tiene por qué implicar que esté permitida su redistribución, mientras que cuando hablamos de “software libre” sí lo incluimos.

En todo caso, hemos tratado por igual al software libre y al de código abierto en esta definición porque nos ha parecido lo más razonable, y porque en la mayoría de casos son perfectamente intercambiables.

El Software como Servicio, Software as a Service o SaaS

SaaSQueremos recoger de manera totalmente separada un tipo de software que está emergiendo últimamente con fuerza: el SaaS, o Software as a Service. Esto es un modelo de distribución y licenciado de software, por lo que debería formar parte de la anterior clasificación, pero tiene una gran importancia por sí solo al relacionarse con la computación en la nube.

Este modelo comprende un software basado en suscripciones pero de una manera muy peculiar: cuando un usuario obtiene una suscripción, no se le proporciona el software para que lo instale en su ordenador, sino que se le permite acceder a él a través de la nube, pues este estará siempre en los servidores de la empresa desarrolladora, incluidos los datos usados por el cliente.

Así, se consiguen importantes ventajas, como es no depender del hardware del usuario para funcionar, ya que tan solo requiere un navegador web, lo que puede reducir la inversión en ordenadores de las empresas (lo mismo ocurre para el almacenamiento, que queda en la nube).

Por la banda de sus desventajas, sin duda encontramos la dependencia del acceso a internet, pues si nos falla no podremos acceder a las aplicaciones, y lo mismo si hay algún tipo de problema de red o de hardware del lado del desarrollador. Aquí no queda otra que confiar en tener un % de disponibilidad alto, con una infraestructura robusta por ambas partes. También nos hace depender del desarrollador en el sentido de que no poseemos el software, sino el derecho de usarlo, y si esa compañía cierra de repente o es hackeada nos podemos quedar sin nada.

En todo caso, todos usamos el SaaS hoy en día, pues también puede ser gratuito, como es el caso de Google Drive y su suite de ofimática. Por la banda empresarial hay SaaS por todas partes, solo hay que ver (por ejemplo) el catálogo de Attlasian.

Así funciona el software: la programación

Que un software funcione se explica gracias a la programación. Vamos a intentar dar una explicación simplificada y fácil de entender.

Se trata básicamente de decirle al ordenador qué es lo que debe hacer, en base a qué instrucciones, algoritmos y procedimientos. Para ello se emplea un lenguaje de programación, que nos permitirá básicamente dar estas órdenes usando palabras y símbolos en base a una sintaxis concreta, sin la necesidad de definir estas órdenes directamente en código binario, que es lo que la máquina puede entender.

ProgramaciónVeamos un ejemplo de un programa escrito en el lenguaje C con apenas unas pocas líneas de código:

#include <stdio.h>

int main()
{
int numero;

printf("Introduce un número: ");
scanf("%d", &numero);
printf("Has introducido el número %d\n", numero);

return 0;
}

Primero indicamos que queremos incluir la biblioteca stdio. Esta contiene funciones básicas para interactuar con el sistema operativo y el usuario. Luego, entramos en la sección principal del programa, que se acota por esos corchetes { }.

Ahí, se define una variable, de la que tenemos que especificar de qué tipo será. En este caso un número entero. En las variables es donde almacenamos los números, cadenas de caracteres y demás con los que estaremos trabajando y operando. Ahora, siempre que hagamos una referencia a “numero”, se referirá a esa variable.

La función printf forma parte de la biblioteca que hemos incluido, y muestra un mensaje por pantalla. Por otro lado, scanf (también parte de stdio) recoge lo que el usuario escriba en la consola. Hacemos que lo que este escriba se guarde en la variable numero, cuyo valor recogido imprimiremos en ese último printf. Finalmente, “retornamos”, saliendo de la función principal (y por tanto del programa) con un código 0, que significa “con éxito”.

Como pretendemos dar una introducción extremadamente superficial a la programación, es posible que no hayas entendido qué supone todo lo usado en el código de arriba, como las variables. Pero si es un tema que te interesa, no te preocupes porque no es nada difícil, e intenta olvidarte de lo hostil que puede parecer al principio. Con interés y un poco de esfuerzo, enseguida lo entenderás.

Lenguajes de programación más importantes

Hay una infinidad de lenguajes de programación y de maneras de clasificarlos. Por ejemplo, por su paradigma, algo que tiene que ver con su filosofía y fundamento de funcionamiento, como es la programación orientada a objetos. También por su nivel de abstracción, donde distinguimos:

  • Lenguajes de bajo nivel, que se acercan más a la forma de ejecutar de las máquinas, y por lo tanto son menos amigables para un humano.
  • Lenguajes de alto nivel, cuya sintaxis los aleja de cómo trabaja internamente la máquina pero los hacen muchísimo más sencillos de entender para una persona, por lo que son más usados y prácticos.

En el bajo nivel encontramos el lenguaje ensamblador, que depende de la arquitectura del ordenador, mientras que en el alto nivel seguramente hayas oído hablar de muchos de ellos como son Java, Python, PHP, JavaScript, C# y más. También los fundamentalísimos C y C++, que algunos consideran de “nivel medio”.

¿Cómo interactúan los lenguajes de programación y el software con el hardware?

La manera en que se pasa de las sentencias escritas por el programador a acciones realizadas por el hardware depende de muchos factores. Entre ellos, obviamente, el lenguaje de programación de origen. Pero vamos a dar un caso genérico, correspondiente a un programa normal que es compilado, es decir, traducido a código ejecutable.

Ejemplo de cómo funciona el software

Para que se pueda pasar de las líneas de código a la “acción” por parte del procesador, es necesario traducirlas a un lenguaje ensamblador, más cercano a lo que entiende la máquina debido a que cada una de sus líneas será una instrucción del procesador, que luego se puede pasar al código binario que, ahora sí, la CPU es capaz de procesar y ejecutar, a base de separar las distintas partes de ese código binario, identificando el tipo de instrucción y sus operandos.

Además de esto, también hay que tener en cuenta otras interacciones con el hardware que vienen dadas gracias a las gestiones realizadas por el propio sistema operativo, que se pueden solicitar desde el programa mediante llamadas al sistema (syscalls).

¿Quién puede programar? ¿Hace falta una titulación?

Para mucha gente, dedicarse a programar o a desarrollar software es una magia que solo unos pocos son capaces de hacer. Sin embargo, esto no es cierto. Programar no requiere ser el mejor del mundo en matemáticas o pensamiento lógico. Son obviamente facultades muy importantes (sobre todo esta última), pero está al alcance de mucha más gente de lo que parece.

Distribución universidades españolasPor la banda de las titulaciones, hay muchísimas posibilidades. Por ejemplo, en España hay diversos tipos de ingenierías (Informática, de Software, etc), ciclos de FP (sobre todo los superiores de Desarrollo de Aplicaciones Web o DAW y Desarrollo de Aplicaciones Multiplataforma o DAM) y demás que tienen una fuerte componente de programación.

Está muy bien que quien quiera ser programador/a estudie algo relacionado con ello, pero no es estrictamente necesario, a diferencia de otras muchas profesiones. En cualquier empresa dedicada al software habrá programadores con todo tipo de titulaciones. Lo importante es formarse adecuadamente, y de hecho con los estudios de una titulación seguramente no sea suficiente.

Sin duda, lo mejor para intentar entrar en ese mundo es partir de un aprendizaje relativamente autónomo, pues será una habilidad necesaria en toda tu vida profesional. Hay muchas academias y cursos, tanto gratuitos como de pago, con los que dar los primeros pasos. Piensa en pequeños proyectos que te interesen o te solucionen algún problema, y enfréntate a ellos.

Programación de softwareSi tienes ambición y ganas, ni siquiera es estrictamente necesario que tengas una gran experiencia usando ordenadores. En resumen, hay gente de todo tipo trabajando como programadores: ya sea por titulaciones, aspectos socioeconómicos, experiencia en informática, etc. La programación no es cosa de “4 frikis” como pueden pensar algunos.

Finalmente, respecto a las expectativas económicas de dedicarse a esto, deberías tener cuidado con tus pretensiones. Si te quieres dedicar a programar solamente porque crees que “ganarás mucho dinero”, y no por interés y afición, entonces olvídate de ello. Los salarios varían mucho respecto a la posición y el país, así que no está 100% asegurado que tengas acceso a posiciones muy bien pagadas. Al menos en este caso, centrarse en el dinero no es la clave para conseguirlo.

Fases de construcción del software

Diseño de softwareEstá claro que el software no se construye simplemente a base de programar, ¿no? Y es que una idea no sale de la nada, sino que hay que pensarla primero, ni podemos lanzarnos a desarrollar el código sin una cierta planificación definida. Para más, debemos ser capaces de arreglar todos los problemas y bugs que, con casi total seguridad, se encontrarán luego de que un programa se despliegue al público. Y no nos olvidemos de mejoras constantes para mantener a los usuarios con nosotros.

Hay un montón de conceptos, procesos y maneras de trabajar asociadas a esto. Pero vamos a dar una clasificación bastante sencilla de entender, la del proceso de construcción del software detallado en Ingeniería del Software. Un Enfoque Práctico de Roger S. Pressman.

Definición: ¿Qué vamos a hacer?

Proceso de desarrollo de software basado en iteraciones
Proceso de desarrollo de software basado en iteraciones. Se realizaría una planificación así en la primera fase.

En esta primera fase, debemos definir qué vamos a hacer, es decir, cuál va a ser el problema que vamos a intentar suplir y solucionar, y una vez conseguido empezaremos a pensar en la funcionalidad y rendimiento esperados, además de qué SO y hardware usaremos en esta tarea. La fase comprende un análisis del sistema, de requisitos del software, y una planificación de las tareas que se llevarán a cabo en el proyecto.

Si estuviésemos realizando un trabajo para un cliente concreto, que nos pide que le desarrollemos un software, tendríamos que realizar esta fase en conjunto con el cliente.

Desarrollo: ¿Cómo lo vamos a hacer?

En esta fase respondemos a la pregunta de cómo vamos a implementar el software, entrando ya a un nivel de gran detalle, que comprende los siguientes puntos:

Programación software

  • Diseño y modelado del software. Aquí se hace uso de estándares como UML (Unified Modeling Language). Se crean distintos tipos de diagramas en los que se representan las distintas partes del software, y cómo interactúan entre ellas. Se plantea cómo trasladar el diseño a un lenguaje de programación.
  • Codificación. Por fin, podemos empezar a programar el software, ya con las cosas claras, puesto que una programación sin rumbo puede tener resultados nefastos en programas que sean mínimamente complejos.
  • Antes de publicar el software para su uso por el público o por los clientes del desarrollador, se hacen todas las pruebas posibles para confirmar que el programa está preparado para ello. Si no se le da importancia a esto, vendrán los problemas.

Mantenimiento

Actualizacion softwareSe trata de una última fase que se extiende a toda la vida restante del software, y se centra básicamente en hacer lo necesario para mantenerlo en funcionamiento y darle todas las mejoras posibles, distinguiendo 4 actividades:

  • Adaptación. El contexto sobre el que se ejecuta el software puede cambiar de manera importante. Pensemos en una web cuya base de usuarios crece demasiado, y hay que optimizar los accesos a la base de datos para no saturar el servidor. O, en un caso más realista, en todos los desarrolladores que han adaptado sus programas de macOS para soportar los chips propios de Apple.
  • Corrección. Cuando se detecta o reporta un error o ‘bug’, hay que lanzar una nueva versión que lo corrija.
  • Sin características nuevas, los usuarios se cansarán de este software. Hay que incorporar constantemente mejoras que lo hagan más útil e interesante.
  • Prevención. No tiene sentido estar esperando a que los errores aparezcan. Debemos ser ambiciosos en prevenir que estos ocurran, y ver dónde hay un potencial de fallo importante.

También es muy importante optimizar todos los programas en general, algo que se enmarcaría entre la parte de “adaptación” y la de “mejora”. Dos de los mayores ejes de optimización son los accesos a datos, que si se hacen fuera de la memoria caché del procesador pueden ser muy costosos, y la paralelización. Actualmente todos los procesadores tienen más de un núcleo, pero no todo software es capaz de aprovecharlo.

Eso sí, no todos los programas tienen la misma necesidad de optimización. Si un reproductor de música simple no optimiza la manera en que almacena una lista de canciones, no pasa nada. En cambio, si un juego no está bien optimizado, será todo un sufrimiento para quien tenga un equipo modesto.

Software específico para testear hardware

En Profesional Review, somos una web principalmente dedicada al hardware, así que para nosotros hay ciertos tipos de software que son fundamentales: estamos hablando de:

se

  • Software de monitorización. El que usamos para ver parámetros eléctricos, términos o de funcionamiento de los componentes del sistema, para ver si todo va bien.
  • Estos son programas basados en aplicar una carga de trabajo determinada al equipo, normalmente bastante intensiva, con el objetivo de estresar los recursos del ordenador (de un componente o grupo de componentes) y comparar el rendimiento con otros equipos. Así, se puede conocer el rendimiento de un nuevo procesador, tarjeta gráfica o SSD, por ejemplo.
  • Otros software de testeo. Como por ejemplo los que empleamos para probar las características de una pantalla (DisplayCAL, HCFR…)

Dentro del grupo del software de monitorización, quizás el más importante sea HWinfo64, al ser líder en cuanto a compatibilidades y funcionalidades, y totalmente gratuito. Dentro de los benchmarks, todo depende de qué componentes queremos testar:

Furmark donut

  • CPU: entre los programas más usados encontramos Linpack Xtreme y Prime95, que consiguen estresar el procesador de manera extrema, haciendo que gaste toda la energía posible. No nos olvidemos de otro clásico, que es Cinebench, que hace una prueba más realista.
  • Tarjeta gráfica: aquí hay una importante distinción entre pruebas destinadas a replicar un juego altamente demandante, como es el caso de 3DMark y Unigine Superposition, o las que son más severas y orientadas a poner más contra las cuerdas al núcleo de la gráfica, como FurMark.
  • Discos duros: hay un montón de programas destinados a medir las velocidades de transferencia, tiempos de acceso, IOPS y otros parámetros. Entre ellos están CrystalDiskMark, ATTO Disk Benchmark, Anvil’s Storage, etc.
  • Suites con benchmarks muy específicos como es el caso de AIDA64 o SiSoft Sandra.

También podemos hablar de programas muy especiales para explicar la relación entre el software y el hardware, como son las suite de profiling, como Intel VTune Amplifier, que son de lo más avanzado que pueden encontrar los desarrolladores para analizar cómo interactúa su programa con CPU, GPU y memorias, a un nivel muy bajo y detallado. Así, la optimización de la que hablábamos se vuelve mucho más posible.

Palabras finales sobre el software

En este artículo nos hemos dedicado a analizar a fondo qué es el software, esto es, la colección de instrucciones y datos que le dicen a un ordenador qué debe hacer, para desempeñar una función concreta.

Está claro que se nos han quedado un montón de cosas en el tintero, pero es normal: el software es sin duda uno de los grandes motores del mundo en el que vivimos, por lo que escribir un artículo dando una visión general del mismo es algo realmente complicado. Si consideras que hay una información que sea una “gran ausente” en este artículo, no dudes en compartirlo con nosotros en los comentarios, ya que es un tema apasionante.

Os recomendamos los siguientes tutoriales sobre software:

Aquí finaliza nuestro repaso sobre el software, no dudes dejarnos tus comentarios para dar tu opinión, y consultar todas las guías y tutoriales que te enlazamos arriba. ¡Gracias por leernos!

Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected]
Botón volver arriba