expo unidad3

26
Arquitecturas de softwar unidad 3 3.1 Descomposición modular 3.2 Patrones de Diseño 3.3 Arquitectura de dominio especíco 3.4 Diseño de software de arquitectura multiprocesador 3.5 Diseño de software de arquitectura liente ! "er#idor 3.$ Diseño de software de arquitectura distri%uida 3.& Diseño de software de arquitectura de tiempo real

Upload: invensible-nahual-supremo-supremo

Post on 08-Oct-2015

218 views

Category:

Documents


0 download

DESCRIPTION

requerimientos y sofr

TRANSCRIPT

Arquitecturas de software unidad 3

Arquitecturas de softwareunidad 3 3.1 Descomposicin modular 3.2 Patrones de Diseo 3.3 Arquitectura de dominio especfico 3.4 Diseo de software de arquitectura multiprocesador 3.5 Diseo de software de arquitectura Cliente - Servidor 3.6 Diseo de software de arquitectura distribuida 3.7 Diseo de software de arquitectura detiempo realDescomposicin modular.El principal objetivo de la descomposicin modula es de componer los problemas difciles en problemas sencillos de tal manera sera mas eficiente el desarrollo del sistema. La descomposicinmodularse enfoca en reutilizar cdigo, adems debido a esta descomposicin cada mdulo es desarrollado con un fin especfico, de esta manera los futuros programadores comprendern fcilmente la funcin de cada mdulo.Un ejemplo de la descomposicin

Cabe resaltar los mdulos, que son la muestra de la descomposicin modular del primer modulo

Las caractersticas de los mdulos son:Tamao pequeoIndependencia modularAbstraccinEncapsulamientoMientras que los objetivos de la Descomposicin Modular son:Descomponer los problemas complejos en problemas ms sencillosReutilizar el cdigoFacilitar la lectura de los programaEl diseo modular propone dividir el sistema en partes diferenciadas y definir sus interfaces. Las ventajas seran: la claridad, reduccin de costos y reutilizacin.

PATRONES DE DISEOLospatrones de diseoson la base para la bsqueda de soluciones a problemas comunes en el desarrollo desoftwarey otros mbitos referentes al diseo de interaccin o interfaces.

Un patrn de diseo resulta ser una solucin a un problema de diseo. Para que una solucin sea considerada un patrn debe poseer ciertas caractersticas. Una de ellas es que debe haber comprobado suefectividadresolviendo problemas similares en ocasiones anteriores. Otra es que debe serreutilizable, lo que significa que es aplicable a diferentes problemas de diseo en distintas circunstancias.

OBJETIVOS DE LOS PATRONES Los patrones de diseo pretenden:Proporcionar catlogos de elementos reusables en el diseo de sistemas software.Evitar la reiteracin en la bsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.Formalizar un vocabulario comn entre diseadores.Estandarizar el modo en que se realiza el diseo.Facilitar el aprendizaje de las nuevas generaciones de diseadores condensando conocimiento ya existente.

CATEGORAS DE PATRONESSegn la escala o nivel de abstraccin:Patrones de arquitectura: Aquellos que expresan un esquema organizativo estructural fundamental para sistemas de software.Patrones de diseo: Aquellos que expresan esquemas para definir estructuras de diseo (o sus relaciones) con las que construir sistemas de software.Dialectos: Patrones de bajo nivel especficos para un lenguaje de programacin o entorno concreto.Adems, tambin es importante resear el concepto de "antipatrn de diseo", que con forma semejante a la de un patrn, intenta prevenir contra errores comunes de diseo en el software. La idea de los anti patrones es dar a conocer los problemas que acarrean ciertos diseos muy frecuentes, para intentar evitar que diferentes sistemas acaben una y otra vez en el mismo callejn sin salida por haber cometido los mismos errores.

ARQUITECTURA DE DOMINIO ESPECFICOPara el desarrollo de software existen diversas arquitecturas de dominio especfico. Que seran: Diseo de software de arquitectura multiprocesador, diseo de software distribuido, diseo de software distribuido en tiempo real y diseo de software cliente/servidorExisten dos modelos de dominio especfico: 1. Modelos genricos que son abstracciones de varios sistemas reales. 2. Modelos de referencia que son modelos abstractos y describen a una clase mayor de sistemas.Modelo genrico: flujo de datos de un compiladorModelo de referencia: la arquitectura OSI

Arquitectura cliente-servidor. En este caso el sistema puede ser visto como un conjunto de servicios que se proporcionan a los clientes que hacen uso de dichos servicios. Los servidores y los clientes se tratan de forma diferente en estos sistemas. Arquitecturas de objetos distribuidos.Para esta arquitectura no hay distincin entre servidores y clientes, y el sistema puede ser visto como un conjunto de objetos que interaccionan cuya localizacin es irrelevante.

El trmino middleware se usa para hacer referencia a ese software; se ubica en medio de los diferentes componentes distribuidos del sistema. Bernstein (Bernstein, 1996) resume los tipos de middleware disponibles para soportar computacin distribuida. El middleware es un software de propsito general que normalmente se compra como un componente comercial ms que escribirse especialmente por los desarrolladores de la aplicacin. Ejemplos de middleware son software para gestionar comunicaciones con bases de datos, administradores de transacciones, convertidores de datos y controladores de comunicacin. Los sistemas distribuidos se desarrollan normalmente utilizando una aproximacin orientada a objetos.

DISEO DE SOFTWARE DE ARQUITECTURA MULTIPROCESADORUn sistema multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma concurrente, un multiprocesador es aquel que cuenta con dos o ms microprocesadores.Un sistema multiproceso o multitarea es aquel que permite que se ejecuten varios procesos de forma concurrente. Cabe recalcar que a nica forma de que se ejecuten de forma simultnea varios procesadores es tener varias CPUs (ya seaen una maquina en o en varias, en un sistema distribuido).

El multiproceso no es ms que un conjunto de tareas que pueden ser completadas rpidamente si hay varias unidades de proceso ejecutndolas. Para el desarrollo de estos procesos se ocupan modelos de programacin concurrente y paralela:Los objetivos de la programacin paralela, son:Reducir el tiempo de cmputo.Reducir la complejidad del algoritmo,Aprovechar al mximo la capacidad de lascomputadoras multiproceso.Existen diferentes tipos de programacin:Multihilo: El cual permite a una aplicacin realizar varias tareas concurrentemente. Los distintos hilos que se ejecutan comparten una serie de recursos.

Se puede observar la existencia de mltiples procesadores.La ventaja de un sistema multiproceso reside en la operacin llamada cambio de contexto. Esta operacin consiste en quitar a un proceso de la CPU, ejecutar otro proceso y volver a colocar el primero sin que se entere de nada. Los hilos que se ejecutan comparten ciertos recursos como el espacio del mensaje, la cual permite simplificar el diseo de una aplicacin que debe llevar a cabo distintas funciones simultneamente.

DISEO DE SOFTWARE DE CLIENTE SERVIDORLa arquitectura cliente-servidor es un modelo de aplicacin distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Esta idea tambin se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es ms ventajosa en un sistema operativo multiusuario distribuido a travs de una red de computadoras.

En esta arquitectura la capacidad de proceso est repartida entre los clientes y los servidores, aunque son ms importantes las ventajas de tipo organizativo debidas a la centralizacin de la gestin de la informacin y la separacin de responsabilidades, lo que facilita y clarifica el diseo del sistema.La separacin entre cliente y servidor es una separacin de tipo lgico, donde el servidor no se ejecuta necesariamente sobre una sola mquina ni es necesariamente un slo programa. Los tipos especficos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propsitos varan de unos servicios a otros, la arquitectura bsica seguir siendo la misma.

La arquitectura cliente-servidor sustituye a la arquitectura monoltica en la que no hay distribucin, tanto a nivel fsico como a nivel lgico.La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes estn conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposicin de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en l se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso pblico y los que son de uso restringido, los archivos que son de slo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se este utilizando en una red mixta.

Caractersticas En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus caractersticas son:Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicacin (dispositivo maestro o amo).Espera y recibe las respuestas del servidor.Por lo general, puede conectarse a varios servidores a la vez.Normalmente interacta directamente con los usuarios finales mediante una interfaz grfica de usuario.Al contratar un servicio de redes, se debe tener en cuenta la velocidad de conexin que le otorga al cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre ronda entre 1 ms y 50 ms.Al receptor de la solicitud enviada por el cliente se conoce como servidor. Sus caractersticas son:Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempean entonces un papel pasivo en la comunicacin (dispositivo esclavo).Tras la recepcin de una solicitud, la procesan y luego envan la respuesta al cliente.Por lo general, aceptan conexiones desde un gran nmero de clientes (en ciertos casos el nmero mximo de peticiones puede estar limitado).No es frecuente que interacten directamente con los usuarios finales.Ventajas Centralizacin del control: los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda daar el sistema. Esta centralizacin tambin facilita la tarea de poner al da datos u otros recursos (mejor que en las redes P2P)..

Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden aadir nuevos nodos a la red (clientes y/o servidores).Fcil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se vern afectados por ese cambio (o se afectarn mnimamente). Esta independencia de los cambios tambin se conoce como encapsulacin.Existen tecnologas, suficientemente desarrolladas, diseadas para el paradigma de C/S que aseguran la seguridad en las transacciones, la amigabilidad de la interfaz, y la facilidad de empleo.DISEO DE SOFTWARE DE ARQUITECTURA DISTRIBUIDAINTRODUCCINPrcticamente todo los grandes sistemas informticos son en la actualidad sistemas distribuidos. Un sistema distribuido es un sistema en el que el procesamiento de informacin se distribuye sobre varias computadoras en vez de estar confinado en una nica mquina. Obviamente, la ingeniera de sistemas distribuidos tiene mucho en comn con la ingeniera de cualquier otro software, pero existen cuestiones especficas que deben tenerse en cuenta cuando se disea este tipo de sistemas.Se identifican las siguientes ventajas del uso de una aproximacin distribuida para el desarrollo de sistemas:1.Comparticin de recursos. Un sistema distribuido permite compartir recursos hardware y software como discos, impresoras, ficheros y compiladores que se asocian con computadoras de una red.2.Apertura. Los sistemas distribuidos son normalmente sistemas abiertos, lo que significa que se disean sobre protocolos estndar que permiten combinar equipamiento y software de diferentes vendedores.3.Concurrencia. En un sistema distribuido, varios procesos pueden operar al mismo tiempo sobre diferentes computadoras de la red. Estos procesos pueden (aunque no necesariamente) comunicarse con otros durante su funcionamiento normal.

4.Escalabilidad. Al menos en principio, los sistemas distribuidos son escalables en tanto que la capacidad del sistema puede incrementarse aadiendo nuevos recursos para cubrir nuevas demandas sobre el sistema. En la prctica, la red que una las computadoras individuales del sistema puede limitar la escalabilidad del sistema. Si se aaden muchas computadoras nuevas, entonces la capacidad de la red puede resultar inadecuada.5.Tolerancia a defectos. La disponibilidad de varias computadoras y el potencial para reproducir informacin significa que los sistemas distribuidos pueden ser tolerantes a algunos fallos de funcionamiento del hardware y del sofware. En la mayora de los sistemas distribuidos, se puede proporcionar un servicio degradado cuando ocurren fallos de funcionamiento; una completa prdida de servicio slo ocurre cuando existe un fallo de funcionamiento en la red.

DISEO DE SOFTWARE DE ARQUITECTURA DE TIEMPO REAL ARQUITECTURAEl software de tiempo real esta muy acoplado con el mundo externo, esto es, el software de tiempo real debe responder al mbito del problema en un tiempo dictado por el mbito del problema. Debido a que el software de tiempo real debe operar bajo restricciones de rendimiento muy rigurosas, el diseo del software esta conducido frecuentemente, tanto por la arquitectura del hardware como por la del software, por las caractersticas del sistema operativo, por los requisitos de la aplicacin y tanto por los extras del lenguaje de programacin como prospectos de diseo.

La computadora digital se ha convertido en una maquina omnipresente en al vida diaria de todos nosotros. Las computadoras nos permiten ver juegos, as como contar el tiempo, optimizar el gasto de gasolina de nuestras ultimas generaciones de coches y programar a nuestros aparatos.Todas estas interacciones con las computadoras sean tiles o intrusivas son ejemplos de computacin de tiempo real. La computadora esta controlando algo que interacta con la realidad sobre una base de tiempo de hecho, el tiempo es la esencia de la interaccin.

Arquitectura MultiprocesadorUn sistema multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma concurrente, la razn es porque actualmente la mayora de las cpus solo pueden ejecutar un proceso cada vez. La nica forma de que se ejecuten de forma simultanea varios procesos es tener varias cpus ya sea en una maquina o en varias en un sistema distribuido.La ventaja de un sistema multiproceso decide en la operacin llamada cambio de contexto y consiste en quitar a un proceso de la CPU, ejecutar otro proceso y volver a colocar el primero sin que se entere de nada.El multiproceso no es difcil de entender : mas procesadores significa mas potencia computacional.Un conjunto de tareas puede ser completado mas rpidamente si hay varias unidades de proceso ejecutndolas en paralelo.