software taxonomy