Overview
This comprehensive 3-day course is designed to provide a solid foundation in software architecture. Participants will gain a deep understanding of software architecture concepts, principles, and best practices. The course covers various aspects of software architecture, including its importance, the architecture process, alternative thoughts, and the different types of architecture.
Objectives
By the end of the course, participants will:
Prerequisites
This course is suitable for software professionals, architects, developers, and individuals involved in software development projects. Participants are expected to have a basic understanding of software development principles and terminology. Familiarity with software design patterns and software development methodologies, such as Agile, will be beneficial but not mandatory.
Course Outline
- Defining Software Architecture
- What’s Architecture and what’s not
- Architecture Process
- Alternative Thoughts of Software Architecture
- Why Software Architecture Matters
- Creating an Architecture
- Patterns and Architecture
- Architecture Evolution and Migration
- Features vs Capabilities
- Different types of Architecture
- Applying Architectural Principle to software
- Acknowledging Requirements
- Who’s the Architect?
- Intentional and Accidental Architects
- The Role of the Architect (Technology Leadership Role)
- Architecture Approach in SAFe Agile
- Architecture Review
- Logical View and Process View for Dynamic design.
- Optimization of Class Design taking Architectural principles into account.
- Identifying Components of Data environment.
- 4+1 Architectural Views and Stakeholder concerns.
- Architectural Patterns: Role and need for Creational Patterns and other GOF Patterns
- Finding and selecting correct patterns
- Component Based Architectural Style
- Domain Driven Design Architectural Style
- Test Driven Development Model
- Layered Architectural Style
- Message-Bus Architectural Style
- N or Multi-Tiered Architectural Style
- Microservices architecture pattern
- Service-oriented architecture pattern
- Service-based architecture pattern
- Comparing service-based architectures
- Service architecture challenges
- Team exercises: Pattern selection
- Layered architecture pattern
- Event-driven architecture pattern
- Microkernel architecture pattern
- Space-based architecture pattern
- Choosing Different types of application
- Choosing an Application Type
- Designing Web Applications
- Designing Rich Client Applications
- Designing Rich Internet Applications
- Designing Mobile Applications
- Designing Service Applications
- Designing Hosted and Cloud Services
- Designing Office Business Applications
- Designing LOB Applications
- Functional vs Non-Functional Requirements
- Differences between functional and non-functional requirements
- Addressing [Assume, this topic deals with Quality attributes along with Design Tactics]
- Performance
- Security
- Reliability
- Testability
- TDD
- BDD
- Extensibility
- Reusability
- Logging
- Fault Tolerance
• Technology Consideration
• Secure Architecture Design
- Architecture Trade-off Analysis
- Test Design and Tactics
- Soft Skills – A Slight Touch
- Translating requirements into architecture
- Identifying architecture characteristics