You find software everywhere when you look inside and outside the Arduino. You need software to talk to the Arduino; the Arduino needs software to listen. You use software to write sketches, your sketches get combined with the Arduino libraries, and then
software converts (compiles) your programs into the ones and zeros of machine instructions that the AVR microcontroller can understand. In reality, there’s even more to it than this.