Visualização 3D de Software

Visualização de Software

Visualização de Software

Para efeitos de re-engenharia ou manutenção de sistemas informáticos, necessitamos muitas vezes de compreender grandes volumes de informação, nomeadamente código fonte. Essa tarefa não é fácil, nomeadamente porque esses sistemas têm, muitas vezes, documentação desactualizada ou por vezes nenhuma. Por isso mesmo é usual utilizarem-se técnicas e ferramentas com o objectivo de permitir essa compreensão.

A “Visualização de Software” em conjunção com técnicas de “Engenharia Reversa” permitem olhar directamente para o sistema de software e fornecer um mapeamento do intangível para uma representação gráfica ou metáforas visuais, utilizando diferentes modelos. “Visualização de Software” pode ser definida pelo uso de tipografia, desenho gráfico, animação e cinematografia conjuntamente com interacção “homem-máquina” e computação gráfica para permitir a compreensão e utilização eficiente de software [Price et al 1998].

Durante as últimas décadas essas representações têm melhorado e, em alguns casos, tem chegado a normas. A norma UML é um bom exemplo de uma forma muito aceite de visualização de software ao dividir as suas propriedades em conjuntos de diagramas 2D. No entanto, esta aparentemente boa ideia de dividir a representação de sistemas de software em várias representação distintas, engloba vários problemas nomeadamente a dificuldade de visualizar o software no seu todo assim como a sua rastreabilidade.

Porque é que modelar software em 3D poderá ser melhor do que em 2D[Ware and Frank, 1994] concluíram através de experiências com utilizadores que a quantidade de informação (na forma de grafos) que pode ser percepcionada utilizando 3D é mais ou menos 3 vezes a quantidade em 2D. Isto indica que esses utilizadores conseguiram efectuar melhor as tarefas (que necessitavam uma boa compreensão da informação exibida) sobre a estrutura dos grafos quando estes eram exibidos em 3D do que em 2D [Dwyer, 2001].

Na PTWS Alojamento Web, utilizamos uma ferramenta para visualização de alguns dos nossos sistemas que é a SEDAR3D (Software Engineering DAta Representation In 3D) que teve a sua génese num projecto da minha autoria, num contexto académico, dentro da área de Engenharia de Software e que nós estendemos para permitir a visualização da nossa rede e sistemas. Conseguimos assim navegar em três dimensões e utilizar técnicas de aglomeração (clustering) para detecção de zonas potencialmente problemáticas (por exemplo para detectar servidores que estão a ficar sobrecarregados). Conseguimos ainda animar todo o modelo e visualizar as trocas de informação entre máquinas (por exemplo quando os backups estão a ser efectuados na rede interna).

Sistema complexo, desordenado

Sistema complexo, desordenado

Sistema complexo, ordenado (clustering)

Sistema complexo, ordenado (clustering)

Para além das técnicas de disposição (layout) foi necessário introduzir e aplicar técnicas de ocultação de informação que vão desde o desdobramento das estruturas hierárquicas (por exemplo, servidores, alojamentos, ficheiros), passando por aplicação de filtros de selecção até técnicas gráficas tais como nevoeiro.

Visualização - sem filtros

Visualização - sem filtros

Visualização - com nevoeiro

Visualização - com nevoeiro

Para quem tenha interesse ou esteja a trabalhar nesta área, não hesitem em contactar, para mais informações tais como uma lista completa de referências, detalhes da arquitectura ou alguma ajuda sobre o tópico.

Ficha Técnica

  • Java+Java3D
  • JUNG (Java Universal Network/Graph framework)
  • GraphML

Referências:

[Price et al 1998] Price, B.A., Baecker, R., and Small, I.S., 1998 A principled taxonomy of software visualisation. Journal of Visual Languages and Computing. 4(3), pp. 211-266.

[Ware and Frank, 1994] Ware, C and Frank, G., 1994, Viewing a graph in a virtual reality display is three times as good as a 2-D diagram. In IEEE Conference on Visual Languages, pages 182-183

[Dwyer, 2001] Dwyer, Tim, 2001, Three Dimensional UML using Force Directed Layout, Proceedings of the Australian Symposium on Information Visualization (InVis.au’01), CRPIT 9, ACS, pages 77-85.


Software Engineering DAta Representation In 3d

Sobre o Autor
Author Image
Ricardo Santos é o homem que segura o machado sobre a cabeça dos vários membros da equipa PTWS - está cientificamente provado que as pessoas trabalham melhor, à sombra ... :D
Pode deixar um comentário, ou responder no seu blog.

5 Comentários a “Visualização 3D de Software”

  1. Miguel diz:

    Pode ser que daqui a uns anos o Departamento de Programação da PTWS leve este trabalho a grandes mercados 🙂

  2. @BlueEagle diz:

    Confesso que desconhecia este tipo de "ciência" mas se percebi bem a explicação, e pelas imagens, é uma forma bastante avançada, e ao mesmo tempo simples de visualizar um "ambiente de serviços", é levar a velha máxima do "queres que te faça um desenho?" ao extremo e com resultados fenomenais 🙂

    • A ideia, e aqui estou um pouco a esquematizar, é tornar ambientes complexos, ou mesmo ambientes onde existe troca de informação, em blocos, simplificando até ao elemento base.

      Assim torna-se possivel, usando a nossa rede como exemplo, visualizar a "nuvem" (tudo), aproximar para visualizar o router principal, aproximar para ver todas as ligações que partem desse router para os switches, depois servidores, até chegar ao website do cliente dentro do servidor X.

      Assim um ambiente complexo é estruturado até à sua forma mais simples em 3D e com possibilidade de ver tudo em tempo real se adicionarmos um modulo que "beba" a informação dos outros nossos sistemas.

      Isto é apenas um exemplo aplicado ao nosso caso especifico, mas funciona de igual modo para um ambiente empresarial, produtos, fabricas, whatever. A imaginação e o talento são os limites.

    • Ricardo Santos diz:

      É isso mesmo – é fazer um desenho – naquela ideia de que o nosso sistema visual é um apetrecho muito avançado e então porque não tirar proveito dele? A máxima de que uma imagem vale mil palavras é isso mesmo – se já dispomos do "hardware" (os nossos olhos e cérebro) temos mais é que aproveita-los. Neste caso com uma ferramenta deste género consegue-se transmitir mais informação do que um ecrã cheio de texto – seja com cores ou com o posicionamento das coisas ou até mesmo com animação.

      A ferramenta em si é muito versátil – pode-se representar qualquer tipo de grafo – ou seja se quisermos podemos facilmente representar uma rede social tipo o facebook em que os elementos são as pessoas e as ligações entre elas.

      É como o Carlos disse – "A imaginação e o talento são os limites." 😀

Deixe a sua opinião