Este artigo inspira-se em conversas que tive ao longo de conferências com alguns potenciais clientes que, expressando sua preocupação com os perigos do desenvolvimento baseado em modelos, me fizeram pensar a respeito.
Na minha opinião já foram publicados vários artigos sobre os perigos do desenvolvimento baseado em modelos. Muitos deles sustentam argumentos válidos; outros, no entanto, têm um caráter mais histórico e uma natureza repetitiva, e não consideram os recentes avanços neste tema.
É difícil encontrar artigos que façam referência a “Oito razões pelas quais escrever código manualmente é extremamente perigoso”. Certamente, existem mais de oito razões a serem enumeradas, e até me senti tentado a escrever algumas delas. O desenvolvimento em modelos gera muitos perigos, muitos dos quais originados da não compreensão de seu real valor. Assim, admito que muitos dos riscos mencionados em diversos artigos são reais. Contudo, queria enumerar também algumas das vantagens trazidas pelo desenvolvimento baseado em modelo, conhecido pelo nome “Model-driven Development” (MDD).
1. O MDD é portador de muita flexibilidade
Não há dúvidas de que o MDD implica grande flexibilidade para empresas e negócios. A flexibilidade é entendida aqui como a capacidade de dar respostas às mudanças e a adaptabilidade, tanto no que diz respeito à parte técnica como na comercial. Quando, a partir de uma linguagem selecionada, se escreve uma solução a mão, tem-se um tipo de flexibilidade (que se relaciona com o poder dentro da linguagem escolhida…?) em curto prazo, mas a longo prazo, se está introduzindo uma grande dose de rigidez. Por isso, é fundamental levar em conta, antes de definir que passos seguir, o tempo pretendido de duração do investimento que é o objeto do desenvolvimento.
Quando a escolha é Silverlight, Flash, Visual Basic, Fox, tanto no passado como no presente, é preciso criar aplicativos HTML5 ou iOS. Nesse caso, temos que grau de flexibilidade? E quantos conceitos podem ser reutilizados a partir do código existente, sempre que isso for possível?
Quando o código é criado a mão, tudo o que se obtém é um código que poderá ser reutilizado ou – talvez e mais provavelmente – não. No desenvolvimento baseado em modelos, existe um modelo e a possibilidade de reutilizar conceitos. Quem cria um aplicativo Android a partir do modelo FoxPro Win é quem a longo prazo dispõe de maior flexibilidade.
Desse modo, a resposta para a pergunta “O desenvolvimento baseado em modelos é flexível?” é: depende. Para empresários e companhias que planejam suas atividades a longo prazo, a resposta é: sim, o desenvolvimento baseado em modelos permite uma excelente flexibilidade.
2. Modelos modernos com grandes possibilidades de expansão
Atualmente, existem modelos com grande capacidade para estender em distintos níveis e cujos designs são pensados para sua interação com o código escrito a mão em todos os níveis. É comum que grande parte desse código, a médio prazo (se for realmente muito comum), se incorpore ao modelo em algum momento. Não existem modelos perfeitos, embora muitos deles sejam úteis e tenham grande capacidade para estenderem-se. O interessante é encontrar uma maneira que conte com a vantagem de produtividade dos MDD, além da possibilidade de extensão, quando o modelo não for suficiente.
3. Os programadores podem concentrar-se mais no “que” do que no “como”
É formidável permitir que quem não tem nenhuma ideia sobre Objective C possa criar aplicativos de negócios para iPhone e iPad que cumpram os alinhamentos da Apple e se baseiem em um modelo que também pode ser usado para gerar aplicativos em Android, BlackBerry ou Windows 8, quando for preciso. E tudo isso com um mínimo esforço. Realmente fantástico.
4. Existem plataformas MDD que suportam controle de versões e integração contínua
Contrariamente ao que as típicas queixas estabelecem sobre o desenvolvimento baseado em modelos, na realidade ele pode suportar o controle de versões, a colaboração e outros aspectos. Um exemplo disso é o fato de que estamos trabalhando há muitos anos para obter a atual situação e é realmente interessante contar com a versão completa de um sistema de controle integrado com ferramentas de integração contínua.
5. Existem ferramentas muito ligadas ao MDD
Quase todas as indústrias recorrem ao software para aumentar sua produtividade e melhorar a eficácia de todos os seus níveis operativos. Trata-se de um enfoque óbvio.
Entretanto, a indústria do software é a única que se recusa a criar um programa por meio da aplicação de um sistema para cumprir os mesmos objetivos (aumentar a produtividade e melhorar sua eficácia e eficiência). Por sorte, existem muitas empresas que estão bem próximas de uma mudança de paradigma.
A única maneira de alcançar essa transformação é por meio da criação de mais ferramentas fascinantes que criem softwaremediante a utilização de software.
6. A equipe que trata das necessidades deve concentrar-se apenas em aspectos comerciais
A equipe responsável por considerar as necessidades pode concentrar seu trabalho no aspecto comercial, sem ter que se envolver com a parte técnica. É comum que a satisfação de certas necessidades seja impossível por causa das limitações do modelo. Porém, isso também acontece com as soluções de código escrito à mão.
É muito difícil conseguir que em um formulário exista a possibilidade de um scroll dentro de outro scroll em uma solução Android, mas a causa de tal impossibilidade não deriva do desenvolvimento baseado em modelos.
Meu argumento baseia-se no fato de que, como disse antes, uma das maiores vantagens dos modelos atuais é sua interoperabilidade com o código escrito a mão. E, no pior dos casos, será preciso escrever algo a mão. Mas isso não invalida a maior parte das vezes, em que as equipes devem concentrar-se sobre o aspecto comercial da equação em vez de preocupar-se em como programar uma solução em particular.
7. Deve-se vender a solução no paradigma MDD
O desenvolvimento baseado em modelos constitui uma maneira diferente de criar soluções e não é necessário dar explicações ao usuário final, já que ele se encarregará de obter os benefícios.
Pode-se apresentar a solução como algo extremamente flexível a longo prazo, em que se salva uma grande quantidade de informação do negócio (representada através dos modelos) que será utilizada no futuro.
8. Já não é preciso se preocupar com a evolução tecnológica
Quando se trabalha na gestão de uma empresa, querer aplicar a melhor tecnologia disponível a cada momento é lógico. Mas quando isso implica ter que considerar os detalhes de cada nova tecnologia, estará tirando o foco do aspecto central do negócio.
Recorrer ao desenvolvimento baseado em modelos permite concentrar-se apenas no modelo do negócio sem ter que se preocupar com as contínuas mudanças de tendências da tecnologia subjacente.
Esta foi minha aproximação inicial ao tema, mas a lista de razões pode ser aprimorada.
*Johan den Haan descreve aqui outras razões para justificar o uso de “Model-Driven Development”.
Autor: Gáston Milano – Arquiteto Chefe do GeneXus
2 Comentários
Com a sua lista eu me interessei sobre o assunto. Porém onde você diz: “Na minha opinião já foram publicados vários artigos sobre os perigos do desenvolvimento baseado em modelos. “, mencionando que é a sua opinião. Poderia postar alguns links ou fontes.
Mas foi incrível. Eu publico aqui no PTI também.
Abraço.