Inicio Análisis, desarrollo y prueba de aplicaciones
Artículo
Cancelar

Análisis, desarrollo y prueba de aplicaciones

1. Introducción

La creación de un programa informático es un proceso ordenado que ha de realizarse de modo secuencial. Desde el programa más sencillo, con pocas instrucciones, hasta la programación de grandes aplicaciones que contienen miles de líneas de instrucciones, se han de seguir una serie de pasos, que constituyen las etapas del desarrollo de software:

  1. Análisis (de requisitos).
  2. Diseño del algoritmo.
  3. Implementación o codificación.
  4. Pruebas.
  5. Documentación.
  6. Mantenimiento.

En el el apartado Etapas del desarrollo de software del artículo Iniciación a la programación están explicadas las fases de desarrollo del software en más detalle.

Teniendo en cuenta las anteriores etapas del desarrollo existen diferentes maneras de organizar estas fases:

  • Modelo de cascada
  • Modelo de espiral
  • Desarrollo iterativo e incremental
  • Desarrollo ágil

1.1. Modelo de cascada

El modelo de cascada define las etapas que deben cumplirse de forma sucesiva como se ve en el siguiente diagrama.

flowchart LR
A(Análisis) --> B(Diseño)
B(Diseño) --> C(Implementación)
C(Implementación) --> D(Pruebas)
D(Pruebas) --> E(Documentación)
E(Documentación) --> F(Mantenimiento)

1.2. Crisis del software

Entre 1960 y 1990 ocurre lo que se denomina la crisis del software en la que ocurrieron casos como los siguientes:

  • Accidente de un F-18 (1986) por no poner un else en el if&else.
  • Muertes por el Therac-25 (1985-1987): El Therac-25 fue una máquina de radioterapia.
  • Sobrecosto, retraso y cancelación en el sistema del Bank of America (1988). 23 millones de $ + 60 millones de $ de sobrecoste.

Debido a esto surgieron nuevos modelos de desarrollo de software.

1.3. Modelo de cascada con retroalimentación

El modelo en cascada tiene una serie de variantes con retroalimentación como las dos siguientes:

flowchart LR
A(Análisis) --> B(Diseño)
B(Diseño) --> C(Implementación)
C(Implementación) --> D(Pruebas)
D(Pruebas) --> E(Documentación)
E --> A
E(Documentación) --> F(Mantenimiento)
flowchart LR
A(Análisis) --> B(Diseño)
B --> A
B(Diseño) --> C(Implementación)
C --> B
C(Implementación) --> D(Pruebas)
D --> C
D(Pruebas) --> E(Documentación)
E --> D
E(Documentación) --> F(Mantenimiento)
F --> E

1.4. Desarrollo iterativo e incremental

El desarrollo iterativo recomienda la construcción de secciones reducidas de software que irán ganando en tamaño para facilitar así la detección de problemas de importancia antes de que sea demasiado tarde. Los procesos iterativos pueden ayudar a desvelar metas del diseño en el caso de clientes que no saben cómo definir lo que quieren.

1.5. Desarrollo ágil

El desarrollo ágil de software utiliza un desarrollo iterativo como base para abogar por un punto de vista más ligero y más centrado en las personas que en el caso de las soluciones tradicionales. Los procesos ágiles utilizan retroalimentación en lugar de planificación, como principal mecanismo de control. La retroalimentación se canaliza por medio de pruebas periódicas y frecuentes versiones del software.

flowchart LR
A(Análisis mínimo) --> B(Diseño)
B(Diseño) --> C(Desarrollo y Pruebas)
C --> A

Ejemplos:

  • SCRUM
  • FDD (Feature Driven Development)
  • TDD (Test Driven Development)
  • XP (Extreme programming)

2. Análisis

Esta primera etapa es la esencial, pues establecerá las bases del software que comenzaremos a desarrollar.

Sin entrar en grandes aspectos técnicos, se especifican detalladamente en un documento los requisitos que marca el cliente que debe tener el resultado final. La empresa encargada de desarrollarlo también deberá ayudarle a tener una visión completa del software, así como aclararle algunas dudas o ideas que pueda tener el cliente y que puedan parecer en un principio incompletas.

En esta etapa, la comunicación entre la empresa y el cliente es esencial para cerrar las pautas que se deben cumplir y no dejar ningún cabo suelto. Igualmente, la creación de este documento puede ayudar a la empresa a establecer plazos de entrega o costes.

Es importante resaltar que para el correcto proceso de desarrollo de software, este documento debe estar cerrado, sin implementar nuevas pautas a mitad del proceso de desarrollo que puedan retrasar el trabajo.

⚠️ Los diagramas no pertenecen necesariamente a una única etapa del desarrollo de software.

2.1. Diagramas de casos de uso

Ejemplos de diagrama de casos de uso Ejemplos de diagrama de casos de uso

2.2. Historias de usuario (desarrollo ágil)

Una historia de usuario es una explicación general e informal de una función de software escrita desde la perspectiva del usuario final. Su propósito es articular cómo proporcionará una función de software valor al cliente.

Como <ROL>, quiero hacer <FUNCIONALIDAD> con el objetivo de <BENEFICIO>.

Ejemplos de historias de usuario Ejemplos de historias de usuario

3. Diseño

En esta siguiente fase debemos trazar una estructura interna del software. Para ello, descomponemos y organizamos el sistema en diferentes elementos que puedan elaborarse por separado.

Esto debe dar lugar a la creación de un documento en el que se describe la estructura relacional global del sistema, así como una especificación de cuál es la función de cada una de sus partes o cómo combinan entre ellas.

3.1. Diagramas de clases

  • El diagrama de clases es un diagrama puramente orientado al modelo de programación orientado a objetos.
  • Define las clases que se utilizarán cuando se pase a la fase de construcción y la manera en que se relacionan las mismas.
  • Conceptualmente, es similar al modelo Entidad-Relación (E/R).

Ejemplo de diagrama de clases Relación persona mascota

Una Persona tiene una mascota como atributo de clase:

1
2
3
4
5
6
public class Persona{
  private Mascota mascota;
  public Persona(Mascota m){
    mascota = m;
  }
}

Una Mascota tiene una persona como atributo de clase:

1
2
3
4
5
6
public class Mascota{
  private Persona persona;
  public Mascota(Persona p){
    persona = p;
  }
}

Esto quiere decir que una Persona podrá interactuar con su Mascota en cualquier momento y viceversa.

Ejemplo de diagrama de clases Ejemplo de diagrama de clases complejo

3.2. Diagramas de paquetes

Los diagramas de paquetes son diagramas que se emplean para mostrar la organización y disposición de diversos elementos de un modelo en forma de paquetes. Cada elemento está anidado dentro de un paquete, que se representa como una carpeta de archivos dentro del diagrama.

Normalmente un paquete está pensado como un directorio si son componentes internos, pero podría ser también una librería[^librería]. En java las librerías se importan con la palabra clave import.

Ejemplo de diagrama de paquetes Ejemplo de diagrama de paquetes

4. Implementación

En la etapa de implementación del proceso de desarrollo de software, traducimos el diseño anterior al código. Se programan los requisitos que se han especificado anteriormente, realizando los algoritmos necesarios.

Esta es, por tanto, la primera etapa en la que comenzamos a obtener resultados “visibles”.

Leer el artículo Manual Java.

4.1. Diagramas de flujo

Un diagrama de flujo es un diagrama que describe un proceso, sistema o algoritmo informático. Se usan ampliamente en numerosos campos para documentar, estudiar, planificar, mejorar y comunicar procesos que suelen ser complejos en diagramas claros y fáciles de comprender.

Son uno de los diagramas más comunes del mundo, usados por personas con y sin conocimiento técnico en una variedad de campos.

Ejemplo de diagrama de flujo Ejemplo de diagrama de flujo

4.2. Diagramas de secuencia

El diagrama de secuencia muestra gráficamente los eventos que fluyen de los actores al sistema. Para su elaboración se parte de casos de uso elaborados durante la etapa de análisis. Un diagrama de secuencia tiene dos dimensiones:

  • La dimensión vertical: que representa el tiempo.
  • La dimensión horizontal: que representa los roles que participan en la interacción.
sequenceDiagram
Usuario->>Pantalla: seleccionarProducto()
Pantalla-->>Usuario: PantallaProducto
Usuario->>Pantalla: seleccionarComprar()
Pantalla-->>Usuario: PantallaListaProductos
sequenceDiagram
Alicia->>Juán: Hola Juán, ¿Cómo estás?
loop No estoy bien
    Juán->>Juán: Luchar contra la hipocondría
end
Juán-->>Alicia: ¡Bien!
Juán->>Alicia: ¿Y tú?
Alicia-->>Juán: ¡Muy bien!

Ejemplo de diagrama de secuencia Ejemplo de diagrama de secuencia complejo

5. Pruebas

Leer el artículo Prueba de aplicaciones.

6. Bibliografía

Este artículo está licenciado bajo CC BY 4.0 por el autor.

Manual Java

Tutorial: Configurar OMV6 en mini pc chino