Dia: uma solução útil (mas imperfeita) para diagramas simples

Dia: A useful, though flawed, solution for simple diagrams
Autor original: Terry Hancock
Publicado originalmente no:
freesoftwaremagazine.com
Tradução: Roberto Bechtlufft

Venho publicando uma série de artigos sobre gráficos vetoriais na Free Software Magazine. A inclusão do Dia nessa série é um pouco forçada, já que ele não é um “editor de gráficos vetoriais” convencional. Em vez disso, o Dia opera em um nível um tanto mais alto de abstração. Mas como a abstração é muito apropriada para diagramas de fluxo de dados (como o diagrama de filtro do CUPS que vou usar como exemplo aqui), é importante dar uma olhada no que ele pode fazer. O Dia é muito útil, mas às vezes também frustrante porque desperta expectativas que vão bem além do que ele pode fazer. Além disso, há bugs em algumas partes do programa. Mesmo assim, devido ao que pode fazer, é indispensável.

Um editor de diagramas

O Dia é promovido como um “editor de diagramas”, e obviamente o nome dele vem daí. Embora eu nunca tenha usado o Visio, já vi o Dia ser comparado a ele. Os principais recursos do Dia são um sistema integrado de bibliotecas de símbolos e um pequeno grupo de ferramentas gráficas primitivas para textos, caixas, elipses, polígonos e curvas de bézier. É possível criar gráficos vetoriais “do zero” no Dia, mas a interface favorece o uso dos símbolos que acompanham o programa e a conexão entre eles usando as linhas em zig-zag (ou “conectores”).

O mais legal disso é o sistema de âncoras que faz as linhas conectoras permanecerem conectadas aos pontos-âncora dos símbolos mesmo quando você muda os símbolos de lugar. Há até um modo de “autoroute” (rota automática) que pode ser usado com os conectores. Isso faz do Dia uma excelente ferramenta para “esboçar” um diagrama antes de ter certeza de como você deseja arranjá-lo na página (um recurso muito útil, embora eu não precise dele neste projeto de diagrama de um filtro do CUPS, porque já estou trabalhando a partir de um protótipo original do desenho).

Todos os objetos gráficos têm “propriedades” bastante específicas de cada tipo de elemento, e de modo geral é pela manipulação dessas propriedades que você vai personalizar a aparência do desenho. Uma coisa irritante nas propriedades dos objetos é que, por algumas razão, não é possível selecionar vários objetos e aplicar as mesmas propriedades a todos eles ao mesmo tempo, mesmo que todos os objetos sejam do mesmo tipo. É preciso selecionar um objeto de cada vez, clicar com o botão direito, selecionar “Objeto?Propriedades” para definir as propriedades dele. Isso pode ser muito entediante!

Mas o programa me poupa bastante tempo em outras áreas, e acaba compensando.

A interface é bem minimalista, e com isso dá para aprender a usar o Dia rapidamente. Não é difícil começar um diagrama simples, mesmo que você nunca tenha usado o programa antes.

Biblioteca de símbolos

Como o principal aspecto do Dia é o uso das bibliotecas de símbolos, é importante considerar quais estão disponíveis e quais podem se adequar à tarefa que você vai desempenhar. Há 34 “folhas” de símbolos na minha instalação do Dia (versão 0.96.1, pacote para o Debian “Lenny”). Dessas todas, a maioria não tem muita utilidade para mim, mas a página de “UML” foi muito útil para meu trabalho de design de software orientado a objeto.

No projeto atual, não precisamos de muito além da caixa retangular primitiva, por isso as bibliotecas de símbolos não foram muito usadas. Mas eu usei alguns símbolos para representar um PC com GNU/Linux/Unix, um Macintosh e as impressoras.

Lidando com texto

O texto é bem simples no Dia. Não há janela de edição de texto ou coisa do gênero, mas ao clicar num objeto de texto com o botão direito e selecionar “Editar” você abre opções como “Colar texto” da área de transferência para o objeto. Isso foi muito útil para transferir rótulos da arte original em ASCII para o meu desenho.

As propriedades de texto incluem escolha de tamanho, uma pequena variedade de fontes (parece que há uma janela avançada para fontes, mas quando eu tentava usá-la o Dia travava) e, obviamente, cores.

Conectores

As estrelas do show são os conectores em zig-zag. Essas linhas seguem o padrão familiar de linha reta na vertical ou na horizontal que você certamente já viu em muitos diagramas. As “alças” dos conectores permitem mudar o ponto de chegada e a localização do zig-zag.

Quando o ponto de chegada de um conector se alinha a um nó-âncora em um objeto de símbolo ou gráfico, o objeto fica em destaque para indicar a conexão. Solte o ponto de chegada do conector nesse ponto para fazer a conexão. Uma vez conectado, mova o objeto para arrastar o conector junto, mantendo o conteúdo semântico do diagrama inalterado.

É possível rotular os próprios conectores, mas optei por uma abordagem mais simples no desenho, deixando implícita a natureza das conexões (todas elas representam algum tipo de conversão de formatos de dados ou de transmissão de mensagens).

O estado atual do software

Infelizmente, não dá para dizer que a manutenção do Dia é boa. Há vários bugs, especialmente nos filtros para exportação, e volta e meia eu tento usar algum recurso que paralisa o meu sistema.

Mas a maior frustração é que as bibliotecas de símbolos, embora boas, não são amplas o suficiente. Seria ótimo se fosse fácil editar os símbolos, mas pelo visto não é o caso. Antigamente era preciso fazer as extensões programando em C. Hoje, supõe-se que haja um ambiente para criação de scripts em Python no Dia, mas não entendi como usá-lo, logo não consegui tirar nada de bom dele.

É essa frustração que, mais do que qualquer outra coisa, limita meu uso do Dia. Na prática eu o utilizo só para diagramas UML (um tipo popular de diagrama usado em programação orientada a objetos) e para diagramas de fluxo de dados (onde basta usar caixas gráficas simples, sem a necessidades das bibliotecas de símbolos, como no projeto que uso como exemplo). Há bibliotecas bem variadas, incluindo uma para redes e outra para equipamentos eletrônicos digitais e analógicos, mas geralmente eu uso outras ferramentas para projetos desse tipo quando a oportunidade surge.

Seria muito bom se fosse possível criar símbolos novos pela própria interface do Dia, mas se isso for possível eu ainda não consegui descobrir como fazer.

Criação do diagrama de filtro do CUPS

Trabalhando com base no diagrama original com arte em ASCII, eu consegui distribuir rapidamente um conjunto de caixas representando o fluxo de informações em um sistema CUPS. Decidi tirar vantagem dos conectores e usei uma maneira levemente diferente para expressar o fluxo no diagrama, ao invés de usar as seta retas na vertical. Com isso, ficou meio complicado rotular cada transição, mas na minha opinião, muitos dos rótulos de transição do original não eram lá muito úteis – se a origem é PDF e o destino é Postscript, por exemplo, será que o rótulo “pdf para postscript”? é realmente necessário? A seta já passa essa informação.

A figura 1 mostra o andamento do trabalho na interface do Dia.

Figura 1: Interface do Dia e o diagrama do CUPS em desenvolvimento

Depois eu preenchi o texto copiando e colando os rótulos do desenho em ASCII original, embora tenha sido necessário fazer uma edição para que tudo ficasse certinho. Também alterei as propriedades de objeto para controlar as cores e fontes dos elementos desenhados. O resultado foi o desenho da figura 2. É um tanto minimalista se comparado ao desenho original, mas transmite as informações relevantes e mostra o maior benefício do Dia: ele permite fazer diagramas de modo fácil e rápido, desde que você não seja muito criterioso quanto à personalização do desenho final.

Figura 2: Diagrama de filtro do CUPS, concluído com o Dia

Não sei se o resultado tem qualidade profissional. Há muitas coisas em que eu gostaria de mexer. Para fazer isso, o Dia não é necessariamente a melhor escolha. Uma idéia é exportar o resultado para SVG e fazer os ajustes em outro programa de gráficos vetoriais. Só que o filtro de exportação para SVG tem bugs – a figura 3 mostra o que aconteceu em uma exportação minha (talvez os objetos de texto estivessem com unidades erradas).

Figura 3: Pelo visto, o filtro de exportação para SVG do Dia não funciona muito bem

Considerações finais

Se a idéia é fazer diagramas para publicação, o Dia é incompleto, e acertar o diagrama “na mão” em um editor de gráficos vetoriais “de verdade” provavelmente é uma idéia melhor. Por outro lado, ele é perfeito para todo tipo de documentação interna, do tipo que você usa para ajudar a si mesmo a concluir uma tarefa e organizar seus pensamentos durante o desenvolvimento.

As bibliotecas de símbolos me deixaram bastante frustrado, mas ainda não aprendi como posso ampliá-las. Qualquer dia desses eu começo um projeto de aprendizado.

De modo geral, o Dia é uma ferramenta útil para o dia-a-dia. Mas sei que eu o usaria bem mais se ele fosse um pouco mais bem acabado, e isso é meio decepcionante.

Créditos a Terry Hancockfreesoftwaremagazine.com
Tradução por Roberto Bechtlufft <roberto at bechtranslations.com>

Ver Mais

Postagem relacionada