Disciplina do curso de Engenharia de Software da PUC Minas
- 2°Sem 2024
- 1°Sem 2025
- 2°Sem 2025
- Aulas em PDF
- Artigos sugeridos
- Discussões
- Projetos
- Quizzes
- Exercícios de revisão
- Simulado
- Trabalhos
- SWEBOK
- Plano de Ensino
-
📕 Software Engineering – Ian Sommerville
Obra clássica que aborda de forma abrangente os principais conceitos, processos e práticas da engenharia de software, amplamente utilizada em cursos e na indústria. -
📘 Engenharia de Software Moderna - Marco Tulio Valente
Livro gratuito e atualizado que trata da engenharia de software com foco em práticas modernas, como integração contínua, microserviços e DevOps, com exemplos em Java e Python.- 🎵 Podcast / Audiobook no Spotify
Engenharia de Software Moderna está também disponível no formato de podcast, com resumos de seções do livro gerados por IA por meio do NotebookLM do Google.
- 🎵 Podcast / Audiobook no Spotify
-
📙 Análise e Projeto de Sistemas – Alan Dennis, Barbara Haley Wixom, Roberta M. Roth
Livro que aborda metodologias e técnicas modernas para análise e projeto de sistemas, incluindo modelagem de processos, requisitos e diagramas UML, com forte aplicação prática em projetos reais. -
📚 IEEE SWEBOK – Software Engineering Body of Knowledge
- PDF - Guia oficial do IEEE que organiza e descreve o corpo de conhecimento essencial da engenharia de software, servindo como referência para profissionais, educadores e certificações.
- 🧠 Blog - Martin Fowler
- 📕 Padrões de Arquitetura de Aplicações Corporativas - Martin Fowler
- 📕 Refatoração - 2ª Edição - Aperfeiçoando o design de códigos existentes - Martin Fowler
- 📄 Blog - Clean Architecture - Robert C. Martin (Uncle Bob)
- 📙 Arquitetura Limpa: o Guia do Artesão Para Estrutura e Design de Software – Robert C. Martin (Uncle Bob)
- 📘 Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions - Gregor Hohpe, Bobby Woolf
- 📗 Just Enough Software Architecture: A Risk-Driven Approach - George Fairbanks
- 📔 Introdução à Arquitetura de Design de Software – Paulo Silveira, Guilherme Silveira, Fabio Kung, Guilherme Moreira
- 📙 Designing Software Architectures – Humberto Cervantes & Rick Kazman
- 📗 Software Architecture in Practice – Len Bass, Paul Clements, Rick Kazman
- 📒 Fundamentos da Arquitetura de Software: Uma abordagem de engenharia – Mark Richards & Neal Ford
- 📔 Arquitetura de software: As partes difíceis - Neal Ford, Mark Richards, Pramod Sadalage & Zhamak Dehghani
- 📙 Facilitando a Arquitetura de Software: Capacitando equipes para tomar decisões de arquitetura - Andrew Harmel-Law
- 📄 Architectural Styles and the Design of Network-based Software Architectures – Roy Fielding (REST)
- 📂 awesome-software-architecture (GitHub)
- 🛰️ Thoughtworks Technology Radar
- 📕 Migrando Sistemas Monolíticos para Microsserviços - Sam Newman
- 📘 Criando Microsserviços: Projetando sistemas com componentes menores e mais especializados - Sam Newman
- 📗 Microsserviços Prontos para Produção: Construindo Sistemas Padronizados em uma Organização de Engenharia de Software - Susan Fowler
- 📙 Princípios de Análise e Projeto de Sistemas com UML - Eduardo Bezerra
- 📘 UML Distilled: A Brief Guide to the Standard Object Modeling Language – Martin Fowler
- 📕 UML Essencial: Um Breve Guia para a Linguagem-Padrão de Modelagem de Objetos - Martin Fowler
- 📒 Applying UML and Patterns – Craig Larman
- 📗 Fundamentos Do Desenho Orientado A Objeto Com UML - Jones Meilir Page
- 📖 UML Diagram Types - Visual Paradigm (guia ilustrado)
- 📕 Design Patterns: Elements of Reusable Object-Oriented Software – GoF (Gamma, Helm, Johnson, Vlissides)
- 📘 Head First Design Patterns – Eric Freeman & Elisabeth Robson
- 📗 Domain-Driven Design Distilled - Vaughn Vernon
- 📂 design-patterns-for-humans (Explicações simples)
- 📦 Refactoring.Guru – Exemplos em múltiplas linguagens
- 🦊 Refactoring.Guru - Design Patterns
- 📕 Code Complete – Steve McConnell
- 📘 Clean Code – Robert C. Martin
- 📔 The Clean Coder – Robert C. Martin
- 📗 Design It! – Michael Keeling
- 📂 awesome-static-analysis
- 🗞️ ACM Transactions on Software Engineering and Methodology
- 🧪 Journal of Software Maintenance and Evolution (ACM)
- 📈 Journal of Software: Evolution and Process (Wiley)
- 📄 IEEE Software - Measuring Software Quality
- 📖 IEEE - Transactions on Software Engineering
- 📦 Requirements Engineering - Springer
- 🖼️ Draw.io (Diagramas)
- 🎓 Astah - Licença gratuita para estudantes
- 📐 PlantUML - Diagramas UML
- 📖 PlantUML - Guia oficial
- 🎨 Figma
- 🌟 StarUML
- 🧩 C4 Model – Modelo para visualização de arquitetura de software
1. 🧱 The Big Ball of Mud
➤ Um artigo clássico que discute sistemas com arquitetura frágil e desorganizada. Útil para refletir sobre más práticas recorrentes e a necessidade de boas decisões arquiteturais.
2. 🧩 Microservices - Martin Fowler
➤ Explica o estilo de arquitetura baseado em microserviços, incluindo vantagens, desvantagens e comparações com arquiteturas monolíticas.
3. 💥 No Silver Bullet – Essence and Accidents of Software Engineering
➤ Um artigo influente de Frederick P. Brooks, Jr. que argumenta que não há solução única ("bala de prata") capaz de trazer melhorias drásticas na produtividade do desenvolvimento de software, destacando a distinção entre complexidade essencial e acidental.
4. 📜 On the Criteria To Be Used in Decomposing Systems into Modules – David Parnas
➤ Um marco na engenharia de software. Introduz a ideia de modularidade baseada em ocultação de informações, base para o design orientado à manutenção.
5. 🔧 Software Architecture: A Roadmap – David Garlan
➤ Um panorama da evolução da arquitetura de software até os anos 2000. Aponta caminhos futuros e reforça a importância da disciplina arquitetural.
6. 💣 Hotspot Patterns: The Formal Definition and Automatic Detection of Architecture Smells – Ran Mo et al.
➤ Apresenta padrões formais para identificar architecture smells em grandes sistemas, como hubs excessivamente conectados e dependências cíclicas. Traz uma abordagem automatizada para detecção de hotspots estruturais em arquiteturas complexas.
7. 🧠 Strategic Design and Domain-Driven Design – Eric Evans
➤ Introduz conceitos fundamentais do DDD como Bounded Contexts e alinhamento entre domínio e arquitetura. Essencial para projetos complexos.
- 7.1. 📄 Domain-Driven Design Reference – Definitions and Pattern Summaries - Eric Evans
➤ Resumo conciso dos conceitos, definições e padrões do DDD apresentados por Eric Evans. Serve como guia rápido para consulta durante o desenho e a implementação de soluções alinhadas ao domínio.
8. 💣 Managing Technical Debt – Steve McConnell
➤ Explica como identificar, monitorar e mitigar dívidas técnicas ao longo do ciclo de vida do projeto.
9. 🧰 Documenting Architecture Decisions – Michael Nygard
➤ Apresenta o conceito de Architecture Decision Records (ADRs), uma forma leve e rastreável de registrar decisões arquiteturais ao longo do tempo. Útil para manter a memória técnica viva e justificar escolhas de design em projetos reais.
10. 📦 Hexagonal Architecture – Alistair Cockburn
➤ Propõe a separação entre lógica de negócio e infraestrutura por meio de portas e adaptadores. Uma abordagem que favorece testabilidade, flexibilidade e baixo acoplamento em arquiteturas modernas.
11. 📄 Parallel Changes in Large Scale Software Development: An Observational Case Study – Dewayne E. Perry, Harvey P. Siy, Lawrence G. Votta
➤ Estudo sobre os desafios e padrões do desenvolvimento paralelo em larga escala e seu impacto na qualidade e entrega do software.
12. 🔄 The Reactive Manifesto
➤ Apresenta os princípios da Reactive Architecture (Responsiva, Resiliente, Elástica e Orientada a Mensagens). Útil para discutir arquiteturas modernas de sistemas distribuídos.
13. ⚡ Agile Manifesto
➤ Define valores e princípios para desenvolvimento ágil, focando em colaboração, entrega rápida e adaptação a mudanças.
14. 📄 Object Constraint Language (OCL): a Definitive Guide - J. Cabot & M. Gogolla
➤ Apresenta uma visão abrangente do OCL como linguagem essencial na engenharia dirigida por modelos, com foco em restrições, consultas, transformações de modelos e geração de código.
15. 📐 Design by Contract – Bertrand Meyer (Extract from “Object-Oriented Software Construction”)
➤ Introduz o conceito de Design by Contract, no qual pré-condições, pós-condições e invariantes definem os direitos e deveres de métodos e classes. Base teórica por trás de abordagens como OCL e Eiffel.
-
🔤 IBM - Object Constraint Language - OCL - Sample
➤ Demonstra exemplos práticos de como expressar restrições e contratos em modelos UML usando OCL (Object Constraint Language). Fundamental para validar invariantes, pré e pós-condições em modelagens formais. -
📗 Análise e Design Orientados a Objetos Para Sistemas de Informação - Raul Wazlawick
➤ Aborda conceitos fundamentais de análise e design orientados a objetos com foco na construção de sistemas de informação, incluindo práticas para modelagem rigorosa e uso de linguagens formais como OCL para garantir consistência nos modelos. -
📘 Modeling with OCL: A Complete Guide to the Object Constraint Language – Jos Warmer, Anneke Kleppe
➤ Livro fundamental para quem deseja aprender a usar OCL na prática. Aborda desde conceitos básicos até expressões avançadas, com foco em aplicações reais e integração com UML. -
📕 Applying UML and Patterns – Craig Larman (Cap. 11: Contracts)
➤ Mostra como aplicar contratos em UML usando OCL e boas práticas. Ilustra como enriquecer diagramas com restrições formais para promover design robusto e orientado a requisitos precisos.
-
📄 arXiv – Software Engineering (cs.SE)
➤ Repositório de preprints com artigos técnicos e pesquisas recentes em engenharia de software. -
💡 Branas.io
➤ Blog e cursos de Rodrigo Branas sobre arquitetura, design e práticas modernas de desenvolvimento. -
🔧 Refactoring Guru (em Português)
➤ Explicações visuais e exemplos de padrões de projeto e técnicas de refatoração. -
📂 The System Design Primer (GitHub)
➤ Guia completo e gratuito para entrevistas e fundamentos de design de sistemas em grande escala.
Um roadmap é um guia visual que apresenta etapas, habilidades ou conhecimentos necessários para atingir um objetivo específico. Ele ajuda a organizar o aprendizado ou desenvolvimento ao longo do tempo, mostrando caminhos recomendados e prioridades.
- 📽️ Martin Fowler – Architecture
- 📽️ Rodrigo Branas – Clean Architecture
- 📽️ Simon Brown – C4 Model Explained
- 📽️ Tech Talks #7: Software Architecture – Building Systems That Fit Your Needs
- 📺 Domain-Driven Design - Vlad Khononov (DDD Book Tour)
- 📺 GOTO Conferences – Software Architecture, Dev e Tech Trends
Relatórios anuais e pesquisas globais ajudam a entender as principais linguagens, ferramentas, salários, preferências e tendências no mercado de desenvolvimento de software. São ótimos para orientar decisões de carreira e identificar habilidades em alta.
- DevSkiller Report 2025
- Stack Overflow Developer Survey 2025
- Stack Overflow Developer Survey 2024
- JetBrains Developer Ecosystem 2024
- GitHub Octoverse 2024
O Figma é uma das principais ferramentas de design de interfaces e prototipagem colaborativa do mercado. Permite criar layouts, fluxos de navegação e componentes reutilizáveis de forma integrada entre designers e desenvolvedores. Com recursos de colaboração em tempo real, facilita a iteração rápida e a validação de ideias, sendo amplamente adotado por equipes ágeis e projetos orientados à experiência do usuário (UX/UI).
- Figma - Community - Template - Dev 1
- Figma - Community - Template - Dev 2
- Figma - Community - Template - Dev 3
- Figma - Community - Template - Dev 4
- Figma - Community - Template - Dev 5
- Figma - Community - Template - Dev 6
- Figma - Templates - AWS Diagram Software
- Figma - Community - Template - AWS Diagram Software
- Figma - Community - Template - Architecture Diagram Components
- Figma - Community - Example - Architecture Diagram Components - Multiplayer
- Figma - Community - Template - Class Diagram Template 1
- Figma - Community - Template - Class Diagram Template 2
- Figma - Community - Template - Class Diagram Kit
- Figma - Community - Template - Class Diagram Components
- Figma - Templates - Sequence Diagram
- Figma - Article - What is a Sequence Diagram
- Figma - Community - Sequence Diagram Template 1
- Figma - Community - Sequence Diagram Template 2
- Figma - Community - Sequence Diagram Template 3
- Figma - Templates - C4 Model Examples
- Figma - Community - The C4 Model for Figma
- Figma - Community - Free Flowchart C4 Model for Visualising Software Architecture
- EdrawMax – Templates de Package Diagram
- Lucid – Package Diagram Templates
- Visual Paradigm – Templates de Package Diagram
- Visual Paradigm – Exemplo de Package Diagram
- SmartDraw – Exemplos de Package Diagram
- Miro - Exemplo de Use Case Diagram
- Edraw – Como Criar um UML Package Diagram
- Lucidchart – Tutorial UML Package Diagram
- Draw.io – Introdução a UML Package Diagrams
- Miro – O que é um UML Package Diagram?