Skip to content

Repository files navigation

🛠️ Software Engineering Handbook

Read it online: https://maniebra.github.io/software-engineering-handbook/

Since I am studying software engineering, I encountered many concepts and ideas that every software engineer needs to know. Hence, I decided to compile them all into one repository that my peers and beginners can use.

📃 Table of Contents

📚 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

UI/UX

  1. Universal Principles of Design, William Lidwell, Kritina Holden, Jill Butler
  2. Laws of UX, Jon Yablonski
  3. 10 Usability Heuristics for User Interface Design, Jakob Nielsen
  4. Thinking, Fast and Slow, Daniel Kahneman
  5. Flow: The Psychology of Optimal Experience, Mihaly Csikszentmihalyi

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

🤝 Contributing

Since I created this repository in hopes of becoming one of the most outstanding software engineering guides one day, your contributions will be much appreciated. To contribute to this project, you have to follow these steps:

  1. Fork the repository.
  2. Clone the forked repository to your local device.
  3. Add your contents or modify the contents you see fit to alter.
  4. Create a pull request.
  5. Wait until your pull request is reviewed.
  6. If all is good, your contribution will be merged into this repository!

⚖️ License

This project is licensed under the MIT License.

Copyright © 2026 Mani Ebrahimi

You are free to use, copy, modify, merge, publish, distribute, sub-license, and/or sell copies of this software, subject to the following conditions:

  1. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
  2. The software is provided "as is", without warranty of any kind, express or implied, including but not limited to warranties of merchantability, fitness for a particular purpose, and noninfringement.

For more details, refer to the LICENSE file.