Component-Based Software Engineering
Interface: specification of component behavior and properties.
Naming: global unique names for components and interfaces.
Meta data: information about components, interfaces and their relationships; APIs to services providing such information.
Interoperability: communication and data exchange among components from different vendors, implemented in different languages.
Customization: interfaces for customized components.
Composition: interfaces and rules for combining components to creat larger structures.
Evolution support: rules and services for replacing components or interfaces by newer versions.
Packaging and deployment: packaging implementation and resources needed for installing and configuring a component.