1. Введение в курс (2 часа).
- Контекст;
- Основные понятия;
- Обзор дисциплины проектирования и анализа архитектур программных систем;
- Роль архитектора.
2. Инициация проекта (3 часа).
- Взаимосвязь архитектуры с системным окружением (техническим и организационным), заинтересованными сторонами и бизнес-целями;
- Выявление заинтересованных сторон и бизнес-целей.
3. Идентификация требований (4 часа).
- Формализация и приоритезация требований к характеристикам качества системы: производительность и масштабируемость, доступность, безопасность, изменчивость и пр.
4. Проектирование архитектуры (5 часов).
- Понятие тактики проектирования;
- Метод проектирования архитектуры от атрибутов качества (Attribute Driven Design, ADD);
- Процесс принятия решений, паттерны, подходы, стили;
- Типичные тактики для достижения основных характеристик качества.
5. Документирование архитектуры (5 часов).
- Назначение и структура описания архитектуры;
- Подход «точек зрения» (viewpoints) и архитектурных представлений (views);
- Детальное рассмотрение нескольких распространённых наборов «точек зрения» (“Kruchten 4+1” и “Rozanski & Woods”);
- Использование техник моделирования в документировании;
- Перспективы применённых тактик для достижения требуемых характеристик качества системы;
- Типовой шаблон описания архитектуры;
- Использование упрощённого описания на начальных этапах проекта.
6. Архитектурный анализ (4 часа).
- Формальные процессы анализа и оценки архитектуры с вовлечением различных заинтересованных сторон;
- Выявление принятых компромиссных решений и архитектурных рисков, дальнейшая работа с рисками;
- Метод оценки ATAM (Architecture Tradeoff Analysis Method).
7. Архитектура в жизненном цикле проекта разработки ПО (2 часа).
- Применение изученных архитектурных практик в жизненном цикле проектов разработки ПО, их сочетание с разными проектными методологиями, в т. ч. гибкими (Agile) методологиями разработки;
- Разновидности роли архитектора;
- Взаимодействие с ролями аналитика и менеджера проекта.