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.