├── Codigo.puml ├── Component.puml ├── Contexto.puml ├── Container.puml └── README.md /Codigo.puml: -------------------------------------------------------------------------------- 1 | @startuml BibliotecaCodigo 2 | !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml 3 | 4 | class Book { 5 | - String title 6 | - String author 7 | - Date publishedDate 8 | - boolean isAvailable 9 | 10 | + getTitle() : String 11 | + getAuthor() : String 12 | + getPublishedDate() : Date 13 | + checkAvailability() : boolean 14 | } 15 | @enduml 16 | -------------------------------------------------------------------------------- /Component.puml: -------------------------------------------------------------------------------- 1 | @startuml BibliotecaComponent 2 | !includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml 3 | 4 | Container(api, "API Backend", "Spring Boot", "API REST para funcionalidades de backend") { 5 | Component(controller, "Controlador REST", "Controlador Spring MVC", "Recebe requisições HTTP") 6 | Component(service, "Serviço", "Classe de Serviço", "Contém lógica de negócio") 7 | Component(repository, "Repositório", "Interface JPA", "Gerencia operações de banco de dados") 8 | } 9 | 10 | Rel(controller, service, "Chamada de Métodos") 11 | Rel(service, repository, "Consulta ao BD") 12 | 13 | @enduml 14 | -------------------------------------------------------------------------------- /Contexto.puml: -------------------------------------------------------------------------------- 1 | @startuml BibliotecaContext 2 | !includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml 3 | 4 | Person(usuario, "Usuário", "Usuário que interage com o sistema") 5 | System(sistemaGestao, "Sistema de Gestão de Biblioteca", "Sistema que gerencia o catálogo de livros e empréstimos") 6 | System_Ext(servicoPagamento, "Sistema de Pagamentos", "Sistema externo para processamento de pagamentos") 7 | System_Ext(servicoNotificacao, "Serviço de Notificações", "Serviço externo para enviar notificações") 8 | 9 | Rel(usuario, sistemaGestao, "Usa") 10 | Rel(sistemaGestao, servicoPagamento, "Processa pagamentos") 11 | Rel(sistemaGestao, servicoNotificacao, "Envia notificações") 12 | 13 | @enduml 14 | -------------------------------------------------------------------------------- /Container.puml: -------------------------------------------------------------------------------- 1 | @startuml BibliotecaContainer 2 | !includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml 3 | 4 | Person_Ext(usuario, "Usuário", "Usuário que interage com o sistema") 5 | Container(webapp, "Aplicação Web", "React", "Frontend da aplicação") 6 | Container(mobileapp, "Aplicação Mobile", "React Native", "Frontend da aplicação mobile") 7 | Container(api, "API Backend", "Spring Boot", "API REST para funcionalidades de backend") 8 | ContainerDb(database, "Banco de Dados", "PostgreSQL", "Armazena informações do sistema") 9 | 10 | Rel(usuario, webapp, "Usa") 11 | Rel(usuario, mobileapp, "Usa") 12 | Rel(webapp, api, "Requisições HTTP(S)") 13 | Rel(mobileapp, api, "Requisições HTTP(S)") 14 | Rel(api, database, "SQL", "Usa") 15 | 16 | @enduml 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # C4-Model 2 | 3 | Esse projeto foi apresentado [nesse vídeo](https://youtu.be/lI2gOnIlsHM) que explica como o modelo C4 pode ser usado para 4 | documentar a arquitetura de um sistema de biblioteca utilizando o C4-PlantUML. 5 | 6 | ## O que é o C4-Model? 7 | 8 | Uma abordagem para descrever a arquitetura de software em diferentes níveis de detalhes. Chama-se C4 pois possui 4 níveis de detalhe: Contexto, Container, Componente, e Código (ou Classe). 9 | 10 | ## Sistema de Gestão de Biblioteca 11 | 12 | - Gerenciamento de Usuários 13 | - Catálogo de Livros 14 | - Empréstimos e Devoluções 15 | - Notificações 16 | - Pagamentos 17 | 18 | ## Roteiro 19 | 20 | - [ ] Contexto 21 | - [ ] Containers 22 | - [ ] Componentes 23 | - [ ] Código (Classe) 24 | 25 | ## Reflexões 26 | 27 | - Faz sentido usar todos os níveis do C4? --------------------------------------------------------------------------------