Esse artigo faz parte da revista Engenharia de Software 17 edição especial. Clique aqui para ler todos os artigos desta edição



Projeto

Aplicando MDD na Prática

Utilizando uma Ferramenta de Geração Automática de Código

 

 

Este artigo tem como objetivo apresentar uma introdução sobre a aplicação de Desenvolvimento Dirigido a Modelos (Model-Driven Development - MDD). Entretanto, forneceremos uma visão prática, voltada para a realidade diária dos profissionais da área.

Fornecendo uma visão geral sobre o tema, iniciaremos abordando o OMG. Object Management Group (OMG) é um consórcio aberto que produz padrões para interoperabilidade entre aplicações. Ele também é responsável pela UML, que é a ideia central por trás do MDD. O OMG também conduz o desenvolvimento da iniciativa MDA (Model-Driven Architecture). Pode-se afirmar que MDA é uma formalização da abordagem MDD.

Conforme definido pela OMG, MDA é uma maneira de se organizar e gerenciar arquiteturas corporativas suportadas por ferramentas automatizadas e serviços, visando definir modelos e facilitar as transformações entre seus diferentes tipos. Em outras palavras, isto significa que MDA visa trabalhar com modelos que são compatíveis entre si e ainda que as transformações entre esses modelos seguem padrões previamente definidos.

Neste artigo, apresentamos uma introdução sobre desenvolvimento de sistemas de maneira tradicional, conceitos e teoria sobre MDD e uma possível ferramenta para se aplicar MDD na prática, levando-se em conta a teoria de MDD. Na seqüência, apresentaremos também um mini estudo de caso envolvendo o desenvolvimento de um sistema embarcado de tempo-real e algumas conclusões que se podem inferir com todo esse processo.

Desenvolvendo da forma tradicional

Mesmo nos dias de hoje, diante de tantas tecnologias diferentes, aptas a “resolver” quase todos os problemas existentes, ainda encontramos muitos projetos sendo desenvolvidos de maneira tradicional. Ou seja, sem muita (ou quase nenhuma) documentação associada.

Muitas são as justificativas apresentadas para tal fato. Algumas delas fazem grande sentido, como por exemplo, a falta de recursos humanos, prazos apertados e orçamento reduzido para investir em ferramentas de software.

Além disso, quando o projeto é multidisciplinar, isto é, pertence ao domínio de conhecimento de engenharia de sistemas, muitos elementos e especificações textuais ainda são complicados para se modelar.

Quando nenhuma destas justificativas se aplica na prática, a falta de treinamento e capacitação dos profissionais também pode influenciar.

Por se tratar de algo relativamente “novo”, o MDD ainda não é prática comum.

Em suma, modelos tradicionais de desenvolvimento de sistemas, seja software ou hardware, ainda são largamente utilizados. Talvez isso possa ser explicado pelo fato de tais modelos já serem bem conhecidos e dominados pelos profissionais.

Entretanto, “inovar é preciso”. Aos poucos MDD vem ganhando espaço e confiança de que se aplicado apropriadamente, pode fornecer resultados positivos em médio prazo. Não havia quem declarasse que a programação orientada-a-objetos (POO) não iria se estabelecer?

Conceitos e teoria sobre MDD

Pode-se dizer que o desenvolvimento dirigido a modelo (Model-Driven Development - MDD) representa uma especi?cação de diferentes estilos de utilização de modelos para o desenvolvimento de sistemas. Em outras palavras, pode-se dizer que MDD representa uma classe (conceito de orientação-a-objetos), com algumas definições principais que podem ser instanciadas, herdadas ou mesmo sobrecarregadas pelos objetos que instanciam essa classe.

Enquanto o MDD representa um número de estilos para utilizar modelos para desenvolver sistemas (conjunto maior), a arquitetura dirigida a modelo (Model-Driven Architecture - MDA) consiste num estilo particular adotado pelo OMG, ou seja, uma instância de MDD.

A MDA representa a especi?cação de diferentes estilos especí?cos estabelecidos pela OMG. Dentre eles, destaca-se o padrão da UML 2.0, juntamente com uma ?loso?a emergente sobre como melhor aplicar modelagem ao processo de desenvolvimento de software.

A MDA de?ne modelos em diferentes níveis de abstração, bem como as transformações que propiciam o mapeamento e o gerenciamento dos relacionamentos entre esses modelos e suas tecnologias de implementação.

Na seqüência, são apresentados os principais termos e de?nições utilizadas no MDD/MDA, conforme ilustrado na Figura 1:

·         Modelo de Computação Independente (Computation-Independent Model - CIM) - Endereça o ambiente e os requisitos do sistema de software, sem considerar a sua estrutura ou processamento;

·         Modelo de Plataforma Independente (Platform-Independent Model - PIM) - Endereça a operação do sistema de software sem detalhes relacionados a uma plataforma particular;

·         ...

Quer ler esse conteúdo completo? Tenha acesso completo