8 razões que fazem o desenvolvimento baseado em modelos (“Model-driven Development”) ser algo excepcional
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.
Em 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 “8 razões pelas quais escrever código manualmente é extremamente perigoso”. Certamente, existem mais de 8 razões a serem enumeradas, e até me senti tentado a escrever algumas delas. O desenvolvimento em modelos implica 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 queira enumerar também algumas das vantagens trazidas pelo desenvolvimento baseado em modelo, conhecido pelo nome “Model-driven Development” (MDD).
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? Quantos conceitos podem ser reutilizados a partir do código existente (sempre que isso for possível)?
Quando o código é criado à mão, tudo o que se obtém é 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 se 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.
Entretanto, a indústria do software é a única que se recusa a criar um software por meio da aplicação de um software 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 software mediante a utilização de software.
É 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 à mão. E no pior dos casos, será preciso escrever algo à 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.
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.
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”.
É difícil encontrar artigos que façam referência a “8 razões pelas quais escrever código manualmente é extremamente perigoso”. Certamente, existem mais de 8 razões a serem enumeradas, e até me senti tentado a escrever algumas delas. O desenvolvimento em modelos implica 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 queira enumerar também algumas das vantagens trazidas pelo desenvolvimento baseado em modelo, conhecido pelo nome “Model-driven Development” (MDD).
- O MDD é portador de muita flexibilidade
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? Quantos conceitos podem ser reutilizados a partir do código existente (sempre que isso for possível)?
Quando o código é criado à mão, tudo o que se obtém é 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 se 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.
- Modelos modernos com grandes possibilidades de expansão
- Os programadores podem concentrar-se mais no “que” do que no “como”
- Existem plataformas MDD que suportam controle de versões e integração contínua
- Existem ferramentas muito ligadas ao MDD
Entretanto, a indústria do software é a única que se recusa a criar um software por meio da aplicação de um software 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 software mediante a utilização de software.
- A equipe que trata das necessidades deve concentrar-se apenas em aspectos comerciais
É 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 à mão. E no pior dos casos, será preciso escrever algo à 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.
- Deve-se vender a solução no paradigma MDD
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.
- Já não é preciso se preocupar com a evolução tecnológica
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”.