1. Realiza una serie de tareas previas que influirán decisivamente en la finalización con éxito del proyecto
2. Averiguar qué es exactamente lo que tiene que hacer el sistema.
3. facilita nuestro trabajo y un lenguaje de programación apropiado para el tipo de sistema que vayamos a construir
4. planifica el entorno en el que el sistema debe funcionar, tanto hardware como software
5. Tiene como objetivo detectar los errores que se hayan podido cometer en las etapas anteriores del proyecto (y, eventualmente, corregirlos).