SlideShare una empresa de Scribd logo
1 de 23
Leonardo Rosales
Arquitectura de software
   Problemas
   Arquitectura emergente
Patterns & Practices
   Sashimi
   BDD
   Onion Architecture
Validación de la arquitectura
   Atributos de calidad
   Herramientas
Recursos
“Es la estructura o estructuras de un sistema, que comprende los
  componentes de software, las propiedades externas visibles de
           estos elementos y las relaciones entre ellos.” [1]


    “Es la organización de un sistema, que está formado por
   componentes, las relaciones entre ellos, las relaciones con el
  entorno y los principios que guían su diseño y su evolución.” [IEEE
                                  1471]
Sobre-especificación inicial
   Se intenta minimizar la incertidumbre inicial
   Minimiza el rol del equipo de desarrollo a un autómata sin
    creatividad
   Produce límites inflexibles y software rígido
   Agrega restricciones inapropiadas


Sub-especificación
   Sin límites ni arquitectura definida, un diseño está destinado
    a ser implementado en base a decisiones no optimas
El balance se logra mediante compromiso y encapsulación



                Arquitectura emergente
“Las mejores arquitecturas, requisitos y diseños
  emergen de equipos auto-organizados.”
                     Los 12 principios del manifiesto ágil
Arquitectura emergente

 Responsabilidad compartida
 Arquitecto define diseño de alto nivel de la solución
 El equipo entiende el diseño, las consecuencias de la
  alternativa seleccionada y evalúa constantemente
 Se busca consenso

   Se debe definir una API desacoplada que permita que
    las implementaciones puedan ser refactorizadas a
    medida que el proyecto evoluciona
Sashimi
 Se construye lo mínimo necesario para conectar todas las
 piezas y comenzar a construir la funcionalidad.
  End to end
  Foco en las API’s y no en sus implementaciones


Behaviour driven development
 BBD = TDD + Test de aceptación en lenguaje natural
  Foco en lo que debe ser creado y no en cuestiones tecnicas
BDD is a second-generation, outside-in, pull-based, multiple-
     stakeholder, multiple-scale, high-automation, agile
 methodology. It describes a cycle of interactions with well-
 defined outputs, resulting in the delivery of working, tested
                   software that matters.
Diseñar par a el cambio
   Arquitectura en capas viola el principio de la inversión de
    dependencias.
Diseñar par a el cambio
   Arquitectura cebolla: dominio al centro, las capas con
    interfaces para permitir inyección de dependencias, capas
    que mas cambian afuera.
Atributos de calidad
 Deben ser considerados desde el inicio
 Son especificados como requerimientos en el
  backlog
 Con criterios de aceptación
 Implementados incrementalmente
 Ejemplos de estos requerimientos:
     flexibilidad
      (complejidad, dependencias, acoplamientos, separaci
      ón en capas)
     performance (tiempo de respuesta, uso de recursos)
     escalabilidad (carga del sistema)
Atributos de calidad
   Herramientas comunes de testing

     Unit test: xUnit (jUnit, nUnit, cppUnit, MS Test)
     BDD: RSpec, xUnit.Net, JBehave, Cucumber
     Análisis funcional: Fitnesse, Selenium, Watir
     Performance and stress testing
   Herramientas con foco en los atributos de
    calidad (líneas de código por método, code
    coverage, análisis estático, complejidad
    ciclomática, acoplamiento, dependencias)

     Net: FXCop, StyleCop, NDepend y herramientas integradas en VS
     Java: Findbugs, JDepend, Checkstyle, Lattix y herramientas
      integradas en Intellij IDEA.
The Architecture Journal. MSDN Architecture Center. Issue 23.
http://msdn.microsoft.com/en-us/architecture/ff476933

Onion Architecture
http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

[1] Bass, Clements, and Kazman. Software Architecture in Practice 2nd ed, Addison-
Wesley 2003.

[2] Fowler, Martin, et al. “Principles Behind the Agile Manifesto.” Manifesto for Agile
Software Development Web site, 2001.

Más contenido relacionado

La actualidad más candente

Ingeniería de Requisitos
Ingeniería de RequisitosIngeniería de Requisitos
Ingeniería de RequisitosSorey García
 
Ingenieria de requisitos
Ingenieria de requisitos  Ingenieria de requisitos
Ingenieria de requisitos JCRREYES
 
Requerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareRequerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareKelvin Abdiel Alvarado
 
Metodologia De Desarrollo De Software
Metodologia De Desarrollo De SoftwareMetodologia De Desarrollo De Software
Metodologia De Desarrollo De SoftwareMartin Penaloza
 
Introducción a la Ingenieria de Software
Introducción a la Ingenieria de SoftwareIntroducción a la Ingenieria de Software
Introducción a la Ingenieria de SoftwareSorey García
 
Ing1 requerimientos 3_2016
Ing1 requerimientos 3_2016Ing1 requerimientos 3_2016
Ing1 requerimientos 3_2016ccarguello
 
Taller requisitos
Taller requisitosTaller requisitos
Taller requisitosNando Lopez
 
Cuadro comparativo metodos
Cuadro comparativo metodosCuadro comparativo metodos
Cuadro comparativo metodosivansierra20
 
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASIMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASAlcoverify
 
14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de softwareJhon Barrera
 
Modelos de procesos de software(completo)
Modelos de procesos de software(completo)Modelos de procesos de software(completo)
Modelos de procesos de software(completo)David Rosero
 
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSINGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSLuis Anibal
 
Cuadro comparativo de_modelos_de_procesos_de_software
Cuadro comparativo de_modelos_de_procesos_de_softwareCuadro comparativo de_modelos_de_procesos_de_software
Cuadro comparativo de_modelos_de_procesos_de_softwareShaman King
 
Requerimientos software test
Requerimientos software testRequerimientos software test
Requerimientos software testkalita20
 

La actualidad más candente (19)

Ingeniería de Requisitos
Ingeniería de RequisitosIngeniería de Requisitos
Ingeniería de Requisitos
 
Ingenieria de requisitos
Ingenieria de requisitos  Ingenieria de requisitos
Ingenieria de requisitos
 
Requerimientos en Ingenieria de Software
Requerimientos en Ingenieria de SoftwareRequerimientos en Ingenieria de Software
Requerimientos en Ingenieria de Software
 
Metodologia De Desarrollo De Software
Metodologia De Desarrollo De SoftwareMetodologia De Desarrollo De Software
Metodologia De Desarrollo De Software
 
Introducción a la Ingenieria de Software
Introducción a la Ingenieria de SoftwareIntroducción a la Ingenieria de Software
Introducción a la Ingenieria de Software
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
 
Ing1 requerimientos 3_2016
Ing1 requerimientos 3_2016Ing1 requerimientos 3_2016
Ing1 requerimientos 3_2016
 
Taller requisitos
Taller requisitosTaller requisitos
Taller requisitos
 
Cuadro comparativo metodos
Cuadro comparativo metodosCuadro comparativo metodos
Cuadro comparativo metodos
 
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASIMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
 
14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software
 
Modelos de procesos de software(completo)
Modelos de procesos de software(completo)Modelos de procesos de software(completo)
Modelos de procesos de software(completo)
 
Software
SoftwareSoftware
Software
 
Sistemas II (I Bimestre)
Sistemas II (I Bimestre)Sistemas II (I Bimestre)
Sistemas II (I Bimestre)
 
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSINGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
 
Modelo
ModeloModelo
Modelo
 
Cuadro comparativo de_modelos_de_procesos_de_software
Cuadro comparativo de_modelos_de_procesos_de_softwareCuadro comparativo de_modelos_de_procesos_de_software
Cuadro comparativo de_modelos_de_procesos_de_software
 
Requerimientos software test
Requerimientos software testRequerimientos software test
Requerimientos software test
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 

Destacado

Análisis de arquitecturas de software
Análisis de arquitecturas de softwareAnálisis de arquitecturas de software
Análisis de arquitecturas de softwareJorge Rodriguez
 
Patron Memento
Patron MementoPatron Memento
Patron MementoAn3s
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspJuan Pablo Bustos Thames
 
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS
1.1ARQUITECTURA DE CUATRO MAS UN VISTASadolfo0890
 
El diagrama en la arquitectura.
El diagrama en la arquitectura.El diagrama en la arquitectura.
El diagrama en la arquitectura.Luis Xhaparro
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareSoftware Guru
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Marta Silvia Tabares
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para DummiesSorey García
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software designPiyush Gogia
 
Lean Software Development Principles
Lean Software Development PrinciplesLean Software Development Principles
Lean Software Development PrinciplesJohn Vajda
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineeringPreeti Mishra
 

Destacado (14)

Análisis de arquitecturas de software
Análisis de arquitecturas de softwareAnálisis de arquitecturas de software
Análisis de arquitecturas de software
 
Patron Memento
Patron MementoPatron Memento
Patron Memento
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Patrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. graspPatrones para asignar responsabilidades. grasp
Patrones para asignar responsabilidades. grasp
 
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS1.1ARQUITECTURA DE  CUATRO  MAS UN VISTAS
1.1ARQUITECTURA DE CUATRO MAS UN VISTAS
 
El diagrama en la arquitectura.
El diagrama en la arquitectura.El diagrama en la arquitectura.
El diagrama en la arquitectura.
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de Software
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1
 
Arquitectura De Software Para Dummies
Arquitectura De Software Para DummiesArquitectura De Software Para Dummies
Arquitectura De Software Para Dummies
 
Chapter 5 software design
Chapter 5 software designChapter 5 software design
Chapter 5 software design
 
Lean Software Development Principles
Lean Software Development PrinciplesLean Software Development Principles
Lean Software Development Principles
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 

Similar a Architecture in agile projects

Similar a Architecture in agile projects (20)

Conceptosdemodelado.pdf
Conceptosdemodelado.pdfConceptosdemodelado.pdf
Conceptosdemodelado.pdf
 
2017.10.16-senati-powerpoint sesion8.pptx
2017.10.16-senati-powerpoint sesion8.pptx2017.10.16-senati-powerpoint sesion8.pptx
2017.10.16-senati-powerpoint sesion8.pptx
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Arquitecturas de software
Arquitecturas de softwareArquitecturas de software
Arquitecturas de software
 
Clase7 unidad1
Clase7 unidad1Clase7 unidad1
Clase7 unidad1
 
Clase7
Clase7Clase7
Clase7
 
8.conceptos de diseño
8.conceptos de diseño8.conceptos de diseño
8.conceptos de diseño
 
Capitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_webCapitulo 3 arquitecturas_de_desarrollo_web
Capitulo 3 arquitecturas_de_desarrollo_web
 
Rup
RupRup
Rup
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
Patricio quiros tarea final
Patricio quiros tarea finalPatricio quiros tarea final
Patricio quiros tarea final
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
 
Conferencia Gestión de Proyectos de TI
Conferencia Gestión de Proyectos de TIConferencia Gestión de Proyectos de TI
Conferencia Gestión de Proyectos de TI
 
Charla Atributos de calidad con .Net
Charla Atributos de calidad con .NetCharla Atributos de calidad con .Net
Charla Atributos de calidad con .Net
 
Rup tony
Rup tonyRup tony
Rup tony
 
Arquitecturas de software exposicion
Arquitecturas de software   exposicionArquitecturas de software   exposicion
Arquitecturas de software exposicion
 
Modelo cascada
Modelo cascadaModelo cascada
Modelo cascada
 
Behavior1
Behavior1Behavior1
Behavior1
 
Ingenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareIngenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de software
 
Presentaciondefundamentosdesoftware
PresentaciondefundamentosdesoftwarePresentaciondefundamentosdesoftware
Presentaciondefundamentosdesoftware
 

Architecture in agile projects

  • 2. Arquitectura de software Problemas Arquitectura emergente Patterns & Practices Sashimi BDD Onion Architecture Validación de la arquitectura Atributos de calidad Herramientas Recursos
  • 3. “Es la estructura o estructuras de un sistema, que comprende los componentes de software, las propiedades externas visibles de estos elementos y las relaciones entre ellos.” [1] “Es la organización de un sistema, que está formado por componentes, las relaciones entre ellos, las relaciones con el entorno y los principios que guían su diseño y su evolución.” [IEEE 1471]
  • 4. Sobre-especificación inicial  Se intenta minimizar la incertidumbre inicial  Minimiza el rol del equipo de desarrollo a un autómata sin creatividad  Produce límites inflexibles y software rígido  Agrega restricciones inapropiadas Sub-especificación  Sin límites ni arquitectura definida, un diseño está destinado a ser implementado en base a decisiones no optimas
  • 5. El balance se logra mediante compromiso y encapsulación Arquitectura emergente
  • 6. “Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.” Los 12 principios del manifiesto ágil
  • 7. Arquitectura emergente  Responsabilidad compartida  Arquitecto define diseño de alto nivel de la solución  El equipo entiende el diseño, las consecuencias de la alternativa seleccionada y evalúa constantemente  Se busca consenso  Se debe definir una API desacoplada que permita que las implementaciones puedan ser refactorizadas a medida que el proyecto evoluciona
  • 8. Sashimi Se construye lo mínimo necesario para conectar todas las piezas y comenzar a construir la funcionalidad.  End to end  Foco en las API’s y no en sus implementaciones Behaviour driven development BBD = TDD + Test de aceptación en lenguaje natural  Foco en lo que debe ser creado y no en cuestiones tecnicas
  • 9. BDD is a second-generation, outside-in, pull-based, multiple- stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well- defined outputs, resulting in the delivery of working, tested software that matters.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. Diseñar par a el cambio  Arquitectura en capas viola el principio de la inversión de dependencias.
  • 15. Diseñar par a el cambio  Arquitectura cebolla: dominio al centro, las capas con interfaces para permitir inyección de dependencias, capas que mas cambian afuera.
  • 16. Atributos de calidad  Deben ser considerados desde el inicio  Son especificados como requerimientos en el backlog  Con criterios de aceptación  Implementados incrementalmente  Ejemplos de estos requerimientos:  flexibilidad (complejidad, dependencias, acoplamientos, separaci ón en capas)  performance (tiempo de respuesta, uso de recursos)  escalabilidad (carga del sistema)
  • 18. Herramientas comunes de testing  Unit test: xUnit (jUnit, nUnit, cppUnit, MS Test)  BDD: RSpec, xUnit.Net, JBehave, Cucumber  Análisis funcional: Fitnesse, Selenium, Watir  Performance and stress testing
  • 19. Herramientas con foco en los atributos de calidad (líneas de código por método, code coverage, análisis estático, complejidad ciclomática, acoplamiento, dependencias)  Net: FXCop, StyleCop, NDepend y herramientas integradas en VS  Java: Findbugs, JDepend, Checkstyle, Lattix y herramientas integradas en Intellij IDEA.
  • 20.
  • 21.
  • 22.
  • 23. The Architecture Journal. MSDN Architecture Center. Issue 23. http://msdn.microsoft.com/en-us/architecture/ff476933 Onion Architecture http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ [1] Bass, Clements, and Kazman. Software Architecture in Practice 2nd ed, Addison- Wesley 2003. [2] Fowler, Martin, et al. “Principles Behind the Agile Manifesto.” Manifesto for Agile Software Development Web site, 2001.