3. ¿De quéformaspuedecrecer un sistema de software? En la cantidad de… Usuariosque lo usan Datosquemaneja. Transaccionesqueprocesa. Funcionalidadqueimplementa. Contextos en los queesusado. Plataformasquesoporta.
7. Se origina (unacélula) Se forma Madura Cambia constantemente. Alcanza la vejez, y muere. ...¿Puedecrearse software así? ¿Québeneficiostraería? Ciclo de vida
9. Especialización y restricciones En lasetapasembrionarias, muchascriaturas son muyparecidas. Conformepasa el tiempo, se daneventosquedan forma y restringen el conjunto de eventosquepuedenocurrirdespues, asícomolasformasque se puedenalcanzar... En software… ¿porquétomardecisionesanticipadas?
10. El desarrollodepende del contexto En software… ¿Cuáles el contextoadecuado? El entorno socio-económico y tecnológico en el cual se inserta… ¿Moraleja? ¡Release It!
12. ¿Quéconstituye un lenguaje? Un vocabulario if, for, public, myVar Unasintaxis válido: public void do() {} Inválido: void public do() {} Unasemántica
13. Dos extremos Lenguajes con muchascaracterísticas(Muycompletos). Un ampliovocabulario. Unasintaxismuyelaborada. Lenguajespequeñosperoextensibles. ¿Cuálesmejor?
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. “
19. Poresoreformulósuteorí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. 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.
24. Modularización Sin unabuenamodularización, los sistemas son rígidos(difíciles de cambiar) ¿Quéesunabuenamodularización? ModularizaciónEfectiva http://slidesha.re/9siQFY Modular Architecture http://modularity.kirkk.com/ Diseñaexplícitamentetusmódulos, y cuidaquesuspropiedades se mantengan
25. Ortogonalidad Las responsabilidades de los componentesdebentenerfronterasbiendefinidas. Solo de estamanera se logra la flexibilidad y reversibilidadrequerida.
26. DecisionesReversibles Cuando se tomaunadecisióntecnológica, esnecesarioevaluarsiestapodríacambiar en un futuro. De serasídebemosintroducir los mecanismosnecesariosparalograrrevertir la decisión. Abstracciones. Componentesdébilmenteacoplados. Intermediarios(Adapter, Proxy, etc)
29. Actores No hay un solo hilo de control. “Objetos” que se comunican con mensajesasíncronos. No hay estadocompartido. Cuando un mensajeesrecibido, un actor puede Cambiarsuestadointerno. Crearmásactores. Enviarmásmensajes ¿Quéofrece? Escalabilidad. Es un modelo natural de cómputodistribuido. Tolerancia a fallas. Cuando un actor no funciona, se creaunonuevo en sulugar.