Muitas, muitas, luas atrás, fiz meu mestrado em Engenharia de Software Orientada a Objetos. Eu cobri tudo: iniciação do projeto, requisitos, análise, design, arquitetura, desenvolvimento, etc. etc. Meu livro de TI favorito de todos os tempos foi o Desenvolvimento de Software Orientado a Objetos, uma Abordagem Baseada na Experiência (IBM-1996). Um livro criado por um grupo de verdadeiros especialistas de seu tempo. Ele descreve uma abordagem centrada no produto de trabalho para análise orientada a objetos, métodos de design e desenvolvimento.
Eu projetei, desenvolvi e fiquei feliz e no topo do meu jogo, mas comecei a me sentir um pouco antiquado: movimentos ágeis se tornaram moda do dia e renomearam algumas abordagens iterativas e incrementais bem conhecidas com novas palavras da moda. De repente, desenvolvedores inexperientes começaram a franzir a testa quando eu disse "requisitos" ou "arquitetura" como se essas coisas fossem substituídas pela mágica.
O design e o desenvolvimento perderam a graça e eu estava prestes a deixar todo o setor de TI para trás.
Então eu descobri Scala. Oh, como chuva suave em uma estrada poeirenta. Tudo ficou claro, o ar ficou doce novamente e a pouca luz do meu disco rígido tremeluzia profundamente na noite, alegremente me fazendo companhia no meu mundo de descobertas.
Eu gosto do design do sistema. Sou um arquiteto no coração, mais que um programador. Adoro analisar, projetar, pensar, discutir, melhorar - adoro designs simples, limpos e nítidos.
Como projetamos soluções Scala puras?
Certamente, diagramas de seqüência convencionais, diagramas de interação, diagramas de objetos, etc., poderiam ser substituídos ou melhorados para a qualidade de mesclar sistemas imperativos e funcionais orientados a objetos. Certamente há uma abertura para algo totalmente diferente!
Não estou procurando complexidade inchada - estou procurando simplicidade flexível. Muito parecido com Scala é realmente simples e fácil (embora diferente), mas pode ser estendido para atender às suas necessidades, como um par de calças de ioga. Deve haver um sistema de design para esse adorável idioma que comece simples e possa ser estendido para atender às suas necessidades e domínio. Certamente UML não pode ser isso!
Então, como projetamos sistemas Scala puros? Imagine por um momento, você tem o luxo de projetar um sistema completo do zero e sabe que só estará usando o Scala - como serão os seus modelos? Que tipos de diagramas você teria para descrever a estrutura e o comportamento? Como você modelaria Opções, correspondências, mixins, Objetos singleton, etc., sem ser atraído pela complexidade de estender as técnicas de modelagem existentes, em vez de um conjunto de ferramentas inovador, leve e inovador.
Existe tal projeto / processo / solução ou é hora de inventar uma?