SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
SOLID design principles
En el inicio...
El software
cambia
Rigido
cambios en cascada
Fragil
elementos no
relacionados se
rompen al hacer
un cambio
Inamovible
poca reutilización
copy-paste
Pringoso
es dificil entender
el diseño inicial
abres, cierras y
bye
SOLID no todo son principios
SOLID = gestión dependencias
las dependencias te matan
diseño te salva
Que son dependencias?
framework
var cutomer = new Customer()
web services
BD
Hipótesis
http://martinfowler.com/bliki/DesignStaminaHypothesis.html
€
Si el proyecto sigue vivo,
te costará más dinero
SOLID
Michael Feathers for the
"First five principles"
Robert C Martin SOLID
http://social.technet.microsoft.com/wiki/contents/articles/18033.software-design-principles.aspx
Single responsability
Open/closed
Liskov substitution
Interface segregation
Dependency Inversion
Single Responsability
"A class should have only one reason to change. "
http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
Open - Closed
"Open for extension, closed for modification"
Liskov substitution
"Derived classes must be able to substitute for their base classes"
Child class must not remove base class behavior
Interface segregation
"many client-specific interfaces are better than one general-purpose interface."
http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
Dependency Inversion
"High level modules should not depend upon low level modules,
rather both should depend upon abstractions"
http://social.technet.microsoft.com/wiki/contents/articles/18061.single-responsibility-principle.aspx
OCP = Objetivo
SRP + DIP = estrategias de código
LSP= formula confusa
ISP = No parece tener aplicación
Al final todo va de gestión de dependencias
El diseño va de dependencias
Si haces referencia a algo ----> dependes de
ello
Si tu dependencia cambia ----> tu debes cambiar
para evitar dependencias
loosely coupled - DIP
highly cohesive - SRP
easily composable - dependencias
context independent - dependencias
http://www.growing-object-oriented-software.com/
código independencia
Single responsability
Dependency Inversion
Open/closed
Liskov substitution - > subclases
Interface segregation -> static languages
http://www.growing-object-oriented-software.com/
código!
Inversion de dependencias
UI
Business Logic
Data access
Inversion de dependencias
UI
Business Logic
Data access
Resistencia
code smell
abraza el problema, y arreglalo
test depende de ---> tu código
TDD se hace complicado si no hay diseño
autoexamen
existe repetición?
tiene una responsabilidad?
cambia todo al mismo ritmo?
depende de cosas que cambian poco?
Fin

Más contenido relacionado

Similar a Principios SOLID para el diseño orientado a objetos

Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Alfredo Chavez
 
logica de negocio ddd arquitectura de software
logica de negocio ddd arquitectura de softwarelogica de negocio ddd arquitectura de software
logica de negocio ddd arquitectura de software
carlos_eduardo_84
 
Anexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en redAnexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en red
Edgar Mtz
 

Similar a Principios SOLID para el diseño orientado a objetos (20)

Presentación open closed principle
Presentación open closed principlePresentación open closed principle
Presentación open closed principle
 
Principios de diseño oo
Principios de diseño ooPrincipios de diseño oo
Principios de diseño oo
 
Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001Arquitectura software.taxonomias.modularidad.001
Arquitectura software.taxonomias.modularidad.001
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Experiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdfExperiencia de Deuda Tecnica en Google.en.es.pdf
Experiencia de Deuda Tecnica en Google.en.es.pdf
 
Conociendo Y Aplicando Floss Ene 09
Conociendo Y Aplicando Floss Ene 09Conociendo Y Aplicando Floss Ene 09
Conociendo Y Aplicando Floss Ene 09
 
Artículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSEArtículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSE
 
Emprendiendo Negocios con Software Libre
Emprendiendo Negocios con Software LibreEmprendiendo Negocios con Software Libre
Emprendiendo Negocios con Software Libre
 
logica de negocio ddd arquitectura de software
logica de negocio ddd arquitectura de softwarelogica de negocio ddd arquitectura de software
logica de negocio ddd arquitectura de software
 
Anexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en redAnexo 11 actividad 3 sistemas operativos en red
Anexo 11 actividad 3 sistemas operativos en red
 
Expo web 2. 0
Expo web 2. 0Expo web 2. 0
Expo web 2. 0
 
Mvc
MvcMvc
Mvc
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008
 
Metodologia SL
Metodologia SLMetodologia SL
Metodologia SL
 
Metodologia De Desarrollo Sl Rompiendo Paradigmas Final
Metodologia De Desarrollo Sl   Rompiendo Paradigmas   FinalMetodologia De Desarrollo Sl   Rompiendo Paradigmas   Final
Metodologia De Desarrollo Sl Rompiendo Paradigmas Final
 
Principios de Diseño de Componentes Web
Principios de Diseño de Componentes WebPrincipios de Diseño de Componentes Web
Principios de Diseño de Componentes Web
 
IBM Lotus Domino/Notes 9 - Español
IBM Lotus Domino/Notes 9 - EspañolIBM Lotus Domino/Notes 9 - Español
IBM Lotus Domino/Notes 9 - Español
 
Developing for Android (The movie)
Developing for Android (The movie)Developing for Android (The movie)
Developing for Android (The movie)
 
3.creacion de componentes visuales
3.creacion de componentes visuales3.creacion de componentes visuales
3.creacion de componentes visuales
 
BIML para automatizar patrones de ETL
BIML para automatizar patrones de ETLBIML para automatizar patrones de ETL
BIML para automatizar patrones de ETL
 

Más de netmind

Más de netmind (20)

Kanban Method Lean Kanban University
Kanban Method Lean Kanban UniversityKanban Method Lean Kanban University
Kanban Method Lean Kanban University
 
DSDM Frameworks for Agile Project Management Offices
DSDM Frameworks for Agile Project Management OfficesDSDM Frameworks for Agile Project Management Offices
DSDM Frameworks for Agile Project Management Offices
 
Team Kanban Practitioner
Team Kanban PractitionerTeam Kanban Practitioner
Team Kanban Practitioner
 
KMP I: Kanban System Design
KMP I: Kanban System DesignKMP I: Kanban System Design
KMP I: Kanban System Design
 
DASA Meetup Madrid 2018
DASA Meetup Madrid 2018DASA Meetup Madrid 2018
DASA Meetup Madrid 2018
 
Escape from Earth en PMI ® EMEA 2018
Escape from Earth en PMI ® EMEA 2018Escape from Earth en PMI ® EMEA 2018
Escape from Earth en PMI ® EMEA 2018
 
Las 5 claves de la gamificación en el aprendizaje de COBIT®
Las 5 claves de la gamificación en el aprendizaje de COBIT®Las 5 claves de la gamificación en el aprendizaje de COBIT®
Las 5 claves de la gamificación en el aprendizaje de COBIT®
 
DevOps - Certificación oficial DASA
DevOps - Certificación oficial DASADevOps - Certificación oficial DASA
DevOps - Certificación oficial DASA
 
Comunidades de Práctica
Comunidades de PrácticaComunidades de Práctica
Comunidades de Práctica
 
PMBOK® 6ª edición NOVEDADES
PMBOK® 6ª edición NOVEDADESPMBOK® 6ª edición NOVEDADES
PMBOK® 6ª edición NOVEDADES
 
CERTIFICACIONES PMI®
CERTIFICACIONES PMI®CERTIFICACIONES PMI®
CERTIFICACIONES PMI®
 
Seminario Tendencias en Gestión de Proyectos
Seminario Tendencias en Gestión de ProyectosSeminario Tendencias en Gestión de Proyectos
Seminario Tendencias en Gestión de Proyectos
 
MSP Managing Successful Programmes
MSP Managing Successful ProgrammesMSP Managing Successful Programmes
MSP Managing Successful Programmes
 
MoP - Management of Portfolios
MoP - Management of PortfoliosMoP - Management of Portfolios
MoP - Management of Portfolios
 
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5Foundations of the Scaled Agile Framework® (SAFe® ) 4.5
Foundations of the Scaled Agile Framework® (SAFe® ) 4.5
 
Management 3.0
Management 3.0Management 3.0
Management 3.0
 
Arquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAFArquitectura de Empresa TOGAF
Arquitectura de Empresa TOGAF
 
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room
CAS 2017 Miquel Rodríguez - Taller Training from the BACK of the Room
 
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...
CAS 2017 Aleix Palau - Peer Learning Universities. Aprendiendo de los desafío...
 
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Owner
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product OwnerCAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Owner
CAS 2017 Alfred Maeso - Business Analysis: Superpoderes para el Product Owner
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (10)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Principios SOLID para el diseño orientado a objetos