Презентации и программа лекций

Расширенный учебный курс «Программная инженерия»

Лекция 1. Нефункциональные требования и архитектурные характеристики

  1. Функциональные и нефункциональные требования.
  2. Атрибуты качества: производительность, надёжность, масштабируемость, безопасность, сопровождаемость и доступность.
  3. Quality Attribute Scenarios и их применение.
  4. Компромиссы между архитектурными характеристиками.
  5. Архитектурные драйверы и связь требований с проектными решениями.
  6. Service Level Indicator, Service Level Objective и Service Level Agreement.

Лекция 2. Архитектурные стили и документирование решений

  1. Модульный монолит, слоистая архитектура, гексагональная архитектура и Clean Architecture.
  2. Микросервисная архитектура: преимущества, ограничения и типичные ошибки.
  3. Event-Driven Architecture и архитектура на основе событий.
  4. Serverless-подход и его применимость.
  5. Архитектурные представления: C4 Model.
  6. Architecture Decision Record как способ фиксировать технические решения.
  7. Architecture Tradeoff Analysis Method как основа архитектурной оценки.

Лекция 3. Domain-Driven Design и моделирование предметной области

  1. Ограничения классического объектного моделирования в сложных предметных областях.
  2. Стратегическое и тактическое проектирование в Domain-Driven Design.
  3. Ubiquitous Language и единый язык команды с заказчиком.
  4. Bounded Context, Context Map и интеграция контекстов.
  5. Entity, Value Object, Aggregate, Domain Event и Repository.
  6. Разделение доменной, прикладной и инфраструктурной логики.

Лекция 4. API, интеграции и распределённые данные

  1. Проектирование REST API и принципы HTTP.
  2. GraphQL, gRPC и критерии выбора протокола.
  3. API-first и contract-first подходы.
  4. OpenAPI Specification и документация интерфейсов.
  5. Версионирование API и обратная совместимость.
  6. Синхронные и асинхронные интеграции.
  7. Очереди сообщений, брокеры и паттерны publish-subscribe.
  8. Идемпотентность, дедупликация, retry и dead-letter queue.
  9. Согласованность данных, CAP-теорема, Saga и transactional outbox.

Лекция 5. Облачная инфраструктура и Infrastructure as Code

  1. Облачные модели IaaS, PaaS и SaaS.
  2. Контейнеризация и Docker.
  3. Оркестрация контейнеров и назначение Kubernetes.
  4. Конфигурация окружений разработки, тестирования и эксплуатации.
  5. Infrastructure as Code.
  6. Terraform, Ansible и принципы декларативной инфраструктуры.
  7. Secrets management и управление конфигурацией.
  8. Стратегии развёртывания: rolling update, blue-green и canary release.

Лекция 6. DevSecOps и инженерия безопасности

  1. Shift Left Security и место безопасности в жизненном цикле разработки.
  2. Моделирование угроз.
  3. STRIDE и базовые методы анализа угроз.
  4. OWASP Top 10.
  5. Аутентификация, авторизация, OAuth 2.0, OpenID Connect и JWT.
  6. Управление секретами, зависимостями и цепочкой поставки ПО.
  7. SAST, DAST, SCA и secret scanning.
  8. Software Bill of Materials.
  9. Безопасность CI/CD-конвейера.

Лекция 7. Observability, SRE и управление инцидентами

  1. Различие между monitoring и observability.
  2. Логи, метрики и трассировки как три столпа наблюдаемости.
  3. Корреляционные идентификаторы и distributed tracing.
  4. RED и USE-методы мониторинга.
  5. Error budget и связь надёжности со скоростью поставки изменений.
  6. Incident management.
  7. Postmortem без поиска виноватых.
  8. Chaos Engineering и controlled failure как развитие темы контролируемого отказа.
  9. Disaster Recovery, резервное копирование и Business Continuity.

Лекция 8. Производительность, технический долг и инженерное лидерство

  1. Нагрузочное тестирование, профилирование и поиск узких мест.
  2. Latency, throughput, concurrency и capacity planning.
  3. Кэширование, CDN, rate limiting и backpressure.
  4. Технический долг, его классификация и способы управления.
  5. Code review, архитектурное ревью и инженерные стандарты.
  6. Метрики разработки и риски неправильного применения метрик.
  7. DORA-метрики и их интерпретация.
  8. Team Topologies и взаимодействие продуктовых, платформенных и enabling-команд.
  9. Роль технического лидера и принятие решений в условиях неопределённости.

Лекция 9. LLM в инженерном процессе и AI-assisted development

  1. Роль LLM на этапах анализа, проектирования, реализации, тестирования и сопровождения.
  2. Генерация кода, тестов, документации и инфраструктурных конфигураций.
  3. RAG, агентные системы и инструменты разработки с ИИ-ассистентами.
  4. Галлюцинации, уязвимости и риски некорректного кода.
  5. Проверка результатов LLM через тесты, линтеры, ревью и threat modeling.
  6. Конфиденциальность исходного кода и данных при использовании внешних AI-сервисов.
  7. Лицензирование, авторство и ответственность за AI-generated code.
  8. Политика использования ИИ в команде.

Лекция 10. Итоговая архитектурная сессия

  1. Защита архитектуры учебного проекта.
  2. Демонстрация C4-модели, ADR и модели предметной области.
  3. Демонстрация API-контрактов и интеграционных сценариев.
  4. Демонстрация CI/CD-конвейера с тестами и security-проверками.
  5. Демонстрация мониторинга, SLO и сценария обработки инцидента.
  6. Оценка технического долга и плана развития системы.
  7. Ретроспектива инженерных решений команды.