¿Qué es un componente de software?Artboard

Componente, objeto y sistema son términos que tienen diferentes significados específicos en diferentes contextos.

Un sistema es un término genérico utilizado para describir un mecanismo/tecnología/diseño/... que funciona para servir a un conjunto de funciones.

Un componente es un subsistema.

Un objeto es simplemente un objeto.

Un coche es un sistema. Este sistema tiene componentes como el motor, los asientos y el salpicadero. Un coche es un objeto y algunos de sus componentes también son objetos.

El motor del coche es un componente del coche y también un sistema por sí mismo. También es un objeto.

El tráfico es un sistema con componentes como las carreteras, las normas, las señales, los coches, los pasajeros, los conductores, los peatones, etc.

Cada programa/aplicación de software es un sistema y tiene diferentes componentes. Desde la perspectiva de un diseñador de UX, los componentes de un sistema de software pueden ser su navegación, diferentes secciones, formularios y pantallas. Desde la perspectiva de un arquitecto de software, este sistema tiene componentes principales como el frontend y varios servicios de backend. Desde la perspectiva de un desarrollador, este sistema tiene diferentes componentes como bibliotecas y clases.

El término objeto, en software, se utiliza para cualquier cosa en memoria. Un int en C o una instancia de una enorme Clase en Java son ambos objetos. El enfoque orientado a objetos añade algunas restricciones sobre cómo definir, inicializar y acceder a los objetos en un programa y estas adiciones naturalmente sobrecargan el significado del término objeto en consecuencia.

Hay diferentes significados específicos del término componente como se ve en otras respuestas a esta pregunta. Para un desarrollador web, un componente web es una pieza de software que se puede añadir a un documento HTML sin causar conflictos con el documento anfitrión/destino. Para otro framework/plataforma/sistema, un componente puede significar otra cosa.

En resumen, puedes obtener cien respuestas diferentes para la pregunta "¿qué es un componente?" si preguntas a cincuenta desarrolladores diferentes. Más allá de todos estos significados sobrecargados en diferentes sistemas, un componente es siempre sólo un subsistema.