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 мин)
253a260 - initial commit (Django проект)
9a185d2 - docs: Initial tech requirements (ТЗ)
e68bb07 - Add linters to CI (#1)
Итерация 2: Тесты и качество кода (30-60 мин)
ae35d59 - fix: fix failing test
ff771d4 - Add basic tests (#2)
29ad218 - major: add makefile for quick actions
Итерация 3: Курсы и основной функционал (60-90 мин)
985a22c - create possibility to add courses
6f0a09f - use black formatter
93b350b - major: add courses to tests
Итерация 4: Документация и финализация (90-120 мин)
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)
История показывает постоянное улучшение кода:
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) и дополнялись с каждой новой фичей:
# Тесты безопасности
- Разграничение доступа по ролям
- Изоляция данных (студент видит только свои курсы)
- Защита от несанкционированного доступа
Отклонения от ТЗ (улучшения)
ТЗ: Преподаватели работают через админку Django
Реализовано: Преподаватели работают через отдельный веб-интерфейс (улучшение UX)
Обоснование:
Админка Django предназначена для администраторов
Отдельный интерфейс более интуитивен и безопасен
Следует XP принципу: «Делай самое простое, что может сработать, но для пользователя»