Software Architecture Training for Industry Professionals (Online)
Software Architecture Training for Industry Professionals (Online)
Instructor: Prof. Dr. Mert Özkaya
Duration: Flexible, ranging from 3 hours to a full day (8 hours) or up to 10 hours, tailored to the needs of the organization. Contact us to discuss your preferred duration.
Target Audience: Software developers, engineers, and architects working in the industry
Objective: To provide a comprehensive, interactive online training on software architecture principles, techniques, and practical applications, including C4 model-based documentation and reference architecture creation, enabling participants to design, analyze, document, and implement robust software architectures in their projects.
Session 1: Introduction to Software Architecture
Objective: Understand the concept of software architecture and its importance in software development.
Topics:
Definition and significance of software architecture
Role in system design and development
Key benefits: scalability, maintainability, reusability
Overview of architectural styles (e.g., layered, microservices)
Session 2: Architectural Styles and Software Connectors
Objective: Explore common architectural styles and the role of connectors in system design.
Topics:
Architectural styles: Client-Server, Pipe-and-Filter, Microservices, etc.
Software connectors: RPC, message queues, event buses
Trade-offs in real-world applications
Session 3: Software Architecture Modeling with UML
Objective: Learn visual techniques for modeling software architectures using UML.
Topics:
Introduction to software architecture modeling
UML diagrams: Component, Deployment, Class diagrams
Best practices for clear and effective models
Session 4: C4 Model for Software Architecture Documentation
Objective: Understand and apply the C4 model for documenting software architectures.
Topics:
Introduction to the C4 model: Context, Container, Component, and Code diagrams
Benefits of C4 for clear and scalable documentation
Best practices for creating C4 diagrams
Session 5: Advanced C4 Model Documentation
Objective: Deepen understanding of C4 model by focusing on Component and Code diagrams.
Topics:
Creating detailed Component and Code diagrams
Integrating C4 with development workflows
Tools for C4 modeling (e.g., Structurizr, PlantUML)
Session 6: Architecture Description Languages (ADLs)
Objective: Understand ADLs and their role in specifying software architectures, focusing on XCD.
Topics:
Overview of ADLs and their benefits.
Introduction to XCD: Syntax and use cases
Comparison of ADLs with visual modeling (e.g., UML, C4)
Session 7: Analysis of Software Architectures
Objective: Understand techniques for analyzing software architectures using Formal Verification Methods and Languages to prove correctness and check critical properties.
Topics:
Introduction to Formal Verification Methods and Languages in architecture analysis
Using Finite State Process Algebra to prove correctness of architectural design decisions
Checking properties like deadlock and livelock, and discussing their importance in reliable system design
Session 8: Creating Reference Architectures
Objective: Understand the concept of reference architectures and their development.
Topics:
Definition and purpose of reference architectures
Key components: patterns, guidelines, and best practices
Examples: Cloud-native, enterprise, IoT reference architectures
Delivery Method
Format: Fully online, featuring interactive lectures, hands-on exercises, and group discussions via a video conferencing platform (e.g., Zoom, Microsoft Teams).
Tools:
Architecture modeling: Structurizr, PlantUML for C4 diagrams and UML modeling.
Formal verification: LTSA (Labelled Transition System Analyser) model checker for analyzing architectural designs using Finite State Process Algebra (FSP) to verify correctness and check properties like deadlock and livelock.
Collaboration: Miro or Confluence for group activities and architecture design.
Materials: Digital slide decks, C4 and UML templates, sample reference architectures, LTSA setup guides and FSP examples, and recorded session access (if permitted).
Technical Requirements: Stable internet, webcam, microphone, and access to cloud-based or locally installed tools. Pre-session setup guides provided for Structurizr, PlantUML, and LTSA installation and configuration.
Learning Outcomes
By the end of the 10-Hour Online Software Architecture Training, participants will be able to:
Understand Software Architecture Fundamentals: Define software architecture as a system blueprint and explain its role in enhancing scalability, maintainability, and reusability in domains like enterprise, cloud-native, and IoT systems.
Understand Architectural Styles and Connectors: Analyze architectural styles (e.g., Client-Server, Microservices, Pipe-and-Filter) and connectors (e.g., RPC, message queues, event buses), assessing their trade-offs for performance, complexity, and scalability in real-world projects.
Understand UML Modeling: Comprehend UML diagrams (Component, Deployment, Class) and their application in visualizing architectures for clarity and alignment in domains like telecommunications or healthcare.
Understand C4 Model Documentation: Explain the C4 model (Context, Container, Component, Code diagrams) and its benefits for clear, scalable documentation integrated into development workflows.
Understand Developing C4 Diagrams with Tools: Comprehend the use of Structurizr and PlantUML to create C4 diagrams, defining system components and interactions for practical software projects.
Understand Architectural Modeling Languages: Examine key Architecture Description Languages (ADLs), including XCD, and evaluate their syntax, use cases, and expressiveness compared to visual modeling like UML and C4 for precise architecture specification.
Understand Analyzing Architectures Using Formal Verification: Comprehend Formal Verification Methods and Languages, such as Finite State Process Algebra, to prove the correctness of architectural design decisions, check properties like deadlock and livelock, and discuss their importance in ensuring reliable system designs.
Understand Reference Architectures: Comprehend the structure, purpose, and components of reference architectures for domains like cloud-native, enterprise, or IoT, incorporating reusable patterns, guidelines, and best practices.
For more information about this course, please contact: mert.ozkaya@yeditepe.edu.tr
To enroll in a course, please complete the form by clicking HERE.