domingo, 26 de abril de 2015

Componentes independientes y Sistemas basados en Trasacciones



¿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.


16 comentarios:

  1. 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.

    ResponderBorrar
  2. La 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.

    ResponderBorrar
  3. Teniendo 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.

    ResponderBorrar
  4. los 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.

    ResponderBorrar
  5. Los 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.

    ResponderBorrar
  6. Los 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.
    Los 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

    ResponderBorrar
  7. 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.

    ResponderBorrar
  8. Me 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."
    Y 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."

    ResponderBorrar
  9. 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).

    ResponderBorrar
  10. La 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.

    ResponderBorrar
  11. los 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 .

    ResponderBorrar
  12. las 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,

    ResponderBorrar
  13. Un 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.

    ResponderBorrar
  14. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  15. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  16. Es 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