Skip to content

Software Engineering Handbook

A free, open-source handbook of the concepts every software engineer is expected to know: design patterns, software architecture, SOLID principles, process models, methodologies, system design and quality assurance, each explained in short, example-driven pages with quizzes to check understanding.

Written while studying software engineering, kept for peers and beginners.

  • Design Patterns

    Singleton, Factory, Decorator and Observer, with runnable Java examples.

  • Software Architecture

    Clean, Hexagonal, Layered, MVC, MVVM, EDA and microservice architecture.

  • Principles

    SOLID, plus design, process, modeling, planning and deployment principles.

  • Methodologies

    Waterfall, V-Model and the Unified Process, plus Agile, Scrum, XP, Kanban, Lean and DSDM, the SDLC, and how to choose between them.

  • System Design

    Feasibility analysis, load balancers and message queues.

  • Quality Assurance

    What QA is, and the methods of testing that support it.

  • Snippets & Cheatsheets

    Quick references, including the Dependency Injection pattern.

  • Assessments

    Longer mixed quizzes for checking what actually stuck.

Contributing

This repository aims to become one of the most useful open software engineering guides available, and contributions are very welcome. Fork the repository, add or improve a page, and open a pull request.

Sources & references

General

  1. System Analysis and Design, Alan Dennis, Barbara Haley Wixom, Roberta M. Roth
  2. Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software
  3. Software Engineering: A Practitioner's Approach, Roger S. Pressman

Methodologies

  1. Manifesto for Agile Software Development, Beck et al., 2001
  2. Principles behind the Agile Manifesto
  3. The Scrum Guide, Ken Schwaber and Jeff Sutherland
  4. Extreme Programming Explained: Embrace Change, Kent Beck
  5. Test-Driven Development: By Example, Kent Beck
  6. User Stories Applied, Mike Cohn
  7. Agile Estimating and Planning, Mike Cohn
  8. Lean Software Development: An Agile Toolkit, Mary and Tom Poppendieck
  9. Kanban: Successful Evolutionary Change for Your Technology Business, David J. Anderson
  10. Actionable Agile Metrics for Predictability, Daniel S. Vacanti
  11. The DSDM Agile Project Framework, Agile Business Consortium
  12. Large-Scale Scrum (LeSS), Craig Larman and Bas Vodde
  13. Scaled Agile Framework (SAFe)
  14. Shape Up, Ryan Singer, Basecamp
  15. Agile Software Development: The Cooperative Game, Alistair Cockburn
  16. Accelerate, Nicole Forsgren, Jez Humble and Gene Kim

Quality Assurance & Testing

  1. ISO/IEC 25010, Systems and software quality models, International Organization for Standardization
  2. ISTQB Certified Tester Foundation Level Syllabus, International Software Testing Qualifications Board
  3. ISTQB Standard Glossary of Terms Used in Software Testing
  4. IEEE 829, Standard for Software and System Test Documentation
  5. The Art of Software Testing, Glenford J. Myers, Corey Sandler and Tom Badgett
  6. Introduction to Software Testing, Paul Ammann and Jeff Offutt
  7. Lessons Learned in Software Testing, Cem Kaner, James Bach and Bret Pettichord
  8. Agile Testing: A Practical Guide for Testers and Agile Teams, Lisa Crispin and Janet Gregory
  9. More Agile Testing: Learning Journeys for the Whole Team, Janet Gregory and Lisa Crispin
  10. Exploratory Testing Explained, James Bach
  11. Session-Based Test Management, Jonathan Bach
  12. xUnit Test Patterns: Refactoring Test Code, Gerard Meszaros
  13. Mocks Aren't Stubs, Martin Fowler
  14. The Practical Test Pyramid, Ham Vocke
  15. Succeeding with Agile, Mike Cohn, source of the test automation pyramid
  16. Growing Object-Oriented Software, Guided by Tests, Steve Freeman and Nat Pryce
  17. Working Effectively with Legacy Code, Michael C. Feathers
  18. Clean Code, Robert C. Martin, source of the FIRST principles
  19. Continuous Delivery, Jez Humble and David Farley
  20. Testing Strategies in a Microservice Architecture, Toby Clemson
  21. Consumer-Driven Contracts, Ian Robinson
  22. Pact, contract testing documentation
  23. Practical Combinatorial Testing, D. Richard Kuhn, Raghu N. Kacker and Yu Lei, NIST SP 800-142
  24. What is Property Based Testing?, David R. MacIver, Hypothesis
  25. A Survey on Metamorphic Testing, Sergio Segura et al., IEEE Transactions on Software Engineering, 2016
  26. An Analysis and Survey of the Development of Mutation Testing, Yue Jia and Mark Harman, IEEE Transactions on Software Engineering, 2011
  27. OWASP Top 10, Open Worldwide Application Security Project
  28. OWASP Web Security Testing Guide
  29. Web Content Accessibility Guidelines (WCAG) 2.2, W3C
  30. Why You Only Need to Test with 5 Users, Jakob Nielsen
  31. Site Reliability Engineering, Google
  32. Chaos Engineering: Principles
  33. Testing in Production, the Safe Way, Cindy Sridharan
  34. Eradicating Non-Determinism in Tests, Martin Fowler

Licensed under the MIT License. Copyright © 2026 Mani Ebrahimi.