Book cover

Software Engineering: A Modern Approach

This textbook is designed for undergraduate software engineering courses. Additionally, it can be used by junior developers looking to consolidate their knowledge in the field. The book has 350 pages, 10 chapters, and 120 exercises. A Portuguese edition is also available here.

New Bonus Chapter: AI-Assisted Software Engineering (slides)

E-book

Buy on Leanpub (pdf and epub). After purchasing, you can use Amazon's Send to Kindle service to transfer the epub to your Kindle.

Web Version

Preface

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

Bonus Chapter (online only): AI-Assisted Software Engineering

Coding Assistants, Coding Agents, MCP, Prompt Engineering

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

Podcast

AI-generated podcast featuring chapter summaries for a quick review of the book’s content. Listen on Spotify, Apple Podcasts, Pocket Casts, or subscribe to the podcast feed.

Resources

Instructors

If you're an instructor, use this form to request the exercise answers and links to the slides in Google Slides.

Supplementary Articles

These articles complement the book's content:

Slide decks: deck 1 (ch. 2-3); deck 2 (ch. 5-6); deck 3 (ch. 7); deck 4 (ch. 8-10)

Universities Using Our Book

See a list of universities that are using our book.

🌎 Are you an instructor using the book? Please let us know by completing this form.

FAQ

1. Will an open version of the book remain available? Yes, the web version will remain freely available.

2. What is the difference between the web and e-book versions? The content is identical, but the e-book has more refined formatting.

3. How can I support the project? The best way is to purchase the e-book.

Author

Marco Tulio Valente holds a Ph.D. in Computer Science from the Federal University of Minas Gerais, Brazil, where he is a Professor in the Department of Computer Science. Previously, he was an Adjunct Professor at PUC Minas for 11 years and a Systems Analyst at a telecommunications company for four years. He has authored more than 170 papers and supervised 39 master's theses and 16 doctoral dissertations.

Citing the Book

Please use the following reference:

Marco Tulio Valente. Software Engineering: A Modern Approach. Self-published, 2024. ISBN 978-65-01-26467-7. https://softengbook.org (bibtex)

Contact

To report errors or typos, use this form. All other feedback is also welcome.

For updates follow us on X or LinkedIn.