SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Diseño Agile

Martín Salías
Universal Thread Magazine
Editor in Chief
¿Quién es este tipo?

Martín Salías

Arquitecto de Software
 Latinoamérica, USA, Canadá,
  Australia y Escandinavia

   Microsoft Consulting Services
   MSDN Cono Sur
   Level Extreme .NET Magazine

                                    2
Agenda
   Definiciones
   La decadencia del software
   Enfoque Agile
   Principios de Diseño Orientado a Objetos
   Breve Introducción a Agile Modeling




                                               3
Definiciones

 Agilidad
 Análisis y Diseño

 Abstracciones
 Interfaces puras
 Colaboración
                      4
La decadencia del software
     Rigidez
     Fragilidad
     Inmovilidad
     Viscosidad
     Complejidad innecesaria
     Repetición innecesaria
     Opacidad

                                5
Enfoque Agile
 Qué asumimos:
  – La única constante en el software es el cambio en los
    requerimientos


 Qué hacemos:
  – Detectar el problema siguiendo las metodologías ágiles
  – Diagnosticar aplicando principios de diseño (OOD)
  – Resolver mejorando el diseño, usando frecuentemente
    patrones como referencia


                                                             6
Principios de Diseño OO


 Responsabilidad única
 Abierto-Cerrado
 Substitución de Liskov
 Inversión de dependencia
 Segregación de Interfaz

                             7
Responsabilidad única

  Una clase debe tener una
 única razón para ser cambiada.

Responsabilidad = Eje de cambios
     (SI el cambio sucede)

     Recibir el primer golpe


                                   8
Dos responsabilidades

              MyRectangle
Aplicación                        Aplicación
Geométrica    + Draw()             Gráfica
              + Area() : double




                   GUI
                                               9
Deslindando responsabilidades

 Aplicación           Aplicación
 Geométrica            Gráfica




GeoRectangle        GraphRectangle


+ Area() : double   + Draw()


                                     GUI

                                           10
Abierto-Cerrado

Las entidades de software (clases, módulos,
    funciones, etc) deben estar abiertas a
  extensión, pero cerradas a modificación.

           Acercarse a un ideal

 Los cambios deben generar código nuevo,
        no modificar el código viejo.

                                              11
Cerrando a modificaciones

                         El cliente está abierto
Cliente    Servidor
                         a modificaciones.




          <<Interfaz>>   Patrón Strategy:
Cliente
           ICliente      El cliente está abierto
                         y cerrado.


           Servidor



                                                   12
Cerrando a modificaciones
 Política
                     Patrón Template Method:
 + ReglaPolitica()   La clase base está cerrada
 - Servicio()        a modificaciones.




 Implementación      La implementación del
                     método lo abre a cuantas
                     extensiones se necesiten.
 - Servicio()




                                                  13
Substitución de Liskov

     Los subtipos deben ser substituibles
               por sus tipos base.

Si para cada objeto o1 de tipo S hay un objeto o2 de tipo T tal que para
todo programa P definido en términos de T, el comportamiento de P no
varía cuando o1 es sustitido por o2, entonces S es un subtipo de T.


            Es la base de poder del polimorfismo.

 Cuidarse de GetType() y otros datos de tipo en runtime.

                                                                           14
Implicancias del LSP
 La validez depende del contexto

 No podemos validar un modelo
  aisladamente

 Diseñar basándose en comportamientos

 Presunciones razonables (¿cómo acotarlas?)



                                               15
Diseño por contrato
 Preservar las invariantes

 Pre y pos-condiciones
  – La redeclaración de una rutina (en una derivación) debe
    solamente reemplazar la precondición original con una igual o
    más débil, y la poscondición original con una igual o más fuerte.


 Eiffel soporta nativamente DBC
 En .NET ó Java usamos Unit Tests

                                                                        16
Un ejemplo más complejo (1)

       Lista

                           Librería


                  Lista       Lista
               ilimitada   ilimitada


  Lista                      Lista
limitada                   limitada




                                       17
Un ejemplo más complejo (2)
                   Librería
     Lista

                     Lista
                  persistente




     Lista           Lista
  persistente     persistente




                                18
Un ejemplo más complejo (3)
             Contenedor                Librería
           Quitar(T)
           Existe(T)
                                         Lista
                                      persistente




   Lista                   Lista         Lista
                        Persistente   persistente
Agregar(T)
                       Agregar(T)



                                                    19
Inversión de dependencia
a) Los módulos de alto nivel no deben depender
   de los módulos de bajo nivel. Ambos deben
   depender de abstracciones.
b) Las abstracciones no deben depender de
   detalles. Los detalles deben depender de las
   abstracciones.

   Es el principio general detrás del concepto de
   Layers o Capas.

                                                    20
Capas acopladas
 Capa
Política



                 Capa
               Mecanismo



                              Capa
                             Utilidad




                                        21
Capas desacopladas




                                                Política
                <<interface>>




                                                Política
 Capa
                Servicio de
Política
                 políticas




                                                Mecanismo
                                                Mecanismo
                                <<interface>>
                  Capa
                                Servicio de
                Mecanismo
                                mecanismos




                                                Utilidad
                                                Utilidad
                                  Capa
                                 Utilidad


                                                            22
Dependencia de Interfaces
 Responder a interfaces desacopla
 La propiedad de la interfaz debe ser del cliente
 Principio de Hollywood:
  “No nos llame, lo llamaremos”
 Depender de abstracciones como ideal implica:
   – Las variables no deben apuntar a clases concretas
   – Las clases no deberían derivar de clases concretas
   – Los métodos no deberían sobrescribir una implementación de su
     clase base.
   – Excepciones: Factories (excepto si son reflectivas)
 Cambiar las interfaces sólo si el cliente (su dueño) lo
  necesita.

                                                                     23
Segregación de Interfaz
  Los clientes no deben ser forzados a depender de
                métodos que no usan.

 Apunta a evitar las interfaces “gordas”.

 No importa la cantidad de métodos, sino que todos sus
  clientes las utilicen.

 Inadvertidamente podemos acoplar clientes que usan
  ciertos métodos con otros clientes que no los usan.

                                                          24
Una interfaz engorda
                                   <<interface>>
                         Timer
                                   Cliente Timer

                                  + TimeOut()
Puerta

+ Trabar()
+ Destrabar()
+ Abierta()                            Puerta




                                     Puerta
                                   temporizada


                                                   25
Separación por delegación
           <<interface>>
Timer
          Cliente Timer

         + TimeOut()
                                             Puerta



         Adapter Puerta                      Puerta
          Temporizada                      temporizada
         + TimeOut()                  + TimeOutPuerta()


                           <<instancia>>




                                                          26
Separación por herencia múltiple
              <<interface>>
   Timer
             Cliente Timer

            + TimeOut()                  Puerta




                             Puerta
                           Temporizada
                          + TimeOut()




                                                  27
Agile Modeling
   Modelado liviano          Principios XP más
   Soporta XP, RUP, otros     – Modelar con un
                                 propósito
   Basado en valores XP
                               – Múltiples modelos
                               – Viajar liviano




                                                     28
Prácticas de AM
   Modelar con clientes
   Aplicar los artefactos correctos
   Considerar pruebas
   Varios Modelos en paralelo
   Modelos sencillos y públicos
   Iterar hacia otro artefacto
   Modelado incremental
   Modelar con otros
   Comprobar con código
   Herramientas simples (papel y lápiz)

                                           29
Espacio de trabajo
   Compatible con espacio XP
   Pizarrones y cámara
   Paredes para colgar modelos
   Mesa amplia de trabajo
   Libros de referencia a mano
   Libre de sillas en la Zona de Modelado



                                             30
Agile Modeling y XP
               Stand Up
              Meeting at
                 9:00



            Pair Up -- Quick
            Design Session




                 Test                     Q&A




     Code                      Refactor




                           Integrate or
                               Toss



                           Go Home at
                             17:00




                                                31
Requerimientos
   Casos de Uso esenciales y Casos de cambios
   Prototipos de Interfaz de Usuario
   Diagramas de flujo de la IU
   Modelos CRC
   Reglas de negocios
   Limitantes – Requerimientos técnicos
   Historias de Usuario
   Características

                                                 32
Ejemplo: Casos de Uso
            Obtain Student
                                Pay Fees            Input marks
                Grant

                                                                      Grade Admistrator
            Obtain Student   Inform Student of
                Loan              Grades


                                                 Produce Teaching
                               Produce Fee           Schedule
                                Schedule



                             Reimburse Course                             Instructor
                                                  Teach Seminar
                                  Fees




Student

                             Enroll in seminar    Apply for Grant


                                                                         Researcher

                               Drop seminar



             Drop out of
                              Attend seminar
               School



            Graduate From                        Notify Students of       Registrar
                              Finish seminar
               School                            Schedule Changes




                                                                                          33
Ejemplo: Prototipo IU




                        34
Ejemplo: Modelo CRC
Student                                              Enroll in Seminar   <<UI>>                        Professor
Name                              Enrollment
                                                     **See the prototype**                             Name
Address                             Record                                                                                    Seminar
                                                     Request identifying          Student              Address
Phone number
                                                       info for student                                Phone number
Email address
                                                     Enable seminar search        Seminar              Email address
Student number
                                                     Display seminar list         Seminar, Professor   Salary
Average mark received
                                                     Display seminar fees         Student              Provide information
Validate identifying info
                                                     Display professor info       Professor            Seminars instructing
Provide list of seminars taken

                                                                                                                                        .


                                                      Transcript   <<UI>>                              Enrollment Record
Student    <<Actor>>
                                                      **See the prototype**        Student             Mark(s) received
Provide information              Enroll in Seminar    Get student info             Seminar             Average to date
  about self                     Transcript           Get seminars student         Professor           Final grade
Request to enroll in                                    took                       Enrollment Record   Student
  seminar                                             Determine average                                Seminar
Request Transcript                                      mark
                                                      Output self




 Seminar
 Name
                                   Student
 Seminar number
                                   Professor
 Fees
 Waiting list
 Enrolled students
 Instructor
 Add student
 Drop student




                                                                                                                                            35
Análisis
 Elabora sobre los requerimientos
 Avanza en artefactos (simples)
  –   Diagramas UML
  –   Prototipos detallados
  –   Diagramas de flujo
  –   Diseño de interfaces externas
 En XP sigue sin ser una fase, sino parte del
  proceso de desarrollo

                                                 36
Ejemplo: Prototipo IU




                        37
Ejemplo: UML




               38
Diseño
   Determinación genérica de distribución
   Esquema de colaboración general
   Diseño general de modelos de datos
   Consideración de Patrones posibles

                ¿Hasta dónde llegar en papel?
            ¿Cuánto invertir antes del código?
                  Consideración de escenarios

                                                  39
Bibliografía


                            Matt Weisfeld      Bertrand Meyer




John Hunt   David West




                         Rebecca Wirfs-Brock   Scott Ambler


                                                                40
Preguntas




?
     msalias@gmail.com

     www.Salias.com.ar


     Universal Thread
      www.UniversalThread.com




                                41

Weitere ähnliche Inhalte

Ähnlich wie Diseño Agile

Business Logic 2012
Business Logic 2012Business Logic 2012
Business Logic 2012juanma_ari
 
20090723 Presentacion Pfc
20090723 Presentacion Pfc20090723 Presentacion Pfc
20090723 Presentacion Pfcazubi
 
20090723 Presentacion Pfc
20090723 Presentacion Pfc20090723 Presentacion Pfc
20090723 Presentacion Pfcazubi
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Diapositivas inge soft 2
Diapositivas inge soft 2Diapositivas inge soft 2
Diapositivas inge soft 2jorge orlando
 
Desymfony - Servicios
Desymfony  - ServiciosDesymfony  - Servicios
Desymfony - ServiciosRicard Clau
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programaciónMay Ibarra
 
Analisis y Diseño de sistemas de información
Analisis y Diseño de sistemas de informaciónAnalisis y Diseño de sistemas de información
Analisis y Diseño de sistemas de informaciónysik granja
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Rodrigo Zottola Pareja
 
Principios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosPrincipios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosJose E. Rodriguez Huerta
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Juan Carbajal
 
6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a ObjetosJose Emilio Labra Gayo
 

Ähnlich wie Diseño Agile (20)

Business Logic 2012
Business Logic 2012Business Logic 2012
Business Logic 2012
 
20090723 Presentacion Pfc
20090723 Presentacion Pfc20090723 Presentacion Pfc
20090723 Presentacion Pfc
 
20090723 Presentacion Pfc
20090723 Presentacion Pfc20090723 Presentacion Pfc
20090723 Presentacion Pfc
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
GraphQL Reactivo
GraphQL ReactivoGraphQL Reactivo
GraphQL Reactivo
 
Diapositivas inge soft 2
Diapositivas inge soft 2Diapositivas inge soft 2
Diapositivas inge soft 2
 
Desymfony - Servicios
Desymfony  - ServiciosDesymfony  - Servicios
Desymfony - Servicios
 
Mvc
MvcMvc
Mvc
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Analisis y Diseño de sistemas de información
Analisis y Diseño de sistemas de informaciónAnalisis y Diseño de sistemas de información
Analisis y Diseño de sistemas de información
 
Introdución a aplicaciones web en java
Introdución a aplicaciones web en java Introdución a aplicaciones web en java
Introdución a aplicaciones web en java
 
Principios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a ObjetosPrincipios SOLID de Diseño Orientado a Objetos
Principios SOLID de Diseño Orientado a Objetos
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008
 
6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos
 
Informatica
InformaticaInformatica
Informatica
 
Tap04 poo
Tap04 pooTap04 poo
Tap04 poo
 
Met2 07 01-introduccion_poo
Met2 07 01-introduccion_pooMet2 07 01-introduccion_poo
Met2 07 01-introduccion_poo
 
Lab Tr5 Multicapa
Lab Tr5 MulticapaLab Tr5 Multicapa
Lab Tr5 Multicapa
 
APLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NETAPLICACIONES N-CAPAS EN VISUAL NET
APLICACIONES N-CAPAS EN VISUAL NET
 
N-CAPAS EN VISUAL NET
N-CAPAS EN VISUAL NETN-CAPAS EN VISUAL NET
N-CAPAS EN VISUAL NET
 

Mehr von Martin Salias

Restricciones para la Creatividad
Restricciones para la CreatividadRestricciones para la Creatividad
Restricciones para la CreatividadMartin Salias
 
Arquitectura de Software en el Ciclo de Vida Ágil
Arquitectura de Software en el Ciclo de Vida ÁgilArquitectura de Software en el Ciclo de Vida Ágil
Arquitectura de Software en el Ciclo de Vida ÁgilMartin Salias
 
Organizaciones y Liderazgo Ágiles
Organizaciones y Liderazgo ÁgilesOrganizaciones y Liderazgo Ágiles
Organizaciones y Liderazgo ÁgilesMartin Salias
 
Implementation Patterns
Implementation PatternsImplementation Patterns
Implementation PatternsMartin Salias
 
Building Hybrid Applications
Building Hybrid ApplicationsBuilding Hybrid Applications
Building Hybrid ApplicationsMartin Salias
 
Antipatrones de Software
Antipatrones de SoftwareAntipatrones de Software
Antipatrones de SoftwareMartin Salias
 
Introduccion a la Arquitectura de Software
Introduccion a la Arquitectura de SoftwareIntroduccion a la Arquitectura de Software
Introduccion a la Arquitectura de SoftwareMartin Salias
 
High Maturity Agile Practice
High Maturity Agile PracticeHigh Maturity Agile Practice
High Maturity Agile PracticeMartin Salias
 
Explosión de Lenguajes
Explosión de LenguajesExplosión de Lenguajes
Explosión de LenguajesMartin Salias
 

Mehr von Martin Salias (15)

Restricciones para la Creatividad
Restricciones para la CreatividadRestricciones para la Creatividad
Restricciones para la Creatividad
 
LeSS Intro
LeSS IntroLeSS Intro
LeSS Intro
 
Arquitectura de Software en el Ciclo de Vida Ágil
Arquitectura de Software en el Ciclo de Vida ÁgilArquitectura de Software en el Ciclo de Vida Ágil
Arquitectura de Software en el Ciclo de Vida Ágil
 
Organizaciones y Liderazgo Ágiles
Organizaciones y Liderazgo ÁgilesOrganizaciones y Liderazgo Ágiles
Organizaciones y Liderazgo Ágiles
 
Implementation Patterns
Implementation PatternsImplementation Patterns
Implementation Patterns
 
Why JavaScript
Why JavaScriptWhy JavaScript
Why JavaScript
 
Building Hybrid Applications
Building Hybrid ApplicationsBuilding Hybrid Applications
Building Hybrid Applications
 
Jas 2012 keynote
Jas 2012 keynoteJas 2012 keynote
Jas 2012 keynote
 
Antipatrones de Software
Antipatrones de SoftwareAntipatrones de Software
Antipatrones de Software
 
Introduccion a la Arquitectura de Software
Introduccion a la Arquitectura de SoftwareIntroduccion a la Arquitectura de Software
Introduccion a la Arquitectura de Software
 
Refactoring
RefactoringRefactoring
Refactoring
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
TDD Workshop
TDD WorkshopTDD Workshop
TDD Workshop
 
High Maturity Agile Practice
High Maturity Agile PracticeHigh Maturity Agile Practice
High Maturity Agile Practice
 
Explosión de Lenguajes
Explosión de LenguajesExplosión de Lenguajes
Explosión de Lenguajes
 

Kürzlich hochgeladen

El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 

Kürzlich hochgeladen (20)

El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 

Diseño Agile

  • 1. Diseño Agile Martín Salías Universal Thread Magazine Editor in Chief
  • 2. ¿Quién es este tipo? Martín Salías Arquitecto de Software  Latinoamérica, USA, Canadá, Australia y Escandinavia  Microsoft Consulting Services  MSDN Cono Sur  Level Extreme .NET Magazine 2
  • 3. Agenda  Definiciones  La decadencia del software  Enfoque Agile  Principios de Diseño Orientado a Objetos  Breve Introducción a Agile Modeling 3
  • 4. Definiciones  Agilidad  Análisis y Diseño  Abstracciones  Interfaces puras  Colaboración 4
  • 5. La decadencia del software  Rigidez  Fragilidad  Inmovilidad  Viscosidad  Complejidad innecesaria  Repetición innecesaria  Opacidad 5
  • 6. Enfoque Agile  Qué asumimos: – La única constante en el software es el cambio en los requerimientos  Qué hacemos: – Detectar el problema siguiendo las metodologías ágiles – Diagnosticar aplicando principios de diseño (OOD) – Resolver mejorando el diseño, usando frecuentemente patrones como referencia 6
  • 7. Principios de Diseño OO  Responsabilidad única  Abierto-Cerrado  Substitución de Liskov  Inversión de dependencia  Segregación de Interfaz 7
  • 8. Responsabilidad única Una clase debe tener una única razón para ser cambiada. Responsabilidad = Eje de cambios (SI el cambio sucede) Recibir el primer golpe 8
  • 9. Dos responsabilidades MyRectangle Aplicación Aplicación Geométrica + Draw() Gráfica + Area() : double GUI 9
  • 10. Deslindando responsabilidades Aplicación Aplicación Geométrica Gráfica GeoRectangle GraphRectangle + Area() : double + Draw() GUI 10
  • 11. Abierto-Cerrado Las entidades de software (clases, módulos, funciones, etc) deben estar abiertas a extensión, pero cerradas a modificación. Acercarse a un ideal Los cambios deben generar código nuevo, no modificar el código viejo. 11
  • 12. Cerrando a modificaciones El cliente está abierto Cliente Servidor a modificaciones. <<Interfaz>> Patrón Strategy: Cliente ICliente El cliente está abierto y cerrado. Servidor 12
  • 13. Cerrando a modificaciones Política Patrón Template Method: + ReglaPolitica() La clase base está cerrada - Servicio() a modificaciones. Implementación La implementación del método lo abre a cuantas extensiones se necesiten. - Servicio() 13
  • 14. Substitución de Liskov Los subtipos deben ser substituibles por sus tipos base. Si para cada objeto o1 de tipo S hay un objeto o2 de tipo T tal que para todo programa P definido en términos de T, el comportamiento de P no varía cuando o1 es sustitido por o2, entonces S es un subtipo de T. Es la base de poder del polimorfismo. Cuidarse de GetType() y otros datos de tipo en runtime. 14
  • 15. Implicancias del LSP  La validez depende del contexto  No podemos validar un modelo aisladamente  Diseñar basándose en comportamientos  Presunciones razonables (¿cómo acotarlas?) 15
  • 16. Diseño por contrato  Preservar las invariantes  Pre y pos-condiciones – La redeclaración de una rutina (en una derivación) debe solamente reemplazar la precondición original con una igual o más débil, y la poscondición original con una igual o más fuerte.  Eiffel soporta nativamente DBC  En .NET ó Java usamos Unit Tests 16
  • 17. Un ejemplo más complejo (1) Lista Librería Lista Lista ilimitada ilimitada Lista Lista limitada limitada 17
  • 18. Un ejemplo más complejo (2) Librería Lista Lista persistente Lista Lista persistente persistente 18
  • 19. Un ejemplo más complejo (3) Contenedor Librería Quitar(T) Existe(T) Lista persistente Lista Lista Lista Persistente persistente Agregar(T) Agregar(T) 19
  • 20. Inversión de dependencia a) Los módulos de alto nivel no deben depender de los módulos de bajo nivel. Ambos deben depender de abstracciones. b) Las abstracciones no deben depender de detalles. Los detalles deben depender de las abstracciones. Es el principio general detrás del concepto de Layers o Capas. 20
  • 21. Capas acopladas Capa Política Capa Mecanismo Capa Utilidad 21
  • 22. Capas desacopladas Política <<interface>> Política Capa Servicio de Política políticas Mecanismo Mecanismo <<interface>> Capa Servicio de Mecanismo mecanismos Utilidad Utilidad Capa Utilidad 22
  • 23. Dependencia de Interfaces  Responder a interfaces desacopla  La propiedad de la interfaz debe ser del cliente  Principio de Hollywood: “No nos llame, lo llamaremos”  Depender de abstracciones como ideal implica: – Las variables no deben apuntar a clases concretas – Las clases no deberían derivar de clases concretas – Los métodos no deberían sobrescribir una implementación de su clase base. – Excepciones: Factories (excepto si son reflectivas)  Cambiar las interfaces sólo si el cliente (su dueño) lo necesita. 23
  • 24. Segregación de Interfaz Los clientes no deben ser forzados a depender de métodos que no usan.  Apunta a evitar las interfaces “gordas”.  No importa la cantidad de métodos, sino que todos sus clientes las utilicen.  Inadvertidamente podemos acoplar clientes que usan ciertos métodos con otros clientes que no los usan. 24
  • 25. Una interfaz engorda <<interface>> Timer Cliente Timer + TimeOut() Puerta + Trabar() + Destrabar() + Abierta() Puerta Puerta temporizada 25
  • 26. Separación por delegación <<interface>> Timer Cliente Timer + TimeOut() Puerta Adapter Puerta Puerta Temporizada temporizada + TimeOut() + TimeOutPuerta() <<instancia>> 26
  • 27. Separación por herencia múltiple <<interface>> Timer Cliente Timer + TimeOut() Puerta Puerta Temporizada + TimeOut() 27
  • 28. Agile Modeling  Modelado liviano  Principios XP más  Soporta XP, RUP, otros – Modelar con un propósito  Basado en valores XP – Múltiples modelos – Viajar liviano 28
  • 29. Prácticas de AM  Modelar con clientes  Aplicar los artefactos correctos  Considerar pruebas  Varios Modelos en paralelo  Modelos sencillos y públicos  Iterar hacia otro artefacto  Modelado incremental  Modelar con otros  Comprobar con código  Herramientas simples (papel y lápiz) 29
  • 30. Espacio de trabajo  Compatible con espacio XP  Pizarrones y cámara  Paredes para colgar modelos  Mesa amplia de trabajo  Libros de referencia a mano  Libre de sillas en la Zona de Modelado 30
  • 31. Agile Modeling y XP Stand Up Meeting at 9:00 Pair Up -- Quick Design Session Test Q&A Code Refactor Integrate or Toss Go Home at 17:00 31
  • 32. Requerimientos  Casos de Uso esenciales y Casos de cambios  Prototipos de Interfaz de Usuario  Diagramas de flujo de la IU  Modelos CRC  Reglas de negocios  Limitantes – Requerimientos técnicos  Historias de Usuario  Características 32
  • 33. Ejemplo: Casos de Uso Obtain Student Pay Fees Input marks Grant Grade Admistrator Obtain Student Inform Student of Loan Grades Produce Teaching Produce Fee Schedule Schedule Reimburse Course Instructor Teach Seminar Fees Student Enroll in seminar Apply for Grant Researcher Drop seminar Drop out of Attend seminar School Graduate From Notify Students of Registrar Finish seminar School Schedule Changes 33
  • 35. Ejemplo: Modelo CRC Student Enroll in Seminar <<UI>> Professor Name Enrollment **See the prototype** Name Address Record Seminar Request identifying Student Address Phone number info for student Phone number Email address Enable seminar search Seminar Email address Student number Display seminar list Seminar, Professor Salary Average mark received Display seminar fees Student Provide information Validate identifying info Display professor info Professor Seminars instructing Provide list of seminars taken . Transcript <<UI>> Enrollment Record Student <<Actor>> **See the prototype** Student Mark(s) received Provide information Enroll in Seminar Get student info Seminar Average to date about self Transcript Get seminars student Professor Final grade Request to enroll in took Enrollment Record Student seminar Determine average Seminar Request Transcript mark Output self Seminar Name Student Seminar number Professor Fees Waiting list Enrolled students Instructor Add student Drop student 35
  • 36. Análisis  Elabora sobre los requerimientos  Avanza en artefactos (simples) – Diagramas UML – Prototipos detallados – Diagramas de flujo – Diseño de interfaces externas  En XP sigue sin ser una fase, sino parte del proceso de desarrollo 36
  • 39. Diseño  Determinación genérica de distribución  Esquema de colaboración general  Diseño general de modelos de datos  Consideración de Patrones posibles  ¿Hasta dónde llegar en papel?  ¿Cuánto invertir antes del código?  Consideración de escenarios 39
  • 40. Bibliografía Matt Weisfeld Bertrand Meyer John Hunt David West Rebecca Wirfs-Brock Scott Ambler 40
  • 41. Preguntas ?  msalias@gmail.com  www.Salias.com.ar  Universal Thread www.UniversalThread.com 41

Hinweis der Redaktion

  1. Samples : Abstractions
  2. Rigidez : difícil de cambiar Fragilidad : fácil de romper Inmovilidad : difícil de reutilizar Viscosidad : difícil de modificar correctamente En el diseño mismo En el ambiente (compilación, control de fuentes, herramientas que no favorecen una buena manera de hacer las cosas; o la carencia de aquellas que la facilitan). Complejidad : sobre-diseño ó sobre-arquitectura; exceso de especulación Repetición : exceso de “ copy/paste development ” Opacidad : falta total de expresividad Sample : TheCopyProgram
  3. Cohesion (Tom DeMarco, Structured Analysis and System Specification) Sample : SingleResponsibility
  4. Bertrand Meyer (OO Software Construction, 1988) Applicable to several levels: Source code Asemblies (jar, dll) Exes
  5. Abstraction is the key Abstractions relates more to their clients than to their implementations. Patterns: Strategy
  6. Pattern: Template Method Sample : OpenClosed
  7. Barbara Liskov: Data Abstractions and Hierarchies (SIGPLAN, 1988) Samples : OpenClosed (The first version violates LSP because in DrawShapes neither Circle or Square can be substituted by Shape) Liskov
  8. DBC : Bertrand Meyer Las convenciones como alternativa - ¿por qué no funcionan? Cumplir con el LSP se logra usualmente mediante Refactoring Síntomas: Legado despreciado Subclases tirando excepciones que la clase base no tira
  9. Samples : InterfaceSegregation
  10. Dos alternativas de separación: Por delegación Por herencia múltiple
  11. Disponible en C++ y Eiffel, no en C#, J# y VB.Net, excepto con interfaces puras, lo que es una solución parcial. FINAL PARTE 1 – SIGUE AGILE MODELING