O ciclo de vida básico de um software compreende