terça-feira, 7 de abril de 2009

Code To Diagram

Gerando Diagramas de Sequência a Partir de Uma Execução PHP

Conforme prometido, após muito trabalho, estou publicando de fato o projeto CodeToDiagram de geração de diagramas. Para prover esse projeto estou utilizando o www.assembla.com um site para administração de projetos muito legal. A ideia desse projeto é possibilitar a geração de diagramas de sequência a partir de execuções de código PHP. A descrição no site do projeto está em inglês. Mas aqui eu mando uma introdução a respeito do mesmo em português.

O diagrama de sequência talvez seja a mais intuitiva maneira de se compreender uma execução.

O seu uso na fase de pré-projeto é bastante comum para descrever o funcionamento esperado de um software. A partir dele podem-se desenvolver diagramas de teste, como também conferir se todas as funcionalidades descritas foram detalhadas em demais fases do planejamento tal qual o caso de uso, por exemplo.

Ao se descrever funcionalidades mais próximas das linhas de código, tal qual a interação de objetos através de métodos, se consegue planejar como serão as classes e as interfaces do sistema. Mas, a medida que o desenvolvimento avança, seja por falhas na análise ou por uma mudança nos requisitos, os diagramas vão se distanciando da realidade, perdendo o caráter descritivo e ganhando uma característica de legado.

Além disto, se solicitar a um analista que exista um diagrama de sequência de todos os testes do projeto seria um gasto enorme de tempo tanto na criação quanto na manutenção desses diagramas, tendo em vista que a mudança do nome de um método ou de um atributo num método alteraria todos os diagramas que envolvem este elemento.

A solução aqui proposta e implementada é a geração de diagramas de seqüência a partir de execuções de código PHP. Uma execução ou o trecho da execução é monitorado por classes de instrumentação de código que geram a partir das informações recebidas um diagrama daquela execução. Esse diagrama pode ser visto como HTML, salvo como HTML e em breve salvo como XML e futuramente exportado como imagem JPEG.

Todo este processo deve ser simples o suficiente para ser utilizado bastando uma simples chamada, mas também flexível para atender a todos os casos especiais. A idéia é gerar o diagrama de uma execução interferindo o mínimo possível no código-fonte o qual ela irá executar.

Em poucas palavras:

Este código:

<?php

require_once( '../../public/codetodiagram.php' );
CodeToDiagram::getInstance()->start();

require_once(
'Wolf.class.php' );
require_once(
'Pig.class.php' );
require_once(
'House.class.php' );
require_once(
'History.class.php' );

new
History();
?>

Resulta nesse diagrama


















Um componente menor que foi gerado no processo da geração desta solução mas que pode ser utilizado individualmente é o gerador de diagramas de sequência a partir de um XML. Esta aplicação pode ser testada aqui onde um XML de exemplo já foi informado mas pode ser alterado a vontade.

A meta desta aplicação é a geração de um diagrama de sequência para cada método das classes de teste sendo cada um destes diagramas salvo com um nome de fácil localização. Algumas futuras funcionalidades devem ser acrescidas como mostrar a linha de código das chamadas, melhorar a explanação dos parâmetros, dentre outras.

Se você quiser utilizar esta solução em sua última versão, basta baixar do nosso SVN. Mas para apenas navegar no código ele é melhor legível aqui. Para testar a aplicação em funcionamento nos exemplos disponíveis clique aqui

Por hora o projeto ainda não funciona completamente no Internet Explorer. Mas ainda assim, o gerador já torna a vida mais simples na manutenção desse tipo de diagramas. Nós agradeceremos a qualquer um que tiver a paciencia e o desejo de fazer as mudanças no CSS necessárias para fazer o sistema funcionar no Internet Explorer.

Lembrando ainda, que a aplicação completa da UML 2.0 ainda está em desenvolvimento. Qualquer um que tiver interesse em trabalhar nesse campo é bem vindo ao time. Se você tiver uma correção ou uma extensão ao projeto que deseje nos enviar, será também muito bem recebida. E lembre-se, este é um software livre, e como tal, não dispõe de nenhuma garantia. Use por sua conta e risco. Ainda sendo um projeto em desenvolvimento sem nenhuma versão estável, erros podem ser encontrados. Caso os encontre por favor nos avise, teremos muito prazer em corrigi-los assim que possível.

Clique aqui para saber como utilizar essa solução.

Clique aqui para saber mais sobre diagramas de sequência.

Clique aqui e aqui para saber mais sobre Instrumentação de Código.

Clique aqui para conhecer a equipe de desenvolvimento responsável por este produto.

Nenhum comentário: