Архитектура и шаблоны проектирования

Применяйте шаблоны проектирования и SOLID в разработке

26 июня

Professional

4 месяца

Онлайн

Пн/Ср 20:00 Мск

Для кого этот курс?

  •  Разработчики на любом языке программирования. Вы сможете изучить основные паттерны проектирования и научиться применять их в сложных ситуациях.
  • Если вы сами разрабатываете программные продукты, занимаетесь интеграцией или развитием существующих продуктов

Необходимые знания:

  • Знание одного из языков программирования: C++, C#, Java, Kotlin, PHP или Python
  • Знание принципов ООП

Что вам даст этот курс?

С одной стороны, разработка ПО — это процесс ведения разработки, тестирование, быстрая разработка и устранение дефектов.
С другой, это знание всех участвующих бизнес-процессов, умение описать архитектуру на разных уровнях представления, что необходимо для контроля архитектуры ПО на уровне большого предприятия.
С третьей, это внутренняя компоновка модулей разрабатываемого продукта, подразумевающая масштабируемость.

Всего этого можно достичь, используя шаблоны проектирования, которые изучим на этом курсе.

После курса вы будете:

  1. Применять шаблоны проектирования в разработках
  2. Будете понимать и применять SOLID принципы
  3. Поймете, что такое рефакторинг и как писать чистый код
  4. Знать современные процессы разработки программного обеспечения

Любой язык программирования

Курс не привязан к конкретному языку программирования. Вы сможете выполнять практические задания на комфортном для вас языке программирования.

Процесс обучения

Все обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в telegram курса, сдача домашних работ и получение обратной связи от преподавателя. Вебинары идут дважды в неделю по 2 академических часа (то есть астрономических 1,5 часа). Все вебинары сохраняются и в записи в вашем личном кабинете. Домашнее задание выдается в среднем раз в 2 недели, а его выполнение занимает 3-5 часов. Мы горячо призываем заниматься такой самостоятельной работой, так как это поможет вам качественно освоить все изучаемые технологии на практике с поддержкой и обратной связью наших преподавателей.

Разработайте собственный проект

Сможете внести сильный проект в портфолио

Авторский курс

Курс составлен экспертом - Евгением Тюменцевым

Преподаватели-практики

Опытные спикеры из разных сфер

Трудоустройство

Многие студенты еще во время прохождения первой части программы находят или меняют работу, а к концу обучения могут претендовать на повышение в должности.

  • Получите помощь с оформлением резюме, портфолио и сопроводительного письма
  • Разместите свое резюме в базе OTUS и сможете получать приглашения на собеседования от партнеров

Программист

Перспективы направления
Средний уровень зарплат в Москве:
70 000Junior+ специалист
150 000Middle+ специалист
230 000Senior специалист
20257
актуальных вакансий

Работодатели курса

Формат обучения

Интерактивные вебинары

 

2 онлайн-трансляции по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда

Практика

 

Домашние задания + проектная работа, для усиления вашего портфолио и компетенций

Активное комьюнити

Общайтесь с преподавателями голосом на вебинарах, в закрытом чате Telegram и при проверке домашних заданий

Программа

Проблема сложности и способы ее решения. Сложность тестирования

Рассматриваются различные проблемы сложности/ Одной из таких проблем является нелинейное замедление скорости разработки проекта по мере увеличения его размера (см. Брукс "Мифический человек-месяц"). Рассказывается о различных типах архитектур, парадигмах программирования. Разберем методы построения исчерпывающего набора тестов, практику TDD

Тема 1: Понятие и задачи архитектуры решений.

Тема 2: Проблема сложности, ее разновидности и их связь с архитектурой ПО.

Тема 3: Жизненный цикл архитектуры ПО и полезные артефакты

Тема 4: Модульные тесты // ДЗ

Скорость разработки ПО.

Разберем факторы, влияющие на скорость разработки программного обеспечения. Изучим достаточное условие постоянной скорости разработки. Научимся строить абстракции, устойчивые к изменениям требований.

Тема 1: Базовые концепции ООП

Тема 2: Схема применения SOLID принципов.

Тема 3: Общие шаблоны распределения ответственностей

Тема 4: Определение абстракций, устойчивых к изменениям требований. // ДЗ

Тема 5: SOLID и исключения // ДЗ

Тема 6: Команда // ДЗ

Тема 7: Чистый код и рефакторинг

Тема 8: Расширяемая фабрика и IoC // ДЗ

Тема 9: Стратегии разрешения зависимостей IoC

Тема 10: Адаптер и мост //ДЗ

Тема 11: QA-сессия

Масштабирование

Рассматривается проблема синхронизации и вопросы разработки многопоточных приложений.

Тема 1: Проблема вертикального масштабирования и синхронизация. //ДЗ

Тема 2: Интеграция программного обеспечения

Тема 3: Системы обмена сообщениями // ДЗ

Тема 4: Построение архитектуры приложения, построенного на системе обмена сообщениями

Time To Market

Разберем, что такое архитектура. Отдельно рассмотрим тему микросервисной архитектуры.

Тема 1: Методологии разработки ПО

Тема 2: Создание микросервиса // ДЗ

Тема 3: DevOps

Тема 4: Микросервисная архитектура // ДЗ

Шаблоны проектирования

В данном модуле более подробно рассмотрим шаблоны проектирования.

Тема 1: Итератор

Тема 2: Состояние // ДЗ

Тема 3: Цепочка обязанностей // ДЗ

Тема 4: Заместитель

Тема 5: Декоратор и Посетитель

Тема 6: Шаблонный метод

Тема 7: Интерпретатор // ДЗ

Проектная работа

Практическая часть, которая подытоживает полученные знания в самостоятельной работе. Результатом станет создание "с нуля" собственного приложения.

Тема 1: Вводное занятие по проектной работе

Тема 2: Консультация по проектам и домашним заданиям

Тема 3: Защита проектных работ

Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит

Выпускная работа

 

Заключительный месяц курса посвящен выпускной работе. Его разработка нужна для окончательного закрепления знаний, которые были получены в рамках пройденных занятий.

 

Примеры выпускных проектов - читайте в нашем блоге:

- Применение паттернов проектирования и IoC-контейнера при разработке в Unity
- Библиотека для парсинга контент-блоков
- Plugin for Obsidian
- Создание Телеграм-бота для генерации изображений с использованием Docker и Stable Diffusion

Преподаватели

Евгений Тюменцев

Евгений Непомнящий

Разработчик

IT Sense

Кирилл Дикалин

Team Lead Data Engineer блока SberData

Сбербанк

Андрей Поляков

Старший разработчик

Unlimint

Игорь Гулькин

Senior Unity Developer

Иван Шарун

Арсений Высоцкий

Lead software engineer

Software

Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания

Ближайшие мероприятия

Открытый вебинар — это настоящее занятие в режиме он-лайн с преподавателем курса, которое позволяет посмотреть, как проходит процесс обучения. В ходе занятия слушатели имеют возможность задать вопросы и получить знания по реальным практическим кейсам.

Шаблон проектирования "Цепочка обязанностей"
Иван Шарун
На этом уроке мы рассмотрим мощный шаблон проектирования, который позволяет увязать множество типов сообщений и множество обработчиков этих сообщений - "Цепочку обязанностей". Мы также рассмотрим превращение элементов поведения в объекты и проанализируем его на конкретном примере, формируя диаграмму классов.

Цепочка обязанностей - это поведенческий шаблон проектирования, который подразумевает создание цепи объектов-обработчиков, в которой каждый объект может обработать определенный тип сообщения и передать его следующему обработчику в цепочке. Таким образом, сообщение проходит через каждый обработчик, пока не будет полностью обработано. Это позволяет гибко настроить последовательность и приоритет обработки различных типов сообщений.

На уроке мы рассмотрим, как использовать шаблон Цепочка обязанностей для решения различных задач. Мы покажем, как создать классы обработчиков и связать их в цепочку так, чтобы сообщение было обработано последовательно каждым обработчиком в цепи. Мы также рассмотрим возможности настройки приоритета и условий обработки определенных сообщений.

Кроме того, мы проведем практическое занятие, в ходе которого мы сформируем диаграмму классов, иллюстрирующую применение шаблона Цепочка обязанностей в конкретной задаче. Мы рассмотрим различные элементы диаграммы, такие как классы, атрибуты и методы, и объясним, как связать их с использованием данного шаблона проектирования.
...
3 июня в 17:00
Открытый вебинар
Еще одно объяснение про ООП
Евгений Тюменцев
Описание: Несколько лет назад мне попалась статья Orit Hazzan о том, что студенты, а значит многие разработчики, совсем не понимают понятие абстракции. Этот тезис мне показался странным, ведь к тому времени я уже более 10 лет читал лекции по ООП. Но все же решил взглянуть на определения еще раз. И это сильно поменяло мое представление об объектах....
19 июня в 17:00
День открытых дверей

Прошедшие
мероприятия

Евгений Тюменцев
Открытый вебинар
Принцип инверсии зависимостей
Андрей Поляков
Открытый вебинар
Девять шаблонов GRASP
Для доступа ко всем прошедшим мероприятиям необходимо пройти входное тестирование
Возможность пройти вступительное тестирование повторно появится только через 3 дня
Результаты тестирования будут отправлены вам на email, указанный при регистрации.
Тест рассчитан на 30 минут, после начала тестирования отложить тестирование не получится!

Корпоративное обучение для ваших сотрудников

Отус помогает развивать высокотехнологичные Команды. Почему нам удаётся это делать успешно:
  • Курсы OTUS верифицированы крупными игроками ИТ-рынка и предлагают инструменты и практики, актуальные на данный момент
  • Студенты работают в группах, могут получить консультации не только преподавателей, но и профессионального сообщества
  • OTUS проверяет знания студентов перед стартом обучения и после его завершения
  • Простой и удобный личный кабинет компании, в котором можно видеть статистику по обучению сотрудников
  • Сертификат нашего выпускника за 5 лет стал гарантом качества знаний в обществе
  • OTUS создал в IT более 120 курсов по 7 направлениям, линейка которых расширяется по 40-50 курсов в год

Отзывы

Владимир Рябцев

03.04.2024
До обучения, как и после него, я работал Java-разработчкиком. На момент начала обучения работал в компании "АйТиДи Эксперт", к моменту завершения обучения - в ПАО "Сбербанк". Курс выбрал из-за того, что была интересна тематика построения архитектуры программного обеспечения и существующие паттерны, позволяющие её реализовать. В целом курс понравился тем, что позволил получить новые и систематизировать имеющиеся знания о подходах к построению архитектуры программного обеспечения. Данный курс позволил ознакомиться с подходом к разработке программного обеспечения согласно принципам SOLID, а домашние задания предоставили возможность освоить полученные знания на практике. В ходе прохождения курса посмотрел на многие аспекты разработки под иным углом, а также попробовал те возможности своего языка программирования, с которыми, с большой вероятностью, не столкнулся бы в своей повседневной практике. При выполнении домашних заданий удалось опробовать некоторые возможности Java, которые я не использовал ранее.

Роман Арбузов

26.01.2024
Я работаю инженером-программистом в АО Диаконт. Пошел на курс, т.к. в компании возникла потребность в данной компетенции. Необходимы были навыки по грамотному построению архитектуры приложения для стандартизации его разработки и дальнейшей поддержки. Наиболее всего мне понравился способ взаимодействия с преподавателями, подача материала. Преподаватели приятные и опытные люди, всегда отвечали на поставленный вопрос. В качестве примера была выбрана игра - танковая битва. И на основе неё нам показывали, как можно грамотно и просто реализовывать разные её аспекты. Благодаря этому все темы воспринимаются едино и без отрыва друг от друга, их проще закреплять. В первую очередь, это обучение помогло себя чувствовать увереннее при разработке ПО. Мне стало проще обосновывать свои решения, разработка нового проекта стала проще и быстрее. Это сильно укрепило моё место на текущем рабочем месте и является отличным поводом для повышения. Мне понравился данный курс. Благодаря ему я начал писать код заметно чище и понятнее. И полученные знания я смогу могу применять при использовании любого из языков программирования.

Олег Черноусов

13.11.2023
Хороший, полезный курс, рад что записался. Преподавателям большое спасибо за заинтересованность в передаче знаний, что не торопитесь закончить занятие, задерживаетесь после уроков, интересно подобранные темы. По завершению курса стал лучше понимать как паттерны используются в фреймворках, IoC, Spring Security, InputOutput стримах, коллекциях и многое другое. Сбор отзывов после занятий помогает улучшить курс и учесть пожелания студентов. Защитил проект, не успел сдать все домашние задания, в ОТУС дали еще время на их сдачу. В общем остались только положительные эмоции.

Евгений Фомин

09.11.2023
На курс попал "случайно" - на обучении по C# одну из лекций вёл Евгений Тюменцев. Зацепили его рассуждения про архитектуру. Заинтересовавшись философией, посмотрел сначала открытые лекции в ютубе, кажется, про солид и исключения и многопоточность, математику солид. А затем и открытые уроки на странице курса. В итоге, данный курс прошел два раза. Скажу честно, можно было бы остановиться на первом. Но на второй раз пошел, чтобы глубже разобраться в матчасти предмета. И иметь возможность задавать вопросы и получать фидбек по ним. Курс действительно сложный, домашние задания объемные. "Отбыть номер" вряд ли получится. Но лично я убежден, что и вообще просто прослушать материалы мало, если не почти бесполезно) Надо реально много и много практиковаться, чтобы усвоить и понять всю прелесть подхода. Хочу сказать большое спасибо Евгению Тюменцеву за его подачу материала и в целом, если можно так выразиться, философию, опирающуюся на математику. Подход, когда тебе говорят не просто догматически "делай так по солиду, потому что так правильно". А выводят и подводят из примеров, ПОЧЕМУ лучше делать так, а не как общепринято. Какие недостатки будут, если не применять тот или иной принцип? И что будет, если мы всё таки сделаем грамотно? И главное - из этого будет предоставлено и объяснено, КАК решить такую проблему? И отдельное спасибо за возможность получать фидбек на занятиях на все без исключения вопросы - от общефилософских до конкретных примеров с кодом. Это действительно дорогого стоит. Как я написал в чате на занятии, была бы возможность пойти на курс в третий раз - непременно бы ей воспользовался. Спасибо!

Павел Иванков

14.08.2023
До обучения в компании Отус я работал и продолжаю работать программистом в банке. Профильного образования не было - самоучка. В плане развития выбрал архитектурное проектирование и нужен был подходящий курс. Проходил немало онлайн курсов и все были не очень. От того, что Вы просмотрите онлайн курс где учат только чему равно 2+2, толку будет не очень много. Нужен был курс с практикой и ее проверкой. Выбор пал на компанию Отус, спойлер - я всем остался более чем доволен ;) До данного курса знания о паттернах проектирования были крайне поверхностные. После прохождения курса были изучены основные паттерны, принципы построения гибкой архитектуры, не требующей постоянной переработки. Преподаватели отличные, каждое занятие проходило до последнего вопроса. Даже спустя 2 часа лекции в вечернее время все преподаватели отвечали абсолютно на все вопросы студентов, плюс проверка домашек. Курс охватывает большой объем - паттерны, монолиты, микросервисы, брокеры сообщений, многопоточку, сильные/слабые места, как правильно проектировать и т.д. Но есть небольшой перекос в объеме практики по паттернам - некоторые преподаются более чем подробно, другие поверхностно. Также хотелось бы чуть больше практических занятий, не по всем темам они есть. Курс стоящий и рекомендую к изучению.

Дарья Карамова

02.05.2023
Я Unity разработчик, работаю в компании, которая занимается созданием игр для мобильных устройств. Источник структурированной информации по архитектуре ПО я искала долго, и в итоге остановила свой выбор на курсе от OTUS - учебный план мне показался достаточно основательным и интересным. В целом курс мне понравился и был очень полезен для моего профессионального развития. Евгений Тюменцев - отличный лектор, умеет увлечь слушателей и доходчиво объяснить материал. Изучение материалов курса помогло мне обрести достаточную степень уверенности при принятии архитектурных решений и понимание плюсов и возможных рисков этих решений. Из негативного опыта могу отметить, что из-за продолжительности лекций (а лекции проводятся, конечно же, в вечернее время) к концу занятия неизбежно падает концентрация, особенно после сложного рабочего дня, и материал во второй половине лекции усваивается тяжело. Также довольно долго осуществляется проверка домашних заданий (около недели) и ревью довольно краткие, ревьюверы тут не будут стремиться "допинать" вас до идеала. Также случались накладки с расписанием - несколько раз занятия переносились на 1-2 дня, но в итоге все занятия были проведены. Курс рекомендую, но только в том случае, если вы готовы сами активно учиться и разбираться, не ждите 100% готовых ответов на всё (их просто не существует), курс задаёт направление, а идти по нему должны вы сами. Домашних заданий на курсе много и на некоторые требуется достаточно большое количество времени.

Андрей Лепешкин

24.01.2022
Курс понравился, открыл для себя много нового. Рекомендую всем, кто хочет добиться стабильной прогнозируемой скорости разработки ПО.

Алексей Яковлев

20.01.2022
Работаю в банке - фронтенд разработчиком Выбрал OTUS по рекомендации 1 из публичных разработчиков - он са ведет курсы и его рейтинг среди мировых OTUS - был в 5-ке лучших ) Понравилась активность и группа была достаточно активна - это важно - от этого и преподаватели больше вещали. Улучшить - в принцепе более структурированное прохождение домашек - потому как если для тебя это все темный лес еще - то не понятно как это применять + что-бы преподы вещали в +- в одном стиле много зависит от личных качеств преподавателей. Обучение совпало с изменением должности и все кейсы которые проходили я пытался решить на работе - в последствии стал архитектором Фронт-енд на проекте ) В качестве курсовой взял реальный рабочий кейс - да я не успел его качественно выполнить в сроки - но я продолжаю его делать и в дальнейшем презентую компании )))

Вадим Девятайкин

29.09.2021
Курс был очень интересным и полезным. Помог структурировать знания и получить опыт в разработке благодаря интересным домашним заданиям. Отдельное спасибо за них Евгению Тюменцеву.

Максим Пойлов

26.02.2021
Многих, заявленных на курсе, тем я касался на практике, либо читал об этом в книгах. Поэтому перед регистрацией у меня были сомнения, будет ли это полезно для меня. В результате я не пожалел, что прошел курс. Преподаватели стараются чтобы каждый для себя узнал что-то новое, даже если тема занятия известная. Курс позволил систематизировать знания, полученные из разных источников. Я прикоснулся к новой для себя теме "микросервисы", а также понял, что это просто очередной виток декомпозиции систем, только на более высоком уровне. Если, раньше для меня цикл "Красный-зеленый-рефакторинг" ассоциировался, в основном, с программированием, то теперь я вижу, что аналогичный процесс определил понятие "микросервисы". У меня сформировалось понимание, что элементы архитектуры различных уровней строятся по одним и тем же базовым принципам: инкапсуляция, полиморфизм, декомпозиция и др. Благодаря курсу я начал применять описания бизнес-процессов в своей работе. Данная тема, хотя и не является основной, но благодаря ей я почувствовал, что это можно использовать в работе. Интересными с практической стороны оказались темы по шаблонам GoF, SOLID и GRASP. Если про GoF и SOLID я много читал ранее, то про GRASP я услышал впервые. Курс позволил «разложить по полочкам» связи между ними, я начал ориентироваться на них на практике в своей работе. Спасибо за курс!

Егор Редкин

07.08.2020
Курс был очень полезен для меня. Теперь понимаю как правильно организовывать код, начинаю применять шаблоны как в личный проектах, так и на работе) Я прям почувствовал, и даже убедился на практике, что курс меня апнул)) Так же курс добавил мне уверенности себе, как разработчику. Пожелания/рекомендации/идеи на подумать: Касательно самого курса: Домашние задания с номера 3 и до номера 7 включительно, которые были связанны с проектом, я думаю стоит перенести в конец всего курса. Сперва изучить все патерны, параллельно выполняя домашнее задание по ним. А как все уроки по архитектурам/патернам будут пройдены, то далее уже нарисовать все схемы/диаграммы и тут же приступить к проекту. Касательно образовательной площадки: Можно домашнее задание разбить на уровни сложности, например 1. Легкий - реализовать программу используя патерн А 2. Средний - использовать более сложную/продвинутую/с допольнительным функционалом форму патерна А 3. Сложный - выполнить пункт 2 Средний и затем дополнить программу патерном Б из прошлого урока. что то в таком духе) было бы прикольно, был бы соблазн сделать дз по максимуму, а так же это можно было бы отразить в сертификате или поощрять учеников скидками на следующий курс))) Большое спасибо за пережитый опыт! за новые знания! за приятное время препровождение! Всего наилучшего, развивайтесь) я тоже буду))

Вадим Заигрин

27.07.2020
Хороший курс для знакомства с архитектурой ПО и шаблонами проектирования. До этого курса я скептически относился к шаблонам. После курса понял зачем они нужны и как их использовать. Но занятие про DevOps выглядит лишним, а занятие про многопоточность лучше перенести в конец курса.

Сертификат о прохождении курса

OTUS осуществляет лицензированную образовательную деятельность.
В конце обучения вы получите сертификат OTUS о прохождении курса

После обучения вы:

  • получите материалы по всем пройденным занятиям (видеозаписи вебинаров, выполненные домашние задания, выпускной проект)
  • применять шаблоны проектирования в разработках
  • получите сертификат об окончании курса

Частые вопросы

Что, если в середине курса я не смогу продолжать обучение?
У вас есть право одного бесплатного трансфера в другую группу
Обязательно ли защищать выпускной проект?
Для получения сертификата OTUS необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем.
Я могу вернуть деньги?
Да, вы можете сделать возврат средств пропорционально оставшимся месяцам обучения.