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.
-
Singleton, Factory, Decorator and Observer, with runnable Java examples.
-
Clean, Hexagonal, Layered, MVC, MVVM, EDA and microservice architecture.
-
SOLID, plus design, process, modeling, planning and deployment principles.
-
Waterfall, V-Model and the Unified Process, plus Agile, Scrum, XP, Kanban, Lean and DSDM, the SDLC, and how to choose between them.
-
Feasibility analysis, load balancers and message queues.
-
What QA is, and the methods of testing that support it.
-
Quick references, including the Dependency Injection pattern.
-
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¶
- System Analysis and Design, Alan Dennis, Barbara Haley Wixom, Roberta M. Roth
- Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software
- Software Engineering: A Practitioner's Approach, Roger S. Pressman
Methodologies¶
- Manifesto for Agile Software Development, Beck et al., 2001
- Principles behind the Agile Manifesto
- The Scrum Guide, Ken Schwaber and Jeff Sutherland
- Extreme Programming Explained: Embrace Change, Kent Beck
- Test-Driven Development: By Example, Kent Beck
- User Stories Applied, Mike Cohn
- Agile Estimating and Planning, Mike Cohn
- Lean Software Development: An Agile Toolkit, Mary and Tom Poppendieck
- Kanban: Successful Evolutionary Change for Your Technology Business, David J. Anderson
- Actionable Agile Metrics for Predictability, Daniel S. Vacanti
- The DSDM Agile Project Framework, Agile Business Consortium
- Large-Scale Scrum (LeSS), Craig Larman and Bas Vodde
- Scaled Agile Framework (SAFe)
- Shape Up, Ryan Singer, Basecamp
- Agile Software Development: The Cooperative Game, Alistair Cockburn
- Accelerate, Nicole Forsgren, Jez Humble and Gene Kim
Quality Assurance & Testing¶
- ISO/IEC 25010, Systems and software quality models, International Organization for Standardization
- ISTQB Certified Tester Foundation Level Syllabus, International Software Testing Qualifications Board
- ISTQB Standard Glossary of Terms Used in Software Testing
- IEEE 829, Standard for Software and System Test Documentation
- The Art of Software Testing, Glenford J. Myers, Corey Sandler and Tom Badgett
- Introduction to Software Testing, Paul Ammann and Jeff Offutt
- Lessons Learned in Software Testing, Cem Kaner, James Bach and Bret Pettichord
- Agile Testing: A Practical Guide for Testers and Agile Teams, Lisa Crispin and Janet Gregory
- More Agile Testing: Learning Journeys for the Whole Team, Janet Gregory and Lisa Crispin
- Exploratory Testing Explained, James Bach
- Session-Based Test Management, Jonathan Bach
- xUnit Test Patterns: Refactoring Test Code, Gerard Meszaros
- Mocks Aren't Stubs, Martin Fowler
- The Practical Test Pyramid, Ham Vocke
- Succeeding with Agile, Mike Cohn, source of the test automation pyramid
- Growing Object-Oriented Software, Guided by Tests, Steve Freeman and Nat Pryce
- Working Effectively with Legacy Code, Michael C. Feathers
- Clean Code, Robert C. Martin, source of the FIRST principles
- Continuous Delivery, Jez Humble and David Farley
- Testing Strategies in a Microservice Architecture, Toby Clemson
- Consumer-Driven Contracts, Ian Robinson
- Pact, contract testing documentation
- Practical Combinatorial Testing, D. Richard Kuhn, Raghu N. Kacker and Yu Lei, NIST SP 800-142
- What is Property Based Testing?, David R. MacIver, Hypothesis
- A Survey on Metamorphic Testing, Sergio Segura et al., IEEE Transactions on Software Engineering, 2016
- An Analysis and Survey of the Development of Mutation Testing, Yue Jia and Mark Harman, IEEE Transactions on Software Engineering, 2011
- OWASP Top 10, Open Worldwide Application Security Project
- OWASP Web Security Testing Guide
- Web Content Accessibility Guidelines (WCAG) 2.2, W3C
- Why You Only Need to Test with 5 Users, Jakob Nielsen
- Site Reliability Engineering, Google
- Chaos Engineering: Principles
- Testing in Production, the Safe Way, Cindy Sridharan
- Eradicating Non-Determinism in Tests, Martin Fowler
Licensed under the MIT License. Copyright © 2026 Mani Ebrahimi.