TECNOLOGÍAS DE LA INFORMACIÓN, ÁREA DESARROLLO DE
SOFWARE MULTIPLATAFORMA
MAYO-AGOSTO 2025
ACTIVIDAD
Metodologías, Arquitecturas, Patrones
PRESENTA
T.S.U. FRANCISCO JAVIER MALDONADO CARBAJAL
T.S.U. JOEL CANO RAMIREZ
T.S.U. YADIRA GONZALES GARCIA
T.S.U. CRISTIAN GAMALIEL BERNON BUSTOS
PROFESOR
JUAN IBARRA PEREZ
JALPAN DE SERRA, QRO MAYO-AGOSTO
2025
Contenido
Cliente-servidor:..................................................................................................................2
Cliente: roles y funcionalidades...................................................................................2
Servidor: roles y funcionalidades................................................................................2
Comunicación entre cliente y servidor........................................................................2
¿Cómo funciona el modelo cliente-servidor?..............................................................3
¿Cuál es la importancia de un sistema operativo cliente-servidor?.............................3
Ventajas del modelo cliente-servidor..........................................................................3
Inconvenientes del modelo cliente-servidor................................................................4
Tipos de arquitectura cliente-servidor.........................................................................4
Red entre pares................................................................................................................5
Características principales:..........................................................................................5
Ejemplos de aplicaciones P2P:....................................................................................6
Modelo-vista-controlador (MVC)...................................................................................7
1. Arquitectura MVC (Modelo - Vista - Controlador)................................................7
Arquitectura orientada a eventos (EDA).........................................................................8
Conceptos de arquitectura orientada a objetos:...........................................................9
Arquitectura en capas (multicapa).................................................................................11
2. Arquitectura en Capas (N-tier Architecture).........................................................11
Arquitectura hexagonal..................................................................................................12
Arquitectura monolítica: Cristian..................................................................................14
Elementos de la arquitectura de software..................................................................14
Cliente-servidor:
La arquitectura cliente-servidor es una de las más populares en la construcción de
aplicaciones en la actualidad. Básicamente se llama así a toda arquitectura en la que
participan dos componentes: uno es el cliente que utiliza unos servicios, y otro es el
servidor que proporciona estos servicios. Entre ambos se tiene que efectuar una
comunicación de red, habitualmente mediante Internet.
Cliente: roles y funcionalidades
El cliente es la parte de las aplicaciones que inicia las peticiones de servicios hacia el
servidor usando la red como mecanismo de comunicación. Típicamente en el lado del
cliente encontramos todo lo que respecta a la funcionalidad que permite al usuario
interactuar con estos sistemas. Por tanto, encontramos interfaces de usuario que pueden
ser de distintos tipos.
Actualmente, lo más habitual es que la aplicación cliente se ejecute en un navegador, en
cuyo caso lo que tendremos son botones, formularios y elementos de esta índole. Sin
embargo, en términos generales un cliente puede ser de muchos tipos, mediante
programas de escritorio, programas de consola, etc.
Servidor: roles y funcionalidades
El servidor, de manera genérica, es el componente que proporciona los servicios a los
clientes. Un servidor puede consistir en diversos tipos de componentes de software
instalados sobre un hardware. En cualquier caso, siempre será un sistema que esperará las
solicitudes de los clientes para procesarlas y finalmente, entregar la respuesta a éstos.
Entre los roles de los servidores se encuentran tareas como el almacenamiento de la
información, el procesamiento de datos y el control de las reglas de negocio. Además,
dentro del concepto de servidor encontramos diversos tipos de aplicaciones como
servidores web, de correo, servidores de bases de datos, entre muchos otros.
Comunicación entre cliente y servidor
Para la comunicación entre cliente y servidor se utilizan siempre las redes de
computadores. Sin embargo, dentro del amplio mundo de las redes, estas comunicaciones
se pueden realizar por medio de múltiples protocolos.
Entre los protocolos más utilizados se encuentra el HTTP, que es el protocolo que
sustenta la web, SMTP para el envío de correo electrónico, POP/IMAP para la recepción
del correo, o FTP para la transferencia de archivos.
Los protocolos son definiciones de los procesos y comunicaciones que se tienen que dar
entre los sistemas clientes y servidor para que estas se realicen de manera sistemática, se
pueda verificar la integridad de la información, etc.
¿Cómo funciona el modelo cliente-servidor?
el modelo de las aplicaciones cliente-servidor consiste en la realización de
comunicaciones para ejecución de las necesidades del software.
En este tipo de software funciona mediante un procedimiento que incluye los siguientes
pasos:
1. El cliente realiza la solicitud de un recurso o un servicio al servidor. Para ello envía
una señal a través de la red, en la que entrega todas las características de la función que
requiere que se realice.
2. El servidor recibe la solicitud y procesa la entrada de datos enviada por el cliente,
componiendo una respuesta.
3. Esa respuesta se envía por la red hasta llegar al cliente que la recibe, y generalmente,
muestra una salida adecuada para el usuario.
Estas son las bases del funcionamiento de la arquitectura cliente-servidor de manera
genérica, aunque dependiendo de cada tipo de sistema distribuido, puede haber diversas
características más complejas en lo que respecta a los tipos de solicitud, tipos de
respuesta, etc.
¿Cuál es la importancia de un sistema operativo cliente-servidor?
Los sistemas clientes servidor desempeñan un papel fundamental en la actualidad, ya que
sustentan la mayor parte de las aplicaciones que existen en internet, así como en las redes
empresariales o del hogar.
En el momento actual, en el que todos los hogares y empresas hacen uso de la nube para
la obtención de servicios de todo tipo, la arquitectura cliente-servidor nos ofrece la base
para su funcionamiento. Todas las aplicaciones web funcionan con el modelo cliente-
servidor, pero también ocurre con otros servicios de Internet como el correo, o incluso
con otros servicios populares como el streaming, las aplicaciones móviles, etc.
Este modelo, además, nos aporta ventajas como la posibilidad de acceder a los servicios
allá donde estemos, o la seguridad de la información, ya que el servidor es capaz de
garantizar el acceso solamente a aquellas personas que realmente disponen de los
permisos adecuados.
Ventajas del modelo cliente-servidor
Las ventajas de la arquitectura cliente-servidor son variadas. Prueba de ello es su amplia
utilización en la industria de software.
Facilita la administración de los datos y la seguridad de la información, ya que los
servicios se encuentran en entornos de servidor completamente controlados.
Mejora la escalabilidad, ya que permite actualizar y ampliar ambos entornos por separado
tanto en la parte del cliente como la parte del servidor, centralizando las necesidades de
escalabilidad en el servidor donde tenemos más capacidad de intervención.
Permite un mantenimiento individual de las capas del software, lo que mejora las
posibilidades de actuación y las aísla ante posibles problemas.
Mejora la flexibilidad de los usos de las aplicaciones, ya que un entorno de servidor
puede ajustarse al trabajo con varios tipos de clientes
Permite un desarrollo menos dependiente. Ambos proyectos, cliente y servidor pueden
estar en proyectos independientes que incluso pueden ser manejados por equipos
distintos.
Inconvenientes del modelo cliente-servidor
También se podrían destacar algunos inconvenientes en las arquitecturas cliente-servidor.
Requieren el uso de una red para funcionar
Si el servidor falla, a menudo impacta en los clientes
Están expuestos en una red, pudiendo haber más posibles ataques de seguridad
Tipos de arquitectura cliente-servidor
Dentro de las arquitecturas cliente-servidor también existen distintas clasificaciones que
vamos a resumir.
Arquitectura de dos niveles (2-Tier)
Este es el modelo habitual de las arquitecturas clientes servidor, donde los clientes
realizan solicitudes directas sobre el servidor, sin la intervención de otros intermediarios.
Arquitectura de tres niveles (3-Tier)
También existen arquitecturas en niveles adicionales, como 3-Tier, en las cuales se
introduce un intermediario entre el cliente y el servidor que tiene normalmente la
responsabilidad de aplicar una capa de lógica de negocio. Con ello conseguimos una
separación mayor de la responsabilidad del software, lo que aporta adicionales ventajas a
nivel de mantenibilidad y escalabilidad, a costa de una mayor complejidad.
Red entre pares
Más conocida como red peer-to-peer, es una de las arquitecturas de software que permite
compartir una gran cantidad de datos. A diferencia del modelo cliente-servidor, este
consiste en una red descentralizada de clientes y servidores. Todas las partes consumen
recursos, sin la necesidad de un servidor centralizado.
Uno de sus grandes beneficios es que, debido a la falta de un servidor central, los gastos
son menores, por lo que puede resultar más económico. Por otro lado, como desventaja,
si uno de los pares es atacado por un virus, es alta la posibilidad de que le lleve ese
mismo virus al resto de pares conectados en la red.
Características principales:
Descentralización:
No existe un servidor central que gestione la red. Cada nodo se comunica directamente
con otros.
Nodos con roles duales:
Cada nodo puede ser tanto cliente como servidor, solicitando y proporcionando recursos
simultáneamente.
Intercambio directo:
Los datos y recursos se comparten directamente entre los nodos, sin intermediarios.
Escalabilidad:
La red puede crecer de forma natural a medida que se añaden más nodos, sin necesidad
de una gestión centralizada.
Tolerancia a fallos:
Si un nodo falla, la red sigue funcionando, ya que los recursos se distribuyen entre
múltiples nodos.
Ventajas:
Menor coste:
No requiere servidores centralizados, lo que reduce los gastos de infraestructura.
Resiliencia:
La red es más resistente a fallos, ya que la información se distribuye entre los pares.
Escalabilidad:
Se puede expandir fácilmente a medida que se añaden más usuarios y recursos.
Privacidad:
La naturaleza descentralizada puede ofrecer un mayor nivel de privacidad.
Desventajas:
Seguridad: La distribución de recursos entre los pares puede aumentar el riesgo de
infección por malware si un nodo está comprometido.
Gestión: Puede ser más complejo administrar la red en comparación con modelos
centralizados.
Escalabilidad: Si la red crece demasiado, la gestión puede volverse más compleja.
Ejemplos de aplicaciones P2P:
BitTorrent: Sistema de descarga de archivos.
eDonkey: Otro sistema de intercambio de archivos.
Redes de intercambio de archivos: Aplicaciones que permiten a los usuarios compartir
archivos directamente entre sus dispositivos.
VPN P2P: Redes privadas virtuales que permiten a los usuarios conectar directamente
con otros usuarios.
https://teclab.edu.ar/tecnologia-y-desarrollo/tipos-de-arquitecturas-de-software-cuales-
hay-y-en-que-se-diferencian/#:~:text=durante%20su%20transmisi%C3%B3n.-,Red
%20entre%20pares,descentralizada%20de%20clientes%20y%20servidores.
Modelo-vista-controlador (MVC)
1. Arquitectura MVC (Modelo - Vista - Controlador)
¿Qué es?
La arquitectura MVC (Model-View-Controller) es un patrón de diseño de software que
separa la lógica de negocio, la interfaz de usuario y la interacción del usuario en tres
componentes principales. Se utiliza ampliamente en el desarrollo de aplicaciones web y
de escritorio.
Componentes:
Flujo de datos:
El usuario interactúa con la vista.
La vista envía esa acción al controlador.
El controlador procesa esa acción, llama al modelo si es necesario.
El modelo actualiza o devuelve datos.
La vista se actualiza con la nueva información.
Ventajas:
Separación clara de responsabilidades.
Facilita el mantenimiento y escalabilidad.
Se pueden modificar vistas sin afectar la lógica.
Ideal para pruebas unitarias.
Desventajas:
Curva de aprendizaje inicial.
Puede ser innecesariamente complejo para proyectos pequeños.
Arquitectura orientada a eventos (EDA)
¿Qué es la arquitectura orientada a objetos?
Antes de profundizar en el tema, exploremos rápidamente de qué se trata la arquitectura
orientada a objetos.
La arquitectura orientada a objetos es un concepto de diseño de software que organiza un
sistema basado en objetos. Refleja la realidad al estructurar el sistema en componentes
modulares que representan entidades, cada una con atributos y operaciones.
La arquitectura orientada a objetos ofrece mecanismos poderosos como encapsulación ,
abstracción , polimorfismo y herencia , mejorando la claridad y flexibilidad general del
sistema.
Esto también lo convierte en una opción ideal para construir sistemas complejos,
escalables y mantenibles.
características:
Modularidad y reutilización
La arquitectura orientada a objetos permite crear componentes modulares, cada uno de
los cuales representa una entidad específica dentro del sistema. Estos componentes,
conocidos como objetos, pueden reutilizarse en diferentes partes de la aplicación o
incluso en distintos proyectos.
Mantenibilidad
La arquitectura orientada a objetos organiza el sistema en objetos pequeños y fáciles de
gestionar, lo que facilita aislar y solucionar problemas, añadir nuevas características y
modificar la funcionalidad sin afectar a las demás partes del sistema. Esto mejora la
mantenibilidad general del sistema.
Extensibilidad
La arquitectura orientada a objetos aprovecha mecanismos avanzados como la herencia y
el polimorfismo, lo que permite generar nuevos tipos de objetos a partir de los existentes.
Este enfoque facilita la ampliación del sistema sin realizar cambios significativos,
ofreciendo flexibilidad y escalabilidad.
Encapsulación y seguridad de datos
La arquitectura orientada a objetos garantiza la seguridad de los datos mediante sus
capacidades de encapsulación. Esta función OOA permite definir el control de acceso a
los objetos y sus datos, lo que mejora la seguridad general de los datos y limita el riesgo
de modificaciones no deseadas.
Modelado del mundo real
La arquitectura orientada a objetos u OOA se alinea estrechamente con los conceptos del
mundo real, lo que hace que el sistema sea fácil de entender, mantener y actualizar.
Conceptos de arquitectura orientada a objetos:
Clase
Una clase es el componente principal de OOA y permite definir tipos de datos
personalizados. Una clase consta de datos, miembros y funciones miembro, y define un
conjunto de propiedades y métodos accesibles para todas las instancias creadas a partir de
ella.
Objetos
Un objeto es la unidad básica de OOA y una instancia de una clase, que contiene su
propio estado, identidad y comportamiento. Los objetos interactúan entre sí mediante una
interfaz bien definida (p. ej., métodos y propiedades), al igual que las personas se
comunican mediante gestos y voz.
Abstracción de datos
La abstracción es una de las características más importantes de la arquitectura orientada a
objetos, ya que simplifica sistemas complejos mediante el modelado de clases adecuadas
para el dominio del problema. La abstracción oculta la complejidad del sistema,
exponiendo únicamente las características esenciales mediante una interfaz clara.
Encapsulación
La encapsulación es la combinación de datos (atributos) y métodos (funciones) dentro de
la clase, creando una unidad autónoma. Mejora el control y la seguridad al permitir
restringir los datos y definir el control sobre cómo se accede a ellos y cómo se modifican.
En lenguajes de programación como Java, estos modificadores se conocen como
públicos, privados y protegidos.
Herencia
La herencia permite interconectar clases, compartiendo sus propiedades y métodos. Este
enfoque promueve la reutilización del código y establece una relación jerárquica entre
clases.
Polimorfismo
El polimorfismo es una característica interesante de la arquitectura orientada a objetos
que permite que objetos de diferentes clases se traten como objetos de una superclase
común. Esto permite que el mismo método se comporte de forma diferente, lo que se
logra mediante la sobrecarga y la anulación de métodos.
Enlace dinámico
En el concepto de enlace dinámico de la arquitectura orientada a objetos, la ejecución del
código para responder a la llamada a una función se determina en tiempo de ejecución.
Esto significa que el código asociado a una llamada a un procedimiento determinado se
desconoce hasta el momento de la llamada en tiempo de ejecución.
Paso de mensajes
En la arquitectura orientada a objetos, los objetos se comunican entre sí mediante el envío
de mensajes (llamadas a métodos). Cada objeto procesa el mensaje según su
comportamiento y estado interno.
Arquitectura en capas (multicapa)
2. Arquitectura en Capas (N-tier Architecture)
¿Qué es?
La arquitectura en capas es un estilo de arquitectura donde el software se organiza en
capas jerárquicas. Cada capa tiene una responsabilidad específica y se comunica
solamente con las capas adyacentes.
Capas típicas:
Comunicación:
La UI llama a la lógica de negocio.
La lógica de negocio llama a la capa de acceso a datos.
La DAL consulta la base de datos y retorna la información.
Ventajas:
Alta modularidad: cada capa puede cambiarse sin afectar a las otras.
Reusabilidad de código.
Mantenibilidad: facilita el mantenimiento y la evolución del software.
Control claro sobre la seguridad y acceso a cada capa.
Desventajas:
Mayor complejidad inicial.
Puede haber redundancia entre capas si no se diseña bien.
Rendimiento más bajo si hay demasiadas capas.
Diferencias entre MVC y Arquitectura en Capas
Arquitectura hexagonal
Arquitectura Definición Características
Arquitectura de Es una de las más buscadas en la ● Independencia: Cada
Microservicios actualidad. Consiste en la servicio tiene su base de
creación de componentes de datos y lógica.
software que se dedican a ● Escalabilidad bajo
realizar una única tarea y son demanda: Añadir o
autosuficientes, por lo que modificar servicios sin
evolucionan de forma afectar el sistema completo.
independiente. ● Tecnologías diversas:
Pueden desarrollarse en
distintos lenguajes (Java,
Vale aclarar también que, cuando Python,
nos referimos a microservicios, Node.js).https://chakray.co
hablamos de pequeños m/es/que-son-los-
programas (aplicaciones) que microservicios-definicion-
brindan servicios con el fin de caracteristicas-y-ventajas-
resolver determinadas y-desventajas/
tareas.https://teclab.edu.ar/tecnol
ogia-y-desarrollo/tipos-de-
arquitecturas-de-software-cuales-
hay-y-en-que-se-diferencian/#a5
Arquitectura hexagonal La arquitectura hexagonal, que ● Flexibilidad: Permite
también se conoce como patrón cambiar tecnologías sin
de diseño de puertos y afectar la lógica del
adaptadores, es una arquitectura negocio.
de software que permite separar ● Mantenibilidad: La
la lógica de negocio de los separación clara de
detalles responsabilidades facilita
técnicos.https://ausum.cloud/arqu su comprensión y
itectura-hexagonal-que-es- evolución.
ventajas-microservicios-y-aws- ● Facilidad para pruebas: El
lambda/ desacoplamiento facilita
pruebas unitarias e
integración.
● Escalabilidad: Los
componentes pueden crecer
de forma independiente.
● Colaboración: Equipos
pueden trabajar en paralelo
sin interferencias.
● Independencia: Se pueden
modificar partes sin afectar
al resto del sistema.
● Robustez: Su diseño
modular la hace más
resistente a
fallos.https://ausum.cloud/a
rquitectura-hexagonal-que-
es-ventajas-microservicios-
y-aws-lambda/
Arquitectura monolítica: Cristian
En este enfoque, todos los componentes y funcionalidades de la aplicación están
integrados en una única base de código y se despliegan como una sola unidad ejecutable.
Es una solución sencilla y rápida de implementar para aplicaciones pequeñas o medianas,
especialmente en etapas iniciales de desarrollo. Sin embargo, a medida que el sistema
crece, puede volverse más difícil de mantener, escalar y desplegar, ya que cualquier
cambio requiere volver a compilar y desplegar toda la aplicación. A pesar de sus
limitaciones, sigue siendo una opción válida cuando se prioriza la simplicidad y
velocidad de entrega en entornos controlados.
Elementos de la arquitectura de software
La arquitectura de software se conforma mediante la combinación de varios elementos y
conceptos. Estos elementos fundamentales se combinan para definir la estructura y el
diseño del sistema de software. Entre ellos se encuentran:
Componentes: Son los módulos, servicios o partes del software que realizan tareas
específicas dentro del sistema. Estos pueden incluir componentes de interfaz de usuario,
lógica de negocio, acceso a bases de datos, servicios web, entre otros.
Conexiones: Representan cómo los componentes se comunican y colaboran entre sí. Esto
incluye la definición de interfaces, protocolos de comunicación y flujos de datos.
Patrones de diseño: Son soluciones probadas y recurrentes para problemas comunes de
diseño de software. Los patrones pueden ayudar a estructurar el software de manera
efectiva.
Estilo arquitectónico: Es el enfoque de alto nivel que rige la estructura del sistema.
Algunos ejemplos incluyen la arquitectura de tres capas, la arquitectura orientada a
servicios (SOA), la arquitectura de microservicios y otras variantes modernas.
Requisitos no funcionales: Son los atributos de calidad que debe cumplir la arquitectura
del software, como el rendimiento, la escalabilidad, la seguridad y la disponibilidad.
Tecnologías y herramientas: La elección de tecnologías como lenguajes de programación,
bases de datos, frameworks y plataformas de despliegue tiene un impacto directo en la
arquitectura.
Documentación: Es esencial para describir y comunicar la arquitectura a los miembros
del equipo y las partes interesadas. Esto incluye diagramas, descripciones de
componentes, interfaces y decisiones clave de diseño.
Consideraciones de evolución y mantenimiento: Una arquitectura bien diseñada debe ser
flexible y preparada para adaptarse a cambios futuros, asegurando la sostenibilidad del
software a lo largo del tiempo.
Por último, si nos enfocamos en las desventajas, este tipo de arquitecturas de software
necesita un buen equipo que pueda administrar los componentes de manera correcta,
puesto que puede ser un poco complicado.
Referencias
Ausum Cloud. (s.f.). Arquitectura hexagonal: qué es, ventajas, microservicios y AWS
Lambda. Recuperado de https://ausum.cloud/arquitectura-hexagonal-que-es-ventajas-
microservicios-y-aws-lambda/
Chakray. (s.f.). ¿Qué son los microservicios? Definición, características, ventajas y
desventajas. Recuperado de https://chakray.com/es/que-son-los-microservicios-
definicion-caracteristicas-y-ventajas-y-desventajas/
IBM Cloud Education. (2021). Client-server model. IBM. Recuperado de
https://www.ibm.com/cloud/learn/client-server
Microsoft Learn. (s.f.). N-tier architecture design overview. Recuperado de
https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier
Mozilla Developer Network. (s.f.). HTTP overview. Recuperado de
https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
Oracle. (s.f.). What is MVC architecture? Recuperado de
https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/mvc/mvc.htm
Red Hat. (2022). What is peer-to-peer (P2P) networking? Recuperado de
https://www.redhat.com/en/topics/cloud-computing/what-is-peer-to-peer-network
Teclab. (s.f.). Tipos de arquitecturas de software: ¿cuáles hay y en qué se diferencian?.
Recuperado de https://teclab.edu.ar/tecnologia-y-desarrollo/tipos-de-arquitecturas-de-
software-cuales-hay-y-en-que-se-diferencian/