CBSoft 2010

Vamos a um registro mais formal da CBSoft 2010. O post anterior foi informal, já neste, tentarei ser direto e elencar meu ponto de vista daquilo que vi no evento. Para os que ainda não sabem do que estou falando, sugiro acessar o site do evento e se atualizar sobre o assunto. Neste evento, fiquei mais interessado pelo Workshop Brasileiro de Desenvolvimento de Software Dirigido por Modelos (WB-DSDM). Por qual motivo? Simplesmente, porque nunca acreditei muito nisso. Sempre tive uma visão de que software é artesanal e desenvolver dirigido a modelo só serve para tarefas que são repetitivas e cansativas, como o CRUD. Desenvolver todo um sistema, incluíndo todas as regras de negócio e suas complexidades somente através de modelos não é algo que eu acho factível. Mas, eu queria ir lá e ver o que estava acontecendo de novo. Observar as novidades, os estudos atuais e etc.

A primeira palestra que vi foi de Jon Whittle, da Universidade de Lancaster, na Inglaterra. O título de sua palestra foi: How To Succeed (or Fail) with Model-Driven Engineering: A Qualitative Study of What Works (and What Does Not). Logo de início, o palestrante me causou surpresa com a afirmação: o maior benefício do MDD (Model Driven Development) não é a geração de código. Pronto, o cara conseguiu segurar minha atenção. Como assim? MDD para mim sempre foi geração de código a partir de modelos e isto não é a parte mais importante? Segundo o estudo de Jon Whittle, há outros benefícios na adoção de MDD por uma empresa que vão além da “simples” geração de código. Dos benefícios listado, o que mais me chamou a atenção foi referente à questão arquitetural. Conforme entendi, uma vez que uma equipe decide usar MDD, obriga-se a pensar de forma mais generalizada, pensando de forma a atender ao maior número possível de sistemas que possuem características comuns. Concordei.

Outra constatação do estudo realizado por Jon e que não me causou surpresa alguma: MDD funciona muito bem em empresas cujo o objetivo não é o desenvolvimento de sistemas, como fabricantes de impressoras (HP e Epson, por exemplo). Claro! De fato, observe que estas empresas não precisam customizar seus aplicativos para cada tipo diferente de cliente. O foco deles é apenas um: vender impressoras. Seus aplicativos serão sempre muito parecidos e aí o MDD trabalha perfeitamente, eliminando substancialmente a quantidade de código a produzir. O mesmo não se pode dizer de empresas que possuem diversos tipos de clientes, cada um com suas particularidades. Aplicar MDD de forma mais ampla em empresas deste tipo é mais difícil. Vejo que operações de CRUD podem ser facilitadas, mas, fica meu questionamento: se este estudo todo é só para facilitar CRUD, pra mim é perder tempo.

Depois desta palestra, passamos a uma série de artigos, alguns que não me interessaram, outros bem legais. Um artigo me chamou a atenção pelo título: Um Relato de Experiência no Desenvolvimento Ágil de Sistemas com MDA. Contudo, após ler o artigo e ver a apresentação percebi que houve um foco grande na ferramenta e o termo “agilidade” foi usado mais como chamativo. A ferramenta aparenta ser interessante, mas, como eu já desconfiava, estamos falando de uma ferramenta bem preparada para operações CRUD. Em seguida, outro artigo me chamou a atenção: A Business Process Metamodel for Enterprise Information Systems Automatic Generation. O artigo sugere a criação de um novo metamodelo para a geração de código através de processos de negócio. Trocando em miúdos, sugere uma nova linguagem, baseada na BPMN2.0. Um ouvinte fez a pergunta que eu gostaria de ter feito: porque criar uma nova linguagem e não estender a BPMN, já que esta permite extensões? O palestrante respondeu que não havia problema, uma vez que ele usava o mesmo dialeto, acrescentando novas notações. Não me convenceu, até mesmo porque a nova notação sugerida é um subconjunto da BPMN.

Em seguida, tivemos uma apresentação que é uma continuação do trabalho anterior. Enquanto um sugere a especificação de um novo metamodelo baseado em BPMN, este sugere um novo metamodelo para a criação de interfaces com usuários. Depois deste, passamos por uma série de artigos que pouco chamaram minha atenção, mais por não estarem diretamente ligados ao desenvolvimento de software do meu dia a dia. Entre eles, alguns descrevendo técnicas de datamining, correlação entre linguagens de programação e MDD, modelagem de dados geográficos e coisas deste tipo. Enfim, um trabalho me chamou a atenção de novo: Mapping Code Generation Templates to a Reference Implementation – Towards Automatic Code Migration. Daquilo que consegui absorver desta apresentação, o palestrante aponta o uso de Templates como uma técnica bastante usada em MDD. De fato, vemos isto bastante em Java, com engines de template como Jet, Velocity e tantas outras. Contudo, o trabalho aponta um problema que precisa ser resolvido: se você tem uma implementação de referência usada para gerar o seu template, como manter sincronizados seu template e esta implementação, no caso de modificações na segunda? Aí que entra este trabalho, sugerindo uma técnica que permite a sincronização automática. O trabalho limitou-se a sugerir a técnica, não havendo implementação da ideia em código.

Agora, vamos ao minicurso 09. Foi interessante, pois propôs uma DSL (Domain Specific Language) para a criação de sistemas web. O nome da linguagem é WebDSL. A ideia é ter uma linguagem mais fácil de ser aprendida e que tem um foco específico. A partir desta linguagem, pode-se ter um compilador, que traduz esta DSL para uma linguagem específica, como Java ou Ruby. A ideia me parece interessante, mas acredito que o grande ponto negativo ainda é a questão do Debug. “Debuggar” é essencial para encontrar erros e não ter esta opção em uma linguagem complica bastante. Contudo, ainda vejo futuro pra ideia e que talvez possa ser aplicada de alguma forma ao Demoiselle.

Conclusão? Gostei do evento. Gostei dos assuntos abordados em sua maioria. Não gostei das apresentação, conforme já citei no post anterior. Foram apresentações fracas, sem motivação, chegavam a dar sono e ficar acordado estava difícil. Infelizmente, me parece que os acadêmicos não ligam muito em chamar a atenção de sua platéia. Parece que estão ali por obrigação e acabam transformando uma apresentação que deveria ser agradável e interessante em algo desestimulante.