Software Architecture Foundations
1h 36mBeginner2019-03-19
Authors

Allen Holub
Software Architect, Agile Transformation Consultant
Course details
Software architecture is not just putting together existing packages as if they were building blocks. It's a considered approach to design, which helps systems scale with your business and helps your team develop in a more agile way. This course explains what software architecture really is, how it can help you build better applications, and the relationship architecture has to implementation, design, and construction. Instructor Allen Holub discusses what the job looks like, whether you're a traditional or modern architect, and reviews the major theories and concepts you'll need to get started. He also covers Conway's law and domain-based thinking, the differences between system and enterprise architecture, and six of the most common architectural patterns, from monoliths to microservices.
Learning objectives
What is software architecture?
The architect's day-to-day job
Architectural theories and concepts
Gathering requirements
Identifying bounded contexts and entities
Categories of architecture
Architectural patterns
Learning objectives
What is software architecture?
The architect's day-to-day job
Architectural theories and concepts
Gathering requirements
Identifying bounded contexts and entities
Categories of architecture
Architectural patterns
Skills covered
Software ArchitectureFoundationsSoftware Development
Concepts
0. Introduction
- 01 - The importance of software architecture
- 02 - What you need to know
- 03 - What is software architecture
1. The Software Architect
- 04 - What's the job Traditional architects
- 05 - What's the job Modern architects
- 06 - A day in the life of an architect - Morning
- 07 - A day in the life of an architect - Afternoon
- 08 - From developer to architect
2. Thinking Architecturally
- 09 - Conway's law - Architecture and organizational structure
- 10 - Incremental vs. big up-front design
- 11 - Top down vs. bottom up
- 12 - The role of the domain (bounded contexts)
3. A Design Process - A Brief Introduction
- 13 - Requirements gathering - Problem statements and user stories
- 14 - Narrowing - Vertical vs. horizontal splitting
- 15 - Identifying bounded contexts and entities
4. Categories of Architecture
- 16 - System vs. enterprise architecture
- 17 - Design patterns
5. Broad Architectural Patterns
- 18 - Monoliths
- 19 - Microkernel (plugin) architecture
- 20 - Message-based architectures
- 21 - Microservices and miniservices
- 22 - Reactive and choreographed systems
Conclusion
- 23 - Next steps