¿QUÉ ES
UN COMPONENTE?
Surgió a
finales de los 90 como una aproximación basada en reutilización al desarrollo
de sistemas software. Su creación fue motivada por la frustración de los
diseñadores de que el desarrollo orientado a objetos no reconducido a una
reutilización extensiva, tal y como se sugirió originalmente. Las clases de
objetos simples eran demasiado detalladas y específicas, y a menudo tenían que
ser enlazada con aplicaciones en tiempo de compilación. Había que tener un
conocimiento detallado de clases para usarlas, lo cual generalmente significaba
que había que tener acceso al código fuente del componente. Esto hizo que fuera
difícil el marketing de objetos como componentes reutilizables. A pesar de las
predicciones optimistas iniciales, nunca se desarrolló un mercado significativo
para objetos individuales (Sommerville, 2005).
Un
componente, es un bloque de construcción de software de cómputo. Con más
formalidad, la especificación del Lenguaje de Modelado Unificado define un
componente como “una parte modular, desplegable y sustituible de un sistema,
que incluye la implantación y expone un conjunto de interfaces”. Los
componentes forman la arquitectura del software jugando un papel importante en
el logro de los objetivos y de los requerimientos del sistema que se va a
construir. Como los componentes se encuentran en la arquitectura del software,
deben comunicarse y colaborar con otros componentes y con entidades (otros
sistemas, dispositivos, personas, entre otros.) que existen fuera de las
fronteras del software. El verdadero significado del término componente difiere
en función del punto de vista del ingeniero de software que lo use. (Pressman,
2010).
Consiguientemente,
un componente es una
unidad de software independiente y desplegable definida completamente, al cual
se accede a través de un conjunto de interfaces, así mismo debe contar con
algunas características como son: ser reutilizable, cohesivo, intercambiable y contar
con interfaces definidas.
En diferentes paradigmas de programación la piedra angular son los componentes, por lo cual se genera la aparición en el mercado de diferentes descripciones que plantean la forma de construirlos, utilizarlos y distribuirlos. Dividiéndose en dos vertientes que son:
- 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)
SISTEMAS
DE COMPONENTES INDEPENDIENTES
Es un
estilo de diseño para aplicaciones compuestas de componentes individuales. Pone
énfasis en la descomposición del sistema en componentes lógicos o funcionales
que tienen interfaces bien definidas. Define una aproximación de diseño que usa
componentes discretos, los que se comunican a través de interfaces que
contienen métodos, eventos y propiedades.
En
tal sentido Sommerville (2005) define los componentes independientes, como aquellos “que
son completamente especificados por sus interfaces. Debería haber una clara
separación entre la interfaz de los componentes y su implementación para que
una implementación de un componente se pueda reemplazar por otro sin cambiar el
sistema”.
·
El proceso de comunicación: se define en implementar e
integrar o componer en sistemas componentes independientes débilmente
acoplados. Se ha convertido en una importante aproximación de desarrollo del
software debido a que los sistemas software son cada vez más grandes y más
complejos y los clientes demandan software más confiable desarrollado más
rápidamente. La única forma en la que podemos tratar con la complejidad y
entregar software de calidad más rápidamente es reutilizar.
Los componentes de algunos
modelos definen interfaces que deberían implementarse conforme a todos los
componentes. Si los componentes cumplen con los estándares, entonces su
funcionamiento es independiente de su lenguaje de programación, permitiendo así
que componentes escritos en diferentes lenguajes puedan integrarse en un mismo
sistema.
·
Las arquitecturas basadas en eventos: se han llamado también de invocación
implícita. Otros nombres propuestos para el mismo estilo han sido
integración reactiva o difusión (emisión) selectiva. Por supuesto que
existen estrategias de programación basadas en eventos, sobre todo referida a
interfaces de usuario, existiendo además eventos en los modelos de objetos y
componentes, aunque no es a eso a lo que se refiere primariamente el estilo, no
obstante esa variedad no está del todo excluida. En términos de patrones
de diseño, el patrón que corresponde más estrechamente a este estilo es el que
se conoce como Observador.
Los dos modelos de control
dirigidos por eventos:
1. Modelos de transmisión: En estos modelos, un evento se
transmite a todos los subsistemas. Cualquier subsistema que haya sido
programado para manejar ese evento puede responder a él.
2. Modelos dirigidos por interrupciones: Éstos se usan exclusivamente en
sistemas de tiempo real, en donde las interrupciones externas son detectadas
por un manejador de interrupciones, para seguidamente, éstas ser enviadas a
algún otro componente para su procesamiento.
SISTEMAS BASADOS EN TRANSACCIONES
Los
sistemas de procesamiento de transacciones se diseñan para procesar peticiones
de usuario a fin de obtener información de una base de datos o peticiones para
actualizar la base de datos (Lewis et al., 2003). Técnicamente, una
transacción de una base de datos es una secuencia de operaciones tratada como
una única unidad (una unidad atómica). Todas las operaciones de una transacción
tienen que ser completadas antes de que los cambios en la base de datos sean
permanentes. Esto significa que los fallos de operaciones dentro de la
transacción no conducen a inconsistencias en la base de datos.
Un
ejemplo de una transacción es una petición de un cliente para efectuar un
reintegro de una cuenta bancaria utilizando un ATM (Máquina conectada
informáticamente con un banco que permite efectuar al cliente ciertas
operaciones bancarias mediante una tarjeta o libreta magnéticas que tienen
asignada una clave personal). Esto implica obtener detalles de la cuenta del
cliente, comprobar el saldo, modificar el saldo por la cantidad reintegrada y
enviar comandos al ATM para proporcionar el dinero en efectivo. Hasta que todos
estos pasos no hayan sido completados, la transacción está incompleta y no se
modifica la base de datos de cuentas de clientes.
Desde la
perspectiva de un usuario, una transacción es cualquier secuencia coherente de
operaciones que satisface un objetivo, tal como “encuentra los horarios de
vuelos desde Londres a París”. Si la transacción del usuario no requiere que la
base de datos sea modificada, los sistemas de procesamiento de transacciones
son normalmente sistemas interactivos en donde los usuarios realizan peticiones
de servicios de forma asíncrona.

Una característica muy importante que deben tener los sistemas basados en el esquema de transacciones es la seguridad y consistencia, esto para que se puedan administrar de forma adecuada las múltiples transacciones que se generan a partir de solicitudes o peticiones de los usuarios.
ResponderBorrarLa confiabilidad de la información es una de las características importantes que beben poseer los sistemas, los sistemas basados en transacciones brinda una seguridad a dicha información, dado que las operaciones tienen que ser completadas antes de que los datos sean almacenados en la base de datos de manera permanente.
ResponderBorrarTeniendo en cuenta la importancia de los sistemas basados en transacciones, es de ver que la mayoria de estos sistemas trabajan mediante un procesó "entrada, procesó, salida" y que para que esto se lleve a cabo se necesita una base de datos, la misma es la responsable de resguardar todos esos procesos que el usuario ingrese, teniendo la capacidad de actualizar los procesos en tiempo real y de forma llenar las expectativas del usuario.
ResponderBorrarlos componentes independientes han demostrado tener múltiples ventajas, ya que el 60% del diseño y del código de aplicaciones administrativas es reutilizable , uno de los principales beneficios esta el costo , tiempo, y esfuerzo para desarrollar un software.
ResponderBorrarLos sistemas de componentes independientes se implementan de forma individual, se debe tener una separación entre las interfaces y los componentes,pudiéndose diseñar si los componentes cumplen con las características, así su función es independiente de su lenguaje de programación.
ResponderBorrarLos Componentes ayudan a la construcción de software con una formalidad creando interfaces , jugando un rol importante a la hora de crear sistemas confiables y seguros.
ResponderBorrarLos Sistemas Independientes se comunican debido a interfaces que contienen metodos logicos y funcionales
los sistemas basados en transacciones son operaciones basadas con el fin de obtener informacion de una base de datos, un ejemplo de la vida diaria es una recarga de saldo a una linea telefonica en cualquier operadora movilnet movistar o digitel, donde se solcita recargar a un numero se da el numero, se manda la clave se procede a verificar el numero monto y numero y luego se confirma ls transaccion se da a entender que los sistemas basados en transaciones son de modo interactivo
Los componentes de software es un nuevo activo reutilizable que nace por la creciente en los últimos años en la industria del software, los cuales aportan beneficios como incremento en la calidad del software producido, aumento de la productividad del grupo de desarrollo y reducción de riesgos global del proyecto emprendido.
ResponderBorrarMe parece muy completa la información abordada sobre el tema, con referencia al tema de los modelos de componentes quiero compartir algo que leí de Somerville (2005), "Un modelo de componentes define un conjunto de estándares para componentes, incluyendo estándares de interfaz, estándares de uso y estándares de despliegue. La implementación del modelo de componentes proporciona un conjunto de servicios horizontales que pueden ser utilizados por todos los componentes."
ResponderBorrarY haciendo referencia al tema de los Sistemas basados en transacciones, solo quiero resaltar una de las características que me llama mucho y es que una de las características con las que trabajan estos es con la atomicidad, es decir, las condiciones de una transacción de dinero por ejemplo debe cumplirse por completo o lo contrario es decir no cumplirse en nada, precisamente leyendo un libro de base de datos del señor Silberschatz(2002) acota lo siguiente sobre la atomicidad "Consideremos un programa para transferir 50 € desde la cuenta Aa la B. Si ocurre un fallo del sistema durante la ejecución del programa, es posible que los 50 € fueron eliminados de la cuenta Apero no abonados a la cuenta B, resultando un estado de la base de datos inconsistente. Claramente, es esencial para la consistencia de la base de datos que ambos, el abono y el cargo tengan lugar, o que ninguno tenga lugar. Es decir, la transferencia de fondos debe ser atómica: ésta debe ocurrir en ellos por completo o no ocurrir en absoluto. Es difícil asegurar esta propiedad en un sistema de procesamiento de archivos convencional."
Una transacción es una colección de operaciones que se llevan a cabo desde el inicio hasta el final de cada transacción, también podemos decir, que es la ejecución de un programa que accede y posiblemente actualiza (según sea el caso) varios elementos de datos. Sus principales características son mantener la consistencia de datos, vigilar que cada operación se lleve a cabo o no (atomicidad), asegurar de mantener los datos aun cuando la transacción se haya realizado con éxito o haya ocurrido algún fallo (durabilidad).
ResponderBorrarLa transacción consiste en todas las operaciones que se ejecutan entre el inicio y el fin de una transacción. Cuando se ejecutan de manera concurrente varias transacciones se debe tomar en cuenta el tiempo total transcurrido de está, dando respuesta rápida no puede permitirse tener usuarios en espera. Debe contener fiabilidad, ofreciendo un mecanismo que permita una recuperación rápida y precisa en caso de algún fallo (por ejemplo copias de seguridad). Debe ser inflexible, todas las transacciones debe ser procesadas exactamente de la misma forma, independientemente del usuario.
ResponderBorrarlos sistemas de transacción es un sistema de información que se encarga de recolectar modificar y recuperar la transacciones de una organización. por ejemplo cuando compramos un producto por internet (a crédito) ,si el crédito se realiza de forma correcta se garantiza que obtendrás el producto , y la tienda tendrá su dinero,pero si surge algún error en el intercambio de la información esto afecta la transacción, quiere decir que no obtienes el producto ni tienda el dinero .
ResponderBorrarlas arquitecturas basadas en eventos son de gran utilidad, ya que podemos decir que se ejecuten uno o varias accion cuando determinada actividad (evento) se lleve a cabo. o podemos diseñar que se ejecute algo y que solo cuando exista una interupcion de determinada cosa se ejecute alguna instruccion, desde mi punto de vista son muy utiles ejemplo en la aplicacion de sistemas de seguridad,
ResponderBorrarUn componente software es una unidad de composición con interfaces especializadas constractualmente y dependencias de contexto explicitas únicamente. Lo que se común en estas definiciones es que están de acuerdo en que los componentes son independientesy que son unidades de composición fundamentales en un sistema.
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarEs evidente que los componente independientes nos presentan muchas ventajas como la facilidad de instalación, por ejemplo cuando una nueva versión de algún software esté disponible el usuario podrá reemplazar la versión existente sin impacto en otros componentes o el software completo, los costos reducidos. El uso de componentes de terceros permite distribuir el costo del desarrollo y del mantenimiento, facilidad de desarrollo, Los componentes implementan un interface bien definida para proveer la funcionalidad definida permitiendo el desarrollo sin impactar otras partes del sistema, es reusable. El uso de componentes reutilizables significa que ellos pueden ser usados para distribuir el desarrollo y el mantenimiento entre múltiples aplicaciones y sistemas.
ResponderBorrar