Observing the current system

Observing the system in use can provide invaluable information as to how a system works and how it can be improved. The most important things to observe are the user’s workflow, the inputs and the outputs.

Looking at competitor software

By looking at competing software you can see what they have included and to what extent they have an effect on the solution.

Interviewing users and other stakeholders of the system

By interviewing users you can get personal feedback from them and see where they feel the new system could be improved. By interviewing stakeholders you can find out what they want to get out of the system.

More examples can be found here:
http://epf.eclipse.org/wikis/openup/core.tech.common.extend_supp/guidances/guidelines/req_gathering_techniques_8CB8E44C.html