Charla realizada para las "Lightning talks" de Agile Canarias. Una propuesta para aplicar los principios S.O.L.I.D. de programación orientada a objetos a un nivel de abstracción superior: a sistemas de información distribuidos.
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Principios S.O.L.I.D. en Sistemas de Información Distribuidos
1. Principios S.O.L.I.D. para sistemas
de información
Usando S.O.L.I.D. en un nivel superior
de abstracción
Agile Canarias Lightning Talks - 31-01-2012
Tanausú Cerdeña Hernández (@chozero)
4. ¿Aplicables a otro nivel de abstracción?
Hagamos un ejercicio:
:s/objeto/sistema/
Sustituyamos “objeto” por “sistema” en la
definición de los principios y veamos si podemos
aplicarlos a sistemas de información
distribuidos.
5. ¿Sistemas de información distribuidos?
Para esta charla, sistemas distribuidos que se
comunican mediante HTTP. Por ejemplo:
• Instagram
• Comunio
• LiveTeamApp
• Geosophic*
• …
*(cuña publicitaria)
6. 1. Single Responsibility Principle
“Un sistema debería tener una única
responsabilidad”
Auth Highscores Logger
FB Reverse
Persistence
connector geocoder
7. 2. Open/closed principle
“Los sistemas de software deberían ser abiertos
para extender pero cerrados para modificar”
Meh. Vive le
Open Source!
8. 2. Open/closed principle
“Los sistemas de software deberían ser abiertos
para extender pero cerrados para modificar”
¿Y si lo aplicamos a las
APIs que comunican
sistemas?
9. 3. Liskov Substitution Principle
“Los subsistemas de un sistema deberían ser
sustituibles por instancias de sus subtipos sin
alterar el correcto funcionamiento del sistema”
Amazon S3
API MySQL
#Mega
10. 4. Interface Segregation Principle
“Es mejor tener muchas interfaces de cliente
específicas que una interfaz de propósito
general”
Tabla Periódica de las APIs de Google
11. 5. Dependency Inversion Principle
“Un sistema debería depender de
abstracciones, no de concreciones”
Amazon S3
image-store.instagram.com MySQL
#Mega
12. Conclusiones
• Deberíamos tener un conjunto de principios
para el diseño de sistemas.
• S.O.L.I.D. es un buen comienzo
• Muy necesario en sistemas de vida larga
(admón. Pública, grandes
compañías, banca,…)
• Nuestros nietos programadores lo
agradecerán.