Ontem à tarde decorreu em Lisboa o Architect Forum da Microsoft, com a presença de Beat Schwegler. O Beat já tinha estado em Portugal o ano passado, numa workshop sobre Web Services, e desta vez veio falar sobre Software Factories. O tema, não sendo novo para mim (ver este post e este post), não deixa de ser interessante, e o evento valeu a pena.

A sessão que o Beat fez em Lisboa foi uma versão resumida da que fez em Inglaterra com o Ingo Rammer, e cujos slides estão disponíveis no site de Arquitectura da MS UK.
(ps: se se interessam por Arquitectura, recomendo a newsletter cujo link aparece no final desta página).

A abordagem seguida na apresentação do Beat dividiu a aposta em “Software Factories” em 4 dimensões (de uma forma até mais clara do que a que está no livro com este nome):
1) Architecture Frameworks
2) Software Product Line
3) Guidance in Context
4) Model Driven Development

O primeiro investimento é auto-explicativo.

O segundo, refere-se a montar estruturas nas organizações que permitam a exploração de “Economias de Âmbito” (em oposição a Economias de Escala), em que se factorizam as semelhanças entre vários projectos realizados em componentes (assets) reutilizáveis e parametrizáveis. O livro de Software Factories entra muito mais em detalhe do que o Beat deu, mas penso que no fundo o que está em causa é apostar de forma sistemática na reutilização, uma vez que esta foi uma das grandes promessas não realizadas da Orientação por Objectos.

O terceiro, refere-se à possibilidade de dar ajuda ao programador em contexto, directamente no IDE. Aqui a aposta da Microsoft é uma coisa chamada GAT, Guidance Automation Toolkit, disponível ainda como Technology Preview. Pode pensar-se nisto (de forma muito simplificada) como um misto das templates do Visual Studio com a possibilidade de associar acções “custom” a artefactos do IDE. Recomendo o Hands-On Lab a quem tiver interesse, uma vez que é muito elucidativo.
O problema do GAT, na versão que eu testei depois do TechEd 2005, é que era complexo definir novos packages. Depois do GAT ter a sua versão definitiva, o que deverá acontecer nos próximos meses, estão previstos vários conjuntos desta guidance, por exemplo, para WCF (o ex-Indigo), o “Service BAT”, em que o Beat também está envolvido.

O quarto ponto é outro tema que me interessa bastante, e que está materializado nas DSL Tools e na aposta na modelação usando linguagens para domínios específicos, em níveis de abstracção elevados, com o objectivo de gerar artefactos dos níveis inferiores (como C#). Para mais informações, podem consultar este post, em que está o link para a apresentação que fiz sobre este tema no TechDays, ou então podem ir simplesmente ao site “oficial”, aqui.

Em relação a este tema, é sempre feito um paralelo com o UML e as suas insuficiências, sendo o UML e as DSL’s colocadas em campos opostos. Não me parece que o Beat tenha fundamentado q.b. o que disse sobre este tema, que em essência parece-me consistir no seguinte: o UML não tem um grau de objectividade que permita a geração de artefactos “vivos”, em que se produz um modelo, geram artefactos, se altera o modelo e se volta a gerar, etc. Geralmente o UML é usado para especificação e comunicação, por vezes para efectuar a primeira geração, mas a partir daí fica apenas como documentação, e eternamente desactualizado. Com as DSLs pretende-se que o modelo esteja sempre vivo, e seja efectivamente a “source”.
Acredito que esta ideia possa gerar alguma incredulidade e resistência, mas se pensarmos no caso do BizTalk, em que o código C# gerado é removido depois de compilado (ou seja, é impossível alterar à mão), ou até no Windows Workflow, que não deixa de ser uma DSL, vemos que isto é algo a que estar atento.

Foi um evento interessante, e parece-me vamos continuar a ter novidades nesta área nos próximos meses.

A terminar, aproveito para me meter com o João Hugo Miranda relativamente ao post dele sobre o evento, e especificamente sobre a eventual resitência de pessoas no “Agile Camp” relativamente a este tipo de desenvolvimentos.
Na minha opinião, e julgo que qualquer pessoa que leia até ao 4º capítulo do livro “Software Factories” vai ficar convencido do mesmo, algo tem de mudar muito rapidamente no desenvolvimento de software. Somos artesãos, cada um faz as coisas à sua maneira e ninguém faz igual, não reutilizamos como podíamos, temos ~70% do custo dos projectos em manutenção, demasiados projectos a falhar, etc. Temos muito a melhorar, como indústria, e as metodologias ágeis estão lado a lado com este tipo de esforços, independentemente de haver ou não um “Arquitecto Génio” a definir coisas à partida. Afinal, se não houvesse “Arquitectos Génios” na Microsoft ou Sun, não tínhamos a .Net Framework (e o Add Web Reference, que é uma espécie de Recipe do GAT) ou as Java Foundation Classes.

Já agora, aproveito para vos referir para um interessante podcast do Channel9 chamado “Developer 2.0”. Este podcast é com o Ron Jacobs e o Harry Pierson (ambos da Microsoft), e levanta questões bastante interessantes relativamente ao presente do desenvolvimento de software. Deixo uma questão como motivação: já pensaram que o que acontece nas fábricas de texteis, por exemplo, que são deslocalizadas para locais onde os custos de produção são mais baixos, é exactamente o mesmo que está a acontecer com o outsourcing do desenvolvimento para a Índia, apesar de serem indústrias totalmente diferentes e as pessoas terem competências completamente distintas? (serão mesmo?)

jota

LEAVE A REPLY

Please enter your comment!
Please enter your name here