distinguish between portability and compatibility as used in software selection