Hace muchas, muchas lunas, hice mi maestría en Ingeniería de Software Orientada a Objetos. Cubrí todo: iniciación de proyectos, requisitos, análisis, diseño, arquitectura, desarrollo, etc. Mi libro favorito de TI de todos los tiempos fue Desarrollando software orientado a objetos, un enfoque basado en la experiencia (IBM-1996). Un libro creado por un grupo de verdaderos expertos de su tiempo. Describe un enfoque centrado en el producto del trabajo para los métodos de análisis, diseño y desarrollo orientados a objetos.
Diseñé y desarrollé y estaba feliz y en la cima de mi juego, pero comencé a sentirme un poco anticuado: los movimientos ágiles se convirtieron en la moda del día y cambiaron la marca de algunos enfoques iterativos e incrementales bien conocidos con nuevas palabras de moda. Desarrolladores repentinamente inexpertos comenzaron a fruncir el ceño cuando dije "requisitos" o "arquitectura" como si estas cosas fueran reemplazadas por la magia.
El diseño y el desarrollo perdieron su diversión y estaba a punto de dejar atrás a toda la industria de TI.
Entonces descubrí Scala. Oh, como lluvia suave en un camino polvoriento. Todo se volvió claro, el aire volvió a ser dulce y la poca luz de mi disco duro parpadeó profundamente en la noche, felizmente acompañándome en mi mundo de descubrimiento.
Me gusta el diseño del sistema. Soy un arquitecto de corazón, más que un programador. Me encanta analizar, diseñar, pensar, discutir, mejorar. Simplemente me encantan los diseños simples, limpios y nítidos.
¿Cómo diseñamos soluciones puras de Scala?
Seguramente, los diagramas de secuencia convencionales, los diagramas de interacción, los diagramas de objetos, etc., podrían ser reemplazados o mejorados por la bondad de combinar sistemas orientados a objetos imperativos y funcionales. ¡Seguramente hay una oportunidad para algo totalmente diferente!
No estoy buscando complejidad hinchada, estoy buscando simplicidad flexible. Al igual que Scala, en realidad es simple y fácil (aunque diferente), pero se puede extender para satisfacer sus necesidades como un par de pantalones de yoga. Debe haber un sistema de diseño para este lenguaje encantador que comenzará de manera simple y se puede extender para satisfacer sus requisitos y su dominio. ¡Seguramente UML no puede serlo!
Entonces, ¿cómo diseñamos sistemas Scala puros? Imagine por un momento que tiene el lujo de diseñar un sistema completo desde cero y sabe que solo usará Scala: ¿cómo se verán sus modelos? ¿Qué tipos de diagramas tendrías para describir la estructura y el comportamiento? ¿Cómo modelaría las Opciones, coincidencias, mixins, Objetos únicos, etc. sin verse atraído por la complejidad de extender las técnicas de modelado existentes en lugar de un conjunto de herramientas nuevo, ligero e innovador?
¿Existe tal diseño / proceso / solución , o es hora de inventar una?