Como concepto general, el software puede dividirse en varias categorías dependiendo del tipo de trabajo realizado.