Extreme Programming в проекте ============================== Проект полностью следует принципам **Extreme Programming (XP)**, что отражено в процессе разработки. Парное программирование (Pair Programming) ------------------------------------------ Все члены команды работали в парах: * **Тесты**: Dmitrii, Vladimir * **Документация**: Aleksei, Dmitrii * **Курсы**: Vladimir, Aleksei Каждая фича разрабатывалась совместно через pull request'ы с code review. Непрерывная интеграция (Continuous Integration) ------------------------------------------------ С самого начала проекта был настроен CI/CD pipeline: * **Коммит 1-2** (``f478066``, ``253a260``): Инициализация проекта * **Коммит 3** (``e68bb07``, PR #1): Добавление линтеров (flake8, black, isort, pylint) * **Коммит 8** (``ff771d4``, PR #2): Базовые тесты * **Коммит 11** (``fc26fbc``, PR #4): Автоматическая генерация документации Каждый push проверяется автоматически: тесты → линтеры → документация. Частые релизы (Small Releases) ------------------------------- Разработка велась итеративно с маленькими, осмысленными коммитами: Итерация 1: Инфраструктура (0-30 мин) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: text 253a260 - initial commit (Django проект) 9a185d2 - docs: Initial tech requirements (ТЗ) e68bb07 - Add linters to CI (#1) Итерация 2: Тесты и качество кода (30-60 мин) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: text ae35d59 - fix: fix failing test ff771d4 - Add basic tests (#2) 29ad218 - major: add makefile for quick actions Итерация 3: Курсы и основной функционал (60-90 мин) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: text 985a22c - create possibility to add courses 6f0a09f - use black formatter 93b350b - major: add courses to tests Итерация 4: Документация и финализация (90-120 мин) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: text 3aef5d2 - docs: auto docs from pr dcbb97b - feat: update documentation uptodate 8f0118c - feat: docs refactor Простой дизайн (Simple Design) ------------------------------- Архитектура строилась по принципу YAGNI (You Aren't Gonna Need It): * Использование стандартной Django ORM (без лишних абстракций) * SQLite для простоты развертывания * Bootstrap 5 через CDN (без сложных сборщиков) * Минимальная, но достаточная функциональность (MVP) Рефакторинг (Refactoring) -------------------------- История показывает постоянное улучшение кода: .. code-block:: text 6f0f162 - fix: formatting 1f4b3a1 - fix: linter errors c9fcd7f - fix: black and doc tests 725ff53 - fix: 3 hours instead of 4 Коллективное владение кодом (Collective Code Ownership) -------------------------------------------------------- История коммитов показывает активное участие всех членов команды: * **Vladimir Zakharov** - базовая архитектура и функционал курсов * **Dmitrii Deruzhinskii** - тестирование и интеграция * **Aleksei Tokarev** - документация и CI/CD Тест-ориентированная разработка (TDD) -------------------------------------- Тесты были добавлены на ранней стадии (PR #2) и дополнялись с каждой новой фичей: .. code-block:: python # Тесты безопасности - Разграничение доступа по ролям - Изоляция данных (студент видит только свои курсы) - Защита от несанкционированного доступа Отклонения от ТЗ (улучшения) ----------------------------- **ТЗ**: Преподаватели работают через админку Django **Реализовано**: Преподаватели работают через отдельный веб-интерфейс (улучшение UX) **Обоснование**: * Админка Django предназначена для администраторов * Отдельный интерфейс более интуитивен и безопасен * Следует XP принципу: "Делай самое простое, что может сработать, но для пользователя"