Hi, just want to learn from our expert friends here, during software development, how do you determine the exact system specifications/requirements for your programs? Any help would be greatly appreciated.

Thanks :)

You can/should as the customer what he/she wants.

To add to that, you can also make a demo of the software then ask the customer what changes are required. Document all changes.

One of the classes I did was called "System Analisys" which teaches all about determining the exact requirements of a software application. You use things like 'use cases' to seperate the 'must haves' from the 'nice to haves' to determine the core functionality of an application. Somewhere along the process you consult a 'subject matter expert'. (The implication is that the users do not always know what they want and will emphasize 'nice to have' functionality more than 'must have' functionality)

Yes make the Demo software then present it to your client then ask for further changes

To get the correct requirements you can do structured group or one to one interviews with the clients, questionaires usings questions that only allow a limited response (you often only get 10% return rate for questionaires and due to their limiting factors may not return full details of what is required), analyse any systems currently in place.

once you has as refined list or user requirements (what the user wants) create a refined list of functional and system requirements, a range of UML diagrams such as usecase, sequence and package diagrams (as stated by vadriaan).

Following this create forms designs, usable prototypes (or even paper based prototypes to show functionality before implementing).

Repeat untill satisified.