¿Qué es un Software?

Para que un ordenador, teléfono inteligente u otro dispositivo digital funciones es necesario contar con varios elementos. Dentro de estos elementos tenemos los componentes físicos o de hardware del dispositivo. Estos son los procesadores, pantalla, teclados y muchos más. Ahora bien, algo tiene que indicarle a estos dispositivos cómo deben funcionar o qué operaciones realizar. Este es el otro componente fundamental de estos dispositivos y es conocido como software. Existen muchos tipos de software con muchísimas funcionalidades. Si quieres conocer qué es un software te invito a que continúes leyendo.

Tabla de contenidos


Definición de software

En el año 1957, John W. Tukey fue el primero en usar el término software para referirse al soporte lógico de un sistema computacional.

Existen muchas maneras de definir qué es un software, no obstante, el estándar IEEE 729 lo define como “el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de las operaciones de un sistema de computación”.

Siguiendo esta definición, la conceptualización del software es algo más que un código fuente, binario o ejecutable. Es decir, la documentación, los datos, además de la información de usuario también forman parte del software. Esta parte de los sistemas de cómputos agrupan todo lo intangible, es decir, todo lo que no sea físico dentro del propio sistema.

La rama de la ciencia computacional que se encarga de estudiar y diseñar los procesos de construcción de software se conoce como Ingeniería de Software. Dentro de la ingeniería de software, este se define como toda información procesada por un sistema informático, es decir, el programa y los datos como un todo.

Todo software tiene una base teórica definida en el ensayo “Los números computables” de Alan Turing publicada en 1936. El control de las operaciones mediante la lectura de instrucciones almacenadas en memorias, fue introducido por Charles Babbage en el diseño de su máquina diferencial.

Clasificaciones de softwares

Realmente es muy difícil y engorroso establecer una clasificación de softwares. No obstante, para fines prácticos estos pueden ser agrupados en tres tipos diferentes: softwares de sistema, programación y aplicación.

Sistema

El objetivo del software de sistema es de hacer que el procesamiento interno sea totalmente transparente para el usuario. Este tipo de software controla la comunicación y ejecución de tareas por los dispositivos físicos. Este software provee al programador y al usuario interfaces de alto nivel, herramientas, controladores y diversas utilidades. Todo esto con la finalidad de tener un control global de todo el sistema computacional. Los softwares más comunes de sistema incluyen:

  • Los sistemas operativos.
  • Controladores de dispositivos.
  • Herramientas para diagnósticos.
  • Utilidades de optimización y corrección.
  • Servidores.
Sistema operativo Windows 7.

Programación

Estos softwares son herramientas que permiten el desarrollo de otros softwares. Son utilizadas por personal calificado dentro de este campo conocidos como programadores. Existen muchas herramientas de este tipo que emplean codificaciones en diferentes lenguajes de programación. Estos softwares están compuestos, generalmente por:

  • Un editor de texto utilizado para escribir las sentencias en un lenguaje de programación específico.
  • Compilador encargado de traducir al sistema informático el lenguaje propio de la herramienta a un lenguaje de bajo nivel que sea comprendido por el sistema.
  • Intérprete el cual se encarga de analizar y traducir el código a otros lenguajes a en la medida que sea necesario. No guardan el resultado de la ejecución de una instrucción.
  • Enlazador encargado de generar un archivo necesario a partir del código, bibliotecas y demás dependencias generadas o utilidades durante el proceso de desarrollo.
  • Depurador para analizar y probar el código en busca de errores.

Todas estas herramientas generalmente están unificadas en un entorno de desarrollo integrado IDE. Estos ofrecen interfaces visuales y funciones optimizadas para brindar facilidades durante el proceso de creación de software.

 entorno de desarrollo integrado de software Visual Studio.
IDE Visual Studio.

Aplicación

Un software de aplicación permite al usuario llevar a cabo tareas en contextos automatizados. Puede ser cualquier herramienta de gestión, edición o control que ejecute una tarea específica. Se orientan especialmente en el campo de los negocios. Dentro de estas tenemos:

  • Control de otros sistemas automáticos.
  • Software ofimático (Office Word, Libre Office, etc…)
  • Aplicaciones educativas.
  • Aplicaciones empresariales.
  • Sistemas de base de datos.
  • Aplicaciones para telecomunicaciones.
  • Videojuegos.
Software de aplicación explorador de archivos Ubuntu.
Software de aplicación.

Creación del software

El proceso de creación de un software está regido por diversas metodologías de desarrollo. Cada una tiene sus propias características y genera diferentes componentes durante el ciclo de vida del software llamados artefactos.

La elección de cada metodología depende de muchos factores. En especial se tiene en cuenta la envergadura de la aplicación, el tiempo disponible, el soporte futuro, el equipo de trabajos entre otros. Hay mecanismo ágiles para proyectos de corta duración, como XP, así como metodologías de grandes volúmenes de artefactos y largos tiempos de desarrollo como RUP.

Existen pasos comunes que generalmente implementa todas las metodologías. Cada uno de estos pasos tiene subprocesos adicionales de acuerdo al nivel de complejidad del software.

Paso 1: Análisis de requisitos

Este es uno de los pasos más importantes del desarrollo de software. En ese momento es cuando se define exactamente que se quiere crear. Durante esta fase se está en constante intercambio con el cliente, explicando y asimilando información para definir la mejor manera de implementar el software.

De acuerdo al modelo de desarrollo tomado, el análisis puede realizarse al comienzo del desarrollo o irse modificando y retroalimentando durante todo el proceso. Aquí se especifican todas las características funcionales y no funcionales del producto. Es una manera de indicar a los programadores cuales son las pautas a seguir y cómo debe ser modelado el software.

Paso 2: Diseño

Esta es otra fase del ciclo de vida del software. En este momento se debe definir cómo se cumplir los requisitos extraídos de la fase de análisis. Es decir, que estructura deberá tener el software para que los requisitos del cliente sean cumplidos.

Durante esta fase aún no se ha escrito ningún código. Se pueden diseñar prototipos de interfaces gráficas y esquemas de relaciones entre clases y subsistemas.

También se define la arquitectura del software. Esta no es más que la jerarquía de módulos del software y las relaciones entre estos. Por ejemplo, una arquitectura orientada a servicios (SOAP, Rest) es un software que consulta módulos de ejecución en un servidor y espera una respuesta de estos. Esto trae la ventaja que cualquier interfaz puede hacer uso de estos servicios en futuras versione u otros software sin necesidad de cambiar el procesamiento o lógica del negocio.

Arquitectura de software orientada a servicios SOAP.
Arquitectura SOAP.

En el proceso final de esta fase se crean descripciones detalladas del sistema. Estas descripciones están bastante cerca del proceso de codificación.

Paso 3: Codificación del software

Esta es la etapa conocida comúnmente como la programación del sistema. Aquí es donde se escribe e implementa el código que permitirá ejecutar las funcionalidades que respondan a los requisitos del cliente.

De conjunto al proceso de programación se realizan depuraciones del código para eliminar posibles errores de semántica y sintaxis.

Es posible que el código adopte diferentes estados durante esta etapa, estos son:

  • Código fuente, el cual es el código base escrito por el programador, del software y el que sostiene toda la estructura del mismo. Aquí se escriben las instrucciones del sistema en un lenguaje de programación determinado, siendo dividido en paquetes, bibliotecas, módulos, etc.
  • Código objeto, el cual resulta del proceso de compilado del código fuente. Este código no puede ser ejecutado, siendo un intermediario entre el código fuente y el ejecutable. Si el lenguaje usado trabaja en modo de intérprete puro, el código objeto no es generado. Por el contrario, el compilador se encarga de ejecutar directamente cada línea de código.
  • Código ejecutable, que no es más que el código binario que resulta de unir los fragmentos de código objeto con las rutinas y bibliotecas que sea necesarias. Este código genera uno o varios ficheros binarios que luego el sistema operativo carga en la memoria RAM para su ejecución directa. Este código comúnmente nombrado como código de máquina, ya que es completamente inteligible por el ordenador.

Paso 4: Pruebas de software

El periodo de pruebas está orientado a encontrar errores de programación y lógica de negocio que hayan sido introducido durante la fase de desarrollo. Estas pueden ser divididas en os grupos fundamentales:

  • Unitarias, las cuales prueban pequeñas porciones independientes del software y con funcionalidades específicas.
  • Integración, las cuales se encargan de testear el funcionamiento del software como un todo.

Para efectuar las pruebas es necesario contar con un juego de datos real o ficticio del negocio. Una vez se han obtenido los datos, se procede a elaborar los casos de pruebas que intentaran hacer fallar el sistema o comprobar su correcto funcionamiento.

El ultima paso del proceso de pruebas es el conocido como “Beta Test”. Para realizar esta prueba, el software es desplegado y liberado al uso de clientes, los cuales pueden captar errores y notificarlos para que sean solucionados.

Paso 5: Producción

El proceso de producción consiste en desplegar el software en el entorno del cliente y dejarlo a punto para su uso.  Aquí ocurren los procesos de capacitación a los usuarios, entrega de manuales de ejecución e instalación, y por supuesto, el cobro por el producto final.

Paso 6: Soporte y mantenimiento

Este paso es opcional y puede ser requerido por el cliente. Este proceso se negocia entre los desarrolladores y el cliente para establecerlo en un periodo determinado de tiempo.

Durante este periodo, los desarrolladores deben realizar tareas de mantenimiento al software. Estas tareas pueden ser mejoras de rendimiento y optimización o corrección de bugs encontrados durante la ejecución.

Además, el cliente puede incluir requisitos funcionales nuevos que deban ser implementados y agregados a la herramienta.

Conclusiones

Los softwares cuentan con procesos evolutivos de acuerdo a su uso y aceptación por el cliente. Estos softwares generan versiones con nuevas funcionalidades a partir de la demanda de nuevos requisitos. Cuando se cumple el ciclo de vida de un software este no se usa con la misma intensidad o no se requiere más. Cuando esto ocurre se deja de brindar soporte al sistema y es imposible enconar nuevas versiones. Es común que los usuarios migren hacia herramientas que realicen las mismas tareas y cuenten con versiones actualizadas y soporte activo.