You are on page 1of 26

Arquitecturas de software

unidad 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 de
tiempo real

Descomposicin 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 pequeo
Independencia modular
Abstraccin
Encapsulamiento

Mientras que los objetivos de la Descomposicin Modular son:


Descomponer los problemas complejos en problemas ms
sencillos
Reutilizar el cdigo
Facilitar la lectura de los programa

El 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 DISEO
Lospatrones de diseoson la base para la bsqueda
de soluciones a problemas comunes en el desarrollo de
softwarey 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 PATRONES
Segn 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

ARQUITECTURA DE DOMINIO
ESPECFICO
Para 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/servidor

Existen 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

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

DISEO DE SOFTWARE DE
ARQUITECTURA MULTIPROCESADOR

Un 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

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


SERVIDOR
La 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

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 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 DISTRIBUIDA
INTRODUCCIN
Prcticamente 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

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

DISEO DE SOFTWARE DE ARQUITECTURA DE


TIEMPO REAL ARQUITECTURA

El 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 Multiprocesador
Un 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

You might also like