En teoría, hay al menos cinco enfoques posibles.
De arriba hacia abajo:
Comience con simulacros de UI o un prototipo en papel. Conviértalos en diálogos reales y avance desde los controladores de botones y otros controles hacia abajo a través de la lógica y la base de datos.
De abajo hacia arriba:
Comience con las estructuras de datos (probablemente el esquema de la base de datos). Luego agregue lógica (modelado de procesos del mundo real); Finalmente, su interfaz de usuario es solo una interfaz para activar la lógica y mostrar los resultados.
Lógica primero:
Comience con la lógica del programa, implementando el acceso a datos y una interfaz de usuario rudimentaria según sea necesario. Luego formalice y endurezca las estructuras de datos, y finalmente desarrolle la interfaz de usuario correctamente.
Encontrarse en el medio:
Comience con el esquema de la base de datos y la interfaz de usuario, y simultáneamente trabaje hacia el punto donde se encuentran. Con este enfoque, la lógica es lo último.
Expansión horizontal:
Comience por identificar la cantidad mínima absoluta de funcionalidad que haría algo interesante, e implemente toda la pila (estructuras de datos, lógica e interfaz de usuario) para esta parte. Podría ser solo un ciclo CRUD básico con un cuadro de diálogo de edición simple para una sola entidad. Luego comience a agregar más características, implementando la pila completa para cada característica (por lo tanto, 'horizontal').
Cada uno de estos tiene pros y contras.
De arriba hacia abajo le brinda algo visible al principio del proceso y le permite verificar su diseño funcional con las partes interesadas: los simulacros a menudo le dicen a los usuarios más sobre un diseño que los diagramas de flujo o las paredes de texto.
De abajo hacia arriba le da la oportunidad de diseñar un esquema de base de datos sólido como una roca antes de comprometerse con algo; dado que un esquema de base de datos es notoriamente difícil de modificar una vez publicado, desea que esta parte sea correcta: el impacto de modificar una interfaz de usuario es mucho menor y produce errores cada vez menos graves.
Logic-first significa que puede probar la lógica antes de pasar mucho tiempo en la base de datos y la presentación, lo cual es especialmente interesante si su lógica va a ser realmente compleja.
Meet-in-the-middle combina las ventajas de abajo hacia arriba y de arriba hacia abajo, pero tendrá que saltar de un lado a otro entre dos tareas, y corre el riesgo de terminar con una lógica que es más compleja de lo necesario porque sus dos extremos No te encuentres naturalmente.
La expansión horizontal va bien con un flujo de trabajo iterativo, y tiene la ventaja adicional de que, si prioriza bien, tendrá una aplicación en funcionamiento en cualquier momento dado, por lo que si no cumple un plazo, tendrá una versión que tiene menos funciones, pero sigue siendo completamente funcional, a diferencia de una versión que tiene una base de datos completa, pero sin interfaz de usuario.
Entonces, cuál elija depende de su estilo personal y de las circunstancias.