Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Проектный практикум: инструменты разработки в к...

Anton
January 13, 2025

Проектный практикум: инструменты разработки в команде

Лекция курса "Проектный практикум"
Инструменты разработки в команде

- Инструменты планирования
- Система отслеживания заданий (карточек/тикетов) / багтрекер (Issue tracking system)
- Одна задача — одна карточка (тикет)
- Программные реализации: веб-приложения
- Управление проектами
- Диаграмма Ганта, программные реализации
- Сетевые графики (метод критического пути)
- Системы контроля версий (системы управления версиями) (version control system)
- Централизованные системы контроля версий
- Распределенные системы контроля версий
- Немного практики git
- Стратегии ведения репозитория
- Стратегия ведения репозитория: версии (semantic versioning)
- Типичный сценарий ведения репозитория в git
- Шпаргалка git на первое время
- Контроль версий + тикеты
- Сервисы онлайн
- База знаний Wiki
- Программные реализации

https://vk.com/video53223390_456239521
https://www.youtube.com/watch?v=euxxZV_KiCA

Anton

January 13, 2025
Tweet

More Decks by Anton

Other Decks in Education

Transcript

  1. Инструменты планирования • Как Бог на душу положит • Список

    дел в блокноте • Карточная (тикетная/заявочная) система, багтрекер: плоский список задач, текущие дела • Диаграмма Ганта (ленточный график, календарный график) • Сетевой график
  2. Одна задача — одна карточка (тикет) • Заголовок • Подробное

    описание проблемы/задачи • Кто заметил проблему (заявитель) • Ответственный исполнитель • Лента комментариев • Дата начала, дата завершения • Текущий статус: новая, в работе, завершено, отклонено, … • Приоритет тикета • Метки: проблема, задача, новая фича, вопрос, ... • Прочие статусы
  3. Программные реализации: веб-приложения • Ежедневник (вечная классика) • Bugzilla (олд-скул)

    • Redmine (суровая реальность) • Jira (хардкор для айтишников-проприетарщиков) • GitLab (селфхост а-ля github) • github.com Issues (онлайн-социалочка) • Bitbucket.com • И много других разных • Веб-интерфейс — здесь идеально
  4. Преимущества • Проблемы и пожелания собраны в одном месте •

    Видны широкому кругу людей (всем участникам проекта) • Для каждой заявки видно статус и историю работы • Исполнителям удобно вести список задач • Управленцам — отслеживать ход выполнения работ, статус ответственных исполнителей
  5. Недостатки • В описанном плоском виде не видно связей между

    заданиями • Не видно, уровень нагрузки исполнителей по проекту в целом • Важные (критичные/продолжительные) задачи в одном списке с второстепенными • Сложно оценить, на каком этапе находится выполнение проекта
  6. Управление проектами • Карточки отражают сиюминутную текучку или долгосрочные задачи

    • Плоский список карточек — атомарная текучка (поддержка клиентов) • Проект — связанные карточки • Можно выстраивать иерархии и горизонтальные связи: «зависит от», «связана с», ... • Распределение карточек по подпроектам • Отчеты
  7. Диаграмма Ганта • По горизонтали — шкала времени • По

    вертикали — список работ • Работа — полоска на шкале времени (время начала → время окончания) • Связи между работами (не начинать работу, пока не завершалась) — стрелочки
  8. Диаграмма Ганта • Разработана примерно в 1910 — 1915 •

    Графическое представление проекта • Позволяет контролировать ход выполнения проекта • На тот момент: уровень государства • проекты: Дамба Гувера (постройка: 1931 — 1936) и сеть шоссе между штатами США (1956 — наст. время) • До сих пор в ходу
  9. Сетевые графики • Проект представлен в виде графа: • события

    и работы, увязанные в сеть • работа завершается событием • каждое событие служит началом для других работ • (реализация одной или нескольких работ обеспечивает материальный базис для старта одной или нескольких работ)
  10. В СССР • «Сетевые графики в планировании», Разумов И.М., Белова

    Л.Д., Ипатов М.И., Проскуряков А.В., Высшая школа, 1967 (3- е переиздание 1981) libgen.lc/edition.php?id=136807930 libgen.gs/ads.php?md5=6b9ec6ab42530efe667293e274446b77 • Сетевое Планирование и Управление, Вузфильм, 1973 г. www.youtube.com/watch?v=xDp6xKOVJYE
  11. • Обычно это не текучка, а большой проект с большим

    количеством связанных шагов и большим количеством вовлеченных исполнителей • Может повторяться на регулярной основе
  12. Программные реализации • Microsoft project • Вручную (не очень давнишнее

    обсуждение, как сделать сетевой график в экселе) • ???
  13. • Модель описывает проект чрезвычайной сложности (тысячи взаимосвязанных работ и

    событий) представлением, близким к интуитивному восприятию • Формализованное представление проекта позволяет применять к нему математическое алгоритмы, выявляющие «узкие места» проекта, требующие особого внимания или оптимизации, которые помогут ускорить весь проект • Формальное представление и математика позволяют применять вычислительную технику для управления проектами • (не просто для хранения данных и генерации отчетов, но и для сложных расчетов, определяющих ход реализации проекта, которые было бы крайне сложно провести в ручном режиме)
  14. Системы контроля версий • Хранить историю изменений кодовой базы проекта

    • Синхронизировать изменения между множеством разработчиков в команде
  15. Немного практики git • Репозиторий (отличие распределенной системы от централизованной)

    • Дерево версий • Редакции (правки — «коммит»): diff + комментарий • Бранчи (ветки) и теги (метки) — переключение веток разработки
  16. Немного практики git • Git не хранит каталоги (только пути

    к файлам) • Git не хранит файлы (только дифы) • Git хранит объекты и дифы к ним
  17. Немного практики git • Синхронизация с центральным репозиторием: push/pull (конфликты)

    • .gitignore: прямой путь (начинается с «/»), регулярные выражения «*» • каталог «.git» (просто есть в корне репозитория) • Дополнительно: форки, pull request
  18. Немного практики git: термины • master — бранч по умолчанию

    • указатель текущей точки — HEAD • имя удалённого (исходного / «центрального») репозитория — origin
  19. Стратегии ведения репозитория • Первый коммит — первоначальная база кода

    всей массой, • дальнейшие коммиты — тематические исправления (тикеты багтрекера) • коммитить в мастер (master) • помечать релизы тегами • боковые ответвления (побочные продукты и эксперименты) — бранчами
  20. Стратегия ведения репозитория: версии (semantic versioning) версии: x.y.z: • x

    — major: самая главная версия, много нового, ломаем обратную совместимость • y — minor: новая версия, новые возможности, не ломаем обратную совместимость • z — patch: исправления ошибок с сохранением обратной совместимости пререлиз (pre-release): • x.y.0-alpha1,2,3 • x.y.0-beta1,2,3 • x.y.0-rc1,2,3
  21. Стратегия ведения репозитория: версии (semantic versioning) • semver.org • Текущая

    (2019) версия рекомендаций: 2.0.0 • Это не обязывающие рекомендации: вас никто не заставит им следовать • В некоторых инструментах стратегия реализована жестко на уровне алгоритма • Например, npm (node package manager)
  22. Контр-примеры • Chrome, Firefox: натуральный ряд • Ubuntu: год.месяц +

    кодовое имя • Linux kernel: major.minor.patch, patch — исправления minor — просто очередная версия, может (и будет) ломать обратную совместимость major — по произволу Линуса Торвальдса
  23. Типичный сценарий • Изменить файлы проекта • git status проверить

    список изменений • git diff убедиться, что нет случайных изменений • git add . добавить файлы для коммита • git commit -m «вся суть изменений» зафиксировать коммит • Повторить произвольное количество раз • git push отправить все изменения в центральный репозиторий (на публичный сервер)
  24. Шпаргалка git на первое время • git clone https://github.com/sadr0b0t/babbler_h.git •

    git status • git diff [file] (выход: q) • git add . • git add file • git rm file • git mv src dest (или последовательно rm, add) • git commit -m «вся суть изменений»
  25. Шпаргалка git на первое время отменить git add для одного

    файла перед коммитом • git reset HEAD filename отменить все добавленные файлы • git reset отменить последний коммит: • git reset HEAD~
  26. Шпаргалка git на первое время посмотреть дерево репозитория • gitk

    --all удалить много файлов • git rm `git ls-files —deleted` • или git status и git rm [file] по-одному
  27. Контроль версий + тикеты • Открыть тикет с описанием проблемы

    • Внести исправления в исходный код • Закрыть тикет с указанием ссылки на соответствующие коммиты • Часто: один тикет — один коммит
  28. Сервисы онлайн • sourceforge.net (классика, svn, помним, любим издалека) •

    github.com (git+багтрекер, бесплатно — опенсурс, пропритарщина — подписка) • bitbucket.com (git+багтрекер, бесплатно — опенсурс, проприетарные мелкие проекты, большие проприетарные — подписка) • code.google.com (умерло, помянем) • GitLab + gitlab.com (есть сервис-облако, но можно развернуть на своём сервере)
  29. База знаний Wiki • Разметка в стиле Wiki (Markup) или

    Markdown • (упрощенный язык разметки, возможности — подмножество HTML, транслируется в HTML) • Страницу в режиме редактирования можно изменять прямо в браузере
  30. База знаний Wiki • Легко добавлять форматированный текст, картинки, ссылки,

    новые страницы • Можно вести заметки или развернуть полноценную документацию к проекту • В закрытом режиме или публично • В дополнение или вместо сайта
  31. Программные реализации • Обычно часть комплексной системы: redmine, gitlab, github

    и т.п. • В специальном разделе — база знаний, но разметку можно использовать в остальных частях системы, например, при форматировании текста тикетов • Персональные специализированные движки: MediaWiki (движок от Википедии), TWiki, DokuWiki и т. п. en.wikipedia.org/wiki/Personal_wiki
  32. Задания на спринт-2 • Завести репозиторий на github (или аналог)

    • Сделать коммит основной кодовой базы (скелет + первое мясо) • Завести тикеты на текущие задачи • Закрыть задачи с коммитами в git