Архитектура приложений: пиши как разработчик, думай как архитектор
Когда
Формат
Видеокурс
Сентябрь'22
Продолжительность
3 месяца
Курс для разработчиков и техлидов. Рекомендован к прохождению командой или индивидуально.
Почему важна архитектура приложений
Архитектура приложений — это искусство проектировать и создавать масштабные программные системы.
Изначально приложения создавали без проектирования. Это казалось удобным: никаких издержек, связанных с планированием, и ускоренное прототипирование.
Но по мере развития приложения усложнялись, теряли гибкость и управляемость, а каждое новое изменение обходилось всё дороже.
Правильно выбранная архитектура означает выгоду — приложение с такой архитектурой легче расширять, изменять, тестировать, отлаживать и понимать.
1
2
3
4
Что даёт архитектура приложений?
Благодаря правильно выбранной архитектуре вы можете:
повышать скорость разработки даже сложного приложения
менять структуру даже в старых версиях приложения
гибко изменять отдельные блоки приложения
упрощать онбординг новых сотрудников
обеспечить бесшовную ротацию разработчиков между проектами
5
Польза курса для бизнеса
Отправляя сотрудников на наш курс, вы снизите долгосрочную дороговизну и сложность разработки. Даже одна идея по архитектуре внедренная по итогу курса, может окупить в несколько раз стоимость самого курса.
У курса нет аналогов на рынке, которые бы так подробно раскрывали все грани архитектуры в проектах и погружали в детали, основанные на реальных рабочих кейсах.
Масштабируемость:
время на разработку и дополнение уменьшается. Хорошая архитектура позволяет направить разработку в несколько параллельных потоков
Взаимопонимание в команде:
после прохождения курса сложится единое понимание архитектуры всей командой
Легкая ротация сотрудников:
решает вопрос уязвимости ввода/вывода сотрудников с проекта. Позволяет менять разработчиков безболезненно
Как проходит обучение
Участники курса обучаются в онлайн формате с выполнением лабораторных работ для закрепления материала. По самым важным заданиям будет ревью. Раз в неделю проходят встречи со спикером. Для участников курса будет создан закрытый чат — в нём учащиеся смогут задать вопросы и получить дополнительную помощь.
Программа
Тема I. Введение в архитектуру приложений. Знакомство со спикером. Какие проблемы решает архитектура. Изменяемость как ключевое качество системы. Эволюционирующая архитектура. Задачи, цели и методы архитектора. Hard skills, soft skills, обучение команды. Определение сложности и управление сложностью. Архитектура, Функциональность и их баланс. Обзор программы курса.
Тема II.Изоляция как средство контроля сложности. Спагетти-код. Модульность. Связанность (coupling). Статическое связывание, динамическое связывание. Компоненты и их взаимодействие. Компонент как самостоятельная сущность. Проектирование слабосвязанных компонентов. Тестирование компонентов. MVC как пример модульного паттерна. Причины изменений, изоляция по принципу причин изменений.
Тема I. ООП как средство архитектуры. Классы и методы. Объектный подход как метод изоляции. Интерфейсы и абстрактные классы. Проблемы наследования.
Тема II.Что такое паттерны проектирования и чем они помогают программисту. Преимущества для проектирования. Преимущества для командной разработки. Кустарное производство против промышленного. Виды паттернов: основные, порождающие, структурные, поведенческие. Применение паттернов на практике.
Тема I.Введение в UML, зачем нужен. UML как средство описания архитектуры. Диаграммы структур, диаграммы поведений (обзорно). Диаграммы структур глубже. Описываем паттерны из 2.2 при помощи UML.
Тема II.Паттерны проектирования II. Продолжаем рассматривать структурные паттерны. Добавляем порождающие паттерны. Builder, Abstract Factory, Singleton, Object Pool.
Тема I.Основы объектно-ориентированного анализа. Предметная область. Stakeholders. «Everybody lies». Идентификация пользователей. User stories. Переход от user stories к моделям.
Тема II.Паттерны поведения. Command, Chain of responsibility, Iterator, Observer. Применение поведенческих паттернов на практике.
Тема I.Проектирование с использованием ООА
Тема II.Введение в принципы проектирования: SOLID, DRY, KISS etc. Ответственность и распределение ответственности. Проектирование по ответственности.
Тема III. Проектирование компонент, открытых для расширения, но закрытых для изменения