A notion in object-oriented programming where "components" of a program are completely generic. Instead of having a specialised set of methods and fields they have generic methods through which the component can advertise the functionality it supports to the system into which it is loaded. This enables completely dynamic loading of objects. JavaBeans is an example of a component architecture.
See also design pattern.