Un componente es un elemento físico de un sistema o una pieza de código independiente especificada por sus interfaces. La ingeniería de software basada en componentes implica el desarrollo de componentes independientes, estándares de componentes, middleware para la integración y un proceso de desarrollo adaptado. Los componentes deben ser estandarizados, independientes, componibles, desplegables y documentados. El proceso incluye el análisis de componentes, modificación de requisitos, diseño con reutilización y desarrollo e integración. La ingen