Heterogeneous systems, in software context, refer to systems that have different aspects such as the interface, the implementation, the data, etc.
Two systems in a family are heterogeneous to the extent that they are incompatible in some way.
One may represent information differently or not include certain functionality or adopt different security policies.
If everything between two systems are the same and interoperate, they are homogeneous.
Federating or integrating homogeneous systems is presumably simpler than federating heterogeneous systems.