There are many ways to classify faults. I tend to go for three classifications:
1. UI. Things like Navigation, Usability, Field validation etc.
2. Engine. The work done by the application - calculations, queries, etc
3. Data. Mainly configuration (static) data errors.
There is obviously a lot of room for overlap - e.g. if the application tries to handle alpha-numeric data as packed decimal - is this data or engine?
Also, where do you fit NFR's (Non-functional requirements)? I usually put these under Engine - but there is a good argument for a fourth classification.
This system works for me.