Specifying Interaction Constraints of Software Components for Better Understandability and Interoperability