According to "System Analysis and Design, Fifth Edition":
A Functional Requirement "relates directly to a process the system has to perform as a part of supporting a user task and/or information it needs to provide as the user is performing a task.”
Based on this definition, a functional requirement describes what functionality should exist in the system to support an activity (task) that the user would like to achieve. It should not be too technical as it serves as an agreement between the system developer and the user on what is expected from the system in terms of functionality.
The user should not at any point expect the system to have features or offer functions that are not specified in the functional requirements.
Therefore, the functional requirements are determined during the analysis phase of the system development life cycle (SDLC).
A System requirement, on the other hand, is a technical requirement. It is determined during the design phase of the SDLC. The book states that the focus in this phase is on: "the design of the technical system blueprint that will satisfy the system's requirements".
In short, the main differences are:
1. Purpose and target audience: functional requirements are aimed to communicate what is expected from the system from an end user's perspective, whereas system requirements are aimed at clarifying to developers how the system will be implemented in order to deliver the functional requirements.
2. Timing: functional requirements are specified during analysis, whereas system requirements are specified as part of the design phase.