К содержимому
ИС30

Поиск по сайту

Конспекты, лабы, квизы, ЧаВо и страницы

Войти

Подготовка к контрольной 30 октября. Git, Waterfall, Scrum, Kanban, СУЗ

Выжимка к контрольной на 12 баллов: поколения VCS и устройство Git, команды, ветки, откат и Git Flow, водопад, Scrum, Kanban, Agile и бережливое производство, системы управления знаниями, документация и трекинг задач.

Контрольная 30 октября по ИСРПО — на 12 баллов, темы: Git, Waterfall, Scrum, Kanban и системы управления знаниями (СУЗ). Это материал первых трёх лекций: Git, методологии и документация и управление знаниями. Здесь всё сжато до того, что стоит знать наизусть, плюс сравнения, на которых обычно ловят, и вопросы для самопроверки.

Как пользоваться

Факты взяты из слайдов лектора (репозиторий SDT_lectures) и наших конспектов лекций. Где лекция и первоисточник (Scrum Guide, документация Git) расходятся, указано оба варианта: на контрольной отвечайте как на лекции, но понимайте, как правильно. Формат заданий заранее не объявлен — готовьтесь и к тесту, и к открытым вопросам «сравните» и «перечислите».

ЧтоСколько
Дата30 октября
Максимум12 баллов
ТемыGit, Waterfall, Scrum, Kanban, СУЗ

1. Системы контроля версий

Определение 1. Система контроля версий (VCS, version control system) хранит историю изменений файлов: кто, когда и что поменял, — и позволяет вернуться к любой прошлой версии, не теряя остальных изменений.

Зачем: файлов в проекте много, меняются они несколько раз в день и разными людьми. «финал.docx», «финал-финал.docx» перестают работать уже на втором человеке.

1.1. Три поколения

ПоколениеСистемыЧто умели
ПервоеSCCS (1972, Марк Рочкинд, Bell Labs, на C); RCS (1982, Уолтер Тихи, открытая альтернатива SCCS)история отдельных файлов, локально, один пользователь за раз
ВтороеCVS (1986, Дик Грун); SVN / Subversion (2000, CollabNet, сейчас Apache)сеть и централизованный репозиторий с «официальной» версией; CVS впервые позволил нескольким людям одновременно работать с одними файлами
ТретьеGit (2005, Линус Торвальдс, для ядра Linux, в основном на C)распределённая модель: у каждого полная копия репозитория
Даты и авторы — частый вопрос теста

SCCS — 1972, первая. RCS — 1982. CVS — 1986, первая сетевая. SVN — 2000. Git — 2005, Торвальдс. Mercurial — тоже 2005, тоже распределённая, появилась по тому же поводу.

1.2. Централизованная и распределённая модели

Централизованная (CVS, SVN)Распределённая (Git, Mercurial)
Где историятолько на сервереу каждого разработчика целиком
Работа без сетипочти невозможнакоммиты, ветки, история — локально
Скоростькаждая операция идёт через сервербольшинство операций локальные, быстрые
Точка отказасервер: сгорел — история потеряналюбой клон — полная резервная копия
Безопасность кодаразработчик видит только свой кусоку каждого весь код: утечка ноутбука = утечка проекта
Контрольодна точка администрирования, видно, кто что сделалдисциплина ложится на команду: нужны ревью и CI
Бинарные файлыSVN хранит спокойноGit хранит плохо: каждый коммит кладёт файл целиком
Квалификация людейможно набирать дешёвый аутсорснужны люди, понимающие проект целиком

2. Как устроен Git

2.1. Хранилище объектов

  • Всё, что знает Git, лежит в скрытой папке .git, объекты — в .git/objects.
  • Каждый объект идентифицируется хэшем SHA-1 (40 шестнадцатеричных символов), содержимое сжато zlib. Имя файла объекта — его хэш.
  • Одинаковое содержимое даёт одинаковый хэш, поэтому одинаковые файлы хранятся один раз, а любое изменение содержимого меняет хэш — историю незаметно подделать нельзя.

Дополнение. На слайде порядок такой: «сжимается zlib, результат хэшируется SHA-1». В действительности Git считает SHA-1 от несжатого содержимого с коротким заголовком, а уже потом сжимает. Для ответа на вопрос «какие алгоритмы» достаточно: сжатие — zlib, хэш — SHA-1. Новые версии Git умеют и SHA-256.

Дополнение. Четыре типа объектов:

ОбъектЧто хранит
blobсодержимое одного файла (без имени)
treeкаталог: имена файлов и ссылки на blob и вложенные tree
commitссылка на tree (снимок проекта), родительские коммиты, автор, дата, сообщение
tagименованная метка на коммит (обычно версия релиза)

Коммит хранит снимок всего проекта, а не разницу. Неизменившиеся файлы просто ссылаются на тот же blob, поэтому снимки дёшевы. Сжатие разницами Git делает отдельно, при упаковке объектов в pack-файлы (при git push и git gc).

2.2. Три области и состояния файлов

ОбластьЧто этоКак попасть
Рабочий каталог (working directory)файлы, которые вы правите—
Индекс (staging area)то, что войдёт в следующий коммитgit add
Репозиторий (.git)зафиксированная историяgit commit

Состояния файла: untracked (Git о нём не знает) → staged (добавлен в индекс) → committed (зафиксирован) → modified (изменён после коммита, снова нужен add).

add и commit — два разных действия

git add кладёт изменения в индекс, git commit фиксирует индекс. IDE делает это одной кнопкой, но в консоли и на контрольной это два шага.

3. Основные команды Git

КомандаЧто делает
git initсделать текущую папку репозиторием (создаётся .git)
git clone <url>скачать копию удалённого репозитория со всей историей
git config --global user.name "…" / user.email "…"представиться; без этого первый коммит не создастся
git statusсостояние: ветка, изменённые, добавленные, неотслеживаемые файлы
git add <файл> / git add .добавить изменения в индекс
git commit -m "сообщение"зафиксировать индекс с сообщением
git commit --amendисправить последний коммит (сообщение или состав), пока он не отправлен
git logистория коммитов текущей ветки
git diffразница между рабочим каталогом и индексом (--staged — между индексом и коммитом)
git branch <имя>создать ветку от текущего коммита
git checkout <ветка> (git switch)переключиться на ветку
git checkout -b <ветка>создать ветку и сразу переключиться
git merge <ветка>влить указанную ветку в текущую
git pullзабрать изменения с удалённого репозитория и слить в текущую ветку (= fetch + merge)
git pushотправить локальные коммиты ветки на удалённый репозиторий
git remote -vсписок удалённых репозиториев (обычно origin)

Типичный цикл работы:

terminal
git clone https://github.com/user/project.git
cd project
git checkout -b feature/login     # своя ветка под задачу
# …правим файлы…
git status
git add .
git commit -m "Добавить форму входа (TASK-42)"
git push -u origin feature/login  # дальше — pull request

3.1. Гигиена коммитов

  • Сообщение коммита объясняет, что и зачем сделано: «Исправить падение при пустом списке», а не «fix», «asdf», «изменения».
  • В корпоративной разработке в сообщение пишут номер задачи: по нему CI/CD подтягивает сценарий сборки, а трекер связывает задачу с кодом.
  • Коммит подписан именем и email автора — по каждому багу можно найти, кто его внёс.
  • Один коммит — одно логическое изменение.

3.2. .gitignore

Файл .gitignore перечисляет, что не должно попадать в репозиторий: артефакты сборки, бинарники, зависимости, локальные настройки IDE, секреты.

.gitignore
build/
*.o
*.exe
node_modules/
.idea/
.env

4. Ветки, слияние и конфликты

Определение 2. Ветка — подвижный указатель на коммит. При новом коммите указатель текущей ветки сдвигается на него. HEAD — указатель на то, где вы сейчас (обычно на текущую ветку).

  • Ветки нужны, чтобы вести несколько задач параллельно и не ломать основную ветку. Основная ветка — main (раньше по умолчанию master).
  • Удаление ветки (git branch -d) удаляет только указатель: коммиты остаются, и по хэшу на них можно вернуться.

4.1. Слияние

terminal
git checkout main
git merge feature/login

Дополнение. Два вида слияния:

ВидКогдаЧто получается
fast-forwardв main не было новых коммитов после ответвленияуказатель main просто сдвигается вперёд, коммита слияния нет
трёхстороннее (merge commit)обе ветки ушли вперёдновый коммит с двумя родителями

4.2. Конфликт слияния

Возникает, когда в двух ветках по-разному изменили одно и то же место одного файла. Git останавливается и ставит в файле маркеры:

file.txt
<<<<<<< HEAD
версия из текущей ветки
=======
версия из вливаемой ветки
>>>>>>> feature/login

Порядок разрешения: оставить нужный вариант (или объединить), удалить маркеры, затем git add и git commit. Коммит после разрешения сам не появится.

В командах слияние в основную ветку идёт через pull request (GitHub) / merge request (GitLab): вы предлагаете изменения, коллеги делают ревью, CI прогоняет проверки, потом ветку сливают.

5. Если что-то пошло не так

СитуацияКомандаЧто делает
Опечатка в сообщении последнего коммитаgit commit --amendпереписывает последний коммит
Отменить последний коммит вместе с изменениямиgit reset --hard HEAD~1сдвигает ветку на коммит назад, рабочие файлы откатываются
Отменить коммит, но сохранить измененияgit reset --soft HEAD~1 (или --mixed, по умолчанию)коммит убран, изменения остаются в индексе (--soft) или в рабочих файлах (--mixed)
Найти, где всё было хорошоgit reflogжурнал всех перемещений HEAD во всех ветках: записи HEAD@{n}
Вернуться к записи журналаgit reset HEAD@{n}откат к состоянию из reflog
Отменить коммит, который был давно (или уже отправлен)git log, затем git revert <хэш>создаёт новый коммит, обратный указанному; история не переписывается
reset и revert

reset переписывает историю — им пользуются только для коммитов, которые ещё не отправлены (push). revert добавляет отменяющий коммит и безопасен для общей истории. HEAD~1 — один коммит назад, HEAD~N — NN коммитов назад.

6. Git Flow

Git Flow — договорённость о ветках в команде (Винсент Дриссен, 2010).

ВеткаОткудаКуда сливаетсяЗачем
main (master)——только выпущенные версии, каждая с тегом v1.0, v1.1…
developmain—основная ветка разработки, сюда собираются готовые фичи
feature/*developdevelopодна фича или задача
release/*developmain и developподготовка релиза: только исправления и номер версии
hotfix/*main (нужная версия)main и developсрочное исправление выпущенной версии
Как это звучало на лекции

На лекции было сказано, что в «основную» ветку попадают только финальные сборки по версиям, ошибку в конкретной сборке чинят в ветке hotfix от нужного коммита, а фичи и баги делают в отдельных ветках и сливают раз в релиз. Смысл тот же: заказчик видит чистую историю релизов. В каноническом Git Flow ветка релизов — main, а develop — ветка интеграции.

Зачем держать старые версии: заказчики редко ставят последнюю, и исправление или новую функцию иногда нужно сделать именно в их версии — тогда от её тега делают ветку.

7. Каскадная модель (Waterfall)

Определение 3. Каскадная модель (водопад, Waterfall) — разработка последовательными этапами; следующий начинается только после завершения предыдущего, возврат назад не предусмотрен.

Концепцию описал Уинстон Ройс в 1970 году в статье «Managing the Development of Large Software Systems» — и в той же статье разбирал её недостатки. Остальные методологии возникли во многом как ответ на проблемы водопада.

Год

В нашем конспекте лекции 2 записан 1950 год, на слайдах лектора — 1970 (Ройс). Верный ответ — 1970.

Этапы по слайду: определение требований → проектирование → конструирование (реализация, кодирование) → воплощение (интеграция) → тестирование и отладка (верификация) → инсталляция (внедрение) → поддержка. На лекции их сжимали до шести: требования, проектирование, разработка, тестирование, внедрение, поддержка.

ПлюсыМинусы
прозрачность: всегда понятно, на каком этапе проектназад ходить нельзя: ошибка в требованиях всплывает на тестировании, когда исправлять дорого
у каждого этапа свой хозяин, ясные зоны ответственностиобратная связь от заказчика и рынка — только в конце, через годы
фиксированные сроки и бюджет, удобно для договоров и госзаказа«дальше не моя проблема» — ответственность обрывается на границе этапа
подробная документация на каждом этапезаказчик видит продукт только в самом конце

Когда уместен: требования известны заранее и не поменяются, фиксированный бюджет, госзаказ, высокая цена ошибки (медицина, авиация, строительство).

8. Scrum

Определение 4. Scrum — фреймворк гибкой разработки: небольшая самоорганизующаяся кросс-функциональная команда выпускает продукт короткими итерациями — спринтами — и после каждой получает обратную связь.

Название — схватка из регби: вся команда вместе продавливает мяч к цели. Термин в разработку продуктов ввели Такеути и Нонака (1986), как фреймворк Scrum оформили Джефф Сазерленд и Кен Швабер (1995), правила описаны в Scrum Guide.

8.1. Базовые принципы со слайда

  1. Работа короткими циклами (спринтами) — проект делится на части и делается поэтапно.
  2. Гибкость — после каждого спринта проверка; при ошибках меняют стратегию или пересматривают бэклог.
  3. Заказчик участвует в разработке — через владельца продукта, который собирает обратную связь пользователей.
  4. Взаимодействие команды — несколько человек с общей целью.

Принципы работы команды: постоянное самосовершенствование, автономность (каждый отвечает и за общий результат, и за свою часть), кросс-функциональность (в команде есть все нужные навыки, она самодостаточна).

8.2. Роли

РольЧто делает
Владелец продукта (Product Owner)голос заказчика; ведёт и упорядочивает бэклог продукта, решает, что делать дальше, принимает результат
Скрам-мастер (Scrum Master)следит за соблюдением Scrum и таймингом встреч, убирает препятствия, сам продукт не делает
Разработчики (Developers, Delivery Team)делают продукт: код, тесты, анализ, документацию

Размер команды на лекции — 5–7 человек; по Scrum Guide 2020 — обычно не больше 10.

Входит ли скрам-мастер в команду

На лекции: скрам-мастер не член команды разработки и может быть общим на несколько команд. По Scrum Guide он входит в Scrum-команду (PO + SM + разработчики), но не в число разработчиков. Обе формулировки говорят одно: продукт он не делает.

8.3. События (ритуалы)

СобытиеКогда и сколькоЗачем
Спринт1–4 недели, фиксированной длиныконтейнер для всех остальных событий; итог — инкремент
Планирование спринтав началевыбрать задачи из бэклога продукта, оценить, сформировать бэклог спринта
Ежедневный стендап (Daily Scrum)каждый день, 15 минут«вчера сделал, сегодня сделаю, мешает…» — без технических обсуждений
Обзор спринта (Review, демо)в концепоказать сделанное владельцу продукта, получить обратную связь
Ретроспективапосле обзорачто в процессе работы улучшить в следующем спринте

На ритуалы уходит примерно 2,5–3 часа из 40-часовой недели.

8.4. Артефакты

АртефактЧто это
Бэклог продукта (Product Backlog)упорядоченный список всего, что может понадобиться в продукте; ведёт владелец продукта
Бэклог спринта (Sprint Backlog)задачи, взятые в текущий спринт, и план их выполнения
Инкрементработающий результат спринта, который можно показать и выпустить

MVP (minimum viable product) — минимальный работающий продукт. Пример с лекции: калькулятор, который умеет только складывать, уже можно продать и получить обратную связь, а дальше развивать за деньги заказчика.

Плюсы ScrumМинусы Scrum
быстрая обратная связь, можно менять курс каждый спринтфинал заранее не виден, сроки и бюджет не зафиксированы
работающий продукт ранозависимость от инвестора: деньги могут кончиться на любом спринте
заказчик участвует напрямуюстрадает целостность и качество при постоянных изменениях
много встреч, нужны квалифицированные и общительные люди

9. Kanban

Определение 5. Kanban (яп. «карточка», «вывеска») — метод управления потоком задач: работа визуализируется на доске, число задач в работе ограничивается, поток постоянно улучшается.

Происхождение — производственная система Toyota (Тайити Оно, конец 1940-х — 1950-е), часть бережливого производства. В разработку перенёс Дэвид Андерсон (2000-е).

Ключевые практики:

  1. Визуализация — доска с колонками этапов («Бэклог → В работе → Ревью → Готово»), каждая задача — карточка.
  2. Ограничение WIP (work in progress) — лимит задач в колонке: новую задачу берут, только когда закончили текущую («меньше начинай, больше заканчивай»).
  3. Управление потоком — следят за временем прохождения задачи (lead time — от появления до готовности, cycle time — от начала работы до готовности).
  4. Явные правила — всем понятно, когда карточка переходит в следующую колонку.
  5. Непрерывное улучшение — по доске видно узкие места и запас, процесс постепенно подстраивают.

Где особенно уместен: поддержка и эксплуатация, где задачи приходят непрерывно и есть SLA — соглашение об уровне сервиса, например «обращение обрабатывается за два часа». Карточка в трекере хранит ответственного, дедлайн, потраченное время и текст задачи.

9.1. Scrum и Kanban

ScrumKanban
Ритмитерации-спринты фиксированной длинынепрерывный поток, итераций нет
Роливладелец продукта, скрам-мастер, разработчикиобязательных ролей нет
Изменения посреди цикласостав спринта не меняютновую задачу можно взять в любой момент, если есть место по WIP
Ограничение работыобъёмом спринталимитом WIP в каждой колонке
Метрикискорость команды (velocity) за спринтlead time, cycle time, пропускная способность
Доскаочищается каждый спринтживёт постоянно
Где чащеразработка продуктаподдержка, эксплуатация, потоковые задачи
Kanban — не Scrum

Scrum организует команду и работу итерациями, Kanban визуализирует и улучшает поток. Kanban-доску часто вешают поверх Scrum-процесса (так называемый Scrumban), но одно другое не заменяет.

10. Agile, Lean и инкрементальная модель

10.1. Agile-манифест

Agile — не методология, а манифест, набор ценностей и принципов (2001, 17 авторов, среди них Швабер и Сазерленд). Scrum и Kanban — конкретные подходы, построенные на этих ценностях.

Четыре ценности:

  1. Люди и взаимодействие важнее процессов и инструментов.
  2. Работающий продукт важнее исчерпывающей документации.
  3. Сотрудничество с заказчиком важнее согласования условий контракта.
  4. Готовность к изменениям важнее следования первоначальному плану.

«Не отрицая важности того, что справа, мы всё-таки больше ценим то, что слева». К ценностям прилагаются 12 принципов.

10.2. Бережливое производство (Lean)

Бережливое производство — концепция управления, основанная на постоянном устранении всех видов потерь: всего, что не создаёт ценности для потребителя. Каждый сотрудник участвует в оптимизации, максимальная ориентация на потребителя. Пример с лекции: станочник тратил время на ходьбу за деталями — ящик поставили рядом, и производительность выросла без доплаты. Kanban — инструмент из Lean.

10.3. Инкрементальная модель

Продукт делается по частям (инкрементам): каждая часть проходит свой маленький цикл требования → проектирование → реализация → тестирование и добавляет функциональность к уже работающей версии. Компромисс между водопадом (план и этапы) и гибкими подходами (ранний работающий продукт). Живуча в корпоративном секторе, часто в виде гибридов.

10.4. Сводное сравнение

WaterfallИнкрементальнаяScrumKanban
Требованияфиксированы в началев основном в начале, уточняются по инкрементамменяются, живут в бэклогеменяются в любой момент
Результатодин раз в концепосле каждого инкрементапосле каждого спринтанепрерывно, по мере готовности задач
Обратная связьв концепосле инкрементакаждый спринтпостоянно
Сроки и бюджетфиксированычастично фиксированыгибкиегибкие
Подходитясные стабильные требования, госзаказбольшие системы с поставкой частяминовый продукт, неясный рынокподдержка, потоковые задачи с SLA

11. Системы управления знаниями

11.1. Определение и задачи

Определение 6. Система управления знаниями (СУЗ) — совокупность технологических и организационных инструментов, методов и решений, обеспечивающих процесс генерации, поиска, отбора, систематизации и распространения знаний в организации.

СУЗ — это не только программа: без процессов (кто пишет, кто обновляет, где искать) вики быстро превращается в свалку устаревших страниц.

Шесть задач СУЗ (со слайда):

  1. Организация и обеспечение генерации новых знаний внутри организации.
  2. Поиск новых знаний и мониторинг эволюции существующих.
  3. Идентификация, систематизация и хранение текущих знаний.
  4. Целенаправленное распространение знаний внутри организации.
  5. Создание инфраструктуры для генерации, хранения и распространения.
  6. Утилизация знаний — удаление устаревшего.

Зачем компании: bus factor (сколько людей должно выпасть, чтобы проект встал — при единице всё держится на одном человеке) и быстрый онбординг новичков.

11.2. Виды знаний и модель SECI

ВидЧто этоПример
Явное (explicit)записано, передаётся текстомREADME, схема архитектуры, регламент
Неявное (tacit)опыт и навыки в голове, словами передаётся плохочутьё, где искать баг

Модель SECI (Нонака и Такеути, 1995) — четыре перехода знания:

ПереходОткуда → кудаПример
Socialization — социализациянеявное → неявноенаставничество, парное программирование, работа рядом с сеньором
Externalization — экстернализациянеявное → явноезаписать шаги отладки в вики, нарисовать схему
Combination — комбинацияявное → явноесобрать из десяти заметок одно руководство
Internalization — интернализацияявное → неявноепрочитать инструкцию и научиться делать на практике

11.3. Поиск, генерация, хранение, распространение

ВопросОтветы с лекции
Где искатьофициальная документация; коммуникация с коллегами; код, комментарии и история коммитов; задачи и баг-трекеры
Как генерироватьмозговой штурм, ретроспективы, парное программирование, технические доклады и митапы, сообщества практик, ротация между командами
Где хранитьвики, файлы, Git (docs as code), чат, бумага
Как распространятьэкспертные сообщества; плюс онбординг, наставничество, ревью кода, рассылки

Хранение в чате — худший вариант: через месяц ничего не найти. В Git документация версионируется и проходит ревью вместе с кодом.

11.4. Виды документации

ВидДля когоЧто внутри
Пользовательскаяпользователикак пользоваться: руководство, справка, FAQ
Администраторскаяте, кто разворачивает и сопровождаетзависимости, архитектура, установка, настройка
Разработческаяразработчики, в том числе заказчикаустройство кода, API, сборка
Государственнаягосзаказчикпо ГОСТ: серия 19 (ЕСПД) для программ, серия 34 для автоматизированных систем

11.5. Инструменты и языки разметки

Базы знаний и вики: Confluence (Atlassian, в паре с Jira), DokuWiki (открытая, страницы в текстовых файлах без БД), MadCap Flare (инструмент техписателей: из одного источника — справка, PDF, сайт), Yonote (российская), а также Notion, GitHub Wiki, Markdown в репозитории.

Языки разметки текста со слайда:

ЯзыкГде
HTMLвеб-страницы
XML / XHTMLструктурированные данные; HTML по строгим правилам XML
MarkdownREADME, документация в репозиториях; внутри — диаграммы PlantUML и Mermaid
AsciiDocбольшие технические документы и книги
MediaWikiВикипедия и вики на этом движке
LaTeXнаучные тексты и формулы

PlantUML и Mermaid — не языки разметки текста, а языки описания диаграмм текстом: схема хранится в репозитории и меняется в одном коммите с кодом.

11.6. Системы трекинга задач

Трекер задач — система, где задачи заводят, назначают, ведут по статусам и обсуждают. Тоже хранилище знаний: история задачи показывает, кто, что, когда и почему делал.

Примеры: Jira, YouTrack, Redmine, Яндекс Трекер, GitHub Issues / Projects, GitLab Issues, Trello.

Типичные поля задачи: название и описание, исполнитель, автор, статус (колонка доски), приоритет, дедлайн, оценка и потраченное время, метки, связи с другими задачами, ссылки на коммиты и pull request. Если в коммите или PR на GitHub написать Closes #12, задача 12 закроется после слияния.

Частые ошибки

  1. «Git — централизованная система». Распределённая: у каждого полная копия с историей. Централизованные — CVS и SVN.
  2. Путать поколения. SCCS и RCS — локальные, по файлам; CVS и SVN — сетевые централизованные; Git — распределённый.
  3. Считать add и commit одним действием. Сначала индекс, потом фиксация.
  4. Делать reset после push. Отправленную историю не переписывают — для неё есть revert.
  5. Забыть коммит после разрешения конфликта. Убрать маркеры мало: нужны git add и git commit.
  6. Класть бинарники и сборку в Git. Для них .gitignore.
  7. Считать Agile методологией. Это манифест: 4 ценности и 12 принципов.
  8. Путать Scrum и Kanban. Спринты и роли против непрерывного потока и лимитов WIP.
  9. Обсуждать на стендапе технические детали. 15 минут, только статус задач.
  10. Путать обзор и ретроспективу. Обзор — о продукте с владельцем продукта, ретроспектива — о процессе внутри команды.
  11. Думать, что в водопаде можно вернуться на этап назад. Нельзя, поэтому ошибка в требованиях так дорога.
  12. Путать направления в SECI. Экстернализация — записать (неявное → явное), интернализация — научиться по записанному (явное → неявное).
  13. Считать СУЗ просто программой. Это инструменты плюс организационные процессы.

Мини-тренажёр

  1. Назовите системы контроля версий трёх поколений и чем поколения различаются.
  2. Кто и когда создал Git и для чего?
  3. Какие алгоритмы Git использует для хэширования и сжатия объектов? Где лежат объекты?
  4. Назовите три области Git и команды перехода между ними.
  5. Чем git pull отличается от git push? Из каких двух команд состоит pull?
  6. В чём разница между git reset --hard HEAD~1 и git revert <хэш>? Что выбрать, если коммит уже отправлен?
  7. Что показывает git reflog и когда он спасает?
  8. Как разрешить конфликт слияния по шагам?
  9. Какие ветки есть в Git Flow и откуда создаётся hotfix?
  10. Перечислите этапы каскадной модели. Кто и когда её описал?
  11. Назовите роли Scrum и чем занимается каждая.
  12. Перечислите события Scrum и их назначение. Сколько длится стендап?
  13. Назовите три артефакта Scrum.
  14. Что такое WIP-лимит и зачем он нужен?
  15. Назовите три отличия Scrum от Kanban.
  16. Перечислите четыре ценности Agile-манифеста.
  17. Дайте определение СУЗ и назовите её задачи.
  18. Назовите переходы SECI с примерами.
  19. Какие виды документации бывают и для кого каждый?
  20. Какие поля обычно есть у задачи в трекере? Назовите три трекера.
Ответы
  1. Первое — SCCS, RCS: локально, отдельные файлы, один пользователь. Второе — CVS, SVN: сеть и центральный сервер. Третье — Git (и Mercurial): распределённые, у каждого полная копия.
  2. Линус Торвальдс в 2005 году для разработки ядра Linux.
  3. Хэш — SHA-1, сжатие — zlib. Объекты — в .git/objects, имя файла — хэш.
  4. Рабочий каталог → (git add) → индекс → (git commit) → репозиторий.
  5. pull забирает изменения с удалённого репозитория и сливает их в текущую ветку (fetch + merge), push отправляет локальные коммиты на удалённый.
  6. reset --hard HEAD~1 удаляет последний коммит из истории ветки и откатывает файлы; revert создаёт новый коммит, обратный указанному, история сохраняется. Для отправленного — revert.
  7. Журнал всех перемещений HEAD во всех ветках (HEAD@{n}). Спасает после неудачного reset, удаления ветки и прочих «всё сломал»: находите запись до поломки и делаете git reset HEAD@{n}.
  8. Открыть файл, выбрать нужный вариант между <<<<<<<, =======, >>>>>>>, удалить маркеры, git add, git commit.
  9. main (релизы с тегами), develop (интеграция), feature/*, release/*, hotfix/*. Hotfix создаётся от main (от нужной выпущенной версии) и сливается в main и develop.
  10. Требования → проектирование → реализация → интеграция → тестирование → внедрение → поддержка. Уинстон Ройс, 1970.
  11. Владелец продукта — голос заказчика, бэклог и приоритеты. Скрам-мастер — соблюдение Scrum, тайминг, препятствия. Разработчики — делают продукт.
  12. Спринт (контейнер, 1–4 недели), планирование (что берём), ежедневный стендап (15 минут, синхронизация), обзор (демо и обратная связь по продукту), ретроспектива (улучшение процесса).
  13. Бэклог продукта, бэклог спринта, инкремент.
  14. Ограничение числа задач в колонке доски. Не даёт хвататься за всё сразу, ускоряет завершение задач и показывает узкие места.
  15. Например: итерации против непрерывного потока; обязательные роли против их отсутствия; состав спринта фиксирован, а в Kanban задачу можно взять в любой момент; ограничение объёмом спринта против WIP-лимитов.
  16. Люди и взаимодействие важнее процессов и инструментов; работающий продукт важнее исчерпывающей документации; сотрудничество с заказчиком важнее согласования контракта; готовность к изменениям важнее следования плану.
  17. Совокупность технологических и организационных инструментов, методов и решений для генерации, поиска, отбора, систематизации и распространения знаний в организации. Задачи: генерация, поиск и мониторинг, систематизация и хранение, распространение, инфраструктура, утилизация.
  18. Социализация (неявное → неявное, наставничество), экстернализация (неявное → явное, записать в вики), комбинация (явное → явное, свести заметки в руководство), интернализация (явное → неявное, научиться по инструкции).
  19. Пользовательская — пользователям; администраторская — тем, кто устанавливает и сопровождает; разработческая — разработчикам; государственная — госзаказчику, по ГОСТ.
  20. Название, описание, исполнитель, статус, приоритет, дедлайн, потраченное время, метки, связи, ссылки на код. Jira, YouTrack, Redmine (а также Яндекс Трекер, GitHub Issues, Trello).

Шпаргалка

ПонятиеСуть
VCSистория изменений файлов с возможностью вернуться к любой версии
Поколения VCS1 — SCCS (1972), RCS (1982); 2 — CVS (1986), SVN (2000); 3 — Git (2005, Торвальдс)
Централизованнаяистория на сервере, одна точка отказа и администрирования
Распределённаяу каждого полная копия, работа без сети, нужна дисциплина и ревью
Объекты Git.git/objects, хэш SHA-1, сжатие zlib; blob, tree, commit, tag
Три областирабочий каталог → add → индекс → commit → репозиторий
Началоgit init, git clone <url>, git config user.name / user.email
Циклstatus, add, commit -m, log, push, pull
Веткаподвижный указатель на коммит; HEAD — где вы сейчас
Веткиbranch, checkout, checkout -b, merge
Конфликтправка одного места в двух ветках; убрать маркеры → add → commit
Откатcommit --amend, reset --hard HEAD~1, reflog, revert <хэш>
reset / revertreset переписывает историю (до push), revert добавляет отменяющий коммит
.gitignoreчто не хранить: сборку, бинарники, зависимости, секреты
Git Flowmain — релизы, develop — интеграция, feature, release, hotfix от main
Waterfallпоследовательные этапы без возврата; Ройс, 1970
Этапы водопадатребования → проектирование → реализация → интеграция → тестирование → внедрение → поддержка
Scrumитерации-спринты, кросс-функциональная команда; «схватка» из регби
Роли Scrumвладелец продукта, скрам-мастер, разработчики
События Scrumспринт, планирование, стендап 15 минут, обзор, ретроспектива
Артефакты Scrumбэклог продукта, бэклог спринта, инкремент
MVPминимальный работающий продукт для ранней обратной связи
Kanbanдоска, лимит WIP, управление потоком, непрерывное улучшение; Toyota
SLAсоглашение об уровне сервиса, например «ответ за 2 часа»
Agileманифест 2001 года: 4 ценности, 12 принципов
Leanустранение потерь — всего, что не создаёт ценности
Инкрементальная модельпродукт частями, каждая — мини-цикл
СУЗинструменты и методы генерации, поиска, отбора, систематизации и распространения знаний
Задачи СУЗгенерация, поиск, систематизация и хранение, распространение, инфраструктура, утилизация
SECIсоциализация, экстернализация, комбинация, интернализация
Виды документациипользовательская, администраторская, разработческая, государственная (ГОСТ)
Базы знанийConfluence, DokuWiki, MadCap Flare, Yonote
РазметкаHTML, XML/XHTML, Markdown (+ PlantUML, Mermaid), AsciiDoc, MediaWiki, LaTeX
ТрекерыJira, YouTrack, Redmine, Яндекс Трекер, GitHub Issues, Trello

Проверь себя

23 вопроса по материалу лекции. Результаты хранятся только в вашем браузере.

Пробная проверка перед контрольной: история VCS, устройство и команды Git, откат и Git Flow, методологии разработки, системы управления знаниями

  • 23 вопроса
  • Результат виден сразу после каждого ответа
  • Порядок вопросов случайный

Комментарии0

Пока никто ничего не написал.

Войдите, чтобы оставить комментарий