Introducción al curso

1

Diseño y Documentación de Arquitectura de Software

Atributos de calidad

2

Atributos de Calidad en Sistemas: Definición y Medición

3

Idoneidad Funcional: Completitud, Exactitud y Pertinencia

4

Eficiencia de Ejecución en Sistemas Informáticos

5

Compatibilidad en Sistemas: Interoperabilidad y Coexistencia

6

Subcaracterísticas de Usabilidad en Desarrollo de Software

7

Confiabilidad de Sistemas: Madurez, Disponibilidad, Resiliencia y Recuperación

8

Seguridad de Usuarios en Desarrollo de Software

9

Subcaracterísticas de Mantenibilidad en Sistemas de Software

10

Medición de Adaptabilidad en Sistemas de Software

11

Relación y Tensión entre Atributos de Calidad en Sistemas de Software

12

Atributos de Calidad en Arquitectura de Software

Patrones de arquitectura

13

Patrones de Arquitectura Monolítica y Distribuida

14

Modelo Vista Controlador: Separación de Responsabilidades en Aplicaciones

15

Arquitectura de Capas: Diseño y Comunicación entre Niveles

16

Patrones de Arquitectura Orientada a Eventos y Event Sourcing

17

Patrón de Arquitectura MicroKernel y su Implementación en IDEs

18

Arquitectura "Comparte Nada": Optimización y Procesamiento de Datos

19

Patrón de Microservicios en Arquitectura de Software

20

Patrón CQRS para Separación de Consultas y Comandos

21

Arquitectura Hexagonal: Diseño y Aplicación Práctica

22

Diseño Orientado al Dominio: Conceptos y Aplicaciones Prácticas

23

Patrones de Arquitectura para Aplicaciones Escalables y Modulares

24

Patrones de Arquitectura en Proyectos de Crecimiento Empresarial

Diseño de una arquitectura

25

Diseño de Arquitecturas a Medida: Herramientas y Estrategias

26

Tipos de Conectores en Arquitectura de Software

27

Conectores Asíncronos y Sincrónicos: Implementación y Uso Práctico

28

Diferencias entre Enrutadores y Difusores en Comunicación de Mensajes

29

Conexión de Productores y Consumidores con Colas de Mensajes

30

Framework de Diseño Orientado a Atributos: Escenarios y Tácticas

31

Tácticas para Mejorar la Disponibilidad de Sistemas

32

Tácticas para Mejorar la Disponibilidad del Sistema

33

Tácticas para Mejorar la Mantenibilidad del Software

34

Prevención de Efectos Dominó en Mantenibilidad de Software

35

Estrategias para Mejorar la Eficiencia de Ejecución en Sistemas

36

Tácticas de Seguridad Informática para Detectar, Resistir y Recuperarse de Ataques

37

Estrategias para Mejorar la Capacidad de Prueba de Software

38

Tácticas de Usabilidad en Diseño de Interfaces de Usuario

39

Validación de Arquitectura con ATAM y Métricas de Calidad

40

Diseño de Arquitectura para Startups y Empresas Escalables

Modelado y documentación de arquitectura

41

Documentación Efectiva de Arquitectura de Software

42

Sincronización de Modelos de Arquitectura y Código Fuente

43

Evaluación de Atributos de Calidad en Arquitectura de Software

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Modelo Vista Controlador: Separación de Responsabilidades en Aplicaciones

14/43
Recursos

Este es uno de los patrones mas nombrados. El modelo vista controlador, separa a nuestra aplicación en tres grandes partes.

Aportes 26

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

El mundo de Patrones puede ser confuso y más si no hay bases o contexto, por ello dejo un resumen de como a mi me ha sido fácil comprenderos…

  • Estilos Arquitectónicos: se refieren a estructuras y como los componentes se comunican. "Nivel Infraestructuras"
    Ejemplo: Cliente-Servidor, Arquitectura-Capas, Monolitico, MicroKernel, P2P, SOA, Microservicios, EDA, REST
  • Patrones Arquitectónicos: soluciones implementadas bajo un estilo arquitectonico. "Diseño Alto Nivel"
    Ejemplo: Circuite-Brake, Saga, Dahsboard, Sharding, MVC, Throttling, Polling, WebHook, LoadBalance, Pipes & Filters, Event Bus, Dashboard, CQRS, Cache Aside, Publisher/Suscriber, Backends for Frontends
  • Patrones de Diseño de Software: técnicas para resolver problemas comunes en el desarrollo de software, estan divididos en 3 categoria: (Diseño Bajo Nivel)
    ->CREACIONALES<-
    Singleton, Prototype, Builder, Factory Method, Abstract Factory, Object Pool
    ->ESTRUCTURALES<-
    Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
    ->COMPORTAMIENTO<-
    Iterator, Command, Observer, Tempalte Method, Strategy, Chain of Responsability, Interpreter, Mediator, Moment, Null Object, State, Visitor

El Modelo Vista Controlador, separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.

Es un modelo maduro y que ha demostrado su validez en todo tipo de aplicaciones y multitud de lenguajes y plataformas de desarrollo.

**-El Modelo **que contiene una representación de los datos que maneja el sistema, su lógica de negocio, y sus mecanismos de persistencia.
-La Vista, o interfaz de usuario, que compone la información que se envía al cliente y los mecanismos interacción con éste.
**-El Controlador, **que actúa como intermediario entre el Modelo y la Vista, gestionando el flujo de información entre ellos y las transformaciones para adaptar los datos a las necesidades de cada uno.

Modelo - vista - controlador .

les dejo aquí algo para complemetar el material del curso. Fuente wikipedia.

  • Modelo: Es la representación de la información con la cual el sistema opera, por lo tanto gestiona todos los accesos a dicha información, tanto consultas como actualizaciones, implementando también los privilegios de acceso que se hayan descrito en las especificaciones de la aplicación (lógica de negocio). Envía a la ‘vista’ aquella parte de la información que en cada momento se le solicita para que sea mostrada (típicamente a un usuario). Las peticiones de acceso o manipulación de información llegan al ‘modelo’ a través del ‘controlador’.

  • Conrtolador: responde a eventos (usualmente acciones del usuario) e invoca peticiones al ‘modelo’ cuando se hace alguna solicitud sobre la información (por ejemplo, editar un documento o un registro en una base de datos). También puede enviar comandos a su ‘vista’ asociada si se solicita un cambio en la forma en que se presenta el ‘modelo’ (por ejemplo, desplazamiento o scroll por un documento o por los diferentes registros de una base de datos), por tanto se podría decir que el ‘controlador’ hace de intermediario entre la ‘vista’ y el ‘modelo’

  • La Vista: Presenta el ‘modelo’ (información y lógica de negocio) en un formato adecuado para interactuar (usualmente la interfaz de usuario), por tanto requiere de dicho ‘modelo’ la información que debe representar como salida.

<h3>Modelo - Vista-Controlador</h3>

La comunicación más importante es la Vista-modelo, porque es importante separar la vista (Como se ve el sistema) del Conocimiento (Que es lo que el sistema puede hacer). De esta manera ambos pueden crecer escalarmente.


Los siguientes son variantes de este patron:

  • Model-View: ASP.net, C#
  • Modelo vista Presentador: Cambia el rol de usuario por un coordinador de vistas, Sin embargo siguen separadas las vistas de modelos.
  • Flux: Se preocupa por como fluyen los datos, este patron plantea la comunicación de una sola vía separando los tres componentes.

Muy flojas las explicaciones de los conceptos en este curso. Para algo más claro y rico en contenido, recomiendo visitar este enlace del Blog del señor Martin Fowler: https://martinfowler.com/eaaDev/uiArchs.html#ModelViewController

En esta clase se habló del patrón de diseño Modelo Vista Controlador (MVC), el cual establece la separación de responsabilidades de la siguiente manera:

- Modelo: El estado del sistema
- Vista: La presentación
- Controlador: Las acciones del usuario.

De ahí que también se mencionaron variantes de este patrón de diseño, como:
Modelo Vista VistaModelo (MVVM) Donde el ViewModel contiene toda la lógica de presentación. Permite abstracción de lógica de la vista. Ejemplo: C# y ASP.NET.
Modelo Vista Presentador (MVP): Donde el Presenter lleva toda la lógica de presentación. Es un coordinador o intermediario, es quien va a mediar entre la vista y el modelo, sin que estos interactúen entre sí.
Flux: Maneja el flujo de datos (Cómo fluyen los datos). Aquí se maneja la comunicación en una sola vía. Se elimina la comunicación bidireccional que había entre modelo y controlador. Se deja de lado esa comunicación triangular del MVC.

Apuntes:

Modelo Vista Controlador

Separa a nuestra aplicación en tres grandes partes: El Modelo, La Vista, El controlador. Podemos hacer que la visa cambie sin que el modelo tenga que cambiar y a su vez agregar acciones de usuario que aprovechen el mismo modelo y la misma vista.

Ejemplo de el directorio de archivos del e-commerce para este MVC: /ecommerce-app │ ├── /controllers │ ├── AuthController.js # Maneja el login, registro y autenticación de usuarios │ ├── ProductController.js # Gestiona las operaciones con los productos (listar, ver detalles, etc.) │ ├── CartController.js # Controla las acciones del carrito de compras │ └── OrderController.js # Gestiona los pedidos y transacciones │ ├── /models │ ├── User.js # Define el esquema del usuario y sus operaciones │ ├── Product.js # Define el esquema del producto y sus operaciones │ ├── Cart.js # Esquema del carrito de compras │ └── Order.js # Esquema para el manejo de pedidos │ ├── /views │ ├── /auth │ │ ├── login.ejs # Vista para el formulario de inicio de sesión │ │ └── register.ejs # Vista para el formulario de registro │ ├── /products │ │ ├── index.ejs # Vista que lista los productos │ │ ├── show.ejs # Vista que muestra los detalles de un producto │ └── /cart │ ├── index.ejs # Vista para mostrar los productos en el carrito │ └── checkout.ejs # Vista para el proceso de pago │ ├── /public │ ├── /css │ │ └── styles.css # Archivos CSS │ ├── /images │ │ └── logo.png # Imágenes del sitio │ └── /js │ └── scripts.js # Archivos JavaScript del frontend │ ├── /routes │ ├── authRoutes.js # Define las rutas para autenticación (login, registro) │ ├── productRoutes.js # Define las rutas para los productos │ ├── cartRoutes.js # Define las rutas del carrito │ └── orderRoutes.js # Define las rutas para gestionar pedidos │ ├── /config │ ├── db.js # Configuración de la base de datos │ └── config.js # Configuraciones generales (puerto, claves, etc.) │ ├── /middlewares │ ├── authMiddleware.js # Middleware para proteger rutas privadas │ └── errorHandler.js # Middleware para manejar errores │ ├── /services │ ├── PaymentService.js # Servicio para gestionar pagos │ └── EmailService.js # Servicio para enviar emails de confirmación │ ├── app.js # Archivo principal que arranca la aplicación ├── package.json # Dependencias del proyecto └── README.md # Documentación del proyecto

Este patrón, también conocido como patrón MVC, divide una aplicación interactiva en 3 partes, como:

  • modelo — contiene la funcionalidad y los datos básicos

  • vista : muestra la información al usuario (se puede definir más de una vista)

  • controlador : maneja la entrada del usuario

Apreciados compatriotas, si están perdidos con la terminología los invito a leer el siguiente articulo de medium que es mucho más exacto, recomiendo enérgicamente que actualicen el curso con el objeto de hacerlo más puntual con algunas definiciones y términos clave: <https://kaldt-slange.medium.com/estilos-de-arquitectura-vs-patrones-de-arquitectura-vs-patrones-de-dise%C3%B1o-en-software-1b42cd5b2a51>
Muy interesante la información que se amplía acerca del MVC. No tenía muy claro que Flux estaba reclacionado con este patrón de arquitectura. Muchas gracias

Y los frameworks por ejemplo Laravel usa este patrón MVC ?

Uso
Arquitectura para aplicaciones World Wide Web en los principales lenguajes de programación.
Marcos web como Django y Rails .

Por que dice “mas erroneamente utilizado” al principio? sorry no me quedo claro.

Modelo Vista Controlador.
Separa nuestra aplicación en tres partes.

Descripcion de las tres capas

Angulat tambien usa el modelo MVC si mal no estoy

¿Este patrón puede ser de tipo monolítico, distribuido o los dos?

Me esta diciendo que esta mal hacer un modelo por cada entidad?, o un controlador por cada vista?

En mi trabajo, me ha tocado entrevistar a muchos recursos que en su CV indican dominar este patrón y al preguntarles sobre el muy pocos saben realmente de que se trata.

Excelente… muy bien explicado-