Проблема сложности и способы ее решения. Сложность тестирования
Рассматриваются различные проблемы сложности/ Одной из таких проблем является нелинейное замедление скорости разработки проекта по мере увеличения его размера (см. Брукс "Мифический человек-месяц"). Рассказывается о различных типах архитектур, парадигмах программирования. Разберем методы построения исчерпывающего набора тестов, практику TDD
Тема 1: Проблема сложности, ее разновидности и их связь с архитектурой ПО.
Тема 2: Архитектура, архитектурные стили и виды
Тема 3: Модульные тесты // ДЗ
Скорость разработки ПО.
Разберем факторы, влияющие на скорость разработки программного обеспечения. Изучим достаточное условие постоянной скорости разработки. Научимся строить абстракции, устойчивые к изменениям требований.
Тема 1: Абстрагирование. Схема применения SOLID принципов.
Тема 2: Общие шаблоны распределения ответственностей
Тема 3: Определение абстракций, устойчивых к изменениям требований. // ДЗ
Тема 4: SOLID и исключения // ДЗ
Тема 5: Команда // ДЗ
Тема 6: Чистый код и рефакторинг
Тема 7: Расширяемая фабрика и IoC // ДЗ
Тема 8: Стратегии разрешения зависимостей IoC
Тема 9: Адаптер и мост //ДЗ
Тема 10: QA-сессия
Масштабирование
Рассматривается проблема синхронизации и вопросы разработки многопоточных приложений.
Тема 1: Проблема вертикального масштабирования и синхронизация. //ДЗ
Тема 2: Интеграция программного обеспечения
Тема 3: Системы обмена сообщениями // ДЗ
Тема 4: Построение архитектуры приложения, построенного на системе обмена сообщениями
Time To Market
Разберем, что такое архитектура. Отдельно рассмотрим тему микросервисной архитектуры.
Тема 1: Методологии разработки ПО
Тема 2: Создание микросервиса // ДЗ
Тема 3: DevOps
Тема 4: Микросервисная архитектура // ДЗ
Шаблоны проектирования
В данном модуле более подробно рассмотрим шаблоны проектирования.
Тема 1: Итератор
Тема 2: Состояние // ДЗ
Тема 3: Цепочка обязанностей // ДЗ
Тема 4: Заместитель
Тема 5: Декоратор и Посетитель
Тема 6: Шаблонный метод
Тема 7: Интерпретатор // ДЗ
Проектная работа
Практическая часть, которая подытоживает полученные знания в самостоятельной работе. Результатом станет создание "с нуля" собственного приложения.
Тема 1: Вводное занятие по проектной работе
Тема 2: Консультация по проектам и домашним заданиям
Тема 3: Защита проектных работ