Dominando o Modelagem ArchiMate: Criando um Sistema de Gestão de Biblioteca com PlantUML

Bem-vindo a mais um tutorial de masterclass da equipe técnica da Visual Paradigm! Ao projetar arquiteturas empresariais complexas, manter seus diagramas limpos, organizados e estruturalmente sólidos pode ser um desafio. Ferramentas tradicionais de arrastar e soltar frequentemente o atrasam quando os layouts mudam ou os requisitos se alteram. É por isso que muitos arquitetos de software e designers empresariais dependem de fluxos de trabalho de diagrama como código.

Neste guia, vou guiá-lo pelo meu processo de pensamento exato para construir um diagrama de arquitetura ArchiMate abrangente e multicamadas para umSistema de Gestão de Biblioteca. Usando PlantUML dentro doeditor gratuito de PlantUMLnoVisual Paradigm VPasCode, vamos detalhar como estruturar camadas empresariais, definir elementos de forma limpa e mapear relações cruzadas entre camadas com precisão.

A PlantUML formatted ArchiMate diagram

Compreendendo as Camadas de Arquitetura ArchiMate

Quando inicio a modelar um sistema empresarial, sempre começo definindo os limites estruturais. O ArchiMate separa as preocupações em camadas de arquitetura distintas, ajudando as partes interessadas a compreender o valor de negócios, a lógica funcional, os componentes de aplicação e a infraestrutura técnica de uma só olhada.

Para nosso sistema de biblioteca, organizamos o diagrama em quatro agrupamentos distintos verticais e horizontais:

  • Camada de Motivação:Captura os objetivos de alto nível e os fatores que orientam a organização.
  • Camada de Negócios:Destaca atores, serviços e processos de negócios essenciais, como empréstimos e reservas de livros.
  • Camada de Aplicação:Define os serviços de software e os componentes de aplicação que lidam com a lógica central.
  • Camada de Tecnologia:Representa os nós de hardware físicos ou virtuais que hospedam nossa pilha de aplicações.

Etapa 1: Configurando a Estrutura Fundamental

Para começar a escrever nosso código, inicio configurando as regras globais de renderização e importando a biblioteca padrão oficial do ArchiMate para PlantUML. Definir um tipo de linha ortogonal mantém as linhas de conexão nítidas e alinhadas em ângulos retos, o que é vital para projetos empresariais limpos.

skinparam linetype ortho
!include https://static.visual-paradigm.com/plantuml-stdlib/Archimate-PlantUML/master/Archimate.puml
remove @unlinked
top to bottom direction
title Introdução - Sistema de Gestão de Biblioteca

Ao impordireção de cima para baixoe removendo elementos não vinculados, garanto que o layout flua naturalmente das motivações de negócios de nível superior até a infraestrutura tecnológica.

Etapa 2: Definindo as Camadas e Elementos Centrais

Em seguida, preencho cada container de agrupamento com seus respectivos elementos. Prefiro agrupar componentes relacionados explicitamente usando blocos de agrupamento do PlantUML, para que os limites visuais correspondam aos domínios empresariais.

Grouping(motivation_layer, "Camada de Motivação") {
  Motivation_Goal(g_ops, "Operações de Biblioteca Eficientes")
  Motivation_Goal(g_service, "Serviço de Leitura de Alta Qualidade")
}

Grouping(business_layer, "Camada de Negócios") {
  Business_Actor(ba_librarian, "Bibliotecário")
  Business_Actor(ba_member, "Membro da Biblioteca")
  Business_Service(bs_circulation, "Serviço de Circulação")
  Business_Service(bs_catalog, "Serviço de Catálogo")
  Business_Process(bp_checkout, "Empréstimo / Devolução")
  Business_Process(bp_reserve, "Gerenciar Reservas")
}

Grouping(application_layer, "Camada de Aplicação") {
  Application_Service(as_circulation, "Serviço de Aplicação de Circulação")
  Application_Service(as_catalog, "Serviço de Aplicação de Catálogo")
  Application_Component(ac_lms, "Sistema de Gestão de Biblioteca")
  Application_Component(ac_catalog, "Banco de Dados de Catálogo")
}

Grouping(technology_layer, "Camada de Tecnologia") {
  Technology_Node(tn_server, "Servidor de Aplicação")
  Technology_Node(tn_db, "Servidor de Banco de Dados")
}

Por que estruturá-lo dessa maneira? Prefixar explicitamente os elementos (como “ba_ para atores de negócios, bp_ para processos, e tn_ para nós de tecnologia) torna a escrita de mapeamentos relacionais complexos muito mais fácil posteriormente. Isso evita colisões de nomes e mantém seu script autoexplicativo.

Etapa 3: Mapeamento de Relações entre Camadas

Com nossos elementos posicionados, o passo final é conectá-los. O ArchiMate depende de tipos de relacionamento precisos — como realização, serviço, acionamento e atribuição — para modelar dependências com precisão.

' Processos de negócios realizam serviços de negócios
Rel_Realization_Up(bp_checkout, bs_circulation, "")
Rel_Realization_Up(bp_reserve, bs_circulation, "")
Rel_Triggering_Right(bp_checkout, bp_reserve, "")

' Serviços de negócios realizam objetivos motivacionais
Rel_Realization_Up(bs_circulation, g_ops, "")
Rel_Serving_Up(bs_catalog, g_service, "")

' Atores são atendidos por serviços de negócios
Rel_Serving_Up(bs_circulation, ba_librarian, "")
Rel_Serving_Up(bs_catalog, ba_member, "")

' Serviços de aplicação realizam serviços de negócios
Rel_Realization_Up(as_circulation, bs_circulation, "")
Rel_Realization_Up(as_catalog, bs_catalog, "")

' Componentes de aplicação realizam serviços de aplicação
Rel_Realization_Up(ac_lms, as_circulation, "")
Rel_Realization_Up(ac_catalog, as_catalog, "")

' Nós de tecnologia atribuem (implantam) componentes de aplicação
Rel_Assignment_Up(tn_server, ac_lms, "")
Rel_Assignment_Up(tn_db, ac_catalog, "")

Ao usar tags de relacionamento direcionais como Rel_Realization_Up e Rel_Triggering_Right, mantenho controle preciso sobre como os conectores são roteados pelo canvas, evitando linhas sobrepostas e desorganizadas.

Código-Fonte Completo

Aqui está o script PlantUML completo e pronto para produção para o diagrama de arquitetura do nosso Sistema de Gestão de Biblioteca:


@startuml
skinparam linetype ortho
!include https://static.visual-paradigm.com/plantuml-stdlib/Archimate-PlantUML/master/Archimate.puml
remove @unlinked
top to bottom direction
title Introductory - Library Management System

Grouping(motivation_layer, "Motivation Layer") {
  Motivation_Goal(g_ops, "Operações de Biblioteca Eficientes")
  Motivation_Goal(g_service, "Serviço de Leitura de Alta Qualidade")
}

Grouping(business_layer, "Business Layer") {
  Business_Actor(ba_librarian, "Bibliotecário")
  Business_Actor(ba_member, "Membro da Biblioteca")
  Business_Service(bs_circulation, "Serviço de Circulação")
  Business_Service(bs_catalog, "Serviço de Catálogo")
  Business_Process(bp_checkout, "Empréstimo / Devolução")
  Business_Process(bp_reserve, "Gerenciar Reservas")
}

Grouping(application_layer, "Application Layer") {
  Application_Service(as_circulation, "Serviço de Aplicação de Circulação")
  Application_Service(as_catalog, "Serviço de Aplicação de Catálogo")
  Application_Component(ac_lms, "Sistema de Gestão de Biblioteca")
  Application_Component(ac_catalog, "Banco de Dados de Catálogo")
}

Grouping(technology_layer, "Technology Layer") {
  Technology_Node(tn_server, "Servidor de Aplicação")
  Technology_Node(tn_db, "Servidor de Banco de Dados")
}

' Processos de negócios realizam serviços de negócios
Rel_Realization_Up(bp_checkout, bs_circulation, "")
Rel_Realization_Up(bp_reserve, bs_circulation, "")
Rel_Triggering_Right(bp_checkout, bp_reserve, "")

' Serviços de negócios realizam objetivos motivacionais
Rel_Realization_Up(bs_circulation, g_ops, "")
Rel_Serving_Up(bs_catalog, g_service, "")

' Atores são atendidos por serviços de negócios
Rel_Serving_Up(bs_circulation, ba_librarian, "")
Rel_Serving_Up(bs_catalog, ba_member, "")

' Serviços de aplicação realizam serviços de negócios
Rel_Realization_Up(as_circulation, bs_circulation, "")
Rel_Realization_Up(as_catalog, bs_catalog, "")

' Componentes de aplicação realizam serviços de aplicação
Rel_Realization_Up(ac_lms, as_circulation, "")
Rel_Realization_Up(ac_catalog, as_catalog, "")

' Nós de tecnologia atribuem (implantam) componentes de aplicação
Rel_Assignment_Up(tn_server, ac_lms, "")
Rel_Assignment_Up(tn_db, ac_catalog, "")

@enduml

Dê Vida à Sua Arquitetura com VPasCode

A screenshot of Visual Paradigm VPasCode showing the creation of an ArchiMate Diagram

Diagramação como código permite que você controle a versão de sua arquitetura, colabore de forma contínua e gere diagramas perfeitos em segundos. Seja você construindo modelos empresariais ArchiMate, arquiteturas de software C4 ou diagramas de sequência UML padrão, fazê-lo em um ambiente robusto faz toda a diferença.

Pronto para criar seus próprios diagramas?

Teste nosso motor de renderização em tempo real, experimente a geração de diagramas impulsionada por IA e exporte gráficos vetoriais limpos instantaneamente.

Experimente Agora a Ferramenta Gratuita de Diagramação como Código

Scroll to Top