Tipos de Software, Desarrollo y Pruebas: Guía Completa
El Software de Sistema (sistema operativo) es el que permite que el hardware funcione. Lo forman los programas que permiten la administración de la parte física o los recursos del ordenador, y es el que interactúa entre el usuario y los componentes hardware del ordenador. Ejemplos de esto son los sistemas operativos, los controladores de dispositivos, etc.
El software de programación es el conjunto de herramientas que nos permiten desarrollar programas informáticos. Proporciona al programador herramientas para ayudarle a escribir programas informáticos y a usar diferentes lenguajes de programación de forma práctica.
Software de aplicación (aplicaciones informáticas) son un conjunto de programas que tienen una finalidad más o menos concreta. Son ejemplos de aplicaciones: un procesador de textos.
Software Libre y Propietario
El software libre es aquel en el cual el autor cede una serie de libertades básicas al usuario, en el marco de una licencia, que establece las siguientes libertades:
- Libertad de estudiar cómo funciona el programa y de adaptar su código a necesidades específicas: para ello, como condición previa, es necesario poder acceder al código fuente.
- Libertad de distribuir copias a otros usuarios (con o sin modificaciones).
- Libertad de mejorar el programa (ampliarlo, añadir funciones) y hacer públicas y distribuir al público las modificaciones; para ello, como condición previa, es necesario poder acceder al código fuente).
El software propietario es aquel que, habitualmente se distribuye en formato binario, sin posibilidad de acceso al código fuente según una licencia en la cual el propietario, por regla general, prohíbe alguna (o todas) de las siguientes posibilidades: la redistribución, modificación, copia, uso en varias máquinas simultáneamente, transferencia de titularidad, difusión de fallos y errores que se pudiesen descubrir en el programa, entre otras.
Fases de Desarrollo y Ejecución del Software
Análisis de Requisitos
Se especifican los requisitos funcionales y no funcionales del sistema.
Diseño
Se divide el sistema en partes y se determina la función de cada una.
Codificación
Se elige un Lenguaje de Programación y se codifican los programas.
Pruebas
Se prueban los programas para detectar errores y se depuran.
Documentación
De todas las etapas, se documenta y guarda toda información.
Explotación
Instalamos, configuramos y probamos la aplicación en los equipos del cliente.
Mantenimiento
Se mantiene el contacto con el cliente para actualizar y modificar la aplicación en el futuro.
Los tipos de cambios que hacen necesario el mantenimiento del software son los siguientes:
- Perfectivos: Para mejorar la funcionalidad del software.
- Evolutivos: El cliente tendrá en el futuro nuevas necesidades. Por tanto, serán necesarias modificaciones, expansiones o eliminaciones de código.
- Adaptativos: Modificaciones, actualizaciones… para adaptarse a las nuevas tendencias del mercado, a nuevos componentes hardware, etc.
- Correctivos: La aplicación tendrá errores en el futuro (sería utópico pensar lo contrario).
Tipos de Pruebas de Software
Un caso de prueba es un conjunto de entradas, condiciones de ejecución y resultados esperados, desarrollado para conseguir un objetivo particular o condición de prueba.
Prueba de la Caja Negra (Black Box Testing)
Se centran en validar los requisitos funcionales sin fijarse en el funcionamiento interno del programa (necesitan saber la funcionalidad que el código ha de proporcionar). Aquí lo fundamental es comprobar que los resultados de la ejecución de la aplicación, son los esperados, en función de las entradas que recibe.
Prueba de la Caja Blanca (White Box Testing)
Se centra en validar la estructura interna del programa (necesita conocer).
Pruebas Caja Negra: Errores a Evitar
- Funcionalidades incorrectas o ausentes.
- Errores de interfaz.
- Errores en estructuras de datos o en accesos a bases de datos externas.
- Errores de rendimiento.
- Errores de inicialización y finalización.
Pruebas Estructurales
- Cobertura de sentencias
- Cobertura de decisiones
- Cobertura de condiciones
- Cobertura de condiciones y decisiones
- Cobertura de caminos
- Cobertura del camino de prueba
Pruebas Funcionales
Particiones Equivalentes
La idea de este tipo de pruebas funcionales, es considerar el menor número posible de casos de pruebas, para ello, cada caso de prueba tiene que abarcar el mayor número posible de entradas diferentes.
Análisis de Valores Límite
En este caso, a la hora de implementar un caso de prueba, se van a elegir como valores de entrada, aquellos que se encuentran en el límite de las clases de equivalencia.
Pruebas Aleatorias
Consiste en generar entradas aleatorias para la aplicación que hay que probar. Se suelen utilizar generadores de prueba, que son capaces de crear un volumen de casos de prueba al azar, con los que será alimentada la aplicación.