l'analisi di un problema significa mettere su carta un problema e fornire vari diagrammi (diagramma a blocchi, diagramma delle classi, diagramma dei casi d'uso ecc) attraverso l'uso di linguaggi specifici tipo UML con l'obiettivo di dare una descrizione completa del problema e della soluzione.
non è una cosa facile facile...
avere un'analisi del problema facilita molto la scrittura e il debug del codice, oltre che la condivisione delle informazioni tra programmatori ecc.

programmare in se non è chi sa quanto difficile, si tratta di scrivere una serie di istruzioni, definite appunto dall'analisi.

spesso l'analisi è contestuale alla programmazione (cosa sbagliata) ma per avere un pacchetto (inteso come analisi, documentazione, facilità di debug ecc) di qualità l'analisi è fondamentale.