Software engineering, 3 курс, 6 семестр 2016/17
Преподаватель -- Тимофей Брыксин
Лекции
1. Программа и программный продукт, понятие программной инженерии, состав команды, виды деятельности разработчика ПО.
2. Жизненный цикл ПО, модели ЖЦ. RUP и XP как примеры методологий разработки.
3. Процессный фреймворк Scrum: роли, артефакты, мероприятия.
4. Виды и характеристики требований. Requirements engineering: выявление, анализ, провека, спецификация, управление требованиями.
5. Функции менеджера проекта: определение проекта, планирование, управление и контроль. Матрица ответственностей, план коммуникаций. Управление рисками. Декомпозиция проекта.
6. Построение графика работ: матрица зависимостей, сетевой график, диаграмма Гантта. Оценка задач и графика в целом. Типичные ошибки при оценке проектов. Треугольник равновесия проекта.
7. Балансирование равновесия проекта: основные подходы и практики. Отслеживание прогресса хода проекта и реагирование на отклонения от плана. Организация команды: типы команд, роли участников.
8. Понятие команды. Составляющие эффективной команды. Практики формирования позитивной экосистемы и формирования навыков совместного решения задач. Особенности формирования команды. Командная разработка ПО. Системы контроля версий, пример удачной модели разработки в git.
9. Качество ПО. Характеристики и атрибуты качества. Классификация метрик, основные группы метрик объектно-ориентированного кода. Назначение и виды тестирования.
10. Понятие дефекта. Методы и системы управления дефектами в программных проектах. Характеристики дефектов. Отладка: виды, подходы. Защитное программирование.
11. Динамика развития программных проектов, "законы Лемана". Legacy-системы. Сопровождение и поддержка, эволюция систем, реинжиниринг.
12. Рефакторинг: что, когда и зачем. Понятие и основные code smells. Примеры рефакторингов. Презентация
Домашние задания
1. Создать для своей НИР или любого другого проекта документ об образе и границах проекта (лекция 4).
Дедлайн: 23:59 29.03.2017.