Individuare il processo risolutivo può non essere una cosa semplice.
Alcuni problemi possono addirittura non essere risolvibili, cioè non ammettere soluzioni.
Altri, anche se sono teoricamente risolvibili, possono richiedere un tempo elevatissimo per essere risolti.
Anche se il problema è risolvibile la soluzione potrebbe non essere immediata.
Per uno stesso problema possono invece esserci più soluzioni.
Non esistono regole generali che permettono di trovare automaticamente la soluzione di un problema.
Si dice problem solving l’attività di individuare una o più soluzioni al problema.
Metodologia top down
Le strategie che partendo dalle possibili soluzioni cercano di ottenere i dati di partenza sono chiamate top down, goal driven o backward chaining. L’analisi top down (dall’alto in basso) è un metodo di programmazione che permette di descrivere l’algoritmo prima in modo generale e poi sempre più in dettaglio, fino ad ottenere la versione definitiva. In questo modo la stesura dell’algoritmo risulta molto più semplice; un problema complesso può essere scomposto in una serie di sottoproblemi più semplici, affrontando ognuno dei quali separatamente, si raggiunge la soluzione finale.
Metodologia bottom up
Le strategie che partendo dai dati iniziali, cercano di arrivare alla soluzione sono chiamate bottom up, data driven o forward chaining.
Nella programmazione imperativa di solito è più usato il metodo top down.
Nella programmazione a oggetti è più usato il metodo bottom up.