Бакалавриат
2023/2024
Проектирование отказоустойчивых систем 1
Статус:
Курс по выбору (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Базовая кафедра Т-Банка
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
5
Контактные часы:
56
Программа дисциплины
Аннотация
В данном курсе слушатели научатся разрабатывать сервисы различной степени сложности, ознакомятся с проектированием и различными архитектурами программного обеспечения, подходами к моделированию программных продуктов и усвоят наиболее применимые в современном программировании шаблоны.
Цель освоения дисциплины
- Дать студентам представление о современных методах и подходах к построению сервисов
- Дать обзорную базу знаний систем, используемых в современных продуктах
- Развить навык разработки прикладных программ
Планируемые результаты обучения
- Знать виды и пирамиду тестирования
- Знать модели баз данных, реляционная алгебру, основные определения и операции. Функциональная зависимости, виды аномалий, декомпозицию отношений и нормальные формы (1-НФ, 2-НФ, 3-НФ). Основы языка SQL.
- Знать парадигму объектно-ориентированного программирования: основные концепции, принципы, накладываемые ограничения. Принципы построения объектной модели. Основные элементы и определения. Виды связей. Основной вид деятельности в объектно-ориентированной разработке.
- Знать что такое чистый код и технический долг, правила именования идентификаторов, какие бывают запахи кода и рефакторинг: способ описания, классификация, примеры использования.
- Знать шаблоны проектирования и способ описания, шаблоны объектно-ориентированного проектирования (23 шаблона GoF)
- Научиться разрабатывать масштабируемые сервисы, применение философии Unix к разработке сервисов. Усвоить следующие понятия: зависимости (декларация, заморозка, изоляция), виртуализация и контейнеризация, пакетные менеджеры, способы конфигурации, конфигурация внешних подсистем как подключаемых ресурсов, вертикальное и горизонтальное масштабирование, масштабирование посредством процессов, варианты и уровни балансировки нагрузки, плавное завершение, журналирование и сервисные менеджеры.
- Понимать основные концепции, практики, паттерны, классификацию видов зависимостей, классификацию тестовых двойников, стили написания тестов и утверждений
- Понимать принципы SOLID и контекст их применения
Содержание учебной дисциплины
- Компьютерные сети
- Сервис-ориентированная архитектура
- Разработка масштабируемых сервисов
- Модели данных и языки запросов
- Реляционная модель данных
- Эффективное использование реляционных баз данных
- Объектно-реляционное отображение
- Репликация и секционирование
- Модели согласованности и обработка транзакций
- Шаблоны обеспечения отказоустойчивости распределенных систем
- Шаблоны проектирования корпоративных приложений
- Асинхронный обмен сообщениями. Концепции, шаблоны, технологии
- Пакетная и потоковая обработка
Промежуточная аттестация
- 2023/2024 учебный год 2 модуль0.4 * Домашнее задание + 0.3 * Контрольная работа + 0.3 * Экзамен
Список литературы
Рекомендуемая основная литература
- Connolly, T. M., & Begg, C. (2015). Database Systems: A Practical Approach to Design, Implementation, and Management, Global Edition (Vol. Sixth edition, Global edition). Harlow: Pearson. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1419568
- Чистый код. Создание, анализ и рефакторинг : пер. с англ., Мартин Р., 2012
Рекомендуемая дополнительная литература
- Чистая архитектура : искусство разработки программного обеспечения, Мартин, Р., 2019