RAD: Desarrollo Rápido de Aplicaciones

Gonzalo Mena Mendoza

Ingeniería de Software

Maestría en Ingeniería de Software Distribuido

Universidad Autónoma de Querétaro

Artículo Original

Rapid Application Development

Walter Maner

15 de marzo de 1997

Definición de RAD

Proceso de desarrollo de software que permite construir sistemas utilizables en poco tiempo, normalmente de 60 a 90 días, frecuentemente con algunas concesiones.

Principios tras la definición

Problemas atendidos por RAD

¿Por qué usar RAD?

Malas razones

Buenas razones

Calendario vs Presupuesto vs Calidad

Las concesiones determinan el ritmo de desarrollo

Negociar algo que no sea el programa de trabajo

Una o más metas pueden ser inalcanzables

Características de RAD

Equipos Híbridos

Herramientas Especializadas

"Timeboxing"

Prototipos Iterativos y Evolucionarios

El Facilitador

Mantiene al grupo enfocado:

Restricciones Importantes

RAD tiende a funcionar cuando:

  1. La aplicación funcionará de manera independiente.
  2. Se pueden usar mayormente bibliotecas existentes.
  3. Desempeño no crítico.
  4. Distribución limitada, interna o vertical.
  5. Alcance del proyecto limitado.
  6. Confiabilidad no crítica.
  7. El sistema puede dividirse en muchos módulos independientes.
  8. El producto está dirigido a un mercado altamente especializado.
  9. El proyecto cuenta con fuertes limitantes de tiempos parciales (timeboxes).
  10. La tecnología requerida tiene más de un año en el mercado.

RAD tiende a fallar cuando:

  1. La aplicación debe interoperar con sistemas existentes.
  2. Existen pocos componentes reutilizables.
  3. Alto desempeño crítico.
  4. El desarrollo no puede aprovechar herramientas de alto nivel.
  5. Distribución amplia, horizontal o masiva.
  6. RAD se convierta en QADAD (Quick And Dirty Application Development).
  7. Métodos RAD para desarrollar sistemas operativos (confiabilidad demasiado alta) o juegos (desempeño demasiado alto).
  8. Riesgos técnicos de tecnología de punta.
  9. El producto pone en riesgo la misión o la vida.
  10. El producto no puede ser modularizado.

Ventajas de RAD

  1. Comprar puede ahorrar dinero en comparación con construir.
  2. Los entregables pueden ser facilmente trasladados a otra plataforma.
  3. El desarrollo se realiza a un nivel de abstracción mayor.
  4. Visibilidad temprana.
  5. Mayor flexibilidad.
  6. Menor codificación manual.
  7. Mayor involucramiento de los usuarios.
  8. Posiblemente menos fallas.
  9. Posiblemente menor costo.
  10. Ciclos de desarrollo más pequeños.
  11. Interfaz gráfica estándar.

Desventajas de RAD

  1. Comprar puede ser más caro que construir.
  2. Costo de herramientas integradas y equipo necesario.
  3. Progreso más difícil de medir.
  4. Menos eficiente.
  5. Menor precisión científica.
  6. Riesgo de revertirse a las prácticas sin control de antaño.
  7. Más fallas (por síndrome de "codificar a lo bestia").
  8. Prototipos pueden no escalar, un problema mayúsculo.
  9. Funciones reducidas (por "timeboxing").
  10. Dependencia en componentes de terceros: funcionalidad de más o de menos, problemas legales.
  11. Requisitos que no convergen.
  12. Interfaz gráfica estándar.
  13. Difícil de repetir experiencias exitosas.
  14. Funciones no deseadas.

Resumen

"Con el fin de asegurar gran interacción, los proyectos se diseñan con calendarios fijos y se sacrifica la funcionalidad si es necesario. Esto permite que el equipo de desarrollo se enfoque en las piezas de funcionalidad que tienen el mayor valor de negocio y en entregar dicha funcionalidad rápidamente. Los cambios son frecuentemente la razón de los retrasos en el desarrollo de una aplicación. En los largos procesos lineales de desarrollo, los cambios en los requisitos funcionales o en el alcance del proyecto, particularmente cuando gran cantidad de tiempo se ha invertido en la planeación, diseño, desarrollo y pruebas, provocan que se pierdan meses de trabajo y se incurra en grandes gastos por rediseño y redesarrollo. RAD ataca la infiltración de cambios de alcance y requisitos al limitar la exposición del proyecto al cambio, acortando el ciclo de desarrollo y limitando el costo de los cambios al incorporarlos desde el inicio, antes de que grandes inversiones se hayan hecho en desarrollo y pruebas."

-Sun Microsystems