Pero imagíno que lo que le interesa a donvalles es una metodología para desarrollar una primera versión.
Lo primero que se me ocurre que hay que hacer (no es algo sistemático) es definir los DATOS y las FUNCIONES.
Hay muchas maneras de hacerlo y todas dependen de lo que vas a programar. No es lo mismo hacer un diagrama de flujo para un algoritmo lineal que definir una red de petri para un programa concurrente. Depende de lo que vayas a hacer. A partir de ahí se pueden buscar los mejores instrumentos.
En programación concurrente los franceses utilizan un método que me gusta mucho: Grafcet.
Es parecido a los grafos, redes de petri, programación paso a paso en neumática, etc. orientado a la programación de autómatas.
Bueno, pues incluso con esta herramienta de definición de la función del código se puede trabajar de distintas maneras.
Una aproximación puede ser la
programación por funciones: Cada rutina se encarga de ejecutar una función, aunque involucre a varios elementos físicos del sistema que interactúan entre sí.
Otra aproximación es la
programación por elementos: En este caso cada rutina se limita a manejar un sólo elemento físico del sistema. Para realizar funciones que involucren a varios elementos, es necesaria una sincronización entre las rutinas.
En programación tradicional (más lineal) hay una aproximación
Top-Down para definir y analizar el proyecto y otra
Bottom-Up . Lo tradicional es utilizar la primera, pero no es la mejor. Si programas en Forth estarás acostumbrado a la segunda aproximación.
Hay muchas herramientas. Por eso preguntaba los detalles del proyecto, porque la herramienta adecuada depende mucho de ellos.
Saludos.