how many types of software