Software: OS, applications, programming
Software: this is what makes the system functional. There are two types: system and application.
System software runs the hardware. In other words, this forms the background which gets everything up and running - and all the hardware speaking to each other.
Application software runs on top of the system, does something i.e. word processing, spreadsheets, GIS, etc
Their purpose is to write code which will do something. This could be an extension to an operating system, a new application, or a modification to either.
What about GIS. What software do they use?
Often, more than one program will be used. For example, I have seen people write serious number crunching code in C++, then write a VB (or python) interface that calls the C++ code.