Презентации и программа лекций
Расширенный учебный курс «Программная инженерия»
Лекция 1. Нефункциональные требования и архитектурные характеристики
- Функциональные и нефункциональные требования.
- Атрибуты качества: производительность, надёжность, масштабируемость, безопасность, сопровождаемость и доступность.
- Quality Attribute Scenarios и их применение.
- Компромиссы между архитектурными характеристиками.
- Архитектурные драйверы и связь требований с проектными решениями.
- Service Level Indicator, Service Level Objective и Service Level Agreement.
Лекция 2. Архитектурные стили и документирование решений
- Модульный монолит, слоистая архитектура, гексагональная архитектура и Clean Architecture.
- Микросервисная архитектура: преимущества, ограничения и типичные ошибки.
- Event-Driven Architecture и архитектура на основе событий.
- Serverless-подход и его применимость.
- Архитектурные представления: C4 Model.
- Architecture Decision Record как способ фиксировать технические решения.
- Architecture Tradeoff Analysis Method как основа архитектурной оценки.
Лекция 3. Domain-Driven Design и моделирование предметной области
- Ограничения классического объектного моделирования в сложных предметных областях.
- Стратегическое и тактическое проектирование в Domain-Driven Design.
- Ubiquitous Language и единый язык команды с заказчиком.
- Bounded Context, Context Map и интеграция контекстов.
- Entity, Value Object, Aggregate, Domain Event и Repository.
- Разделение доменной, прикладной и инфраструктурной логики.
Лекция 4. API, интеграции и распределённые данные
- Проектирование REST API и принципы HTTP.
- GraphQL, gRPC и критерии выбора протокола.
- API-first и contract-first подходы.
- OpenAPI Specification и документация интерфейсов.
- Версионирование API и обратная совместимость.
- Синхронные и асинхронные интеграции.
- Очереди сообщений, брокеры и паттерны publish-subscribe.
- Идемпотентность, дедупликация, retry и dead-letter queue.
- Согласованность данных, CAP-теорема, Saga и transactional outbox.
Лекция 5. Облачная инфраструктура и Infrastructure as Code
- Облачные модели IaaS, PaaS и SaaS.
- Контейнеризация и Docker.
- Оркестрация контейнеров и назначение Kubernetes.
- Конфигурация окружений разработки, тестирования и эксплуатации.
- Infrastructure as Code.
- Terraform, Ansible и принципы декларативной инфраструктуры.
- Secrets management и управление конфигурацией.
- Стратегии развёртывания: rolling update, blue-green и canary release.
Лекция 6. DevSecOps и инженерия безопасности
- Shift Left Security и место безопасности в жизненном цикле разработки.
- Моделирование угроз.
- STRIDE и базовые методы анализа угроз.
- OWASP Top 10.
- Аутентификация, авторизация, OAuth 2.0, OpenID Connect и JWT.
- Управление секретами, зависимостями и цепочкой поставки ПО.
- SAST, DAST, SCA и secret scanning.
- Software Bill of Materials.
- Безопасность CI/CD-конвейера.
Лекция 7. Observability, SRE и управление инцидентами
- Различие между monitoring и observability.
- Логи, метрики и трассировки как три столпа наблюдаемости.
- Корреляционные идентификаторы и distributed tracing.
- RED и USE-методы мониторинга.
- Error budget и связь надёжности со скоростью поставки изменений.
- Incident management.
- Postmortem без поиска виноватых.
- Chaos Engineering и controlled failure как развитие темы контролируемого отказа.
- Disaster Recovery, резервное копирование и Business Continuity.
Лекция 8. Производительность, технический долг и инженерное лидерство
- Нагрузочное тестирование, профилирование и поиск узких мест.
- Latency, throughput, concurrency и capacity planning.
- Кэширование, CDN, rate limiting и backpressure.
- Технический долг, его классификация и способы управления.
- Code review, архитектурное ревью и инженерные стандарты.
- Метрики разработки и риски неправильного применения метрик.
- DORA-метрики и их интерпретация.
- Team Topologies и взаимодействие продуктовых, платформенных и enabling-команд.
- Роль технического лидера и принятие решений в условиях неопределённости.
Лекция 9. LLM в инженерном процессе и AI-assisted development
- Роль LLM на этапах анализа, проектирования, реализации, тестирования и сопровождения.
- Генерация кода, тестов, документации и инфраструктурных конфигураций.
- RAG, агентные системы и инструменты разработки с ИИ-ассистентами.
- Галлюцинации, уязвимости и риски некорректного кода.
- Проверка результатов LLM через тесты, линтеры, ревью и threat modeling.
- Конфиденциальность исходного кода и данных при использовании внешних AI-сервисов.
- Лицензирование, авторство и ответственность за AI-generated code.
- Политика использования ИИ в команде.
Лекция 10. Итоговая архитектурная сессия
- Защита архитектуры учебного проекта.
- Демонстрация C4-модели, ADR и модели предметной области.
- Демонстрация API-контрактов и интеграционных сценариев.
- Демонстрация CI/CD-конвейера с тестами и security-проверками.
- Демонстрация мониторинга, SLO и сценария обработки инцидента.
- Оценка технического долга и плана развития системы.
- Ретроспектива инженерных решений команды.