Arquitecturas que Crecen y
Arquitecturas que No
Agustín Ramos Fonseca
¿Qué es Arquitectura?
¿De qué formas puede crecer un
sistema de software?
En la cantidad de…
 Usuarios que lo usan
 Datos que maneja.
 Transa...
Metáforas
Un Organismo Vivo
 El proceso biológico que lleva a un
organismo a desarrollar su forma
característica.
Morfogénesis
 Se origina (una célula)
 Se forma
 Madura
 Cambia constantemente.
 Alcanza la vejez, y muere.
 ...¿Puede crearse so...
Especialización y
restricciones
 En las etapas embrionarias, muchas
criaturas son muy parecidas.
 Conforme pasa el tiempo, se dan
eventos que dan forma ...
El desarrollo depende del
contexto
 En software…
¿Cuál es el contexto adecuado?
 El entorno socio-económico y
tecnológic...
Diseño de Lenguajes
¿Qué constituye un lenguaje?
 Un vocabulario
if, for, public, myVar
 Una sintaxis
válido: public void do() {}
Inválido: ...
Dos extremos
 Lenguajes con muchas características
(Muy completos).
◦ Un amplio vocabulario.
◦ Una sintaxis muy elaborada...
Growing a Language
 Guy Steele, OOPSLA 1998
“A language design can no longer be a
thing. It must be a pattern—a pattern f...
Christopher Alexander
y las 15 propiedades
No comprendimos a
Alexander
 Él hablaba de esto.
No comprendimos a
Alexander
 Pero interpretamos esto
Esto no puede crecer
Por eso reformuló su teoría
 “The Nature of Order” (4 tomos)
"living structure, wherever it appears, is
composed of funda...
Las 15 propiedades
 1. Levels of scale.
 2. Strong centers.
 3. Boundaries.
 4. Alternating repetition.
 5. Positive ...
Ejemplo: Niveles de Escala
En software
 Una arquitectura micro-kernel
Principios
Modularización
 Sin una buena modularización, los sistemas
son rígidos (difíciles de cambiar).
 ¿Qué es una buena modula...
Ortogonalidad
 Las responsabilidades de los
componentes deben tener fronteras
bien definidas.
 Solo de esta manera se lo...
Decisiones Reversibles
 Cuando se toma una decisión
tecnológica, es necesario evaluar si
esta podría cambiar en un futuro...
Patrones Arquitectónicos
CQRS
Command Query Responsibility
Segregation
Actores
 No hay un solo hilo de control.
 “Objetos” que se comunican con mensajes
asíncronos.
 No hay estado compartido...
Actores
 ¿Con qué experimentar?
◦ Erlang
◦ Scala
◦ Akka (librería Java)
◦ Gpars (Groovy)
¡Gracias!
Agustín Ramos Fonseca
@MachinesAreUs
zentimental.software@gmail.com
Próxima SlideShare
Cargando en…5
×

Arquitecturas que crecen y arquitecturas que no

2.594 visualizaciones

Publicado el

Presentación dada en el marco de SHLCON 2010, Puebla, México.
http://loseventos.de/springhispano/shlcon2010

Publicado en: Tecnología, Educación
0 comentarios
3 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
2.594
En SlideShare
0
De insertados
0
Número de insertados
551
Acciones
Compartido
0
Descargas
20
Comentarios
0
Recomendaciones
3
Insertados 0
No insertados

No hay notas en la diapositiva.

Arquitecturas que crecen y arquitecturas que no

  1. 1. Arquitecturas que Crecen y Arquitecturas que No Agustín Ramos Fonseca
  2. 2. ¿Qué es Arquitectura?
  3. 3. ¿De qué formas puede crecer un sistema de software? En la cantidad de…  Usuarios que lo usan  Datos que maneja.  Transacciones que procesa.  Funcionalidad que implementa.  Contextos en los que es usado.  Plataformas que soporta.
  4. 4. Metáforas
  5. 5. Un Organismo Vivo
  6. 6.  El proceso biológico que lleva a un organismo a desarrollar su forma característica. Morfogénesis
  7. 7.  Se origina (una célula)  Se forma  Madura  Cambia constantemente.  Alcanza la vejez, y muere.  ...¿Puede crearse software así?  ¿Qué beneficios traería? Ciclo de vida
  8. 8. Especialización y restricciones
  9. 9.  En las etapas embrionarias, muchas criaturas son muy parecidas.  Conforme pasa el tiempo, se dan eventos que dan forma y restringen el conjunto de eventos que pueden ocurrir despues, así como las formas que se pueden alcanzar...  En software… ¿por qué tomar decisiones anticipadas? Especialización y restricciones
  10. 10. El desarrollo depende del contexto  En software… ¿Cuál es el contexto adecuado?  El entorno socio-económico y tecnológico en el cual se inserta… ¿Moraleja?  ¡Release It!
  11. 11. Diseño de Lenguajes
  12. 12. ¿Qué constituye un lenguaje?  Un vocabulario if, for, public, myVar  Una sintaxis válido: public void do() {} Inválido: void public do() {}  Una semántica
  13. 13. Dos extremos  Lenguajes con muchas características (Muy completos). ◦ Un amplio vocabulario. ◦ Una sintaxis muy elaborada.  Lenguajes pequeños pero extensibles.  ¿Cuál es mejor?
  14. 14. Growing a Language  Guy Steele, OOPSLA 1998 “A language design can no longer be a thing. It must be a pattern—a pattern for growth—a pattern for growing the pattern for defining the patterns that programmers can use for their real work and their main goal.” “So I think the sole way to win is to plan for growth with help from users... Parts of the language must be designed to help the task of growth. “
  15. 15. Christopher Alexander y las 15 propiedades
  16. 16. No comprendimos a Alexander  Él hablaba de esto.
  17. 17. No comprendimos a Alexander  Pero interpretamos esto
  18. 18. Esto no puede crecer
  19. 19. Por eso reformuló su teoría  “The Nature of Order” (4 tomos) "living structure, wherever it appears, is composed of fundamental structural features -- roughly fifteen of them, at least."
  20. 20. Las 15 propiedades  1. Levels of scale.  2. Strong centers.  3. Boundaries.  4. Alternating repetition.  5. Positive space.  6. Good shape.  7. Local symmetries.  8. Deep interlock and ambiguity. .  9. Contrast.  10. Gradients.  11. Roughness.  12. Echoes.  13. The Void.  14. Simplicity and Inner Calm.  15. Not-separateness.
  21. 21. Ejemplo: Niveles de Escala
  22. 22. En software  Una arquitectura micro-kernel
  23. 23. Principios
  24. 24. Modularización  Sin una buena modularización, los sistemas son rígidos (difíciles de cambiar).  ¿Qué es una buena modularización? ◦ Modularización Efectiva http://slidesha.re/9siQFY ◦ Modular Architecture http://modularity.kirkk.com/  Diseña explícitamente tus módulos, y cuida que las propiedades esperadas de ellos se mantengan.
  25. 25. Ortogonalidad  Las responsabilidades de los componentes deben tener fronteras bien definidas.  Solo de esta manera se logra la flexibilidad y reversibilidad requerida.
  26. 26. Decisiones Reversibles  Cuando se toma una decisión tecnológica, es necesario evaluar si esta podría cambiar en un futuro. De ser así debemos introducir los mecanismos necesarios para lograr revertir la decisión. ◦ Abstracciones. ◦ Componentes débilmente acoplados. ◦ Intermediarios (Adapter, Proxy, etc)
  27. 27. Patrones Arquitectónicos
  28. 28. CQRS Command Query Responsibility Segregation
  29. 29. Actores  No hay un solo hilo de control.  “Objetos” que se comunican con mensajes asíncronos.  No hay estado compartido.  Cuando un mensaje es recibido, un actor puede ◦ Cambiar su estado interno. ◦ Crear más actores. ◦ Enviar más mensajes  ¿Qué ofrece? ◦ Escalabilidad. Es un modelo natural de cómputo distribuido. ◦ Tolerancia a fallas. Cuando un actor no funciona, se crea uno nuevo en su lugar.
  30. 30. Actores  ¿Con qué experimentar? ◦ Erlang ◦ Scala ◦ Akka (librería Java) ◦ Gpars (Groovy)
  31. 31. ¡Gracias! Agustín Ramos Fonseca @MachinesAreUs zentimental.software@gmail.com

×