Auto Layout: Organize Seus Diagramas de Arquitetura Instantaneamente

Há uma tarefa que toda equipe de arquitetura eventualmente enfrenta: o diagrama cresceu. O que começou como cinco sistemas organizados agora são vinte e sete elementos com quarenta relacionamentos, metade deles se cruzando. Alguém adicionou um novo container na semana passada e o colocou no único espaço aberto — o canto inferior direito, conectado por uma linha que corta três outros nos. O diagrama ainda contem informações precisas. Só é ilegível.

Então alguém passa uma tarde arrastando caixas. Consegue deixar a metade superior bonita, depois percebe que mover o API gateway quebra o alinhamento de tudo abaixo. Começa de novo. Uma hora depois, o diagrama esta um pouco melhor. A próxima pessoa a adicionar um elemento o coloca no lugar errado, e o ciclo se repete.

Este é um problema de layout, e problemas de layout têm soluções algorítmicas. E isso que o Auto Layout faz.

Um Clique, Tudo se Move

O Auto Layout está na barra de ferramentas do diagrama. Clique no botão, e cada elemento no seu diagrama — sistemas, containers, componentes, elementos de código, overlays e grupos compostos — se move para uma posição ótima calculada. Relacionamentos se desembaraçam. Arestas que se cruzam se separam. A hierarquia se torna visível.

A animação leva 400 milissegundos. Os nos deslizam de suas posições atuais para as novas com uma curva cubica suavizada. Você vê a transformação acontecer, o que ajuda a manter a orientação espacial.

Como Funciona

Por trás dos bastidores, o Auto Layout usa o ELK.js, o Eclipse Layout Kernel compilado para JavaScript. O ELK é um motor de layout de grafos que implementa varias décadas de pesquisa em desenho automático de grafos. O Archyl usa seu algoritmo em camadas, especificamente projetado para grafos direcionados — exatamente o que são diagramas de arquitetura.

O processo de layout acontece em varias etapas:

Atribuição de Camadas

O ELK primeiro atribui cada no a uma camada baseada em sua posição no grafo de dependências. Elementos sem relacionamentos de entrada vão para a primeira camada. Elementos que dependem apenas de elementos da primeira camada vão para a segunda. E assim por diante.

Minimização de Cruzamentos

Dentro de cada camada, o ELK reordena nos para minimizar o numero de arestas que se cruzam. Usa uma técnica chamada varredura de camadas — passando repetidamente pelas camadas e trocando posições de nos ate a contagem de cruzamentos estabilizar.

Posicionamento de Nós

Uma vez determinadas as camadas e a ordenação, o ELK calcula as coordenadas x/y reais. O Archyl usa o algoritmo Brandes-Koepf com alinhamento balanceado, que produz layouts compactos.

Roteamento de Arestas

O ELK roteia arestas usando caminhos spline, e o Archyl recalcula a conexão ótima — topo, base, esquerda ou direita — para cada relacionamento baseado nas posições finais dos nos.

Suporte a Grafos Compostos

Diagramas de arquitetura não são planos. Containers vivem dentro de sistemas. Componentes vivem dentro de containers. Overlays agrupam elementos relacionados. O Auto Layout lida com todas essas relações de aninhamento.

Quando um sistema contem containers no diagrama (exibido como um no de grupo composto), o ELK o trata como um pai composto com filhos internos. Os filhos são dispostos dentro do pai, e o pai redimensiona para caber.

Pós-Processamento: Alinhamento e Encaixe na Grade

A saída bruta do ELK e boa mas não perfeita. O Archyl aplica duas passagens de pós-processamento.

Alinhamento de cadeia encontra nos conectados que estão quase alinhados no eixo perpendicular e forca-os para exatamente a mesma linha central. O resultado são setas perfeitamente retas entre elementos conectados.

Resolução de sobreposição detecta nos que ficaram muito próximos apos o alinhamento e os afasta. Apos ambas as passagens, cada posição se encaixa em uma grade de 20 pixels.

Alternância de Direção

O Auto Layout suporta duas direções: De Cima para Baixo e Da Esquerda para a Direita. Um alternador ao lado do botão Auto Layout permite trocar entre elas.

De Cima para Baixo é o padrão e funciona bem para a maioria dos diagramas de arquitetura. Da Esquerda para a Direita funciona melhor para arquiteturas no estilo pipeline.

O Que é Persistido

O Auto Layout não é apenas um truque visual. Apos a animação completar, cada posição calculada é persistida no servidor. Posições de nos, limites de overlays, dimensões de grupos compostos e handles de arestas são todos salvos.

Visão da Arquitetura Global

O Auto Layout também funciona na pagina de Arquitetura Global — não apenas em projetos individuais. Quando você está olhando sistemas em toda a sua organização com dezenas de relacionamentos entre projetos, layout manual é especialmente doloroso.

Quando Usar

O Auto Layout é mais útil em três cenários:

Apos a descoberta com IA. Quando a IA do Archyl analisa um repositório e gera um modelo C4, as posições iniciais podem não refletir o layout que você escolheria. O Auto Layout dá um ponto de partida limpo.

Apos mudanças significativas. Você adicionou cinco novos containers, reorganizou relacionamentos e moveu componentes entre sistemas. O diagrama ficou bagunçado. O Auto Layout recalcula tudo do zero.

Ao explorar um novo projeto. Você entrou em um projeto e quer entender sua arquitetura. O Auto Layout produz um arranjo padrão e legível.

Você sempre pode ajustar elementos individuais apos executar o Auto Layout. E um ponto de partida, não uma restrição.

Começando

O Auto Layout está disponível agora em todos os planos e em cada diagrama — nível de projeto e global. Abra qualquer diagrama, clique no botão Auto Layout na barra de ferramentas, e assista sua arquitetura se organizar.

Sua arquitetura merece ser legível. O Auto Layout garante que o diagrama não atrapalhe.


Para mais sobre como construir diagramas de arquitetura eficazes, veja nosso guia do modelo C4. Para entender como o Auto Layout interage com visualizações entre projetos, explore Colaboração em Tempo Real e Arquitetura Global. Para analisar os relacionamentos que o Auto Layout organiza, experimente o Radar de Impacto.