Get to know the tools of the software trade! Understand the fundamentals of good software design and development, from object-oriented principles to clean code guidelines. Once you have a solid foundation, get your hands dirty with sample programs that use software architecture and design patterns like MVC, factory, chain of responsibility, adapter, and many more. Every program will walk you step by step through a problem, its context, its solution, and relevant limitations. With information on creating good documentation and implementing best practices, this comprehensive guide will improve…mehr
Get to know the tools of the software trade! Understand the fundamentals of good software design and development, from object-oriented principles to clean code guidelines. Once you have a solid foundation, get your hands dirty with sample programs that use software architecture and design patterns like MVC, factory, chain of responsibility, adapter, and many more. Every program will walk you step by step through a problem, its context, its solution, and relevant limitations. With information on creating good documentation and implementing best practices, this comprehensive guide will improve your applications!
Kristian Köhler is a software architect and developer with a passion for solving problems using efficient, well-structured software. He is the managing director of Source Fellows GmbH.
Inhaltsangabe
1 ... Introduction ... 15 1.1 ... Programming Paradigms ... 17 1.2 ... What Are Design Patterns and How Did They Come About? ... 27 1.3 ... What Are Software Architecture and Software Design? ... 31 1.4 ... The Evolution of Software Development and Architecture ... 38 2 ... Principles of Good Software Design ... 63 2.1 ... Basic Concepts of Object-Oriented Programming ... 64 2.2 ... Clean Code Principles ... 75 2.3 ... SOLID Principles ... 108 2.4 ... Information Hiding ... 131 2.5 ... Inversion of Control and Dependency Injection ... 132 2.6 ... Separation of Concerns and Aspect Orientation ... 134 2.7 ... Quality Assurance with Unit Tests ... 137 3 ... Source Code and Documenting the Software Development ... 143 3.1 ... Comments in the Source Code ... 143 3.2 ... Documenting the Software Architecture ... 157 3.3 ... Representing Software in Unified Modeling Language ... 169 3.4 ... C4 Model for Representing Software Architecture ... 180 3.5 ... Doc-as-Code ... 188 4 ... Software Patterns ... 197 4.1 ... Factory Method ... 198 4.2 ... Builder ... 206 4.3 ... Strategy ... 216 4.4 ... Chain of Responsibility ... 223 4.5 ... Command ... 232 4.6 ... Observer ... 243 4.7 ... Singleton ... 251 4.8 ... Adapter/Wrapper ... 259 4.9 ... Iterator ... 268 4.10 ... Composite ... 276 4.11 ... The Concept of Anti-Patterns ... 283 5 ... Software Architecture, Styles, and Patterns ... 289 5.1 ... The Role of the Software Architect ... 290 5.2 ... Software Architecture Styles ... 292 5.3 ... Styles for Application Organization and Code Structure ... 310 5.4 ... Patterns for the Support of Architectural Styles ... 324 6 ... Communication Between Services ... 347 6.1 ... Styles of Application Communication ... 349 6.2 ... Resilience Patterns ... 356 6.3 ... Messaging Patterns ... 388 6.4 ... Patterns for Interface Versioning ... 411 7 ... Patterns and Concepts for Distributed Applications ... 421 7.1 ... Consistency ... 422 7.2 ... The CAP Theorem ... 423 7.3 ... The PACELC Theorem ... 424 7.4 ... Eventual Consistency ... 425 7.5 ... Stateless Architecture Pattern ... 428 7.6 ... Database per Service Pattern ... 434 7.7 ... Optimistic Locking Pattern ... 437 7.8 ... Saga Pattern: The Distributed Transactions Pattern ... 446 7.9 ... Transactional Outbox Pattern ... 450 7.10 ... Event Sourcing Pattern ... 455 7.11 ... Command Query Responsibility Segregation Pattern ... 461 7.12 ... Distributed Tracing Pattern ... 467 ... The Author ... 479 ... Index ... 481