Методология SCRUM Методология гибкой разработки программного обеспечения Гибкая методология разработки (Agile) Минимизация рисков, путем сведения разработки к коротким циклам – итерациям Итерация – программный продукт в миниатюре Программный проект в конце итерации Waterfall vs. Agile The Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. Основа SCRUM Методология гибкой разработки Основа – итеративная разработка Правила, по которым планируется и управляется список требования к продукту Итерация = планирование + фиксация + реализация + анализ SCRUM - концепция Каркас, включающий набор практик и предопределенных ролей Самоорганизующаяся команда Постоянное определение приоритетных задач Обратная связь по результатам итерации Девиз SCRUM — «анализируй и адаптируй» SCRUM – иллюстрация SCRUM роли Product Owner – человек, отвечающий за разработку продукта Scrum Master – человек, отвечающий за взаимодействие менеджмента и команды Scrum Team – самоорганизующаяся и самоуправляемая Product Owner - обязанности Отвечает за формирование product vision Управляет ожиданиями заказчиков и всех заинтересованных лиц Координирует и приоритизирует Product backlog Предоставляет понятные и тестируемые требования команде Взаимодействует с командой и заказчиком Отвечает за приемку кода в конце каждой итерации Product Owner ставит задачи команде, но он не вправе ставить задачи конкретному члену проектной команды в течении спринта. Scrum Master - обязанности Создает атмосферу доверия, Участвует в митингах в качестве фасилитатора Устраняет препятствия Делает проблемы и открытые вопросы видимыми Отвечает за соблюдение практик и процесса в команде Скрам Мастер ведет Daily Scrum Meeting и отслеживает прогресс команды при помощи Sprint Backlog, отмечая статус всех задач в спринте. Scrum Team - обязанности Отвечает за оценку элементов баклога Принимает решение по дизайну и реализации Разрабатывает софт и предоставляет его заказчику Отслеживает собственный прогресс (вместе со Scrum Master) Отвечает за результат перед Product Owner Типичные размер команды - 7 плюс минус 2 Нет заранее определенных и поделенных ролей Должна находиться в одном месте Артефакты Product Backlog - это приоритезированный список имеющихся на данный момент бизнес-требований и технических требований к системе. Sprint Backlog содержит функциональность, выбранную Product Owner из Product Backlog Product backlog Item Summaries Total days Sprint 1 Import verification dialog Import status table Import on server: write status to the database Client: request to get current import progress Server: request to get current import progress Po-files encoding Replace encodings combobox with utf8 checkbox Remove encoding information from po-file Other features Remove no longer used strings from the product Add log file Http request to get po-file Sprint 2 Show line ending symbols In not editable fields (text in "Translate/Preview") In editable fields (translation, text in "Manage products") Deluxe import verification dialog Server: request to get added/removed texts Client: dialog to view added/remover texts Investigate and optimize import Make WebTranstool work faster (investigating) Write export to old Transool format Import faliure notice Make WebTranstool work faster (implementation) Orig. Est. Resp. Hours of work remaining until completion 99 1 2 96 42 3 5 3 3 3 5 3 3 0 0 0 0 3 1 3 1 0 0 2 21 13 2 21 13 0 0 0 1 1 1 0 5 5 5 0 5 5 13 13 3 ? ? 3 4 5 3 ## ## 5 5 5 5 13 13 13 13 0 0 0 0 ? ? 3 ? ? ? ? Sprint backlog Item Summaries Начальная оценка работы Orig. Est. Act. Diff Resp. Status Total hours Import verification dialog Import status table Import on server: write status to the database Client: request to get current import progress Server: request to get current import progress Roll back import on user request Client: import progress and import result dialog Send import event id to client Users language restrictions Add "powerful" field to the User table Not powerul users - only their native language Sort texts like they're sorted in the po-file Add "order" field to Original_Text_Product table Update "order" field when importing po-file Sort texts by "order" when sending to client Write script to update database Po-files encoding Replace encodings cb with utf8 checkbox Remove encoding information from po-file Оценка оставшейся работы на текущее число Время, затраченное на задачу 58 3 5 3 3 21 5 2 2 2 1 3 1 3 3 1 51 0 2 4 1 1 21 6 1 0 3 0 0 0 1 6 1 0 3 1 7 0 1 1 2 2 0 -1 1 0 -1 2 0 1 2 -5 2 0 0 0 Hours of work remaining until 18 19 22 23 24 25 58 49 43 33 21 NK NK AG NK NK AG EK Done 3 0 0 0 0 Testing 5 3 5 2 1 Done 3 2 0 0 0 Done 3 2 0 0 0 In progress 21 21 21 16 10 Testing 5 3 3 3 2 Done 2 0 0 0 0 AG AG Done Done 2 2 2 2 2 2 2 2 0 0 NK EK NK AG Done Testing Done In progress 1 3 1 3 0 2 5 3 0 1 2 3 0 1 0 3 0 1 0 3 3 1 3 1 3 1 3 1 3 1 NK Sprint burndown Спринт (Sprint) Итерация в Scrum (2-4 недели) Результат спринта – готовый продукт (build) Короткие спринты обеспечивают быстрый feedback Каждый спринт – маленький «водопад» Список задач на спринт фиксирован Жизненный цикл Спринта (1/2) Планирование спринта Первое планирование Участники: команда, Product Owner, Scrum Master, пользователи, менеджмент Цель: Определить цель спринта (Sprint Goal) и Sprint Backlog - функциональность, которая будет разработана в течение следующего спринта для достижения цели спринта. Второе планирование Участники: Scrum Master, команда Цель: определить, как именно будет разрабатываться определенная функциональность для того, чтобы достичь цели спринта. Для каждого элемента Sprint Backlog определяется список задач и оценивается их продолжительность. Жизненный цикл спринта (2/2) Остановка спринта (Sprint Abnormal Termination) – исключительная ситуация Daily Scrum Meeting Что сделано вчера? Что будет сделано сегодня? С какими проблемами столкнулся? Демо и ревью спринта – демонстрация продукта и анализ достигнутых результатов