Differentiate the various categories of software.