Logo Studenta

DDRS_U2_Contenido

¡Este material tiene más páginas!

Vista previa del material en texto

Desarrollo de Software 
4o semestre 
 
Programa de la asignatura: 
Diseño y arquitectura de software 
 
 
Unidad 2. Elementos de diseño de la arquitectura de 
software 
 
Clave: 
 
Ingeniería: 
15142424 
TSU: 
/ 16142525 
 
 
Universidad Abierta y a Distancia de México 
 
 
 
México, Ciudad de México, agosto del 2023 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 2 
 
 
 
 
Índice 
Unidad 2. Elementos de diseño de la arquitectura de software .............................. 3 
Presentación de la unidad ...................................................................................... 3 
Logros .................................................................................................................... 3 
Competencia específica ......................................................................................... 4 
2.1. Estilos y patrones arquitectónicos .................................................................... 4 
2.1.2 Enfoque ....................................................................................................... 10 
2.2. Categorías de estilos arquitectónicos ............................................................ 13 
2.2.1 Basado en componentes.............................................................................. 14 
2.2.2 Capas .......................................................................................................... 16 
2.2.3 Cliente/servidor ............................................................................................ 18 
2.2.4 Orientado a objetos ...................................................................................... 19 
2.2.5 Tuberías y filtros .......................................................................................... 21 
Cierre de la unidad ............................................................................................... 23 
Fuentes de consulta ............................................................................................. 23 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 3 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
Presentación de la unidad 
 
Figura 1.Arquitectura. Tomada de 
https://www.ibm.com/developerworks/ 
ssa/webservices/library/j- 
eaed10/figure1.jpg 
 
 
 
En esta segunda unidad revisarás de manera 
profunda los modelos y patrones de arquitectura y 
su influencia sobre la arquitectura de software, los 
tipos que existen y las características de cada 
modelo; asimismo, conocerás las distintas 
propuestas que existen en la industria del desarrollo 
de software. 
 
Los temas desarrollados en la unidad te ayudarán a 
identificar el modelo adecuado a aplicar para una 
determinada problemática en el desarrollo de software. 
 
Finalmente distinguirás diferencias primordiales en los estándares más aplicados y 
extendidos en la industria del desarrollo de software. 
¡Bienvenido a la unidad 2! 
 
 
Logros: 
 
 
Al término de esta unidad lograrás: 
• Analizar y distinguir los fundamentos de los patrones y estilos 
arquitectónicos. 
• Analizar las categorías de estilos aplicables a la arquitectura de 
software. 
• Proponer la solución preliminar de la arquitectura de software sobre la base de los 
requerimientos del usuario. 
https://www.ibm.com/developerworks/ssa/webservices/library/j-eaed10/figure1.jpg
https://www.ibm.com/developerworks/ssa/webservices/library/j-eaed10/figure1.jpg
https://www.ibm.com/developerworks/ssa/webservices/library/j-eaed10/figure1.jpg
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 4 
 
 
 
Competencia específica 
• Aplica un estilo de diseño para generar una propuesta de modelo 
arquitectónico que permita el diagnóstico de información de los 
usuarios mediante el análisis y uso de herramientas de diferentes 
tipos y la descripción del comportamiento del sistema planteado en 
respuesta a un caso concreto. 
 
 
 
2.1. Estilos y patrones arquitectónicos 
 
Los estilos y patrones arquitectónicos son una forma clara de plasmar la solución de un 
problema mediante el uso de arquitectura de software, se usa también para comunicar un 
diseño arquitectónico a las etapas posteriores del desarrollo de software. 
 
 
 
 
De las definiciones anteriores se puede deducir que ambos conceptos llevan a formar un 
estilo propio de cómo hacer las cosas para poder explicar un sistema o una realidad 
compleja. Entonces, se puede definir al estilo como “cada una de las distintas formas de 
realizar algo”. Esta consecución de definiciones y deducciones nos lleva a comprender lo 
básico de los estilos arquitectónicos o patrones arquitectónicos. 
 
 
En el sentido estricto de la palabra, un patrón es “un modelo que se toma como 
muestra para reproducir un objeto o concepto igual” (RAE, 2012a). Para 
complementar la definición de un patrón se tiene que, un modelo “representa una 
realidad o un sistema que se distinguen por ser complejos, generalmente la 
representación con el uso de un lenguaje matemático formal” (RAE, 2012b). 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 5 
 
 
 
En los últimos años la sistematización de los estilos arquitectónicos ha sido uno de los temas 
más recurrentes; sin embargo, solo en breves ocasiones la literatura técnica especializada 
sobre patrones arquitectónicos realmente hace un buen análisis del vínculo innegable entre 
estilos y patrones. Suele decirse que están íntegramente comunicados y se deja muy poco 
clara la barrera de separación entre uno y otro, pero nadie se atreve a articular de forma 
sistemática y formal su relación. 
Para no seguir con discusiones que por ahora son interminables, se abordará el tema de 
estilos arquitectónicos que es semejante a un patrón arquitectónico; no obstante, una 
diferencia básica entre ellos es que las personas que trabajan con estilos se inclinan hacia 
un tratamiento que lleva una alta carga teórica, un enfoque académico y de abstracción 
mucho más elevado para su aplicación, mientras las personas que trabajan con patrones se 
inclinan por el diseño, lo práctico, la implementación en aspectos reales, el refinamiento y 
el código duro. 
 
 
2.1.1. Fundamentos 
 
Antes de siquiera pensar en definir lo que es un estilo arquitectónico, se debe entender cuál 
fue el origen. En los principios se detectó repetición en el comportamiento de las soluciones 
de arquitectura de software (AS) aplicadas a problemas similares. El número de apariciones 
del comportamiento fue limitado, pero repetible, y tomando como referencia la 
arquitectura en edificios reales, se les llamó estilos. Un estilo es una “clase” o “tipo” de 
arquitectura o piezas repetibles que se dieron con el andar de las cosas. No se debe hacer 
mucho esfuerzo por encontrar esas piezas, porque la misma práctica va otorgándolas. 
Cuando se han identificado de manera clara estas piezas (estilos) por sentido común y lógica 
se puede pensar en volver a utilizarlas en ambientes y situaciones parecidos a aquellos en 
los cuales surgieron. 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 6 
 
 
 
Desde su formulación inicial en 1992, junto con el nacimiento de la arquitectura de 
software, en sentido estricto por la IEEE se han ido generalizando, como una línea del 
tiempo progresiva con base en los avances tecnológicos las arquitecturas cliente-servidor, 
configuración en capas, basadas en componentes, en recursos (la Web) y en servicios (los 
Web Services). Recordemos que la importancia radica en que la teoría del arquitecto de 
software derive en la práctica de implementar los sistemas. 
 
En un estilo de la arquitectura de software se localizan tres tipos de elementos: de 
procesamiento (que transforman los datos), de datos (informacióna procesar) y de 
conexión (como llamadas a procedimientos almacenados, mensajes, etc.) además se 
enfatiza sobre las restricciones de estos elementos y sus relaciones posibles. 
 
Características de los estilos arquitectónicos 
 
Como ya se ha mencionado con anterioridad la arquitectura de software se encuentra aún 
en un proceso de consolidación. Las diferencias que se pudiesen localizar entre estilos y 
patrones arquitectónicos dependen en gran medida del enfoque dado por cada autor. Para 
efectos de estudio nos centraremos en las características enumeradas por los autores 
Reynoso (2004) y Taylor, Medvidovic y Dashofy (2009). 
La principal característica de un estilo arquitectónico es la comunicación de diseños. Una 
característica es un rasgo distintivo que sólo posee algo (un objeto, persona, animal, entre 
otros) o un grupo de ellos. Otras características que se pueden enumerar respecto a los 
estilos de diseño son: 
• Sirven para sintetizar estructuras de soluciones. 
• Pocos estilos abstractos encapsulan una enorme variedad de configuraciones 
concretas. 
• Permiten evaluar arquitecturas alternativas con ventajas y desventajas conocidas 
ante diferentes conjuntos de requerimientos no funcionales. 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 7 
 
 
 
• Aplicable a un contexto de desarrollo dado. 
• Restringe decisiones de diseño arquitectónicas que son específicas a un sistema 
particular dentro de aquel contexto. 
• Constituye una forma primaria de caracterizar lecciones aprendidas en el diseño de 
software en base a la experiencia. 
Para el diseño de una arquitectura de software deben verificarse las características de los 
estilos arquitectónicos y realizar varias decisiones para la elección del estilo arquitectónico 
adecuado, tal como la funcionalidad. Aunado a decisiones en relación con la seguridad, 
rendimiento, etc., que en conjunto afectan a todo el desarrollo del sistema. El diseño debe 
indicar claramente los componentes básicos del sistema y su relación para implementar 
posteriormente la funcionalidad. No es un proceso de un solo paso, es iterativo, en el cual 
se van tomando las decisiones comprobables con el fin de minimizar los riesgos que se 
puedan presentar. 
Características de los patrones arquitectónicos 
 
Un patrón arquitectónico al igual que sucede con un estilo brinda los elementos necesarios 
para la trasformación del diseño de una arquitectura de software. “Cada patrón describe 
un problema que ocurre una y otra vez en un ambiente y luego se describe el núcleo de la 
solución a ese problema, de tal manera que se puede usar esa solución repetidamente” 
(Welicki, 2015) aunque esta definición fue realizada para la arquitectura de edificios aplica 
también y se toma como tal para arquitectura de software. Sus características son: 
• Codifica conocimiento específico acumulado por la experiencia en un dominio. 
• Un sistema bien estructurado está lleno de patrones. 
• Documentan la experiencia de diseño existente y que ha sido bien probada. 
• Identifican y especifican abstracciones que están por encima del nivel de las clases 
y las instancias o los componentes. 
• Se concentran en soluciones de diseño y sus relaciones con las que construir un 
componente de software. 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 8 
 
 
Además de la lista presentada, se debe tener en cuenta algo muy importante, cuando se 
trata de características de patrones de software no toda aquella solución que tenga un 
cierto parecido a ésta lo es. Deben hacerse pruebas (de compatibilidad entre soluciones, de 
similaridad, de homogeneidad, entre otras) a problemas que tienen las mismas premisas, y 
si es aplicable, se considerará un patrón. Sin embargo, deberá pasar además una serie de 
pruebas aplicadas única y particularmente a los patrones. Antes de estas pruebas, la 
mencionada solución no dejará de ser un patrón-primigenio. 
Cuando un patrón haya pasado el conjunto de pruebas que haya que aplicar, tendrá las 
siguientes características: 
 
Fuente: https://www.blogger.com/profile/10551413964496036547 
 
Otra característica necesaria de los patrones arquitectónicos, mas no suficiente, es la 
repetición, si no la tiene entonces no es un patrón. 
 
En términos formales se definirá que: 
• La repetición se considera una característica cuantitativa. 
• La utilidad y adaptabilidad son características cualitativas. 
 
 
• Solucionar un problema: si no puede hacer más allá de tener principios o 
estrategias abstractas, entonces no será patrón. 
• Ser un concepto probado: como el punto anterior, si no ofrecen soluciones 
plenamente demostrables, entonces no será patrón. 
• La solución no es obvia: un patrón busca soluciones a problemas complejos de 
forma que abstraen dentro de sí soluciones pequeñas para cada parte del 
problema o de forma indirecta. 
• Describe participantes y relaciones entre ellos: se describe de manera clara y 
detallada un sistema completo, no sólo módulos aislados. El nivel de 
complejidad puede crecer sin causar problema para el patrón arquitectónico. 
• El patrón tiene un componente humano significativo: la principal razón de 
fabricar (o diseñar) software es para facilitar el trabajo humano. 
http://www.blogger.com/profile/10551413964496036547
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 9 
 
 
Para poder comprobar la existencia o ausencia de estas características se proponen en 
diferentes textos algunas formas empíricas de poder hacerlo, pero no se tratarán en la 
presente asignatura. 
Diferencias entre estilos y patrones arquitectónicos 
 
En cuanto a los estilos y patrones arquitectónicos, los dos conceptos son similares, ambos 
definen una solución a un problema de software concreto y no siempre es posible identificar 
un límite bien definido. En un intento por establecer las diferencias detectables entre 
ambos se incluye el siguiente cuadro comparativo según lo indicado por los autores (Taylor, 
Medvidovic y Dashofy, 2009): 
 
Características Estilo arquitectónico Patrón arquitectónico 
 
 
 
 
Alcance 
 
Aplican a un contexto de 
desarrollo: 
• Sistemas altamente 
distribuidos 
• Sistemas intensivos en GUI 
Aplican a problemas de diseño 
específicos: 
• El estado del sistema debe 
presentarse en múltiples formas. 
• La lógica de negocio debe estar 
separada del acceso a 
los datos. 
 
 
Abstracción 
Son muy abstractos para producir 
un diseño concreto del sistema. 
Son fragmentos arquitectónicos 
parametrizados que pueden ser 
pensados como una pieza 
concreta de diseño. 
 
 
Relación 
Un sistema diseñado de acuerdo a 
las reglas de un único estilo puede 
involucrar el uso de múltiples 
patrones. 
Un único patrón puede ser aplicado a 
los lineamientos de múltiples estilos. 
Tabla 1. Diferencias entre estilos y patrones arquitectónicos 
Taylor, Medvidovic y Dashofy (2009). Software Architecture – Foundations, Theory and Practice. Wiley 
 
 
La base sobre la cual está formado cualquier sistema es una estructura que puede ser física 
o lógica. 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 10 
 
 
 
Esta estructura puede ser completamente nueva, respecto al problema que se quiera 
resolver, o estar tomando fundamentos de conocimientos aplicados antes a la resolución 
de problemas parecidos, en donde se esperan resultados similares, en tiempo y espacio 
similar; los patrones de estructura surgen cuando se cumplen las condiciones antes 
mencionadas. 
La aplicación formal de los patrones y estilos de estructura a una arquitectura de software 
debe hacerse de manera sistemática y organizada, no se puede resolver el problema al que 
el arquitecto se enfrenta con la sola aplicación de un patrón determinado. 
 
 
2.1.2 Enfoque 
Existen diferentestipos de estilos aplicables en la AS, los cuales se usan dependiendo de la 
naturaleza del problema a resolver; sirven para tomarlos como punto de partida, ya que se 
usan como andamiaje para construir la solución sobre una idea ya avanzada y no comenzar 
siempre la solución desde la nada. 
Tratar de hacer un catálogo detallado de los tipos de estilo sería una idea poco práctica, 
porque cada autor, e inclusive cada arquitecto, podrían dar una lista propia a su gusto. Por 
ello sólo se enumerarán las consideraciones primarias de la literatura técnica especializada 
sobre patrones arquitectónicos y se podrá tomar como una clasificación de primer orden. 
La enumeración primaria de la que se hace mención puede llevar a preguntarse: 
UNADM | DCEIT | DS | DDRS 11 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
¿Cuántos estilos existen? 
¿Cuáles son? 
¿Son suficientes? 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
La idea de organizar los estilos y sus tipos comenzó por la necesidad de hacer una distinción 
clara entre ellos, porque el número de patrones que se estaba conociendo llegó a ser tan 
alto que había siempre confusiones. De acuerdo con Reynoso y Kicillof (2004), la siguiente 
lista se puede tomar como una primera propuesta: 
• Arquitectura orientada a objeto. 
• Arquitectura de estados. 
• Arquitecturas de control de realimentación. 
• Arquitectura de tiempo real. 
• Modelo de diseño de descomposición funcional. 
• Modelo orientado por eventos. 
• Modelo de control de procesos. 
• Modelo de tabla de decisión. 
 
En un segundo acercamiento, al refinar la lista anterior, surge la necesidad de replantear la 
clasificación (combinando arquitecturas y modelos de diseño), llegando a la lista siguiente: 
UNADM | DCEIT | DS | DDRS 12 
 
 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Tubería-filtros. 
Organización de abstracción de datos. 
Invocación implícita. 
Sistemas en capas. 
Repositorios. 
Intérpretes orientados por tablas. 
Procesos distribuidos. 
Organizaciones programa principal-subrutina. 
Arquitecturas de software específicas de dominio. 
Sistemas de transición de estado. 
Sistemas de procesos de control. 
Estilos heterogéneos. 
Unidad 2. Elementos de diseño de la arquitectura de software 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Para escribir los acercamientos anteriores (el primero y su refinamiento) se tomó como 
base la información contenida en el material de Reynoso y Kicillof (2004). 
 
Es importante notar que las clasificaciones presentadas tienen un parecido amplio, debido 
a que ambas están sobre la base de listar estilos que se usan para poder expresar algún tipo 
de organización estructural claramente definido, además son parte sustantiva para los 
sistemas de software, porque éstos por definición basan su estructura en una organización 
jerárquica, que con los estilos arquitectónicos se puede detallar de manera práctica y clara, 
incluyendo sus subsistemas (como el software mismo en su definición más ortodoxa), qué 
y cuáles son los procesos que debe seguir (especifican responsabilidades y lineamientos 
para organizar las relaciones entre ellos). 
 
Ahora bien, han surgido distintas vertientes para la clasificación de los estilos, podemos 
localizar los modelos ya mencionados, así como más propuestas realizadas por Bass, 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 13 
 
 
Clemens, Kazman (Software Architectura in Practice), Fielding, Garlan y otros autores y de 
hecho si se presentaran más clasificaciones o estilos arquitectónicos se estaría dando 
vueltas sobre lo mismo, de tal forma que puede resumirse en la siguiente tabla: 
Categorías de tipos de estilos arquitectónicos 
Estilos de flujo de datos • Tuberías y filtros 
Estilos centrados en datos 
• Arquitecturas de pizarra o 
repositorio. 
 
Estilos de llamada y retorno 
• Modelo-vista-controlador (MVC) 
• Arquitecturas en capas 
• Orientado a objetos 
• Basada en componentes 
Estilos de código móvil 
• Arquitecturas de máquinas 
virtuales. 
Estilos heterogéneos 
• Sistemas de control de procesos 
• Arquitecturas basadas en atributos 
 
Estilos Peer-to-Peer 
• Arquitecturas basadas en eventos. 
• Orientadas a servicios 
• Arquitecturas basadas en recursos. 
Estilos derivados 
• C2 
• Objetos distribuidos 
Tabla 2. Categorías de estilos arquitectónicos 
Billy Reynoso, Architect Academy: Seminario de Arquitectura de Software, Universidad de Buenos Aires 
 
La serie de listas y categorías presentadas en el apartado actual permitirán tener una clara 
diferenciación entre los tipos de estilos y en dónde ubicarlos respecto del tipo de lógica que 
maneja. Otro punto para tomar en cuenta para la correcta clasificación son las 
características propias de cada tipo de estilo. 
 
A continuación, se describen los estilos que mayormente aparecen referidos en la literatura 
especializada de arquitectura de software o que aparecen con mayor frecuencia 
mencionados como categorías mayores del catálogo. 
 
 
 
 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 14 
 
 
 
2.2. Categorías de estilos arquitectónicos 
 
Existen varias categorías de estilos arquitectónicos de acuerdo con la información incluida 
en la tabla del subtema 2.1.2., estos estilos pueden verse como una herramienta para dar 
forma a la arquitectura de software, base para el desarrollo de la aplicación informática. 
Nos podemos topar que en algunas arquitecturas diseñadas no se aplique únicamente un 
estilo, sino que se combinan características de varios de ellos con el fin de obtener las 
ventajas individuales que proporcionen una indicación abstracta de la forma en que debe 
dividirse el sistema y de cómo estas partes deben de comunicarse entre ellas. A 
continuación de describen los estilos más representativos, de acuerdo con De La Torre, 
Zorrilla, Calvarro y Ramos (2010) así como Taylor, Medvidovic y Dashofy (2009). 
 
2.2.1 Basado en componentes 
El estilo de arquitectura basada en componentes enfoca el diseño de la aplicación 
informática como un conjunto de componentes interrelacionados y que poseen interfaces 
bien definidas. Estos componentes contienen reglas bien específicas y es comúnmente 
acompañado de uno o más elementos tecnológicos, a través de los cuales se implementa el 
soporte necesario para su operación. 
 
Características 
- Por medio de este estilo arquitectónico es posible el diseño de aplicaciones 
informáticas a partir del establecimiento de componentes individuales. 
- Se enfatiza sobre la descomposición del sistema en componentes las cuales 
contienen interfaces bien definidas que determinan métodos, eventos y 
propiedades. 
- Un componente en especial se diseña para una tarea específica y pueden 
reutilizarse. 
- El componente no debe almacenar información sino que éste la recibe y procesa. 
- Para ofrecer nuevas funcionalidades cada componente se extiende a través de la 
creación de nuevos componentes. 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 15 
 
 
- Como una medida de abstracción, no se revelan al usuario los detalles de los 
procesos que realiza cada componente sino que se presenta únicamente una 
interface sobre la cual realizar las operaciones necesarias a petición del usuario. 
- La independencia es un aspecto clave para que cada componente sea desplegado y 
aplicado sin que esta operación afecte el resto de la aplicación. 
 
Ventajas 
- Facilidad de sustitución de un componente por una nueva versión sin afectación del 
resto del sistema. 
- Conlleva a una reducción de costos al ser factible la utilización de componentes de 
terceros en el desarrollo y mantenimiento del software. 
- Al ser independientes del contexto donde se aplican, es posible explotar los 
procesos del componente para cualquier desarrollo.Cuándo usarlo 
- Existan ya componentes previos susceptibles de ser aplicables a un nuevo sistema. 
- Se ejecutarán procedimientos con muy pocos o inclusive, ningún dato de entrada. 
- Se desea combinar componentes que pueden haber sido desarrollados en distintos 
lenguajes de programación. 
 
Evitarlo cuando 
- El sistema a desarrollar es complejo y no se dispone de mucho tiempo para su 
construcción. 
- Los requerimientos de la aplicación no se encuentren definidos en su totalidad. 
- No se cuente con una alta disponibilidad de componentes con el estándar requerido 
para el desarrollo de la aplicación. 
 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 16 
 
 
 
2.2.2 Capas 
El estilo en Capas (N-Layer) “se basa en una distribución jerárquica de los roles y 
responsabilidades con el fin de proveer una división efectiva de los problemas a revolver” 
(De la Torre, C., Zorrilla, U., Calvarro, J. y Ramos, M. A. (2010). Guía de arquitectura N-Capas 
orientada al dominio con .NET 4.0, Página 23). Existe una secuencia ordenada donde cada 
capa ofrece a servicios de la capa posterior. El objetivo principal de la separación de los 
distintos componentes del software (la lógica del negocio, la vista del usuario, la capa de 
datos, entre muchas otras) es tener piezas identificables y unificadas sobre la base de la 
labor que desempeñarán dentro de la solución completa. Los sistemas computacionales 
organizados en capas (o arquitectura de software en capas) es uno de los hitos que 
mayormente aparece referido en la literatura especializada en arquitectura de software. 
 
Características 
- Es una organización jerárquica donde cada capa proporciona servicios a la capa 
inmediatamente superior y se sirve de los servicios de la capa inmediatamente 
inferior. 
- Se encapsula la implementación de los servicios de cada capa. 
- La mayoría de las interacciones suceden solamente entre capas adyacentes 
mediante la descomposición de los servicios que ofrecen. 
- La comunicación entre capas se realiza a través de la llamada a procedimiento con 
parámetros que son enviados entre cada capa. 
- Las distintas capas de la aplicación pueden residir en una sola máquina o se puede 
distribuir entre varios equipos para ofrecer un mayor rendimiento. 
- Permite mostrar una vista completa del modelo y las relaciones entre capas quedan 
claramente definidas, separando la funcionalidad de cada una. 
- Existe un bajo acoplamiento entre capas lo que provee un alto nivel de abstracción. 
 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 17 
 
 
 
- Los componentes deben tener un canal bien establecido de comunicación, en este 
caso los componentes del sistema son las capas. La manera en que se comunican las 
capas son los conectores, y la forma de comunicación está definido por los protocolos 
que determinan la interacción entre ellas. 
 
Ventajas 
- Provee un adecuado aislamiento lo que permite realizar modificaciones o 
actualizaciones en el interior de cada capa sin afectar el funcionamiento de resto de 
las capas o del sistema completo. 
- Las dependencias son claras y acotadas. 
- Al distribuir las capas en distintos niveles físicos se provee un mayor rendimiento ya 
que se mejorar la escalabilidad y la tolerancia a fallos. 
- La efectiva realización de pruebas sobre el sistema, al contar con una interfaz bien 
definida para cada una de las capas sobre la cual implementarlas permitiendo 
cambiar indistintamente entre cada implementación de una capa. 
- Permite y facilita aspectos como la reusabilidad y portabilidad. 
 
Cuándo usarlo 
- Es requerido un alto nivel de diseño debido a que la aplicación resulta ser muy 
compleja y es necesario que distintos equipos de desarrollo o soporte se concentren 
en aspectos separados de la funcionalidad. 
- La aplicación deba soportar y administrar varios clientes y dispositivos. 
- Comúnmente utilizado en: sistemas operativos, stacks de protocolos de red, 
aplicaciones empresariales con reglas de negocio complejas. 
- Se requiera la reutilización de capas previamente construidas o se cuente con 
aplicaciones que exponen la lógica de negocio con interfaces de servicios. 
 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 18 
 
 
 
Evitarlo cuando: 
- La aplicación a realizar es relativamente sencilla y sobre todo, las reglas de negocio 
cambiarán muy poco y no existen planes para el cambio de tecnologías de 
infraestructura durante la vida de la aplicación. 
- No se desea comprometer el performance de la aplicación. 
- No se requiera una separación física de los niveles, como en algunas aplicaciones 
web. 
 
 
2.2.3 Cliente/Servidor 
El estilo cliente/servidor establece una relación entre dos aplicaciones en las cuales una de 
ellas (cliente) inicia la comunicación y envía requerimientos a la otra aplicación (servidor) 
que los procesa y ejecuta y, si es necesario, envía la respuesta. 
 
Características 
- Los componentes son clientes y servidores. 
- Los servidores no conocen el número o identidades de los clientes sin embargo el 
cliente si conoce la identidad del servidor. 
- Divide al sistema en tres entidades: una aplicación cliente, una aplicación servidor y 
una red de conexión. 
- Los conectores están basados en protocolos de interacción entre redes. “Puede 
utilizar un amplio rango de protocolos y formatos de datos para comunicar la 
información” (De la Torre, C., Zorrilla, U., Calvarro, J. y Ramos, M. A. (2010). Guía de 
arquitectura N-Capas orientada al dominio con .NET 4.0, Página 19) 
- Dentro de los procesos que realiza el cliente podemos mencionar: 
• Envío de peticiones, procesamiento de la respuesta recibida. 
• Provee una interfaz gráfica para la comunicación directa con el usuario. 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 19 
 
 
 
- El servidor no realiza ningún tipo de petición al cliente, sino que solamente envía 
datos de respuesta a las solicitudes realizadas, previa autentificación y verificación 
del cliente o usuario. 
 
Ventajas 
- Seguridad, ya que los datos se almacenan en el servidor por lo cual es más fácil 
controlar el acceso a la información. 
- Acceso centralizado, ya que los datos deben encontrarse almacenados en un 
servidor lo que provee una mayor sencillez para su control y actualización. 
- Al distribuir los procesos, roles y funciones en distintos servidores permite su 
facilidad de mantenimiento y, como ya vimos, al existir independencia entre las 
capas, si falla un servidor en particular puede permitir que un cliente continúe 
trabajando sin que se vea afectado. 
 
Cuándo utilizar un estilo cliente/servidor 
- La aplicación debe correr en un servidor con soporte para múltiples clientes. 
- Se pretende el uso de la aplicación en un área local o en una LAN controlada, para 
cuestiones de seguridad y que permite que la funcionalidad relacionada con los 
procesos del negocio sean utilizados por la corporación. 
- Se planea centralizar el almacenamiento, respaldo y mantenimiento de la aplicación 
informática, que provees los beneficios antes mencionados. 
- La aplicación debe de soportar distintos tipos de clientes y dispositivos. 
- Aplicaciones empresariales. 
- El acceso del usuario final se limita a la captura de información y presentación de 
datos. 
Evitarlo cuando: 
- La centralización representa un alto riesgo de “falla en un solo punto”. 
- En ancho de banda de la red local es limitado. 
- Las máquinas de los clientes exceden las capacidades del servidor. 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 20 
 
 
- Condiciones de la red actual sin condiciones para el crecimiento futuro de los 
clientes. 
 
2.2.4 Orientado a Objetos 
Define el sistema comoun conjunto de objetos que interactúan entre sí. Se divide el sistema 
en estados y funciones los cuales son encapsulados en objetos que, como bien se indica en 
la programación orientada a objetos, deben ser instanciados antes que se asignen valores 
a sus propiedades y sus métodos sean invocados, todo mediante una interfaz gráfica. 
 
Características 
Las características de este estilo arquitectónico se relacionan con los conceptos y 
propiedades de la programación orientada a objetos. 
- El acceso a un determinado objeto se logra mediante operaciones, conocidas como 
métodos. 
- Describe cada uno de los objetos que contienen las propiedades y los métodos 
adecuados para procesar la información conforme a un requerimiento específico. 
- Se aplica la reutilización mediante las características propias de la programación 
orientada a objetos: encapsulación, polimorfismo y herencia. 
- Los objetos pueden llegar a componerse de otros objetos y ocultan las propiedades 
internas de otras clases o se exponen únicamente como interfaces. 
- Se aplica el concepto de herencia para adquirir propiedades de otros objetos 
utilizando su funcionalidad adaptándola en ocasiones para definir un nuevo 
comportamiento. 
- Los objetos ocultan los detalles internos de su implementación, la funcionalidad es 
expuesta únicamente a través de métodos, lo cual facilita la actualización de 
objetos. 
 
 
 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 21 
 
 
 
Ventajas 
- Al ser los objetos una representación del mundo real es más comprensible su 
implementación. 
- Abstracción: Ocultamiento de los detalles de implementación, que a su vez permite 
realizar las pruebas necesarias de una forma más sencilla. 
- Reusabilidad mediante el polimorfismo y la abstracción que permiten cambiar la 
implementación y a su vez la funcionalidad del objeto de una manera transparente 
al usuario. 
Cuándo usarlo 
- Se desea modelar luna aplicación informática mediante objetos reales y las acciones 
entre ellos. 
- Existan estructuras de datos complejas e interrelacionadas. 
- Correlación entre las entidades del mundo real y las entidades propias de la 
aplicación. 
- Se han diseñado previamente objetos que sirven al diseño y cumplen con aspectos 
operacionales. 
 
Evitarlo cuando 
- La aplicación es distribuida sobre una red heterogénea, el uso en aplicaciones 
distribuidas requiere acceso remoto a los objetos. 
- Es necesario implementar una fuerte dependencia entre los componentes del 
sistema. 
- Se requiere un alto rendimiento; existe una relativa ineficiencia en aplicaciones de 
este tipo. 
 
2.2.5 Tuberías y filtros 
El patrón arquitectónico de tuberías y filtros pertenece a las llamadas arquitecturas de flujo 
de datos. Se relaciona con redes de procesos y procesos secuenciales (procesos por lotes) y 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 22 
 
 
se percibe como una serie de transformaciones sobre sucesivas piezas de los datos de 
entrada, los cuales entran al sistema y fluyen a través de los componentes. Un ejemplo de 
lo anterior sería: el cliente envía un requerimiento, el requerimiento es validado, un Web 
Service toma el objeto de la base de datos, se convierte en HTML, muestra la representación 
en pantalla. 
 
Características 
- La estructura del sistema se basa en transformaciones sucesivas a los datos 
establecidos de entrada. 
- Programas separados y ejecutados en orden. 
- Los datos son pasados como un lote de programa al siguiente. 
- Los datos ingresan al sistema y fluyen a través de los componentes hasta su destino 
final. 
- Los conectores constituyen distintas interfaces: desde humana hasta Web Services. 
- Su topología es lineal. 
- Se realiza la separación de programa conocidos también en este entorno como 
filtros. 
- Las “tuberías” enrutan los datos a través de los programas. 
 
Ventajas 
- Es fácil de implementar y permite ejecuciones independientes. 
- Obliga a que el proceso se lleve a través de una forma secuencial. 
- Es fácil aislar en una operación con un único resultado. 
- Los filtros se hacer fácilmente distribuibles. 
 
Cuándo usarlo: 
- Cuando se puede especificar la secuencia de un número conocido y finito de pasos. 
- Se requiere esperar la respuesta asincrónica de cada paso (ejecutar un programa a 
la vez hasta que éste termina). 
- Se busca que todos los componentes inferiores sean capaces de inspeccionar y 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 23 
 
 
actuar sobre los datos que vienen de componentes superiores (pero no viceversa). 
- Uno de los usos tipo de éste estilo arquitectónico es el procesamiento de 
transacciones en sistemas financieros. 
 
Evitarlo cuando: 
- Es necesaria la ejecución de una lógica de negocio compleja, que pueda ramificar la 
ejecución de una forma complicada. 
- Se maneja una lógica de negocios donde se involucren decisiones o repeticiones 
para el control del flujo. 
- Cuando eventualmente se llegue a requerir almacenamiento de tamaño no 
conocido no se recomienda su utilización. 
- Se requieran manejar situaciones interactivas de relación entre distintos actores. 
 
Cierre de la unidad 
En esta asignatura abordaste los estilos arquitectónicos, algunas recomendaciones de uso 
y aplicación dentro de la solución de un problema en un ámbito específico, lo que ayuda a 
que esta solución sea confiable y adherida a buenas prácticas de armado de arquitectura. 
La aplicación de los estilos arquitectónicos dará la flexibilidad y la facilidad de uso con la 
experiencia para hacer ágil la implementación de una arquitectura confiable al momento 
de diseñar la solución. El aprendizaje no debe quedarse en las explicaciones tan cortas y 
mejorables que se presentan en el desarrollo del tema o a lo largo de las unidades, es 
importante que se amplíes con la práctica y la consulta de fuentes bibliográficas externas 
para hacer un trabajo complementario. 
Es importante que identifiques un software de código libre y realices una descripción formal 
de arquitectura basándote en un lenguaje de definición de arquitectura, instálalo en tu 
computadora personal para que realices pruebas de descripción y veas la aplicación de los 
conceptos presentados. 
 
 
 
 
Unidad 2. Elementos de diseño de la arquitectura de software 
UNADM | DCEIT | DS | DDRS 24 
 
 
 
 
Fuentes de consulta 
 
• De la Torre, C., Zorrilla, U., Calvarro, J. y Ramos, M. A. (2010). Guía de arquitectura N-
Capas orientada al dominio con .NET 4.0. Madrid: Krasis Press. 
 
• Real Academia Española. (2012a). Patrón. En Diccionario de la lengua española. (22a 
ed.). [Versión electrónica]. http://lema.rae.es/drae/?val=patr%C3%B3n 
 
• Real Academia Española. (2012b). Modelo. En Diccionario de la lengua española. 
(22a ed.). [Versión electrónica]. http://lema.rae.es/drae/?val=modelo 
 
• Reynoso, C. y Kicillog, N. (2004). Estilos y patrones en la estrategia de arquitectura de 
Microsoft. Buenos Aires: Universidad de Buenos Aires. 
 
• Taylor, R.N., Medvidovic, N. y Dashofy, E. (2009). Software Architecture: 
Foundations, Theory and Practice. New Jersey: John Wiley & Sons. 
 
• Welicki, L. (2015). Patrones y Antipatrones: Una introducción - Parte I. 
https://docs.microsoft.com/es-es/previous- 
versions/bb972242(v=msdn.10)?redirectedfrom=MSDN - authorbrief 
http://lema.rae.es/drae/?val=patr%C3%B3n
http://lema.rae.es/drae/?val=modelo
https://docs.microsoft.com/es-es/previous-versions/bb972242(v%3Dmsdn.10)?redirectedfrom=MSDN&authorbrief
https://docs.microsoft.com/es-es/previous-versions/bb972242(v%3Dmsdn.10)?redirectedfrom=MSDN&authorbrief

Continuar navegando

Materiales relacionados

9 pag.
DRS_U2_EA_ABAF

UNOPAR

User badge image

Abraham Ascn Frs

87 pag.
245 pag.