Software Engineering 3MIT осень 2017
Лекции
Преподаватель: Брыксин Тимофей Александрович
1. Программа и программный продукт, понятие программной инженерии, состав команды, виды деятельности разработчика ПО.
2. Виды и характеристики требований. Инженерия требований: выявление, анализ, проверка, спецификация, управление требованиями.
3. Жизненный цикл ПО, модели ЖЦ. RUP и XP как примеры методологий разработки.
4. Процессный фреймворк Scrum: роли, артефакты, мероприятия
5. Проектирование GUI. Понятие User Experience, User-centered design, Activity-centred design. Персонажи и сценарии. Подходы к прототипированию пользовательских интерфейсов: storytelling, бумажные прототипы, bodystorming, макеты, дизайн-макеты, интерактивные прототипы. Подходы к исследованию удобства использования продукта, юзабилити-исследования.
6. Функции менеджера проекта: определение проекта, планирование, управление и контроль. Матрица ответственностей, план коммуникаций. Управление рисками. Декомпозиция проекта.
7. Построение графика работ: матрица зависимостей, сетевой график, диаграмма Гантта. Оценка задач и графика в целом. Типичные ошибки при оценке проектов. Треугольник равновесия проекта.
8. Балансирование равновесия проекта: основные подходы и практики. Отслеживание прогресса хода проекта и реагирование на отклонения от плана.
9. Понятие команды. Составляющие эффективной команды. Практики формирования позитивной экосистемы и формирования навыков совместного решения задач. Особенности формирования команды. Командная разработка ПО. Системы контроля версий. Разработка с использованием веток в git.
10. Рефакторинг: что, когда и зачем. Понятие и основные code smells. Примеры рефакторингов.
11. Понятие дефекта. Методы и системы управления дефектами в программных проектах. Характеристики дефектов. Отладка: виды, подходы. Защитное программирование.
12. Качество ПО. Характеристики и атрибуты качества. Классификация метрик, основные группы метрик объектно-ориентированного кода. Модель CMMI. Назначение и виды тестирования.
13. Антипаттерны управления релизами. Основные принципы Continuous Delivery. Конфигурационное управление, Continuous Integration. Полезные практики при внедрении Continuous Delivery. Структура и шаги построения конвейера развёртывания. Модель зрелости процесса управления релизами.
14. Динамика развития программных проектов, "законы Лемана". Legacy-системы. Сопровождение и поддержка, эволюция систем, реинжиниринг.
15. Особенности проектов Fixed price, Cost Reimbursable и Time and Material. Стартапы: идея, продукт, команда, реализация. Основные источники финансирования. Формат презентации проекта потенциальному инвестору. Бизнес-модель проекта.
Практика Литвинов
Презентация про изменения в проектах: https://drive.google.com/file/d/0B0YEMCLGZLEnRURMRlVwMVJGdEE