Taxonomy of many kinds of software, with historical perspective.