Está en la página 1de 31

ARQUITECTURA

DEL SOFTWARE
Ing. Gabriela Murguia Torrez
Arquitectura del software
Elementos Arquitectonicos

La arquitectura de software es un conjunto


de patrones que proporcionan un marco de
referencia necesario para guiar la
construcción de un software, permitiendo a
los programadores, analistas y todo el
conjunto de desarrolladores del software
compartir una misma línea de trabajo y
cubrir todos los objetivos y restricciones de la
aplicación.

Es considerada el nivel más alto en el diseño


de la arquitectura de un sistema puesto que
establecen la estructura, funcionamiento e
interacción entre las partes del software. .
Arquitectura del software
Componentes
Componentes
La arquitectura de software se compone por:
clientes y servidores.
bases de datos.
filtros.
niveles en sistemas jerárquico.
Interacciones
Entre los componentes de la arquitectura de
software existe un conjunto de interacciones entre
las que sobresalen :

llamadas a procedimientos.
comportamiento de variables.
protocolos cliente servidor.
transmisión asíncrona de eventos.
Arquitectura del software
Características

La arquitectura de software forma la columna vertebral


para construir un sistema de software, es en gran
medida responsable de permitir o no ciertos atributos
de calidad del sistema entre los que se destacan la
confiabilidad y el rendimiento del software.

Además es un modelo abstracto reutilizable[1] que


puede transferirse de un sistema a otro y que
representa un medio de comunicación y discusión entre
participantes del proyecto, permitiendo así la
interacción e intercambio entre los desarrolladores con
el objetivo final de establecer el intercambio de
conocimientos y puntos de vista entre ellos.
Arquitectura del software

Antes de que comience un importante desarrollo de software, debemos elegir una arquitectura adecuada que
nos proporcione la funcionalidad deseada y los atributos de calidad. Por lo tanto, debemos entender
diferentes arquitecturas, antes de aplicarlas a nuestro diseño.
Arquitectura del software
¿Qué es un patrón arquitectónico?

Un patrón arquitectónico es una


solución general y reutilizable a un
problema común en la arquitectura de
software dentro de un contexto dado.
Los patrones arquitectónicos son
similares al patrón de diseño de
software pero tienen un alcance más
amplio.
Arquitectura del software
¿Qué es un patrón arquitectónico?

Un patrón arquitectónico es una solución general y reutilizable a


un problema común en la arquitectura de software dentro de un
contexto dado. Los patrones arquitectónicos son similares al
patrón de diseño de software pero tienen un alcance más
amplio.
Tipos de patrones:

Patrón de capas Patrón de igual a igual


Patrón cliente-servidor Patrón de bus de evento
Patrón maestro-esclavo Modelo-vista-controlador
Patrón de filtro de tubería Patrón de pizarra
Patrón de intermediario Patrón de intérprete
Arquitectura del software

Patrón en capas
Arquitectura del software
Arquitectura Multicapa
Arquitectura del software
Arquitectura Multicapa
Arquitectura del software
Arquitectura Multicapa
Arquitectura del software
Beneficios
Arquitectura Multicapa
Arquitectura del software
CLIENTE SERVIDOR

Modelo Cliente-servidor o simplemente Cliente-servidor. Esta


arquitectura consiste básicamente en un cliente que realiza
peticiones a otro programa (el servidor) que le da respuesta.

Aunque esta idea se puede aplicar a programas que se ejecutan


sobre una sola computadora es más ventajosa en un sistema
operativo multiusuario distribuido a través de una red de
computadoras. La interacción cliente-servidor es el soporte de la
mayor parte de la comunicación por redes. Ayuda a comprender las
bases sobre las que están construidos los algoritmos distribuidos.
Arquitectura del software
CLIENTE SERVIDOR

En esta arquitectura la computadora de cada uno de los


usuarios, llamada cliente, produce una demanda de
información a cualquiera de las computadoras que
proporcionan información, conocidas como servidores estos
últimos responden a la demanda del cliente que la produjo.
Los clientes y los servidores pueden estar conectados a una
red local o una red amplia, como la que se puede
implementar en una empresa o a una red mundial como lo es
la Internet.
Bajo este modelo cada usuario tiene la libertad de obtener la
información que requiera en un momento dado proveniente
de una o varias fuentes locales o distantes y de procesarla
como según le convenga. Los distintos servidores también
pueden intercambiar información dentro de esta
arquitectura.
Arquitectura del software
Partes que componen el sistema

Cliente: Programa ejecutable que participa activamente en el establecimiento de las conexiones. Envía una petición al
servidor y se queda esperando por una respuesta. Su tiempo de vida es finito una vez que son servidas sus solicitudes,
termina el trabajo.

Servidor: Es un programa que ofrece un servicio que se puede obtener en una red. Acepta la petición desde la red, realiza
el servicio y devuelve el resultado al solicitante. Al ser posible implantarlo como aplicaciones de programas, puede
ejecutarse en cualquier sistema donde exista TCP/IP y junto con otros programas de aplicación. El servidor comienza su
ejecución antes de comenzar la interacción con el cliente. Su tiempo de vida o de interacción es “interminable”.

Los más complejos trabajan con peticiones concurrentes aún cuando una sola petición lleve mucho tiempo para ser
servida (caso del servidor ftp que debe copiar un archivo en otra máquina). Son complejos pues tienen altos
requerimientos de protección y autorización. Pueden leer archivos del sistema, mantenerse en línea y acceder a datos
protegidos y a archivos de usuarios. No puede cumplir a ciegas las peticiones de los clientes, deben reforzar el acceso al
sistema y las políticas de protección.
Arquitectura del software
Características de la arquitectura
Cliente-Servidor

• Combinación de un cliente que interactúa con el usuario, y un servidor


que interactúa con los recursos a compartir. El proceso del cliente
proporciona la interfaz entre el usuario y el resto del sistema. El proceso
del servidor actúa como un motor de software que maneja recursos
compartidos tales como bases de datos, impresoras, Módem, etc.
• Las tareas del cliente y del servidor tienen diferentes requerimientos en
cuanto a recursos de cómputo como velocidad del procesador, memoria,
velocidad y capacidades del disco e input-output devices.
• Se establece una relación entre procesos distintos, los cuales pueden ser
ejecutados en la misma máquina o en máquinas diferentes distribuidas a
lo largo de la red.
• Existe una clara distinción de funciones basadas en el concepto
de”servicio”, que se establece entre clientes y servidores
Arquitectura del software
Características de la arquitectura Cliente-
Servidor
• La relación establecida puede ser de muchos a uno, en la que un servidor puede dar servicio a muchos clientes,
regulando su acceso a los recursos compartidos.
• Los clientes corresponden a procesos activos en cuanto a que son estos los que hacen peticiones de servicios. Estos
últimos tienen un carácter pasivo, ya que esperan peticiones de los clientes.
• No existe otra relación entre clientes y servidores que no sea la que se establece a través del intercambio de mensajes
entre ambos. El mensaje es el mecanismo para la petición y entrega de solicitudes de servicios.
• El ambiente es heterogéneo. La plataforma de hardware y el sistema operativo del cliente y del servidor no son
siempre los mismos. Precisamente una de las principales ventajas de esta arquitectura es la posibilidad de conectar
clientes y servidores independientemente de sus plataformas.
• El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema Cliente-Servidor. La
escalabilidad horizontal permite agregar más estaciones de trabajo activas sin afectar significativamente el
rendimiento. La escalabilidad vertical permite mejorar las características del servidor o agregar múltiples servidores.
Arquitectura del software
Ventajas del esquema Cliente-Servidor

Existencia de plataformas de hardware cada vez más baratas. Esta constituye a su vez
una de las más palpables ventajas de este esquema, la posibilidad de utilizar máquinas
mucho más baratas que las requeridas por una solución centralizada, basada en
sistemas grandes (mainframes). Además, se pueden utilizar componentes, tanto de
hardware como de software, de varios fabricantes, lo cual contribuye
considerablemente a la reducción de costos y favorece la flexibilidad en la
implantación y actualización de soluciones.

Facilita la integración entre sistemas diferentes y comparte información,


permitiendo por ejemplo que las máquinas ya existentes puedan ser utilizadas pero
utilizando interfaces más amigables el usuario. De esta manera, se puede integrar PCs
con sistemas medianos y grandes, sin necesidad de que todos tengan que utilizar el
mismo sistema operativo.
Arquitectura del software
Ventajas del esquema Cliente-Servidor

• Al favorecer el uso de interfaces gráficas interactivas, los sistemas construidos bajo este esquema tienen una
mayor y más intuitiva con el usuario. En el uso de interfaces gráficas para el usuario, presenta la ventaja, con
respecto a uno centralizado, de que no siempre es necesario transmitir información gráfica por la red pues
esta puede residir en el cliente, lo cual permite aprovechar mejor el ancho de banda de la red.

• La estructura inherentemente modular facilita además la integración de nuevas tecnologías y el crecimiento


de la infraestructura computacional, favoreciendo así la escalabilidad de las soluciones.

• Contribuye además a proporcionar a los diferentes departamentos de una organización, soluciones locales,
pero permitiendo la integración de la información.
Arquitectura del software
Desventajas
• El mantenimiento de los sistemas es más difícil pues implica la interacción de diferentes partes de hardware y de software,
distribuidas por distintos proveedores, lo cual dificulta el diagnóstico de fallas.

• Cuenta con muy escasas herramientas para la administración y ajuste del desempeño de los sistemas.

• Es importante que los clientes y los servidores utilicen el mismo mecanismo (por ejemplo sockets o RPC), lo cual implica
que se deben tener mecanismos generales que existan en diferentes plataformas.

• Hay que tener estrategias para el manejo de errores y para mantener la consistencia de los datos.

• El desempeño (performance), problemas de este estilo pueden presentarse por congestión en la red, dificultad de tráfico
de datos, etc.
Arquitectura del software
Patrón de capas

Este patrón se puede utilizar para estructurar programas que se


pueden descomponer en grupos de subtareas, cada una de las
cuales se encuentra en un nivel particular de abstracción. Cada
capa proporciona servicios a la siguiente capa superior.

Las 4 capas más comúnmente encontradas de un sistema de


información general son las siguientes.

• Capa de presentación (también conocida como capa UI )


• Capa de aplicación (también conocida como capa de
servicio )
• Capa de lógica de negocios (también conocida como capa
de dominio )
• Capa de acceso a datos (también conocida como capa de
persistencia )
Arquitectura del software
Patrón de capas

La arquitectura basada en capas se enfoca en la distribución de roles y responsabilidades de forma jerárquica


proveyendo una forma muy efectiva de separación de responsabilidades. El rol indica el modo y tipo de interacción con
otras capas, y la responsabilidad indica la funcionalidad que está siendo desarrollada.
Por ejemplo, una aplicación web típica está compuesta por una capa de presentación (funcionalidad relacionada con la
interfaz de usuario), una capa de negocios (procesamiento de reglas de negocios) y una capa de datos (funcionalidad
relacionada con el acceso a datos).
Arquitectura del software
Patrón de capas

El estilo de arquitectura basado en capas se identifica por las siguientes características:


• Describe la descomposición de servicios de forma que la mayoría de la interacción ocurre solamente entre capas
vecinas.
• Las capas de una aplicación pueden residir en la misma maquina física (misma capa) o puede estar distribuido sobre
diferentes computadores (n-capas).
• Los componentes de cada capa se comunican con otros componentes en otras capas a través de interfaces muy
bien definidas.
• Este modelo ha sido descrito como una “pirámide invertida de re-uso” donde cada capa agrega responsabilidad y
abstracción a la capa directamente sobre ella.
Arquitectura del software
Principios fundamentales

Los principios comunes que se aplican cuando se diseña para usar este estilo de arquitectura incluyen:

• Abstracción. La arquitectura basada en capas abstrae la vista del modelo como un todo mientras que provee suficiente
detalle para entender las relaciones entre capas.
• Encapsulamiento. El diseño no hace asunciones acerca de tipos de datos, métodos, propiedades o implementación.
• Funcionalidad claramente definida. El diseño claramente define la separación entre la funcionalidad de cada capa. Capas
superiores como la capa de presentación envía comandos a las capas inferiores como la capa de negocios y la capa de datos
y los datos fluyen hacia y desde las capas en cualquier sentido.
• Alta cohesión. Cada capa contiene funcionalidad directamente relacionas con la tarea de dicha capa.
• Reutilizable. Las capas inferiores no tienen ninguna dependencia con las capas superiores, permitiéndoles ser reutilizables
en otros escenarios.
• Desacople. La comunicación entre las capas está basada en la abstracción lo que provee un desacople entre las capas.
Arquitectura del software
Uso

Algunos tipos comunes de aplicaciones por capas incluyen:

• Aplicaciones de línea de negocios (LOB), como contabilidad, y sistemas de gestión de clientes.


• Aplicaciones web Corporativas y sitios Web
• Aplicaciones corporativas de escritorio o clientes inteligentes con servidores centralizados de aplicación con lógica de
negocios.
Los siguientes son algunas variaciones del estilo de arquitectura basado en capas:

• Capas estrictas (Strict layering). Cada capa solo puede invocar a la capa directamente debajo de a ella.
• Saltos de Capas (Layer skipping). Las capas pueden invocar otras capas más profundas que las que están directamente
debajo de ellas. Esto puede incrementar el rendimiento pero impacta la portabilidad.
• Capa de Caja Negra (Black-box layering). Los limites de las capas y sus dependencias esta definidas de forma estricta
usando interfaces, lo que soporta extensiones en run-time, intercepción y mejora la capacidad de realiza pruebas.
• Capa de Caja Blanca (White-box layering). Clases que colaboran entre los límites de las capas y están altamente acopladas.
Arquitectura del software
Arquitectura en N-capas

Este estilo de despliegue arquitectónico describe la separación de la funcionalidad en segmentos separados de forma muy
parecida al estilo de capas, pero en el cual cada segmento está localizado en un computador físicamente separado. Este
estilo ha evolucionado desde la aproximación basada en componentes generalmente usando métodos específicos de
comunicación asociados a una plataforma en vez de la aproximación basada en mensajes.
Los siguientes son los principios fundamentales del estilo de arquitectura basado en N-capas/3-capas:

• Es un estilo para definir el despliegue de las capas en una instalación.


• La arquitectura de N-capas está caracterizada por la descomposición functional de la aplicación, los componentes de
servicio y su instalación distribuida. Mejorando la escalabilidad, disponibilidad, administración, y utilización de recursos.
• Cada capa es completamente independiente de las otras capas, excepto aquella que esta inmediatamente debajo de ella.
La capa n solo necesita saber cómo manejar una solicitud de la capa n+1, como hacer la solicitud a la capa n-1 (si existe) y
cómo manejar el resultado de la petición.
• La arquitectura de N-capas tiene al menos tres capas separadas o partes, cada una de ellas con su responsabilidad y está
localizada en diferentes servidores.
• Una capa es desplegada en un nivel específico si más de un servicio o aplicación está expuesto por esa capa.
Arquitectura del software
Arquitectura en N-capas

Beneficios.
Los principales beneficios del estilo de arquitectura de N-capas/3-capas son:

• Mejoras en las posibilidades de mantenimiento. Debido a que cada capa es


independiente de la otra los cambios o actualizaciones pueden ser realizados sin
afectar la aplicación como un todo.

• Escalabilidad. Como las capas están basadas en diferentes maquinas, el


escalamiento de la aplicación hacia afuera es razonablemente sencillo.

• Flexibilidad. Como cada capa puede ser manejada y escalada de forma


independiente, la flexibilidad se incrementa.

• Disponibilidad. Las aplicaciones pueden aprovechar la arquitectura modular de


los sistemas habilitados usado componentes que escalan fácilmente lo que
incrementa la disponibilidad.
Arquitectura del software
Arquitectura en N-capas

Algunos ejemplos del estilo de arquitectura de N-capas/3-capas


son:

• Una aplicación Web Financiera donde la seguridad es importante


y la capa de negocios necesita estar instalada detrás de un Firewall,
lo que obliga la instalación de la capa de presentación en una capa
separada del perímetro.

• Una aplicación de cliente rico conectada, donde la capa de


presentación esta en las maquinas cliente y las capas de negocios y
datos están instaladas en el servidor.

También podría gustarte