1. Compiling a list of required outputs
2. Examining required outputs to determine required inputs
3. Creating models showing the flow of data through the system from inputs through the various processes to the final outputs
4. Considering all aspects that can affect the operation of the final system
5. Studying existing systems to ensure the new system will accomplish all existing requirements
6. Adding new requirements
7. Considering all elements of the system including hardware
8. Consulting potential users to determine their needs and requirements