title: "Book - Software Engineering for Self-Directed Learners" siteNav: mainNav.md Software Engineering for Self-Directed Learners About this Book Acknowledgements How to use this book Software Engineering Software Engineering {{icon_print}} Object-Oriented Programming Object-Oriented Programming {{icon_print}} Requirements Requirements {{icon_print}} Gathering Requirements {{icon_print}} Specifying Requirements {{icon_print}} Design Design {{icon_print}} Design Fundamentals {{icon_print}} Modeling {{icon_print}} Architecture {{icon_print}} Design Patterns {{icon_print}} Design Approaches {{icon_print}} Implementation IDEs {{icon_print}} Code Quality {{icon_print}} Refactoring {{icon_print}} Documentation {{icon_print}} Error Handling {{icon_print}} Integration {{icon_print}} Reuse {{icon_print}} Quality Assurance Quality Assurance {{icon_print}} Testing {{icon_print}} Test Case Design {{icon_print}} Project Management Revision Control {{icon_print}} Project Planning {{icon_print}} Teamwork {{icon_print}} Process Models {{icon_print}} Tools UML {{icon_print}} Intellij IDEA {{icon_print}} Git and GitHub {{icon_print}} Principles Principles {{icon_print}} Supplementary C++ to Java {{icon_print}} Combined Exercises List of Definitions List of References List of Learning Outcomes Printable Version {{icon_print}}