SlideShare una empresa de Scribd logo
1 de 13
una forma de afrontar los proyectos, una forma de
trabajar por parte del equipo de desarrollo
Iván García
Pablo Reinel
Cesar Gómez
Fundamentos de Arquitectura de
Aplicaciones
El diseño de la arquitectura de un sistema es el proceso por el
cual se define una solución para los requisitos técnicos y
operacionales del mismo.
Este proceso define qué componentes forman el sistema,
cómo se relacionan entre ellos, y cómo mediante su
interacción llevan a cabo la funcionalidad especificada,
cumpliendo con los criterios de calidad indicados como
seguridad, disponibilidad, eficiencia o usabilidad.
Durante el diseño de la arquitectura se tratan los temas que pueden tener
un impacto importante en el éxito o fracaso de nuestro sistema. Algunas
preguntas que hay que hacerse al respecto son:
¿En qué entorno va a ser desplegado nuestro sistema?
¿Cómo va a ser nuestro sistema puesto en producción?
¿Cómo van a utilizar los usuarios nuestro sistema?
¿Qué otros requisitos debe cumplir el sistema? (seguridad, rendimiento,
concurrencia, configuración…)
Fundamentos de Arquitectura de
Aplicaciones
En conclusión la arquitectura debe:
Mostrar la estructura del sistema pero ocultar los detalles.
Realizar todos los casos de uso.
Satisfacer en la medida de lo posible los intereses de los
agentes.
Ocuparse de los requisitos funcionales y de calidad.
Determinar el tipo de sistema a desarrollar.
Determinar los estilos arquitecturales que se usarán.
Tratar las principales cuestiones transversales.
La diferencia entre un buen proceso de diseño arquitectural y uno malo
puede suponer la diferencia entre el fracaso o éxito de un proyecto.
Para realizar todo este proceso se parte de la información que ha
generado el proceso de captura de requisitos, más detalladamente, esta
información es:
Casos de uso o historias de usuario.
Requisitos funcionales y no funcionales.
Restricciones tecnológicas y de diseño en general.
Entorno de despliegue propuesto.
Casos de uso significativos a implementar. Arquitecturas candidatas a
implementar.
Riesgos a mitigar y cómo hacerlo.
El proceso de Diseño de la Arquitectura
El proceso de Diseño de la Arquitectura
El diseño de la arquitectura es un proceso iterativo e incremental. En el diseño de
la arquitectura repetimos 5 pasos hasta completar el desarrollo del sistema
completo. Los pasos que repetimos y la forma más clara de verlos es esta:
El proceso de Diseño de la Arquitectura
Cada tipo de aplicación nos ofrece una serie de ventajas e inconvenientes, el
arquitecto tiene que escoger el tipo de aplicación que mejor se ajuste a las
ventajas.
Aplicaciones para dispositivos móviles: Se trata de aplicaciones web con
una interfaz adaptada para dispositivos móviles o aplicaciones de usuario
desarrolladas para el terminal.
Aplicaciones de escritorio: Son las aplicaciones clásicas que se instalan en
el equipo del usuario que la vaya a utilizar.
RIA (Rich Internet Applications): Se trata de aplicaciones que se ejecutan
dentro del navegador gracias a un plug-in y que ofrecen una mejor
respuesta que las aplicaciones web.
Servicios: Se trata de aplicaciones que exponen una funcionalidad
determinada en forma de servicios web para que otras aplicaciones los
consuman.
Aplicaciones web: Son aplicaciones que se consumen mediante un
navegador y que ofrecen una interfaz de usuario estándar y completamente
interoperable.
Cualquier arquitectura candidata debería
responder a las siguientes preguntas
¿Qué funcionalidad implementa?
¿Qué riesgos mitiga?
¿Cumple las restricciones impuestas por el cliente?
¿Qué cuestiones deja en el aire?
ASPECTOS DE DOMAIN DRIVEN DESIGN DDD
El objetivo de una arquitectura basada en Domain Driven Design es
conseguir un modelo orientado a objetos que refleje el conocimiento de
un dominio dado y que sea completamente independiente de cualquier
concepto de comunicación.
Orientación a tendencias de Arquitectura DDD
(Domain Driven Design)
El objetivo de esta arquitectura marco es proporcionar una base
consolidada y guías de arquitectura para un tipo concreto de
aplicaciones: „Aplicaciones empresariales complejas‟. Este tipo de
aplicaciones se caracterizan por tener una vida relativamente larga y un
volumen de cambios evolutivos considerable, el objetivo es que todo esto
se pueda realizar con el menor impacto posible sobre el resto de la
aplicación.
De forma generalista se suele decir que son aplicaciones centradas en
datos (Data Driven) y no tanto en un modelo de dominio (Domain Driven
Design).
Arquitectura orientada al dominio
Es una evolución/extensión de DDD donde se añaden aspectos de sistemas
distribuidos,
porque se centra mayoritariamente en el Dominio. Sin embargo, los
sistemas distribuidos y Servicios remotos son algo que necesitamos en la
mayoría de los escenarios.
En definitiva, esta cuarta D añadida a DDD nos acerca a escenarios
distribuidos, gran escalabilidad e incluso escenarios que normalmente se
acercarán a „Cloud-Computing‟ pos su afinidad.
Cuándo SÍ implementar una arquitectura N-Capas con Orientación al
Dominio
Deberá implementarse en las aplicaciones empresariales complejas cuya
lógica de negocio cambie bastante y la aplicación vaya a sufrir cambios y
mantenimientos posteriores durante una vida de aplicación, como mínimo,
relativamente larga.
Cuándo NO implementar una arquitectura N-Capas DDD
En aplicaciones pequeñas que una vez finalizadas se prevén pocos cambios,
la vida de la aplicación será relativamente corta y donde prima la velocidad
en el desarrollo de la aplicación.
Ventajas del uso de Arquitecturas N-Capas
Desarrollo estructurado, homogéneo y similar de las diferentes
aplicaciones de una organización.
Fácil cambio de tipología en el despliegue físico de una aplicación (2-Tier,
Desventajas del uso de Arquitecturas N-Capas
En el caso de aplicaciones muy pequeñas, estamos añadiendo una
complejidad excesiva (capas, desacoplamiento, etc.). Pero este caso es muy
poco probable en aplicaciones empresariales con cierto nivel.
Arquitectura orientada al dominio
!! GRACIAS !!

Más contenido relacionado

La actualidad más candente

Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
Roberth Loaiza
 
Proceso Unificado De Rational
Proceso Unificado De RationalProceso Unificado De Rational
Proceso Unificado De Rational
Julio Pari
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
Chuyito Alvarado
 

La actualidad más candente (20)

Requisitos de software
Requisitos de softwareRequisitos de software
Requisitos de software
 
Modelado basados en escenarios
Modelado basados en escenariosModelado basados en escenarios
Modelado basados en escenarios
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 
Proceso unificado
Proceso unificadoProceso unificado
Proceso unificado
 
Onion architecture
Onion architectureOnion architecture
Onion architecture
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Indagación de los requerimientos
Indagación de los requerimientosIndagación de los requerimientos
Indagación de los requerimientos
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 
ATRIBUTOS DE CALIDAD ARQUITECTURA DE SOFTWARE.pdf
ATRIBUTOS DE CALIDAD ARQUITECTURA DE SOFTWARE.pdfATRIBUTOS DE CALIDAD ARQUITECTURA DE SOFTWARE.pdf
ATRIBUTOS DE CALIDAD ARQUITECTURA DE SOFTWARE.pdf
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de Software
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Proceso Unificado De Rational
Proceso Unificado De RationalProceso Unificado De Rational
Proceso Unificado De Rational
 
Requerimientos no funcionales
Requerimientos no funcionalesRequerimientos no funcionales
Requerimientos no funcionales
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Clean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipClean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software Craftsmanship
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareAtributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de software
 
Arquitectura de Software Y Normas ISO
Arquitectura de Software Y Normas ISOArquitectura de Software Y Normas ISO
Arquitectura de Software Y Normas ISO
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
 
Arquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaArquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache Kafka
 

Similar a Orientación a tendencias de Arquitectura DDD

Unidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de softwareUnidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de software
Andhy H Palma
 
Arquitectura 2
Arquitectura 2Arquitectura 2
Arquitectura 2
bistasa
 
Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008
Cesar Jimenez
 
1 ingeniería de software
1 ingeniería de software1 ingeniería de software
1 ingeniería de software
UVM
 

Similar a Orientación a tendencias de Arquitectura DDD (20)

Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...Metodologías Ágiles  para el Desarrollo de Software y Metodologias Para el de...
Metodologías Ágiles para el Desarrollo de Software y Metodologias Para el de...
 
Unidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de softwareUnidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de software
 
Unidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de softwareUnidad 3 los modelos de procesos de software
Unidad 3 los modelos de procesos de software
 
Modelo Descrptivos Del Proceso Del Sofware
Modelo Descrptivos  Del  Proceso Del SofwareModelo Descrptivos  Del  Proceso Del Sofware
Modelo Descrptivos Del Proceso Del Sofware
 
Fundamentos de ingenieria de software - metodologias.pdf
Fundamentos de ingenieria de software - metodologias.pdfFundamentos de ingenieria de software - metodologias.pdf
Fundamentos de ingenieria de software - metodologias.pdf
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Arquitectura 2
Arquitectura 2Arquitectura 2
Arquitectura 2
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
Ingenieria de software
Ingenieria de softwareIngenieria de software
Ingenieria de software
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Adrian adrianza
Adrian adrianzaAdrian adrianza
Adrian adrianza
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 
Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008
 
Ingenieroa de de Software Conceptos Iniciales
Ingenieroa de de Software Conceptos InicialesIngenieroa de de Software Conceptos Iniciales
Ingenieroa de de Software Conceptos Iniciales
 
Ingenieria de Software Introducción a los Conceptos Basicos
Ingenieria de Software Introducción a los Conceptos BasicosIngenieria de Software Introducción a los Conceptos Basicos
Ingenieria de Software Introducción a los Conceptos Basicos
 
prueva
pruevaprueva
prueva
 
Plan
PlanPlan
Plan
 
¿Qué es la arquitectura de software?
¿Qué es la arquitectura de software?¿Qué es la arquitectura de software?
¿Qué es la arquitectura de software?
 
1 ingeniería de software
1 ingeniería de software1 ingeniería de software
1 ingeniería de software
 

Orientación a tendencias de Arquitectura DDD

  • 1. una forma de afrontar los proyectos, una forma de trabajar por parte del equipo de desarrollo Iván García Pablo Reinel Cesar Gómez
  • 2. Fundamentos de Arquitectura de Aplicaciones El diseño de la arquitectura de un sistema es el proceso por el cual se define una solución para los requisitos técnicos y operacionales del mismo. Este proceso define qué componentes forman el sistema, cómo se relacionan entre ellos, y cómo mediante su interacción llevan a cabo la funcionalidad especificada, cumpliendo con los criterios de calidad indicados como seguridad, disponibilidad, eficiencia o usabilidad.
  • 3. Durante el diseño de la arquitectura se tratan los temas que pueden tener un impacto importante en el éxito o fracaso de nuestro sistema. Algunas preguntas que hay que hacerse al respecto son: ¿En qué entorno va a ser desplegado nuestro sistema? ¿Cómo va a ser nuestro sistema puesto en producción? ¿Cómo van a utilizar los usuarios nuestro sistema? ¿Qué otros requisitos debe cumplir el sistema? (seguridad, rendimiento, concurrencia, configuración…) Fundamentos de Arquitectura de Aplicaciones
  • 4. En conclusión la arquitectura debe: Mostrar la estructura del sistema pero ocultar los detalles. Realizar todos los casos de uso. Satisfacer en la medida de lo posible los intereses de los agentes. Ocuparse de los requisitos funcionales y de calidad. Determinar el tipo de sistema a desarrollar. Determinar los estilos arquitecturales que se usarán. Tratar las principales cuestiones transversales.
  • 5. La diferencia entre un buen proceso de diseño arquitectural y uno malo puede suponer la diferencia entre el fracaso o éxito de un proyecto. Para realizar todo este proceso se parte de la información que ha generado el proceso de captura de requisitos, más detalladamente, esta información es: Casos de uso o historias de usuario. Requisitos funcionales y no funcionales. Restricciones tecnológicas y de diseño en general. Entorno de despliegue propuesto. Casos de uso significativos a implementar. Arquitecturas candidatas a implementar. Riesgos a mitigar y cómo hacerlo. El proceso de Diseño de la Arquitectura
  • 6. El proceso de Diseño de la Arquitectura El diseño de la arquitectura es un proceso iterativo e incremental. En el diseño de la arquitectura repetimos 5 pasos hasta completar el desarrollo del sistema completo. Los pasos que repetimos y la forma más clara de verlos es esta:
  • 7. El proceso de Diseño de la Arquitectura Cada tipo de aplicación nos ofrece una serie de ventajas e inconvenientes, el arquitecto tiene que escoger el tipo de aplicación que mejor se ajuste a las ventajas. Aplicaciones para dispositivos móviles: Se trata de aplicaciones web con una interfaz adaptada para dispositivos móviles o aplicaciones de usuario desarrolladas para el terminal. Aplicaciones de escritorio: Son las aplicaciones clásicas que se instalan en el equipo del usuario que la vaya a utilizar. RIA (Rich Internet Applications): Se trata de aplicaciones que se ejecutan dentro del navegador gracias a un plug-in y que ofrecen una mejor respuesta que las aplicaciones web. Servicios: Se trata de aplicaciones que exponen una funcionalidad determinada en forma de servicios web para que otras aplicaciones los consuman. Aplicaciones web: Son aplicaciones que se consumen mediante un navegador y que ofrecen una interfaz de usuario estándar y completamente interoperable.
  • 8. Cualquier arquitectura candidata debería responder a las siguientes preguntas ¿Qué funcionalidad implementa? ¿Qué riesgos mitiga? ¿Cumple las restricciones impuestas por el cliente? ¿Qué cuestiones deja en el aire?
  • 9. ASPECTOS DE DOMAIN DRIVEN DESIGN DDD El objetivo de una arquitectura basada en Domain Driven Design es conseguir un modelo orientado a objetos que refleje el conocimiento de un dominio dado y que sea completamente independiente de cualquier concepto de comunicación.
  • 10. Orientación a tendencias de Arquitectura DDD (Domain Driven Design) El objetivo de esta arquitectura marco es proporcionar una base consolidada y guías de arquitectura para un tipo concreto de aplicaciones: „Aplicaciones empresariales complejas‟. Este tipo de aplicaciones se caracterizan por tener una vida relativamente larga y un volumen de cambios evolutivos considerable, el objetivo es que todo esto se pueda realizar con el menor impacto posible sobre el resto de la aplicación. De forma generalista se suele decir que son aplicaciones centradas en datos (Data Driven) y no tanto en un modelo de dominio (Domain Driven Design).
  • 11. Arquitectura orientada al dominio Es una evolución/extensión de DDD donde se añaden aspectos de sistemas distribuidos, porque se centra mayoritariamente en el Dominio. Sin embargo, los sistemas distribuidos y Servicios remotos son algo que necesitamos en la mayoría de los escenarios. En definitiva, esta cuarta D añadida a DDD nos acerca a escenarios distribuidos, gran escalabilidad e incluso escenarios que normalmente se acercarán a „Cloud-Computing‟ pos su afinidad. Cuándo SÍ implementar una arquitectura N-Capas con Orientación al Dominio Deberá implementarse en las aplicaciones empresariales complejas cuya lógica de negocio cambie bastante y la aplicación vaya a sufrir cambios y mantenimientos posteriores durante una vida de aplicación, como mínimo, relativamente larga.
  • 12. Cuándo NO implementar una arquitectura N-Capas DDD En aplicaciones pequeñas que una vez finalizadas se prevén pocos cambios, la vida de la aplicación será relativamente corta y donde prima la velocidad en el desarrollo de la aplicación. Ventajas del uso de Arquitecturas N-Capas Desarrollo estructurado, homogéneo y similar de las diferentes aplicaciones de una organización. Fácil cambio de tipología en el despliegue físico de una aplicación (2-Tier, Desventajas del uso de Arquitecturas N-Capas En el caso de aplicaciones muy pequeñas, estamos añadiendo una complejidad excesiva (capas, desacoplamiento, etc.). Pero este caso es muy poco probable en aplicaciones empresariales con cierto nivel. Arquitectura orientada al dominio