ФКН ВШЭ, 2022/2023
- Общая идея курса
- Информация о курсе
Общие понятия о методологиях разработки ПО
- Что такое методология разработки ПО
- Общее понятие
- Основные элементы
- Факторы, влияющие на выбор методологии
- Внешние факторы
- Внутренние факторы
Жизненный цикл проектирования, разработки и внедрения ПО
- Этапы жизненного цикла проектирования, реализации и внедрения ПО
- Формирование требований
- Разработка концепции
- Техническое задание
- Эскизный проект
- Понятие о MVP и примеры MVP
- Технический проект
- Рабочая документация
- Поставка / ввод в действие
- Варианты поставки и развертывания
- Сопровождение
Базовые методологии разработки ПО (ч.1)
- Каскадная модель
- Общее описание
- Хорошие примеры
- Плохие примеры
- V-модель
- Общее описание
- Хорошие примеры
- Плохие примеры
Базовые методологии разработки ПО (ч.1 / продолжение)
- Инкрементная модель
- Общее описание
- Итерационная модель
- Общее описание
- "Тонкие" примеры
- Плохие примеры
- Хорошие примеры
Базовые методологии разработки ПО (ч. 2)
- Спиральная модель
- Общее описание
- Плохие примеры
- Хорошие примеры
- RAD-модель
- Общее описание
Семейство гибких методологий
- Общее понятие о семействе гибких методологий
- Agile-манифест
- Что означает и как использовать
- Роль agile-манифеста в не-agile методологиях
- SCRUM
- Общая схема методологии
- Плохой пример
- Общие соображения, когда работает плохо
- Хороший пример
- Общие соображение, когда работает хорошо
- KANBAN
- Общая схема методологии
- Плохой пример
- Общие соображения, когда работает плохо
- Хороший пример
- Общие соображения, когда работает хорошо
CI/CD
- Понятие о CI/CD/CD
- Зачем это вообще нужно?
- Как это устроено?
- Роль CI/CD/CD в процессе разработки ПО
- Пример "как это работает у нас"
Принципы проектирования ПО, ч.1
- Что такое архитектура ПО?
- Что такое проектирование ПО?
- По каким критериям можно оценить архитектуру?
- Критерии хорошей архитектуры
- Эффективность
- Гибкость
- Расширяемость
- Масштабируемость, тестируемость, возможность повторного использования, сопровождаемость
- Критерии неудачной архитектуры
- Жесткость
- Хрупкость
- Неподвижность
- Критерии хорошей архитектуры
- Принцип High Cohesion / Low Coupling
Принципы проектирования ПО, ч.2
- Принципы SOLID
- Закон Деметры
- YAGNI
- DRY / DIE
- KISS
Инструменты моделирования и проектирования - UML
- Что такое UML?
- Базовое понятие о нотации UML
- Диаграмма вариантов использования
- Диаграмма классов
- Диаграмма размещения
- Диаграмма последовательности
- Диаграмма деятельности
- Диаграмма состояний
30-минутный доклад на семинарской части курса, подготовленный студентом самостоятельно.
Основные требования к докладу:
- Требуется подготовить презентацию
- В презентации обязательны ссылки на источники
- Доклад может содержать информацию по одному или нескольким пунктам (лучше всего) из списка ниже:
- Обзор научной статьи / доклада на научной конференции на тему "методологии разработки ПО"
- Нужно не просто пересказать статью / доклад, а провести его анализ: выделить сильные и слабые стороны, сомнительные тезисы и т.д.
- Обзор публикации / доклада / выступления на конференции средней / крупной IT-компании с рассказом о том, как у них в компании устроены процессы разработки
- Опять же, не просто пересказ, нужно провести анализ
- В идеале рассматривать материалы из серии "как было" - "что сделали" - "как стало", и провести анализ, что и почему стало лучше
- Обзор инструментов автоматизации процессов разработки / управления проектами
- Опять же, важно провести анализ
- Приоритет малоизвестным или сложным для освоения решениям (не нужно рассказывать про trello или рассказывать, как настроить простейший CI/CD в github actions)
- Например, можно подготовить подробный доклад про возможности и настройку Jenkins
- Обзор статей / докладов на тему IaaC и других современных трендов в организации процессов управления инфраструктурой
- Обзор научной статьи / доклада на научной конференции на тему "методологии разработки ПО"
- Презентацию + краткое описание доклада + ссылки на все источники нужно залить в этот файл README.md через pull-request
Неделя | Лекция | Докладчик(и) | Тема доклада | Ссылка на материалы |
---|---|---|---|---|
Неделя 1 | Введение + Общие понятия о методологиях разработки ПО | Нет докладов | ||
Неделя 2 | Жизненный цикл проектирования, разработки и внедрения ПО + Базовые методологии разработки ПО (ч.1) | Нет докладов | ||
Неделя 3 | Базовые методологии разработки ПО (ч.1 / продолжение) + Базовые методологии разработки ПО (ч. 2) | Нет докладов | ||
Неделя 4 | Семейство гибких методологий | Битюгов Алексей | GRASP паттерны | Презентация в Google Slides |
Неделя 5 | ||||
Неделя 6 | ||||
Неделя 7 | ||||
Неделя 8 | ||||
Неделя 9 | ||||
Неделя 10 |
3-4 страничное эссе с обзором докладов, обсуждавшихся на семинарской части
На знание базовых методологий разработки, их сильных и слабых сторон
Итоговая оценка = Математическое округление (0.4 * Научный доклад + 0.3 * Отчетное эссе + 0.3 * Устный опрос)