Todos son Reemplazables, pocos Reutilizables: los Componentes

La mayoría hemos soñado con desarrollar nuestros propios componentes reutilizables y desarrollar aplicaciones cada vez más eficientemente; en menos tiempo. Algunos pocos lo logran, pero la gran mayoría se queda muy lejos de tan grandiosa meta.

Afortunadamente hay empresas que se han enfocado en realizar dicho trabajo por nosotros y contamos con gran cantidad de librerías de código y componentes que podemos aprovechar para no partir de cero en nuestros proyectos. Gracias a esto el desarrollo de aplicaciones cada día se vuelve algo más eficiente. Obviamente, para quien sabe buscar y aprovechar todos estos componentes y librerías que existen en el mercado.

Los más sofisticados aprovechan cada nueva versión que surge de dichos componentes. Sacándole todo el jugo en beneficio de un desarrollo más eficiente y de calidad. Actualmente el desarrollador más inteligente no necesariamente es el que conoce a la perfección un lenguaje de programación, sino el que es capaz de producir más eficientemente y con mayor calidad una aplicación. Esto no implica únicamente un conocimiento a fondo del lenguaje de programación, sino de las librerías que puede reutilizar para reducir al máximo la cantidad de código nuevo a escribir.

El desarrollador moderno requiere contar con la habilidad de estructurar adecuadamente las aplicaciones mediante la integración de componentes propios y de terceros.

El componente según UML

Pero, a todo esto ¿qué es un componente? De acuerdo a la especificación de UML un componente “es una parte modular de un sistema que encapsula su contenido y que es reemplazable en su entorno. Un componente define su comportamiento en términos de sus interfases proporcionadas y requeridas…”

A menos que se trate de un sistema pequeño y stand-alone, de esos que cada vez hay menos, seguramente tendrás que representar tu sistema con dos o más componentes, por lo que el diagrama de componentes se vuelve un artefacto necesario para modelar tus sistemas.
Las nuevas tecnologías y la mayoría de las arquitecturas modernas requieren del uso de componentes para estructurar y distribuir la aplicación. Necesitamos decidir en dónde ubicaremos los servicios de usuario, de negocio de datos o cualquier otro tipo de servicio específico; y sin el concepto de componentes esto resultaría imposible.

Componentes y objetos

Cuando hablamos de componentes estamos llevando el concepto de objetos a un más alto nivel. La orientación a objetos puede hacer maravillas por nuestros desarrollos una vez que aprendemos a explotar al máximo este paradigma. Pero, el reuso, mantenibilidad y flexibilidad de nuestros sistemas a un mayor nivel lo conseguiremos en el momento en que aprendamos a definir adecuadamente los componentes de nuestros sistemas. Ya sea que nosotros los construyamos o que reutilicemos componentes ya existentes.

Reemplazable = menor costo

La definición de la Especificación de la OMG nos habla acerca de que un componente es reemplazable. Vale la pena detenerse un momento a analizar ese punto.

De acuerdo a algunos estudios, y no es necesario ser genio para darse cuenta de eso, un costo importante de los sistemas viene a la hora del mantenimiento. El sistema empieza a crecer y el costo por cada línea de código adicional va siendo cada vez más alto. Crear un software nuevo es más económico que mantener un software existente. Ya sea para corregirlo, modificarlo o para agregarle nueva funcionalidad.

Aquí es donde entra el concepto de “reemplazabilidad” de los componentes. Si diseñamos adecuadamente nuestro sistema por medio de componentes que encapsulan de forma modular el comportamiento de nuestro sistema y las reglas de negocio, entonces podremos modificar el sistema cuando cambien esas reglas de negocio a un costo mucho menor. Esto siempre y cuando seamos capaces de identificar el componente donde tienen que realizarse dichos cambios.

Si logramos respetar las interfases de dicho componente a pesar de los cambios internos requeridos en el componente tendremos un mantenimiento sumamente eficiente de la aplicación y muy transparente, en muchos casos, para la mayoría de los involucrados en el desarrollo.

Ventajas de los Componentes

Algunos de los beneficios de trabajar partiendo de un modelo de componentes para construir nuestro sistema:

  1. Mayor productividad, si logramos identificar componentes ya existentes que podamos reutilizar o si construimos componentes que podamos reutilizar en el futuro.

  2. Reducción del tiempo de entrega, ya sea porque reutilizamos componentes o porque partimos de un plan donde podemos paralelizar mayor cantidad de trabajo. Varias personas pueden trabajar en diferentes componentes al mismo tiempo.
  3. Mayor calidad, pues un componente es más fácil de programar y probar que una aplicación completa. Si los componentes están bien planeados para formar la aplicación completa, la calidad de los componentes se verá reflejada en la aplicación final. Además, si un componente fue creado y utilizado anteriormente significa que ya fue probado en situaciones reales, por lo que muy probablemente habrá madurado.

  4. Menores costos, tanto por el reuso como por la facilidad para darle mantenimiento a la aplicación mediante el mantenimiento a componentes específicos donde se identifican los cambios a realizar.

Las Interfases

Pero, ¿qué es esto de las interfases? La interfase representa la declaración de un conjunto de funciones y obligaciones que alguien más lleva a cabo. En el diagrama de componentes la interfase representa aquello que un componente es capaz de hacer por alguien más (interfase proporcionada) o aquellos servicios que posiblemente requiera utilizar un componente y que son proporcionados por otro componente (interfase requerida). Gráficamente la podemos visualizar como un círculo ligado al componente o como una clase estereotipada.


El componente Ventas expone sus servicios a través de la interfase IVenta
y requiere de una interfase IDetalleCliente

Un componente proporciona funcionalidad específica dentro del sistema. Por ejemplo, podríamos tener un componente que se encarga de aplicar las reglas de negocio para realizar una venta (obtener total, obtener IVA, agregar un producto a la venta, cancelar la venta, etc.). Esa funcionalidad, cuando usamos un lenguaje orientado a objetos está implementada en un conjunto de clases agrupadas dentro del componente.

No todas las funciones de las clases agrupadas en el componente pueden “verse” o “utilizarse” por otros componentes. Únicamente aquellas que decidamos exponer. Esas funciones se exponen precisamente a través de las interfases. Es por eso que decimos que la interfase contiene un conjunto de declaraciones de operaciones públicas, las que expone el componente.


La interfase de un componente se puede ver como círculo o como una clase estereotipada con una relación de realización desde el componente que la expone


Cuando queremos indicar en un solo diagrama que la interface expuesta por un componente es la misma requerida por otro componente podemos mostrarlo por medio de un ensamble.


El componente Orden requiere utilizar la Interfase CodigoUnidad que expone el componente Producto y la Interfase DetalleCliente que expone el componente Cliente

Al igual que otros artefactos que hemos mostrado se ha hecho de forma simplificada y para las situaciones más comunes, de la misma forma en esta ocasión se explica el concepto de componente e interfase para la situación más común en que es utilizada. Pues, nuestra intención en varios de estos artículos consiste en ayudar a la persona que comienza a trabajar con estos artefactos y no nos gustaría confundirlo con demasiados conceptos.

Para quien conoce ya el tema les recomendamos usar referencias más completas, como sería la especificación de UML en la OMG o participar en un curso especializado en UML o esperar artículos futuros donde ahondemos en el tema.

Regístrate al Boletín de Abiztar
VER MÁS ARTÍCULOS

Conoce nuestras promociones permanentes

Disfruta de la capacitación avanzada para ingenieros de software o directores de proyectos, con importantes descuentos. (*aplican restricciones)

CYBER MONDAY: 25% de descuento

CYBER MONDAY vale más con Abiztar. 25% de descuento en ambientes de aprendizaje y cursos de ahora hasta febrero de 2019, pagando el lunes 26 de noviembre. (aplican restricciones).
Lectura recomendada: Capacitación: respuesta urgente ante la globalización
"Desafortunadamente, la crisis de varias economías está reduciendo los presupuestos destinados a la capacitación de personal. Este recorte puede llevar a un círculo vicioso: es imposible ser rentable y productivo si no se tienen los conocimientos y la experiencia necesaria."

Leer artículo completo en Forbes.

MEGA OFERTA: 40% de descuento ó 2x1 en cursos y ambientes

Capacitación avanzada para ingenieros de software o directores de proyectos, con un 40% de descuento ó 2x1 pagando del 27 al 31 de mayo (*aplican restricciones).

85% de los empleados se queja de la falta de capacitación

Esta reveladora encuesta arrojó algunos datos sorprendentes sobre lo que los empleados necesitan en cuanto a capacitación.

Capacítate con Abiztar y ayuda a un niño

Al inscribirte en un Ambiente de Aprendizaje Abiztar también ayudas a educar a un niño en situación de calle por medio de la fundación Ednica.

Estamos contratando
Buscamos instructor experto en modelado con UML, BPMN y arquitectura de software.

Envía tu solicitud.

Sigue a Abiztar en redes sociales

Entérate de promociones, descuentos, artículos, videos y más.

Facebook Twitter

Contáctanos

Teléfono en la Ciudad de México:

+52 (55) 5594 6411

E-mail: cursos@abiztar.com.mx

O si lo prefieres llena el formulario de contacto

Ver aviso de privacidad

 

Sigue a Abiztar en redes sociales

Entérate de promociones, descuentos, artículos, videos y más.

Facebook Twitter

Ver aviso de privacidad - © Abiztar. Las marcas "ChatGPT" y “GPT” son propiedad de OpenAI. Capability Maturity Model y CMM son marcas registradas en la Oficina de Patentes de los EUA por el Software Engineering Institute (SEI) de la Universidad Carnegie Mellon. CMM, IntegrationSM, IDEALSM y SCAMPISM son marcas de servicio de la Universidad Carnegie Mellon. MDA, BPMN, SysML, MOF, OMG y UML son marcas registradas en los EUA y en otros países por el Object Management Group. TOGAF es una marca registrada de The Open Group. Microsoft® es una marca registrada en los EUA y en otros países; Microsoft Office, Microsoft Excel y Microsoft Project son productos propiedad de Microsoft Corp. Enterprise Architect es un producto propiedad de Sparx Systems, Australia. RUP es una marca registrada por IBM Corp."