- Componente de Software
-
Un componente UML con interfaces proveídas y requeridas
Un elemento de un sistema software que ofrece un conjunto de servicios, o funcionalidades, a través de interfaces definidas.
Contenido
Definición
Las diferentes posturas acerca de las características de los componentes de software hace difícil la elaboración de una definición única.[1] La utilización de una específica dependerá del contexto en donde se esté empleando el componente y de los acuerdos que se haga dentro del marco de trabajo.
Según el Object Management Group
En la especificación UML, un componente es una unidad modular con interfaces bien definidas, que es reemplazable dentro del contexto.[2] Así, un componente define su comportamiento en términos de interfaces proveídas y requerida; y dicho componente será totalmente reemplazable por otro que cumpla con las interfaces declaradas.
UML no coloca ninguna restricción respecto a la granularidad del componente, de esta forma un componente podrá ser tan simple como un convertidor de moneda o tan complejo como un sistema de ayuda semántico.
Según el WCOP'96
Fruto del primer Workshop sobre Programación Orientada a Componentes, se acuñó la definición: Unidad de composición con interfaces especificadas contractualmente, con dependencias explícitas de acuerdo al contexto. Un componente de software puede ser desplegado de forma independiente y puede participar en composiciones de terceras partes.
Características
Un componente de software de propender por poseer las siguientes características:
- Ser reutilizable.
- Ser intercambiable.
- Poseer interfaces definidas.
- Ser cohesivos
Implementaciones
Los componentes de software son la piedra angular de diferentes paradigmas de programación. Esto ha generado la aparición en el mercado de diferentes especificaciones que plantean la forma de construir, utilizar y distribuir componentes. Entre las más extendidas se encuentran:
Estándares
- Common Object Request Broker Architecture (CORBA) del Object Management Group.
- JavaBeans, servlets y Enterprise Java Beans de Oracle
- Open Services Gateway Initiative (OSGi) de OSGi Alliance
- COM, COM + y DCOM de Microsoft
Paradigmas
Los componentes de software son útiles en:
- Programación Orientada a Componentes
- Programación Orientada a Objetos
- Arquitectura Orientada a Servicios (SOA)[3]
Referencias
Enlaces externos
Wikimedia foundation. 2010.