Book cover

Software Engineering: A Modern Approach

Marco Tulio Valente
Associate Professor at ASERG/DCC/UFMG, Brazil

This textbook is designed for use in introductory Software Engineering courses. Additionally, it can be used by junior developers intending to consolidate their knowledge in the field. The book has 350 pages, 10 chapters, and 120 exercises. It also has a Portuguese edition, available here.


Buy an e-book (pdf and epub) on Leanpub

Web Version


Chapter 1: Introduction

Historical Context, Topics of Study

Chapter 2: Processes

Agile Manifesto, XP, Scrum, Kanban

Chapter 3: Requirements

User Stories, Use Cases, MVP, A/B Testing

Chapter 4: Models

Class, Package, Sequence, Activity Diagrams

Chapter 5: Design Principles

Conceptual Integrity, Information Hiding, Cohesion, Coupling, SOLID

Chapter 6: Design Patterns

Factory, Singleton, Proxy, Adapter, Facade, Decorator, Strategy, Observer, Template Method, Visitor

Chapter 7: Architecture

MVC, Microservices, Message-Oriented, Pub/Sub

Chapter 8: Testing

Unit Tests, Principles and Smells, Coverage, Testability, Mocks, TDD, Integration Tests, E2E Tests

Chapter 9: Refactoring

Examples, Refactoring Practice, Automated Refactorings, Code Smells

Chapter 10: DevOps

Version Control, Continuous Integration, Continuous Deployment

Appendix: Git

License: Version for personal use only. Redistribution or modifications are prohibited.


Short Articles

These articles complement the content of the book:


If you're an instructor, you can use this form to request the answers to the exercises.


Marco Tulio Valente holds a Ph.D. in Computer Science from the Federal University of Minas Gerais, Brazil, where he is an Associate Professor in the Department of Computer Science since 2009. Previously, he was an adjunct professor at PUC Minas for 11 years and a senior systems analyst at a telecommunication company for four years. He is the author of more than 170 papers and has supervised over 30 master's dissertations and 15 doctoral theses.

Citing the Book

Marco Tulio Valente. Software Engineering: A Modern Approach, 2024. (bibtex)


To report errors or typos, use this form.

Follow us on LinkedIn or Twitter.