Software Engineering: A Modern Approach

Marco Tulio Valente

Associate Professor at ASERG/DCC/UFMG, Brazil

This textbook is tailored for introductory Software Engineering courses. It can also be used by junior developers seeking foundational knowledge in the following topics:

  • Agile methods, such as Scrum, XP, and Kanban.
  • Agile requirements specification, including user stories, MVPs, and A/B testing.
  • Software design, including design principles and design patterns.
  • Software architecture, including MVC, microservices, and publish/subscribe.
  • Software testing, with a focus on unit testing and testability.
  • Refactoring, with real examples of refactorings and code smells.
  • DevOps, including continuous integration and deployment.

The book has 359 pages, 10 chapters, and 120 exercises. It has also a Portuguese edition, available here.

Web Version

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


  • Google Slides with exercises (by chapter): 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Ap
  • True or False exercises (by chapter): 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
  • Hands-on exercises: CI Servers
  • New Source code examples on an online IDE (by chapter): 6


If you are an instructor using our book, please 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 4 years. He is the author of more than 150 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.