Today's companies are facing major changes in their organizations due to the changing environment in which they operate. They have to decrease the costs, decrease time to market, and improve quality. These imperatives have led to changes in the placement and role of IS department in the organization (Fried, 1995). Together with the recent advances in communication technology and powerful workstations, end-users have become more involved with the application development. Besides, the business processes change so fast that the traditional SDLC is too slow to keep up with these fluctuating requirements in the application domain. The need for rapid application development to respond to users' changing needs, among the other mentioned trends, encourages the use of reusable software components. In (ATP, 1995), it is stated that at the level of vertical-market products, software design costs are generally $1 million to $10 million with near zero cost of reproducing additional units, and the typical production quantity is one. Reusable software components help organizations recover costs, improve quality through specialization, and develop rapidly from existing components.