• Components developed for a specific application usually have to Components developed for a specific application usually have to be be generalised generalised to make them reusable. to make them reusable. • • A component is most likely to be reusable if it associated with A component is most likely to be reusable if it associated with a stable a stable domain abstraction (business object). domain abstraction (business object). • • For example, in a hospital stable domain abstractions are associ For example, in a hospital stable domain abstractions are associated with ated with the fundamental purpose the fundamental purpose - - nurses, patients, treatments, etc. nurses, patients, treatments, etc. • • Components for reuse may be specially constructed by generalisin Components for reuse may be specially constructed by generalising g existing components. existing components. • • Component reusability Component reusability • • Should reflect stable domain abstractions; Should reflect stable domain abstractions; • • Should hide state representation; Should hide state representation; • • Should be as independent as possible; Should be as independent as possible; • • Should publish exceptions through the component interface. Should publish exceptions through the component interface. • • There is a trade There is a trade- -off between reusability and usability off between reusability and usability • • The more general the interface, the greater the reusability but The more general the interface, the greater the reusability but it is then more it is then more complex and hence less usable.