S.O.L.I.D. AltNetHispano Carlos Peix http://carlospeix.com/

Slides:



Advertisements
Presentaciones similares
Análisis y Diseño de Sistemas Enfoque Estructurado
Advertisements

No se nos escapará ningún detalle
IBD Plan 90 y 2003 Clase 11.
“Diseño de páginas Web”
Scrum Juan Palacio Bañeres.
Cuestiones y problemas
Fundamentos de Diseño de Software INFT.1
Principio #4 – Comportamiento Ético del personal Esta presentación es hecha posible por The Smart Campaign Principio #4-
FACHADA COMPOSITOR MEMENTO
Adapter, Bridge, Decorator.
Pruebas de Diseño Diplomado en Calidad en el Software NOTAS
TECNICATURA UNIVERSITARIA EN INFORMATICA
Julio METODOLOGÍA DE CREACIÓN DE CONTENIDOS PARA E-LEARNING 1.Introducción 2.El material 3.Puntos destacados.
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Resolución de Problemas
Teoría y Metodología del Entrenamiento Modulo I
PROTOCOLOS Y ESTANDARES DE RED
Gestión de proyectos Es la primera etapa de Ingeniería del Software.
Retroactividad de la leyes
INTEGRACIÓN.
Arquitectura CLARO-TECNOTREE
“8 Principios de la Gestión Administrativa”
50 principios 1. Los clientes asumen el mando.
Prof. César Luza Montero
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
Nelson Medinilla Martínez Universidad Politécnica de Madrid
Aplicación del paradigma orientado a objetos
Preguntas tipo test (Tema I)
Ingeniería del Software
ENSEÑANZA Y APLICACIÓN DE MÉTODOS ÁGILES PARA EL DESARROLLO DE UNA APLICACIÓN COMPUTACIONAL Jorge Cornejo Elgueta ENSEÑANZA Y APLICACIÓN DE MÉTODOS ÁGILES.
Patrones de diseño OO Gang of Four (GoF)
¿Quién la hizo? Tienes que adivinar quién hizo cada obra de arte, basado en los apuntes que tomaste y las obras que vimos de los artistas.
METODOLOGIA DE LA PROGRAMACION
Principios y Patrones de Diseño
Abstracción de los datos y Orientación a Objeto Clase 13.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Metodología Investigación Científica
1 Projecto de Auditorías de Confirmación Programa Ambiental México-EE.UU. Frontera 2012 Formación de Auditores 13 de marzo 2007.
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
Características y elementos fundamentales J.M. Morales-del-Castillo
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
Mediator (Mediador) Trabajo realizado por: Guillermo Palacios Pelayo
Ingeniería de Software Orientado a Objetos
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
DISEÑO DE SOFTWARE 1ª. Parte
5.3 APROXIMACIONES AL DISEÑO
Ingeniería en Sistemas de Información
Almudena Moya Muñoz Julio 2006 Una vuelta de tuerca a los principios de diseño ágiles.
Desarrollo de Software Orientado a Objetos (deficiencias)
Programación Orientada a Objeto
Reuso y Reingeniería M.C. Juan Carlos Olivares Rojas.
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Diseño de Sistemas.
Indirección y Variaciones Protegidas
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Simulación del patrón … (3)
Patrones de diseño equipo n.1
Programación orientada a objetos
Actividad 12. Estimación en los proyectos de software. M.C. Juan Carlos Olivares Rojas Syllabus May, 2009.
Proliferación Celular LUIS FELIPE JIMENEZ CAICEDO ANDRES FELIPE VASQUEZ JHON ANDERSON YANGUAS JUAN DAVID PINTO PAOLA ANGELICA GIRÓN ISIS VICTORIA PIZO.
Patrón de Diseño Brigde ( Handle/Body) Calderón Márquez Jorge Alberto Posgrado de Ciencia e Ingeniería en Computación. Tecnología Orientada a Objetos.
SOFTWARE COMPRADO VENTAJASDESVENTAJAS El tiempo de implantación dependerá del tiempo que necesiten los profesionales para la formación, pero no tendremos.
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Conveniencia entre comprar o desarrollar un software a medida.
Conveniencias entre comprar o desarrollar un software a medida.
Desarrollar o Comprar un Software? SOFTWARE DESARROLLAR UN SOFTWARE VENTAJASDESVENTAJAS Es más fácil e intuitivo de usar y no contiene instalaciones.
Herencias Conceptos básicos i
Es una metodología ágil diseñada para el desarrollo de software, basada en la calidad y el monitoreo constante del proyecto. Consiste esencialmente en.
REQUERIMIENTOS DE LOS PRINCIPIOS DE MODELADO INTEGRANTES: ALEYDA SALAZAR BELEN TUQUINGA DANIELA VILLAVICENCIO ERICK ARANA JORGE GOMEZ.
Transcripción de la presentación:

S.O.L.I.D. AltNetHispano Carlos Peix http://carlospeix.com/

Problemas Rigidez Fragilidad Inmovilidad Viscosidad Complejidad innecesaria Repetición innecesaria Opacidad 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

Enfoque Agil/OOD Qué asumimos: Qué hacemos: 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

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

Patrones y Principios SOLID Los patrones de diseño  (GoF) muestran, en alguna medida, uno o mas principios SOLID, aunque… no hay relación directa entre los patrones de diseño (GoF) y los principios SOLID. Estos últimos son atributos que indican si un diseño es mejor o peor. Estos principios definen lineamientos, no son reglas estrictas. Hay que comprender su motivación y aplicarlos con criterio.

Responsabilidad única Una clase debe tener una única razón para ser cambiada. No es cierto que un elevado numero de clases pequeñas (o métodos pequeños) sea mas difícil de entender. Siempre todo ese código estará ahí. Cohesion (Tom DeMarco, Structured Analysis and System Specification) Sample: SingleResponsibility

Responsabilidad única Cohesion (Tom DeMarco, Structured Analysis and System Specification) Sample: SingleResponsibility http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx

Los cambios deben generar código nuevo, no modificar el código viejo. 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. Bertrand Meyer (OO Software Construction, 1988) Applicable to several levels: Source code Asemblies (jar, dll) Exes

Abierto-Cerrado Cohesion (Tom DeMarco, Structured Analysis and System Specification) Sample: SingleResponsibility http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx

Substitución de Liskov Los subtipos deben ser substituibles por sus tipos base. Es la base de poder del polimorfismo. Cuidarse de typeof() y otros datos de tipo en runtime. 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

Substitución de Liskov 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 http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx

Inversión de dependencia Los módulos de alto nivel no deben depender de los módulos de bajo nivel. Ambos deben depender de abstracciones. 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.

Inversión de dependencia http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx

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. Cambiar las interfaces sólo si el cliente (su dueño) lo necesita.

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. Samples: InterfaceSegregation

Segregación de Interfaz Samples: InterfaceSegregation http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx

? Preguntas Carlos Peix http://carlospeix.com/