sexta-feira, 12 de dezembro de 2008

Vá em paz, OptimalJ

No último post que fiz neste exato blog, eu botei uma animação relacionada com a ferramenta OptimalJ. Não sei se alguém chegou a vê-la, pois um tempo depois percebi que a animação nao estava carregando, mas acabei deixando de lado, pensando que podia ser algum motivo temporário. Porém, este fato se tornou uma constante. Toda vez que eu entrava, a animação não se encontrava mais lá. Encuquei-me.

Quando fui procurar algumas referências da ferramenta para trabalhar no manuscrito, deparei-me com um fato que não considerei agradável. Na Wikipedia, na página sobre OptimalJ, encontrei a seguinte declaração:
"Due to internal restructurings, Compuware decided in 2008 to discontinue OptimalJ"
Se alguém está fraco no inglês, isso quer dizer que o OptimalJ foi descontinuado, ou seja, bateu as botas.

Voltando ao momento do encontro, eu parei, pensei, li de novo, parei de novo. O fato estava ali. Ainda tinha a referência para tal declaração. Aqui é possível ler a citada referência.

Dessa triste forma, quero deixar aqui o "Adeus" ao OptimalJ, que, na minha opinião, tinha sido uma das ferramentas mais interessantes encontradas durante a pesquisa. Afinal, ela permitia transformar o modelo PIM em PSM, coisa que o AndroMDA e o Acceleo não faz. Felizmente as outras duas ferramentas continuam sendo atualizadas e, provavelmente, um dia poderão realizar mais transformações, inclusive entre o PIM e o PSM.

Inté

Agile MDA

Como foi comentado na apresentação final, existe uma abordagem que mescla os princípios das metodologias ágeis com os da MDA. Essa abordagem chama-se Agile MDA, e nessa postagem vou falar um pouco melhor sobre ela.

Algumas pessoas acreditam que não faz sentido colocar "modelagem" e "ágil" na mesma frase [1]. Isso se deve, entre outras razões, na existência de documentação que não possa ser executada. Como os próprios princípios ágeis afirmam, a medida de progresso de um projeto é o código funcionando. Para superar esse buraco, é necessário a criação de modelos executáveis.

Modelos executáveis, como o próprio nome diz, são modelos capazes de serem executados através de ferramentas especializadas. Esses modelos são desenvolvidos em um perfil (um subconjunto) da UML, o Executable UML. Dessa forma, modelos executáveis se comportam como código, mas em um nível de abstração maior e de forma independente de plataforma.

Entretanto, essa não é a única abordagem possível. [2] apresenta outra possível abordagem, que é exemplificada pela figura abaixo:



Nessa abordagem, o uso de técnicas e ferramentas simples facilitariam a inclusão do cliente na modelagem (um dos princípios dos métodos ágeis). Modeladores experientes transformariam os artefatos gerados nessa etapa em PIMs (Platform Independent Model). Os modelos seriam refinados e posteriormente transformados, com a ajuda de ferramentas automatizadas, em PSMs (Platform Specific Model). Esses modelos seriam novamente refinados e transformados finalmente em um software funcional.

Essa abordagem é bem semelhante à abordagem tradicional da MDA, mas difere em alguns pontos cruciais:
  • Deve-se aplicar os princípios e práticas da modelagem ágil (gerar apenas os modelos necessários, com o grau de complexidade e completude suficientes para o momento);
  • Participação ativa dos stakeholders (uso de técnicas que permitam a inclusão do cliente na modelagem);
  • Uso de uma abordagem iterativa e incremental, em passos pequenos.
Cabe ressaltar que essa abordagens não se excluem. É possível mesclá-las para aproveitar o que parecer mais interessante, gerando assim uma abordagem que possa ser mais interessante de ser aplicada.

Para maiores informações sobre princípios, práticas e metodologias ágeis, consulte o blog Ligeirinhos. Maiores informações sobre a Agile MDA podem ser encontradas nas referências.

Referências:
[1] MELLOR, Stephen J. Agile MDA, 2004. Disponível em: http://www.omg.org/mda/mda_files/Agile_MDA.pdf. Último acesso em 12/12/08.

[2] AMBLER, Scott W. A roadmap for Agile MDA. Disponível em: http://www.agilemodeling.com/essays/agileMDA.htm. Último acesso em 12/12/08.

terça-feira, 2 de dezembro de 2008

Meta-Objetivo

Quando se trata de desenvolver software para um cliente, é frequente o uso da palavra "insatisfação". É uma palavra que tem como fundamentos os vários erros cometidos no processo de desenvolvimento como um todo (desde a especificação, até a implantação). Isso pode ser percebido com a analogia feita na imagem a seguir.

O fato de criar um foco em cima do código gera muitos desses problemas. A preocupação em fazer a aplicação funcionar, e o tempo e esforço gasto para o mesmo, ofuscam o que deveria ser a principal meta da construção do software: Atender a necessidade do cliente.
A MDA, como já fora explicado anteriormente, pretende mudar o foco do código para modelos. Com essa abordagem, atinge-se determinadas benefícios:
  • Melhora na produtividade - Uma vez que se trata de uma programação de alto nível, há uma maior facilidade com a programação. Graças à automatização da geração de código, torna-se um processo mais rápido e, por consequência, o feedback para o cliente também.
  • Portabilidade - Como há uma criação de modelos, sendo um deles o PIM (Plataform Independent Model), torna-se possível a criação do software para plataformas diferentes de maneira eficiente.
  • Manutenção - As modificações não são feitas em código, mas em modelos.
Não adianta apenas melhorar práticas e técnicas para o desenvolvimento a nível de código se no final o cliente não recebe o que precisa. A atenção deve ser voltada a um nível mais alto, e mais próximo ao cliente.


Imagens e texto baseado na postagem Introduction[2] - The MDA Approach, do blog http://modeldrivenarchitecture.wordpress.com/


Deixo em aberto uma sugestão para as próximas postagens: Viabilidade da MDA. "Is It possible???". Existem aqueles que acreditam, outros que duvidam. Seria interessante o desenvolvimento de um debate sobre essa questão aqui no blog.

sexta-feira, 28 de novembro de 2008

OptimalJ

Na apresentação final foram mostradas duas ferramentas que podem ser utilizadas para auxiliar o desenvolvimento utilizando MDA. Uma delas já foi um post desse blog em tempos não muito distantes, a AndroMDA. Porém, a outra ferramenta só foi mostrada na apresentação e não foi sequer citada por aqui (desleixo de minha própria pessoa, confesso). Se nunca é tarde para começar, então vou deixar registrado aqui algumas palavras a respeito da OptimalJ.

A OptimalJ é um ambiente de desenvolvimento comercial que permite o rápido design, desenvolvimento e modificação de aplicações J2EE e se encontra atualmente na versão 4.3. Ela é construída em cima do Eclipse e utiliza a UML para construção de modelos. Além de possibilitar a modelagem do PIM e gerar código a partir dele, como a AndroMDA faz, a OptimalJ permite a transformação do PIM em PSM, registrando a devida transformação, como sugerido pela MDA. Essa ferramenta também insere uma arquitetura de camadas quado realiza a transformação do PIM em PSM. Vale ressaltar que o PIM dentro da OptimalJ é chamado de "Modelo de domínio", enquanto que o PSM é chamado de "Modelo de aplicação" e o código fonte é chamado de "Modelo de código".

Abaixo posto uma animação que dá uma visão geral dos modelos e transformações realizadas pela OptimalJ. É em inglês, mas vale a pena dar uma conferida:



Essa apresentação foi retirada do site da Compuware e pode ser encontrada a partir do link:
http://frontline.compuware.com/javacentral/tools/
Além da animação, outras informações podem ser encontradas a respeito da OptimalJ nesse link.

Outra referência interessante é uma dissertação de mestrado que pode ser baixada pelo link:
http://www.teses.usp.br/teses/disponiveis/3/3141/tde-08012008-103612/
A dissertação tem o título "Transformações e mapeamentos da MDA e sua implementação em três ferramentas". Epa! Três ferramentas?? É isso mesmo. Essa dissertação ainda fala de uma terceira ferramenta denominada ArcStyler. Quem tiver interesse, pode baixar a dissertação e ler mais a respeito dessa ferramenta e a respeito da própria MDA. Fica aqui a dica.

Inté!

quinta-feira, 27 de novembro de 2008

quarta-feira, 12 de novembro de 2008

ADM - MDA para softwares legados

Pesquisando sobre o mistério das aplicações de MDA, descobri que essa abordagem pode ser usada no rejuvenescimento de software.

MDA se baseia na idéia de forward engineering, isto é, a geração de código a partir de especificações abstratas das regras do negócio. O objetivo da ADM (MDA ao contrário, se vocês ainda não perceberam) é fornecer padrões e modelos para engenharia reversa de softwares legados. Ah, ADM significa Architecture-Driven Modernization.

Vocês (principalmente o pessoal de rejuvenescimento de software) podem encontrar mais informações no site da ADM.

Fontes: Wikipedia
adm.omg.org