DNA barcoding: theoretical aspects and practical applications