Программа
Вы научитесь строить UML-диаграммы, будете рефакторить код, проводить архитектурные границы, анализировать системы. Каждый участник выполнит курсовой проект: спроектирует и полностью опишет информационную систему так, как это происходит в реальной производственной деятельности.
у вас будет 2 недели на сдачу домашней работы
Введение в архитектуру приложений
Познакомимся с подходами и парадигмами архитектуры приложений
Тема I. Проблематика, почему важно проектировать софт грамотно. Зачем нужна архитектура, что бывает, когда о ней не думают.
Тема II. Изоляция как средство контроля сложности. Спагетти-код. Модульность. Связанность (coupling). Статическое связывание, динамическое связывание. Компоненты и их взаимодействие. Компонент как самостоятельная сущность. Проектирование слабосвязанных компонентов. Тестирование компонентов. MVC как пример модульного паттерна. Причины изменений, изоляция по принципу причин изменений.
Установочная сессия со спикерами
Знакомство студентов с курсом, спикерами и куратором. Расскажем основные организационные моменты, про программу курса, как сдавать практики на ревью.
Unified Modeling 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.
АМА-сессия со спикерами
Онлайн встреча со спикерами в формате вопрос-ответ
Завершающий модуль
Защита проекта
Завершающая встреча
Открытая защита проекта по желанию. Готовьте проект в течение всего курса, приходите на защиту, получайте фитбек от спикеров