Arquitectura de Software 
Gustavo Alzate Sandoval 
Comunidad Avanet - @avanet 
Microsoft Community Specialist Colombia 
http://www.eltavo.net 
@ElTavoDev
Agenda 
¿Arquitectura SW? Patrones y estilos 
Aspectos 
transversales 
1 2 3 4 5 6 
Patrones 
De diseño 
Principios Atributos calidad 
7 
Validación 
Arquitectura
¿Qué es? 
• Proceso a través de cual se define la estructura 
base para una solución, la cual debe contemplar 
los aspectos funcionales y no funcionales 
• Diseño de alto nivel de la estructura de un sistema 
• Toma de decisiones, que afectan el éxito del 
sistema 
• Garantía de los atributos de calidad requeridos
¿Qué es?
Principios 
• Construir para el cambio y extensibilidad 
• Modelar para minimizar riesgos 
• Separación de incumbencias 
• Principio de única responsabilidad 
• Principio de mínimo conocimiento 
• Don’t repeat yourself (DRY) 
• Bajo acoplamiento 
• Alta cohesión
Consideraciones 
• Determinar el tipo de aplicación 
• Determinar la estrategia de despliegue 
• Definir las tecnologías apropiadas 
• Determinar los atributos de calidad 
• Determinar los aspectos transversales
Patrones o estilos 
Conjunto de principios que proporciona un marco de 
trabajo y resuelve problemas comúnmente conocidos. 
• Cliente servidor 
• Basado en componentes 
• Orientado a dominio 
• Arquitectura en capas 
• Bus de mensajes 
• N Tier / 3 Tier 
• Orientada a objetos 
• SOA
Atributos de calidad 
Factores generales que afectan de una forma u otra el 
comportamiento del sistema, como por ejemplo el 
rendimiento, usabilidad etc. Los atributos de calidad 
son determinados por las preocupaciones del 
negocio o Divers de negocio. 
• Mantenibilidad 
• Reusabilidad 
• Disponibilidad 
• Interoperailidad 
• Rendimiento
Atributos de calidad 
Factores generales que afectan de una forma u otra el 
comportamiento del sistema, como por ejemplo el 
rendimiento, usabilidad etc. Los atributos de calidad 
son determinados por las preocupaciones del 
negocio o Divers de negocio. 
• Escalabilidad 
• Seguridad 
• “Testeability” 
• Usabilidad
Aspectos transversales 
Funcionalidades comunes para uno o varios sistemas, 
permiten generar un marco de trabajo para 
desarrollo más ágil y permiten centralizar y reutilizar 
implementaciones. La programación orientada a 
aspectos promueve este principio. Para la 
implementación de estos aspectos transversales 
tenga en cuenta las siguientes consideraciones: 
• Analice cuales funcionalidades pueden ser 
reutilizadas en cada capa y evalué si también 
pueden ser reutilizadas por otros sistemas.
Aspectos transversales 
• Evalúe la estrategia de despliegue para los 
componentes transversales, si se pueden instalar 
en un Tier independiente para reutilizarlos 
• Considere usar inyección de dependencias para la 
utilización de estos componentes en sus 
aplicaciones 
• Considere usar librerías de terceros para este tipo 
de aspectos transversales, como por ejemplo 
Entreprise library, spring, etc.
Aspectos transversales 
• Autenticación 
• Autorización 
• Chaching 
• Comunicación 
• Manejo de errores 
• Logeo de errores y traza 
• Validación 
• Mensajería
Patrones de diseño 
Son la base para la búsqueda de soluciones a 
problemas comunes en el desarrollo de software. 
Posee principalmente dos características: 
• Debe haber comprobado su efectividad 
resolviendo el problema 
• Debe ser reutilizable
Patrones de diseño 
Patrones estructurales: 
• Adapter 
• Bridge 
• Composite 
• Decorator 
• Proxy
Patrones de diseño 
Patrones Creacionales 
• Abstract Factory 
• Builder 
• Factory Method 
• Prototype 
• Singleton
Patrones de diseño 
Patrones de comportamiento: 
• Chain of Responsibility 
• Command 
• Iterator 
• Observer 
• Strategy
Preguntas 
http://www.eltavo.net 
@ElTavoDev
GRACIAS!!!

Introducción a la Arquitectura de Software

  • 1.
    Arquitectura de Software Gustavo Alzate Sandoval Comunidad Avanet - @avanet Microsoft Community Specialist Colombia http://www.eltavo.net @ElTavoDev
  • 2.
    Agenda ¿Arquitectura SW?Patrones y estilos Aspectos transversales 1 2 3 4 5 6 Patrones De diseño Principios Atributos calidad 7 Validación Arquitectura
  • 3.
    ¿Qué es? •Proceso a través de cual se define la estructura base para una solución, la cual debe contemplar los aspectos funcionales y no funcionales • Diseño de alto nivel de la estructura de un sistema • Toma de decisiones, que afectan el éxito del sistema • Garantía de los atributos de calidad requeridos
  • 4.
  • 5.
    Principios • Construirpara el cambio y extensibilidad • Modelar para minimizar riesgos • Separación de incumbencias • Principio de única responsabilidad • Principio de mínimo conocimiento • Don’t repeat yourself (DRY) • Bajo acoplamiento • Alta cohesión
  • 6.
    Consideraciones • Determinarel tipo de aplicación • Determinar la estrategia de despliegue • Definir las tecnologías apropiadas • Determinar los atributos de calidad • Determinar los aspectos transversales
  • 7.
    Patrones o estilos Conjunto de principios que proporciona un marco de trabajo y resuelve problemas comúnmente conocidos. • Cliente servidor • Basado en componentes • Orientado a dominio • Arquitectura en capas • Bus de mensajes • N Tier / 3 Tier • Orientada a objetos • SOA
  • 8.
    Atributos de calidad Factores generales que afectan de una forma u otra el comportamiento del sistema, como por ejemplo el rendimiento, usabilidad etc. Los atributos de calidad son determinados por las preocupaciones del negocio o Divers de negocio. • Mantenibilidad • Reusabilidad • Disponibilidad • Interoperailidad • Rendimiento
  • 9.
    Atributos de calidad Factores generales que afectan de una forma u otra el comportamiento del sistema, como por ejemplo el rendimiento, usabilidad etc. Los atributos de calidad son determinados por las preocupaciones del negocio o Divers de negocio. • Escalabilidad • Seguridad • “Testeability” • Usabilidad
  • 10.
    Aspectos transversales Funcionalidadescomunes para uno o varios sistemas, permiten generar un marco de trabajo para desarrollo más ágil y permiten centralizar y reutilizar implementaciones. La programación orientada a aspectos promueve este principio. Para la implementación de estos aspectos transversales tenga en cuenta las siguientes consideraciones: • Analice cuales funcionalidades pueden ser reutilizadas en cada capa y evalué si también pueden ser reutilizadas por otros sistemas.
  • 11.
    Aspectos transversales •Evalúe la estrategia de despliegue para los componentes transversales, si se pueden instalar en un Tier independiente para reutilizarlos • Considere usar inyección de dependencias para la utilización de estos componentes en sus aplicaciones • Considere usar librerías de terceros para este tipo de aspectos transversales, como por ejemplo Entreprise library, spring, etc.
  • 12.
    Aspectos transversales •Autenticación • Autorización • Chaching • Comunicación • Manejo de errores • Logeo de errores y traza • Validación • Mensajería
  • 14.
    Patrones de diseño Son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software. Posee principalmente dos características: • Debe haber comprobado su efectividad resolviendo el problema • Debe ser reutilizable
  • 15.
    Patrones de diseño Patrones estructurales: • Adapter • Bridge • Composite • Decorator • Proxy
  • 16.
    Patrones de diseño Patrones Creacionales • Abstract Factory • Builder • Factory Method • Prototype • Singleton
  • 17.
    Patrones de diseño Patrones de comportamiento: • Chain of Responsibility • Command • Iterator • Observer • Strategy
  • 18.
  • 19.

Notas del editor

  • #4 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #5 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #6 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #7 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #8 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #9 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #10 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #11 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #12 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #13 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #14 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #15 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #16 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #17 https://www.google.es/maps/@6.2781971,-75.5889133,15z
  • #18 https://www.google.es/maps/@6.2781971,-75.5889133,15z