Revising the UML Collaborations: A Well-Founded Approach