When looking at software within the RepRap project people are generally talking about the stuff that runs on a PC or Workstation that is connected to the RepRap Machine. Much like a Workstation connects to a printer.
We are considering here the CAD (Computer Aided Design) or applications that we use to create the 3D objects we want to print. Whilst most CAD apps have their own preferred file formats etc a reasonably universal standard for describing a 3D object for printing is the STL (Stereo Lithography) format. This STL format is what is currently generally accepted by the RepRap group as being the standard input file definition to CAM from CAD.
CAM (Computer Aided Manufacture) is where the 3D object described in an STL file format is processed into something that the printer can print. Much as CNC (Computer Numericaly Controled) machinery such as Lathes, Milling Machines etc are controlled using a protocol known as G-Code. RepRap machinery is currently generally controlled also by a RepRap variant of G-Code.
The job of CAM software then is to convert an STL description of a 3D objects into a set of “slices” that the RepRap machine can print. The slices are described by a sequence of G-Code instructions that tell the machinery where to move, and where to extrude plastic.
CAD and CAM all very much currently lie under the heading of software.
Examples of CAD would be:-
Pro-Engineer, Sketchup, AutoCAD Inventor, Pro-Desktop, Blender, SCAD etc
Examples of CAM would be:-
Skeinforge, Slice and Dice.
As ever who uses what and how is a matter of personal choice. Universal agreement on only one collection of tools is highly unlikely.
With the potential for embedding higher level operating systems ie Linux the definition between what is Software and what is Firmware may become blurred.