Software Architect's Handbook — Concept Wiki
A personal, distilled knowledge base derived from Software Architect’s Handbook (Packt, 2018). Each concept is summarized for study; see each page’s Citations for source pages. Not a reproduction of the book.
118 concepts across 10 types / 17 chapters — searchable and cross-linked. Use the search bar or browse the index below.
Concepts (23)
Section titled “Concepts (23)”- What is software architecture?
- Who are the consumers of software architectures?
- Software product lines
- Domain-driven design
- Quality attributes
- Software architecture design
- The importance of software architecture design
- Greenfield versus brownfield software systems
- Architectural drivers
- Software architecture patterns
- Cloud-native applications
- Cross-cutting concerns
- Types of cross-cutting concerns
- The importance of performance
- Defining performance terminology
- Securing software systems
- Cryptography
- Identity and access management (IAM)
- DevOps
- Deploying to the cloud
- Legacy applications
- Soft skills
- Change is inevitable
Principles (9)
Section titled “Principles (9)”- Why is software architecture important?
- Designing orthogonal software systems
- Minimizing complexity
- Following SOLID design principles
- General guidelines for cross-cutting concerns
- Secure by design
- Architecting for DevOps
- Lehman’s laws of software evolution
- Taking responsibility for your work
Patterns (11)
Section titled “Patterns (11)”- Layered architecture
- Event-driven architecture
- The Model-View-Controller pattern
- The Model-View-Presenter pattern
- The Model-View-ViewModel pattern
- The Command Query Responsibility Segregation pattern
- Service-oriented architecture
- Monolithic architecture
- Microservice architecture
- Serverless architecture
- Cross-cutting concerns for microservices
Practices (28)
Section titled “Practices (28)”- Project management
- Office politics
- Software risk management
- Configuration management
- Developing business acumen
- Leveraging design principles and existing solutions
- Documenting the software architecture design
- Tracking the progress of the software architecture’s design
- Helping your team succeed
- Uses of software architecture documentation
- DevOps practices
- Refactoring legacy applications
- Moving to an agile approach
- Modernizing build and deployment processes
- Integrating with legacy applications
- Communication
- Leadership
- Negotiation
- Working with remote resources
- Designing evolutionary architectures
- Practicing continuous learning
- Participating in open source projects
- Writing your own blog
- Spending time teaching others
- Trying new technologies
- Continuing to write code
- Attending user groups and conferences
- Attending to your well-being
Techniques (11)
Section titled “Techniques (11)”- Requirements elicitation
- Top-down versus bottom-up design approaches
- Implementing cross-cutting concerns
- Aspect-oriented programming
- Server-side caching
- Improving web application performance
- Database performance
- Threat modeling
- Creating architecture descriptions (ADs)
- DevOps toolchain
- Migrating to the cloud
Processes (9)
Section titled “Processes (9)”- Software development methodologies
- Requirements engineering
- Using a systematic approach to software architecture design
- Attribute-driven design (ADD)
- Microsoft’s technique for architecture and design
- Architecture-centric design method (ACDM)
- Architecture development method (ADM)
- Taking a systematic approach to performance improvement
- Reviewing software architectures
Quality Attributes (6)
Section titled “Quality Attributes (6)”Roles (2)
Section titled “Roles (2)”Checklists (1)
Section titled “Checklists (1)”Chapter Summaries (18)
Section titled “Chapter Summaries (18)”- Summary (Ch1)
- Summary (Ch2)
- Summary (Ch3)
- Summary (Ch4)
- Summary (Ch5)
- Summary (Ch6)
- Summary (Ch7)
- Summary (Ch8)
- Summary (Ch9)
- Summary (Ch10)
- Summary (Ch11)
- Summary (Ch12)
- Summary (Ch13)
- Summary (Ch14)
- Summary (Ch15)
- Summary (Ch16)
- Summary (Ch17)
- Leave a review - let other readers know what you think