systems analyst
a person whose job is to work out exactly what a piece of software must do
purpose
a clear and concise description of what a computer program is required to do
software specification
a legally binding contract determining exactly what the software is required to do
functional requirements
a list of all the inputs, processes and outputs that a program should carry out
inputs
data that the program will gather from the user
processes
any calculations or new data generated by the program
outputs
results and messages that should be shown to the user