A component is a high-quality workproduct, designed, documented, and packaged to be
reusable. A component is cohesive and has a stable interface [Jacobson et al.
1997].
A component is a physical and replaceable part of a system that conforms to and
provides the realisation of a set of interfaces (Grady Booch).
A component is a self-contained piece of software with clearly-defined interfaces
and explicitly-declared context dependencies [Stahl&Volter 2006].
Mary Shaw and David Garlan define software components as "the loci of computation
and state. Each component has an interface specification that defines its
properties, which include the signatures and functionality of its resources
together with global relations, performance properties, and so on. (...)''