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:
Understand the definition and significance of software architecture
Gain insights into the architecture process and its evolution
Explore different types of software architecture and their applications
Learn to apply architectural principles in software development
Identify and select appropriate architectural patterns
Design various types of applications, including web, mobile, and service applications
Address cross-cutting concerns such as performance, security, reliability, and testability
Acquire knowledge of architecture refactoring and trade-off analysis
Develop test design and tactics for architectural validation
Enhance soft skills related to architecture, such as translating requirements into architecture and identifying architectural characteristics
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