I want to know how to remotely detect a software version.
Once attacker knows the version installed, he can exploit published vulnerabilities. So it will be useful to know it when doing penetration testing.
Questions on IT Security Stack Exchange are expected to relate to IT security within the scope defined in the FAQ. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about closed questions here.
Yes, of course. Service and OS fingerprinting is one of the first steps in the methodology.
Nmap does service fingerprinting and OS detection. But that requires that the service be available to the network (web server, SMB, etc.). You can even connect to a network port with telnet and request the service banner.
If you want to know an installed program that is not network-accessible, then you need to do meta-data analysis of files that the program created, or you need to perform social engineering or open source searches to get the version info. For instance, has an employee of the company posted on a tech support forum and revealed the version they use?
I see that the original version of the question asked for a specific service. For that, you can try nmap to see if that service will return a banner, or use the non-network accessible option I laid out above.