Interoperability is the ability of two or more software ware modules to communicate and cooperate with each other. The interoperability problem arises when software developers want to reuse legacy software systems, or when software systems are componentized and these components need to be connected in order to work; together. Software modules can be functions; objects, or components which consist of multiple functions or objects. In this paper we focus on the specification of software components in abject oriented systems. Traditionally. interoperability checking is performed by signature matching between an invoking Junction and a junction being involved ed. Function level signature matching techniques are not sufficient for software components in object oriented systems since an object encapsulates a set of data and junctions, and a component may contain more than one object. In. this paper we first describe the interoperability problems of software modules both in the procedural and object oriented paradigms, and then review current approaches and compare them. Based on the review, we propose a new interoperable component model (ICM) that enhances software reusability and maintainability.(1).