Per definire un algoritmo che risolva un determinato problema è necessario:
condurre un'attenta analisi del problema individuare i possibili ingressi precisare le uscite definire completamente e dettagliatamente la sequenza dei passi che portano alla soluzioneE' fondamentale una descrizione precisa e corretta dei requisiti (specifiche del problema) per creare un procedimento (algoritmo) che porti a una soluzione possibile.
Parliamo di correttezza se l'algoritmo non presenta difetti in alcun passo e di efficienza se usa la minima quantità di risorse disponibili.
Quindi prima di affrontare la soluzione occorre capire esattamente il problema.
Spesso è più difficile capire esattamente la natura del problema che non trovarne una soluzione (requirements engeenering).