software integration best practices