Вы научитесь строить UML-диаграммы, будете рефакторить код, проводить архитектурные границы, анализировать системы. Каждый участник выполнит курсовой проект: спроектирует и полностью опишет информационную систему так, как это происходит в реальной производственной деятельности.
Установочная сессия со спикерами
Первый модуль: введение в архитектуру приложений
Познакомимся с подходами и парадигмами архитектуры приложений
- Тема I. Проблематика, почему важно проектировать софт грамотно. Зачем нужна архитектура, что бывает, когда о ней не думают.
- Тема II. Изоляция как средство контроля сложности. Спагетти-код. Модульность. Связанность (coupling). Статическое связывание, динамическое связывание. Компоненты и их взаимодействие. Компонент как самостоятельная сущность. Проектирование слабосвязанных компонентов. Тестирование компонентов. MVC как пример модульного паттерна. Причины изменений, изоляция по принципу причин изменений.
Второй модуль: Unified Modelling Language
Освоим язык графического отображения: сможете читать и проектировать с помощью этого языка. Научимся использовать диаграммы для визуализациии архитектруры и связей.
- Тема I. Основные компоненты, что ими можно выражать, для чего они нужны.
- Тема II. Диаграммы классов, деятельности, последовательности и прецедентов.
- Тема III. Недостатки UML. Модель C4. Инструменты
Третий модуль: принципы ООП
Научимся анализировать высокоуровнево: будете знать, как решать проблему и с помощью какой парадигмы.
- Тема I. Обзор парадигм программирования.
- Тема II. ООП, принципы. ООП как средство архитектуры. Классы и методы. Объектный подход, как метод изоляции. Интерфейсы и абстрактные классы. Проблемы наследования.
- Тема III. Принципы ООП: (SOLID, DRY).
АМА-сессия со спикерами
Четвертый модуль: паттерны проектирования
Научимся проектировать системы, используя паттерны: поймете преимущества и ограничения паттернов, сможете распознать в системах примененные паттерны
- Тема I. Что такое паттерны и зачем они нужны. Их виды.
- Тема II. Порождающие и структурные паттерны.
- Тема III. Поведенческие паттерны.
- Тема IV. Антипаттерны.
Пятый модуль: чистая архитектура
Научимся проектировать по критериям чистой архитектуры, находить отклонения от чистой архитектуры и предлагать варианты системного решения. Научимся применять компановку кода, проектировать и проводить архитектурные границы для упрощения дальнейшего изменения и поддержки кода.
- Тема I. Coupling & Cohesion (Связанность и сочетаемость).
- Тема II. Архитектурные границы.
- Тема III. Чистая архитектура.
Шестой модуль: различные архитектурные подходы
Научимся выбирать подход к решению поставленных производственных задач, объяснять преимущества или чужие/собственные решения. Сможем находить подходящие решения для поставленных задач с учётом актуальной ституации
- Тема I. Требования, предметная область. Анализ. Функциональные/нефункциональные требования.
- Тема II. Архитектуные стили. Луковая, многоуровневая, сервис-ориентированная, микросервисная, event-driven.
- Тема III. Архитектура приложений. MVC, MVP, MVVM, MV*.
АМА-сессия со спикерами
Седьмой модуль: архитектура везде
Научимся применить знания об архитектуре к различным уровням масштаба (не только компоновка классов и модулей, но и целых систем)
- Тема I. Виды архитекторов и их задачи.
- Тема II. Архитектуры на разных уровнях (embedded, application, distributed system, cloud-native service).
Восьмой модуль: подводим итоги
Научимся без проблем выбирать инструмент под конкретную задачу
- Тема I. Обзор основных инструментов и технологий, их место в архитектуре и принципы выбора.
- Хранение данных: S3, Ceph, Posgres, MongoDB, Clickhouse, Neo4J, Cassandra, KeyValue.
- Очереди: AMQP, Rabbit, Kafka, MQTT.
- Языки: Python, Java, GO, C++, Javascript/Typescript.
- Интерфейс: Консоль, нативные приложения, WEB: React, Vue, Angular, Jquery, гибрид, чатботы.
- Инфраструктурные инструменты: docker, k8s, terraform, ansible.
АМА-сессия со спикерами
Защита проекта