Los requerimientos del sistema los establece el usuario. Para eso está la primera parte de todo desarrollo, que se suele denominar "relevamiento", "análisis preliminar", etc.
En cuanto a cuáles son los requrimientos, te repito: si no sabías los requerimientos, ¿cómo d... creaste el software?
Los requerimientos funcionales son en definitiva aquellas funciones que el software cumple. Las que puede cumplir, los casos de uso que cubre.
Los requerimientos no funcionales están fuera del software, y tienen relación con el funcionamiento del sistema en su interacción con el usuario, sea este una persona u otro sistema.
Wikipedia es siempre una buena opción:
http://es.wikipedia.org/wiki/Requisito_no_funcional