The matter of creating a document that details the technical functionalities required for a software development project is nothing short of writing a message to a team member about the technical tasks which you want him to do. The difference, however, is that you will be giving out instructions that are based, not on your own purpose, but for a third-party user—the customer.
You have to make sure, of course, that the person to whom the message is addressed gets the right idea on how the end-product should work as a functional tool or system, based on the user's point of view. Otherwise, the person performing the job will end up doing guess-work or basing things on his own level of user-capability.
Your objective, therefore, is to write technical instructions on behalf of a user who may be considered computer literate but not exactly technologically capable. Your task is to write in detail the exact requirements based on the end-user's purpose and capability.
Still, stating the requirements in a written form is different from that of delivering the instructions verbally. Another issue is the reader's understanding of the user's requirements outside of technical words. It cannot be helped that some terminologies have different meanings if used in a different perspective.
This is one of the reasons why some projects tend to take a long time to accomplish. The final outcome has to go through several adjustments or revisions, until the "nail is hit right on the head", so to speak.
In line with this, consider the following tips for writing functional requirements, to serve as a useful guide to whomever will be tasked to develop the functional aspects of the project being worked on.