Разработка курса «Архитектуры и шаблоны проектирования» | OTUS

Курсы

Курсы в разработке Подготовительные курсы
Работа в компаниях Компаниям Блог +7 499 110-61-65

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

Что даст вам этот курс
14
1
Курс находится в разработке и стартует ориентировочно в марте 2020 года.

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

Те, кто изучил свой первый язык программирования и сталкивается с решением конкретной задачи.
Обычно первая постановка задачи порождает новые идеи по применению. Что означает доработки, как внутри процесса, так и объединение его с другими или расширение функциональности.
Заранее это неизвестно, однако подготовиться можно, если заранее заложить гибкость и расширяемость посредством использования шаблонов проектирования.

Что даёт этот курс:

-Формирует представление об архитектуре приложения.
-Даёт представление об основных шаблонах проектирования.
-Даёт навыки построения архитектуры
-Предлагает закрепление материалы через практические работы (курсовая работа по проектированию решения). С одной стороны, вначале важно спроектировать систему, с другой - её написать.

Курс без привязки к конкретному языку программирования.

Итоговая работа представляет собой проектирование системы, включающее:
1.Функциональные схемы процессов
2.Компонентную модель
3.Потоки данных
4.Интерфейсы
5.Саму реализацию
6.Тесты
7.Описание тех шаблонов, что были использованы в работе
8.Описание результатов

Курсовая работа должна быть защищена в течение 15 минутного доклада.
Преподаватель
Матвей Калинин
Опыт разработки программного обеспечения с 1990 года. Работал и с привычными ныне dos, windows и linux системами, и с редко встречающимися специализированными вычислительными устройствами (системами реального времени, ibm i). Профессионально использую C++, С#, assembler, java, RPG.

Закончил МАИ, к.т.н., старший преподаватель, кафедра «Робототехнические и интеллектуальные системы».
Участвовал в проектах разработки программного обеспечения, связанного с навигацией. Решал задачи для процессоров цифровой обработки сигналов в операционных системах реального времени включая параллельную обработку данных.
Разработал и вёл курс вероятностных конечных автоматов.

В 2000-2002г самостоятельно разработал, используя C++ и Dephi, биллинговый комплекс АСР «ИнтБиллинг» (оборудование VocalTec). Сертификат № ОС/1-СТ-219 Министерства Российской Федерации по связи и информатизации. Биллинг выставлялся на СвязьЭкспоком, имел инсталляции заказчиков.

Долгое время работал с Java2EE (back-end и front-end). Сначала в первом агрегаторе контента для сотовых устройств "Никита-мобайл". Затем в компании "Микротест" занимался разработкой и реализацией систем информирования пользователя, основанных на web интерфейсе и являющихся частью больших распределённых систем, таких как биллинговые системы (Oracle BRM), CRM (Oracle Siebel), интеграционные шины (Tibco), SMS шлюзы.
С 2016 года - архитектор направления Equation на ibm i в одном из крупнейших банков страны.

Люблю и умею преподавать. Более 20 лет помимо программирования изучаю и обучаю айкидо (5й дан Айкикай).

Подобно технике боевых искусств мы изучаем базис: языки, паттерны, платформы. Чтобы затем перевести это всё в зодчество ПО, его архитектуру. С другой стороны, программный продукт всегда есть отражение создателя. Любая система, согласно закону Конвея, есть отражение людей, создавших её. Программирование суть искусство в мире электронных форм. Взрослый ничем не отличается от маленького ребенка, играющего с кубиками. Только кубики другие. Творчество это основа всего. И свобода ошибаться и искать. Обучение это игра и освоение новых миров.

Преподаватель
Матвей Калинин
Опыт разработки программного обеспечения с 1990 года. Работал и с привычными ныне dos, windows и linux системами, и с редко встречающимися специализированными вычислительными устройствами (системами реального времени, ibm i). Профессионально использую C++, С#, assembler, java, RPG.

Закончил МАИ, к.т.н., старший преподаватель, кафедра «Робототехнические и интеллектуальные системы».
Участвовал в проектах разработки программного обеспечения, связанного с навигацией. Решал задачи для процессоров цифровой обработки сигналов в операционных системах реального времени включая параллельную обработку данных.
Разработал и вёл курс вероятностных конечных автоматов.

В 2000-2002г самостоятельно разработал, используя C++ и Dephi, биллинговый комплекс АСР «ИнтБиллинг» (оборудование VocalTec). Сертификат № ОС/1-СТ-219 Министерства Российской Федерации по связи и информатизации. Биллинг выставлялся на СвязьЭкспоком, имел инсталляции заказчиков.

Долгое время работал с Java2EE (back-end и front-end). Сначала в первом агрегаторе контента для сотовых устройств "Никита-мобайл". Затем в компании "Микротест" занимался разработкой и реализацией систем информирования пользователя, основанных на web интерфейсе и являющихся частью больших распределённых систем, таких как биллинговые системы (Oracle BRM), CRM (Oracle Siebel), интеграционные шины (Tibco), SMS шлюзы.
С 2016 года - архитектор направления Equation на ibm i в одном из крупнейших банков страны.

Люблю и умею преподавать. Более 20 лет помимо программирования изучаю и обучаю айкидо (5й дан Айкикай).

Подобно технике боевых искусств мы изучаем базис: языки, паттерны, платформы. Чтобы затем перевести это всё в зодчество ПО, его архитектуру. С другой стороны, программный продукт всегда есть отражение создателя. Любая система, согласно закону Конвея, есть отражение людей, создавших её. Программирование суть искусство в мире электронных форм. Взрослый ничем не отличается от маленького ребенка, играющего с кубиками. Только кубики другие. Творчество это основа всего. И свобода ошибаться и искать. Обучение это игра и освоение новых миров.

Программа обучения
Модуль 1
Знакомство с процессом создания программного обеспечения
Модуль 2
Архитектура программного обеспечения
Модуль 3
Шаблоны проектирования
Модуль 4
Проектная работа
Знакомство с процессом создания программного обеспечения
Оценить модуль
1
0
Тема 1: "ООП or not ООП"
сможете реализовывать принципы, составляющие ООП и без ООП. Также это позволит видеть принципы вне скрытой реализации языков, использующих подход ООП
Тема 2: "А если их будет много?" Однопоточное и многопоточное приложения
познакомитесь с плюсами и минусами обоих подходов.

Для чего создаются многопоточные приложения?
Варианты: многонитевые ( POSIX threads) и многозадачные (mutijobs - ibm I, linux). Преимущества.
Ограничения.
Проблемы, возникающие при разработке. Взаимодействия потоков: Мютексы, семафоры, события, критические секции.
Тема 3: "Just do it!" или методологии разработки ПО
обсудим различные подходы к разработке ПО, их особенностями и ограничениями.

Рассмотрим методологии к разработке пО:waterfall, agile, scrum, xp, RAD
Тема 4: "Я его слепила из того, что было" или интеграция программного обеспечения
узнаете, как связать несвязываемое, какие подходы существуют Интеграция данных, интеграция приложений. Вакторы, влияющие на принятие решений по интеграции.
Архитектура программного обеспечения
Познакомимся с понятием архитектуры. Построим бизнес процесс на примере задачи. Разделим на функциональные процессы. Обсудим, как можно решить подобную задачу, какими подходами. Узнаем про закон "Конвея".

На примере задачи проведём построение функциональных процессов
Оценить модуль
0
0
Тема 1: "Откуда ноги растут" или что предшествует программированию
Познакомимся с понятием архитектуры. Построим бизнес процесс на примере задачи. Разделим на функциональные процессы. Обсудим, как можно решить подобную задачу, какими подходами. Узнаем про закон "Конвея" "Понятие архитектуры системы как таковой.
Бизнес процесс как описание того, что важно создать.
декомпозиция процесса на функциональные процессы"
Тема 2: "Как это выглядит?" или как нарисовать процесс
узнаете, как рисуется процесс, его составные части. Научитель использовать оба вида нотаций "Блок-схемы алгоритмов
Нотации бизнес-процессов BPMN, EPS "
Тема 3: знакомство с "кирпичиками" построения систем
Увидите на примере ракурсы, на которые смотрит архитектор ПО. Сможете сами строить схемы видов. "Части архитектуры: системы, компоненты, интерфейсы, потоки данных
Архитектурные виды (модульные, компонентные, информационные, размещения)
Понятие архитектурного шаблона.
Шаблоны проектирования
Оценить модуль
1
0
Тема 1: "Останется только один" Узнаете и научитесь применять шаблон "Singleton"
"Смысл «Одиночки», когда он применяется с точки зрения архитектуры , когда есть один канал(например, если если есть сокетное соединение, и по нему передаётся информация ). Который проще контролировать, глобальные настройки и т.д.
Плюсы, минусы.
ЧТо делать с синглтоном в многопоточных приложениях?
Как создать синглтон? Как проверить, что он действительно один?
Тема 2: как связать несвязываемое и передать непередаваемое
узнаете и научитесь применять шаблон "адаптер" "Две команды. Одна проектирует приложение со своим интерфейсом (например, передача данных по сокетному соединению)
Другая проектирует своё приложение, которое должно отправлять сообщение в другую систему. Обе команды не общаются друг с другом. Задача сформировать интерфейс.
Затем собираем их вместе в одной комнате зума и пытаемся «скрестить ежа с ужом».
Тема 3: Пора делегировать. Дай команду, и ""Заместитель"" (Proxy) выполнит задачу.
узнаете и научитесь применять шаблон "Рассматривается работа двух объектов: клиента и сервера. Обсуждение причин необходимости перехвата доступа и взятия его под контроль.
Рассмотрение различных видов заместителя (удалённый, виртуальный, замещающий, кеширующий, синхронизирующий...)
Рассмотрение на конкретном примере

Преимущества и недостатки.
Тема 4: Декоратор" Новые свойства без изменения.
узнаете и научитесь применять шаблон "Основной принцип - добавление функциональности к существующему объекту, возможно, с учётом очередности действий. Нужен тот, кто это будет осуществлять.
Реализации.
Есть некоторая система - интерфейс.
""Декоратор"", ""Адаптер"" и ""Прокси"". Сходства и различия.
Задание: Одна команда реализует прокси, а другая адаптер к некой системе.
Затем обсуждение различий.
Тема 5: От кустарщины к разнообразию фирменных изделий. ""Фабрика"
узнаете и научитесь применять шаблон "Проблемы сильносвязанных структур.
От конкретной реализации к интерфейсам.
Инкапсуляция создания объектов.
Что если делегировать обязанности выпуска продукта дочерним структурам?
А если последует расширение функциональности?
Шаблон ""Фабричный метод""
От Фабрики к абстракциям. ""Абстрактная фабрика""
Рассмотрим на примере.
Тема 6: Есть кофе и… кофе. ""Шаблонный метод"
узнаете и научитесь применять шаблон "Цели можно достичь разными путями. Порой важно оперировать не объектами, а процессами.
От бизнес процесса к абстрактным общим шагам. Декомпозиция. Временная диаграмма.
Один процесс, да шаги разные. От кофе к супу.
Необходимость контроля процесса. Методы-перехватчики.
Примеры использования.
Рассмотрим применение на практическом примере.
Тема 7: Как дела? ""Состояние"
узнаете и научитесь применять шаблон "Состояние не так однозначно, как кажется.
Рассмотрение проводится на конкретном примере.
Диаграмма состояний и переходов.
Обзор конечных автоматов. Простая прямая реализация.
Внезапно потребовалось расширение функциональности. От простой реализации объектов к интерфейсам.Локализация поведения каждого состояния в отдельных классах.Инкапсуляция состояний.
Определение шаблона ""Состояние"" как результат анализа примера.
Тема 8: Золушка или как перебрать быстро и успеть на бал. ""Итератор"
узнаете и научитесь применять шаблон "Коллекция как сложно упорядоченный набор данных. Это и списки и деревья. Связи могут быть сложными.
O Надо подобрать пример.
Как инкапсулировать этот процесс? Один общий интерфейс для перебора, множество реализаций.
Итератор - как работает?
Рассмотрим на решении примера.
Тема 9: всё решает  "Команда"
узнаете и научитесь применять шаблон "Хороший результат командной работы зависит от слаженности работы каждого.
Команда выполняет некоторые действия и, в то же время, команда есть часть бизнес процесса, определяющего последовательность выполнения действий.
Снова нужен интерфейс. Какие операции у него будут?
На примере построим процесс выполнения задачи с использованием шаблона ""Команда"".
Как здесь может участвовать ""Состояние""?
Тема 10: конвейер обработки "Цепочка обязанностей"
Узнаете и научитесь применять шаблон Как увязать множество типов сообщений, и множество обработчиков этих сообщений? Превращения элементов поведения в объекты. Рассмотрим на примере - формируем диаграмму классов.
Тема 11: MVC» и "MVP"
узнаете и научитесь применять шаблоны Рассмотрим составляющие шаблонов. Различия. Разделим группу на команды и каждая реализует свою задачу (MVC или MVP) Затем обсудим.
Проектная работа
Оценить модуль
0
1
Тема 1: Выдача проекта
Оценить занятие
0
0
Тема 2: консультация по проекту
Оценить занятие
0
0
Тема 3: Итоговый урок
Оценить занятие
0
0
Опрос по программе "Архитектуры и шаблоны проектирования"

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

Вопрос №1 из 6
Выберите один вариант ответа
Вам понятно, о чем этот курс?
оцените от 1 (не понял) до 5 (да, все ясно)
Вопрос №2 из 6
А что из этого вы уже знаете?
Вопрос №3 из 6
Какие темы из программы вам уже сейчас пригодились бы в работе?
Вопрос №4 из 6
Выберите один вариант ответа
Оцените актуальность программы (в баллах от 1 "неактуально" до 10 "полностью актуальна")
Вопрос №5 из 6
И последнее: что вам необходимо в работе сейчас или понадобится в ближайшем будущем, но не представлено в программе?
Вопрос №6 из 6
Комментарии и предложения - мы всегда им рады!

Оставьте хотя бы один ответ для участия в опросе