SlideShare a Scribd company logo
1 of 44
1
2. Методологии Agile
Технологии разработки программного обеспечения
() Владислав Лавров, vlavrov.com
2
• «Экстремальное программирование»
(eXtreme Programming, XP)
• Scrum
• Метод разработки динамических систем
(Dynamic Systems Development Method, DSDM)
• «Парное программирование»
(Pair Programming)
• Бережливая разработка программного обеспечения
(Lean Software Development, LSD)
• Crystal Methods
Основные методологии (практики) Agile
() Владислав Лавров, vlavrov.com
3
2.1. Метод «Экстремальное программирование»
(eXtreme Programming, XP)
() Владислав Лавров, vlavrov.com
4
Источник https://ru.wikipedia.org/wiki
Создатели метода XP
() Владислав Лавров, vlavrov.com
Уорд Каннингем
Howard G. Cunningham
Кент Бек
Kent Beck
Мартин Фаулер
Martin Fowler
5
Основные приёмы экстремального программирования
() Владислав Лавров, vlavrov.com
1) Короткий цикл обратной связи (Fine-scale feedback)
• Разработка через тестирование
(Test-driven development, TDD)
• Игра в планирование (Planning game)
• Заказчик всегда рядом (Whole team, Onsite customer)
• Парное программирование (Pair programming)
6
Основные приёмы экстремального программирования
(продолжение)
() Владислав Лавров, vlavrov.com
2) Непрерывный, а не пакетный процесс
• Непрерывная интеграция
(Continuous integration)
• Рефакторинг
(Design improvement, Refactoring)
• Частые небольшие релизы
(Small releases)
7
Основные приёмы экстремального программирования
(продолжение)
() Владислав Лавров, vlavrov.com
3) Понимание, разделяемое всеми
• Простота (Simple design)
• Метафора системы
(System metaphor)
• Коллективное владение кодом (Collective code ownership) или
выбранными шаблонами проектирования (Collective patterns
ownership)
• Стандарт кодирования (Coding standard or Coding conventions)
8
Основные приёмы экстремального программирования
(окончание)
() Владислав Лавров, vlavrov.com
4) Социальная защищённость программиста (Programmer welfare):
• 40-часовая рабочая неделя (Sustainable pace, Forty-hour week)
9
2.1.1. Тестирование
() Владислав Лавров, vlavrov.com
Метод XP предполагает написание
автоматических тестов (программный код,
написанный специально для того, чтобы тестировать логику другого
программного кода).
Особое внимание уделяется двум разновидностям тестирования:
• модульное тестирование, или юнит-тестирование модулей;
• функциональное (интеграционное) тестирование.
10
2.1.2. Игра в планирование
() Владислав Лавров, vlavrov.com
Основная цель игры в планирование
в методе XP — быстро сформировать
приблизительный план работы и постоянно
обновлять его по мере того, как условия
задачи становятся всё более чёткими.
Артефакты игры в планирование:
• набор бумажных карточек, на которых записаны пожелания заказчика
(customer stories);
• приблизительный план работы по выпуску следующих одной или нескольких
небольших версий продукта.
www.selfishprogramming.com
11
2.1.3. Заказчик всегда рядом
() Владислав Лавров, vlavrov.com
«Заказчик» в XP — это не тот, кто оплачивает счета, а конечный
пользователь программного продукта.
Метод XP утверждает, что заказчик должен быть всё время на связи и
доступен для вопросов.
12
2.1.4. Парное программирование
() Владислав Лавров, vlavrov.com
• Парное программирование предполагает,
что весь код создается парами программистов,
работающих за одним компьютером.
• Один из них работает непосредственно
с текстом программы, другой просматривает его работу и следит за
общей картиной происходящего. При необходимости клавиатура
свободно передаётся от одного к другому.
• В течение работы над проектом пары не фиксированы: рекомендуется их
перемешивать, чтобы каждый программист в команде имел хорошее
представление о всей системе.
www.selfishprogramming.com
13
2.1.5. Непрерывная интеграция
() Владислав Лавров, vlavrov.com
• Непрерывная интеграция
(CI, англ. Continuous Integration) — это практика
разработки программного обеспечения,
которая заключается в выполнении частых автоматизированных сборок
проекта для скорейшего выявления и решения интеграционных проблем.
• В обычном проекте, где над разными частями системы разработчики
трудятся независимо, стадия интеграции является заключительной. Она
может непредсказуемо задержать окончание работ.
• Переход к непрерывной интеграции позволяет снизить трудоёмкость
интеграции и сделать её более предсказуемой за счет наиболее раннего
обнаружения и устранения ошибок и противоречий.
14
2.1.6. Рефакторинг
() Владислав Лавров, vlavrov.com
• Рефакторинг (refactoring) — это методика улучшения
кода без изменения его функциональности.
• В методе XP рефакторинг является неотъемлемой частью цикла
разработки ПО: разработчики попеременно то создают новые
тесты и функциональность, то выполняют рефакторинг кода для
улучшения его логичности и прозрачности.
• Автоматическое юнит-тестирование позволяет убедиться, что
рефакторинг не разрушил существующую функциональность.
15
2.1.7. Частые небольшие релизы (releases)
() Владислав Лавров, vlavrov.com
• Версии (releases) продукта должны
поступать в эксплуатацию как можно
чаще.
• Работа над каждой версией должна
занимать как можно меньше времени.
• При этом каждая версия должна быть
достаточно осмысленной с точки
зрения полезности для бизнеса.
16
2.1.8. Простота проектирования
() Владислав Лавров, vlavrov.com
• В процессе работы условия задачи могут неоднократно
измениться, а значит, разрабатываемый продукт
не следует проектировать заблаговременно
целиком и полностью.
• Попытка детально спроектировать систему в самом начале работы является напрасной тратой
времени.
• Проектирование — это настолько важный процесс, что его необходимо выполнять постоянно в
течение всего времени работы над проектом.
• Проектирование должно выполняться небольшими этапами, с учётом постоянно изменяющихся
требований.
• В каждый момент времени следует пытаться использовать наиболее простой дизайн, который
подходит для решения текущей задачи, и менять его по мере того, как условия задачи меняются
17
2.1.9. Метафора системы
() Владислав Лавров, vlavrov.com
• Метафора системы (system metaphor) — это аналог того,
что в большинстве методик называется архитектурой —
это представление о компонентах системы и их
взаимосвязях между собой.
• Разработчикам необходимо проводить анализ
архитектуры программного обеспечения для того, чтобы
понять, в каком месте системы необходимо добавить
новую функциональность, и с чем будет
взаимодействовать новый компонент.
18
2.1.10. Коллективное владение кодом
() Владислав Лавров, vlavrov.com
• Каждый член команды несёт ответственность
за весь исходный код. Каждый вправе вносить
изменения в любой участок программы.
• За работоспособность кода несет ответственность
последний, кто его изменял
• Все программисты знакомятся со всеми частями кода системы.
• Важное преимущество коллективного владения кодом — в том, что оно
ускоряет процесс разработки, поскольку при появлении ошибки её может
устранить любой программист.
19
2.1.11. Стандарты кодирования
() Владислав Лавров, vlavrov.com
• Стандарт оформления кода
(стандарт кодирования,
стиль программирования) — набор правил
и соглашений, используемых при написании
исходного кода на некотором языке программирования.
• Наличие общего стиля программирования облегчает понимание и
поддержание исходного кода, написанного более чем одним
программистом, а также упрощает взаимодействие нескольких
человек при разработке программного обеспечения.
20
2.1.12. 40-часовая рабочая неделя
() Владислав Лавров, vlavrov.com
• Продолжительность рабочей недели не должна превышать 40
часов. По сравнению с обычной практикой постоянных
переработок, в средне- и долгосрочной перспективе это повышает
производительность проектной команды за счет уменьшения
стресса и переутомления.
21
2.2. Метод Scrum
() Владислав Лавров, vlavrov.com
22
Библиография
() Владислав Лавров, vlavrov.com
Майк Кон.
Scrum. Гибкая разработка ПО.
Пер. с англ. - М. : ООО “И.Д.
Вильямс”, 2011. - 576 с.
Хенрик Книберг.
Scrum и XP: заметки с передовой.
Пер. с англ. 2007. - 94 с.
Борис Вольфсон.
Гибкие методологии разработки.
112 с.
23
Что такое Scrum?
() Владислав Лавров, vlavrov.com
Скрам (Scrum) — это набор принципов, на которых строится процесс
разработки, позволяющий в жёстко фиксированные и небольшие по
времени итерации, называемые спринтами (sprints), предоставлять
конечному пользователю работающее ПО с новыми возможностями, для
которых определён наибольший приоритет.
Возможности ПО к реализации в очередном спринте определяются в
начале спринта на этапе планирования и не могут изменяться на всём его
протяжении. При этом строго фиксированная небольшая длительность
спринта придаёт процессу разработки предсказуемость и гибкость.
24
Основные элементы Scrum
() Владислав Лавров, vlavrov.com
Роли
· Владелец продукта
· Скрам-мастер
· Команда
Артефакты
· Бэклог продукта
· Бэклог спринта
· Инкремент продукта
Процессы
· Скрам-митинг
· Планирование спринта
· Спринт
· Обзор спринта
· Ретроспектива
25
Роли в Scrum
() Владислав Лавров, vlavrov.com
• Владелец продукта (Product owner, Менеджер продукта) – это
человек, ответственный приоритезацию требований и часто за их
создание.
• Скрам-мастер – член команды, который дополнительно отвечает
за процессы, координацию работы команды и поддержание
социальной атмосферы в команде.
• Команда – 7±2 человек, которые реализуют требования владельца
продукта.
26
Артефакты в Scrum
() Владислав Лавров, vlavrov.com
• Бэклог продукта (Product Backlog) – приоритезированный список
требований с оценкой трудозатрат. Обычно он состоит из бизнес-
требований, которые приносят конкретную бизнес-ценность и
называются элементы бэклога.
• Бэклог спринта (Sprint Backlog) – часть бэклога продукта, с самой
высокой важностью и суммарной оценкой, не превышающей
скорость команды, отобранная для спринта.
• Инкремент (от англ. increment «увеличение») продукта – новая
функциональность продукта, созданная во время спринта
спринта.
27
История пользователя включает:
() Владислав Лавров, vlavrov.com
• Уникальный числовой идентификатор истории – обычно совпадает с
идентификатором истории пользователя из трекера, которым пользуется
команда. Этот идентификатор позволяет точно сказать, о какой истории
пользователя в данный момент идет речь.
• Название истории пользователя – короткое (примерно до 10 слов)
описание функционала с точки зрения пользователя, сформулированное
в виде тройки «Роль», «Действие», «Цель».
• Важность – уникальный числовой приоритет истории пользователя, чем
она выше, тем раньше данную историю необходимо сделать.
• Оценка – числовая относительная оценка истории пользователя по
специальной шкале.
28
() Владислав Лавров, vlavrov.com
Историю пользователя удобно размещать на стикере,
который прикрепляется на доску.
номер в трекере задач
важность
оценка
29
Процессы в Scrum. Скрам-митинг.
() Владислав Лавров, vlavrov.com
• Скрам-митинг (Scrum meeting, скрам, ежедневный скрам, планерка)
– собрание членов команды (с возможностью приглашения
владельца продукта) для синхронизации деятельности команды и
обозначения проблем.
• Каждый член команды отвечает на три вопроса:
1. Что было сделано с предыдущего скрам-митинга?
2. Какие есть проблемы?
3. Что будет сделано к следующему скрам митингу?
30
Процессы в Scrum. Планирование спринта
() Владислав Лавров, vlavrov.com
• Основным результатом планирования спринта является бэклог
спринта – список задач, которые команда планирует реализовать в
рамках спринта.
• Поскольку длина спринта в Scrum жестко фиксирована, то команда
определяет количество элементов бэклога (объем работ), которые
она может реализовать.
31
Процессы в Scrum. Обзор спринта
() Владислав Лавров, vlavrov.com
• Обзор спринта (также часто используется термин «демонстрация»
или сокращенно «демо») – показ владельцу продукта (и
заинтересованным лицам) работающего функционала продукта,
сделанного за спринт.
• Демонстрация результатов работы не только мотивирует команду,
но и подталкивает реализовывать задачи полностью.
• Основная задача проведения обзора спринта заключается в
получении обратной связи.
32
Получение обратной связи в Scrum *
() Владислав Лавров, vlavrov.com
* Источник: Б.Вольфсон. Гибкие методологии разработки.
33
Процессы в Scrum. Ретроспектива
() Владислав Лавров, vlavrov.com
• Ретроспективу проводят после обзора спринта спустя небольшое
количество времени, чтобы оперативно получить обратную связь
(feed back).
• Традиционным является формат по сбору данных, который
заключается в ответах каждого участника на три вопроса:
1. Что было сделано хорошо?
2. Что можно улучшить?
3. Какие улучшения будем делать?
34
Общая схема Scrum *
() Владислав Лавров, vlavrov.com
* Источник: Б.Вольфсон. Гибкие методологии разработки.
35
2.3. Метод разработки динамических систем
(Dynamic Systems Development Method, DSDM)
() Владислав Лавров, vlavrov.com
36
Метод разработки динамических систем
(Dynamic Systems Development Method, DSDM)
() Владислав Лавров, vlavrov.com
• Методика основана на концепции быстрой разработки
приложений (Rapid Application Development, RAD).
• Цель метода – сдать готовый проект вовремя и уложиться в
бюджет, но в то же время регулируя изменения требований к
проекту во время его разработки.
37
Основные принципы DSDM
() Владислав Лавров, vlavrov.com
1. Вовлечение пользователя
2. Команда должна быть уполномочена принимать важные для проекта
решения без согласования с начальством.
3. Частая поставка версий результата.
4. Главный критерий - как можно более быстрая поставка программного
обеспечения, которое удовлетворяет текущим потребностям рынка.
5. Разработка - итеративная и инкрементная.
6. Любые изменения во время разработки - обратимы.
7. Требования устанавливаются на высоком уровне прежде, чем начнётся
проект.
8. Тестирование интегрировано в жизненный цикл разработки.
9. Взаимодействие и сотрудничество между всеми участниками необходимо
для его эффективности.
38
Стадии работы DSDM
() Владислав Лавров, vlavrov.com
• Стадия 1 – Предпроектная
• Стадия 2 – Жизненный цикл проекта
• Стадия 3 – Постпроектная
39
Жизненный цикла проекта DSDM
() Владислав Лавров, vlavrov.com
• Этап 1: Исследование реализуемости
• Этап 2: Исследование экономической целесообразности
• Этап 3: Создание функциональной модели
• Этап 4: Проектирование и разработка
• Этап 5: Реализация
40
2.4. Метод «Парное программирование»
(Pair Programming)
() Владислав Лавров, vlavrov.com
41
2.4. Метод «Парное программирование»
(Pair Programming)
() Владислав Лавров, vlavrov.com
• Исходный код создаётся парами людей, программирующих одну
задачу, сидя за одним рабочим местом.
• Один программист («ведущий») управляет компьютером и, в
основном, думает над кодированием в деталях.
• Другой программист («штурман») сосредоточен на картине в целом
и непрерывно просматривает код, производимый первым
программистом.
• Время от времени они меняются ролями, обычно, каждые полчаса.
42
Парное программирование.
Роли разработчиков при работе в паре *
() Владислав Лавров, vlavrov.com
* Источник: Б.Вольфсон. Гибкие методологии разработки.
43
2.5. Метод «Бережливая разработка программного
обеспечения (Lean Software Development, LSD)
() Владислав Лавров, vlavrov.com
44
2.6. Метод «Crystal Methods»
() Владислав Лавров, vlavrov.com

More Related Content

What's hot

C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12
Technopark
 
Benefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controllBenefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controll
Mykyta Hopkalo
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
seleznev_stas
 
Восьмая лекция курса "Введение в системную инженерию"
Восьмая лекция курса "Введение в системную инженерию"Восьмая лекция курса "Введение в системную инженерию"
Восьмая лекция курса "Введение в системную инженерию"
Anatoly Levenchuk
 
CodeFest 2011. Федянина С. — Эффективная работа распределенной команды в Soft...
CodeFest 2011. Федянина С. — Эффективная работа распределенной команды в Soft...CodeFest 2011. Федянина С. — Эффективная работа распределенной команды в Soft...
CodeFest 2011. Федянина С. — Эффективная работа распределенной команды в Soft...
CodeFest
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
Sergii Shmarkatiuk
 

What's hot (19)

МиСПИСиТ (тестирование и отладка)
МиСПИСиТ (тестирование и отладка)МиСПИСиТ (тестирование и отладка)
МиСПИСиТ (тестирование и отладка)
 
МиСПИСиТ (архитектура)
МиСПИСиТ (архитектура)МиСПИСиТ (архитектура)
МиСПИСиТ (архитектура)
 
МиСПИСиТ (структура)
МиСПИСиТ (структура)МиСПИСиТ (структура)
МиСПИСиТ (структура)
 
Технологии разработки ПО
Технологии разработки ПОТехнологии разработки ПО
Технологии разработки ПО
 
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
 
C++ осень 2012 лекция 12
C++ осень 2012 лекция 12C++ осень 2012 лекция 12
C++ осень 2012 лекция 12
 
Benefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controllBenefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controll
 
ClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDDClubQA #2. Unit testing and TDD
ClubQA #2. Unit testing and TDD
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
 
Восьмая лекция курса "Введение в системную инженерию"
Восьмая лекция курса "Введение в системную инженерию"Восьмая лекция курса "Введение в системную инженерию"
Восьмая лекция курса "Введение в системную инженерию"
 
Модуль 15. Лекция 57-58. Обзоры платформ для различных проектов
Модуль 15. Лекция 57-58. Обзоры платформ для различных проектовМодуль 15. Лекция 57-58. Обзоры платформ для различных проектов
Модуль 15. Лекция 57-58. Обзоры платформ для различных проектов
 
CodeFest 2011. Федянина С. — Эффективная работа распределенной команды в Soft...
CodeFest 2011. Федянина С. — Эффективная работа распределенной команды в Soft...CodeFest 2011. Федянина С. — Эффективная работа распределенной команды в Soft...
CodeFest 2011. Федянина С. — Эффективная работа распределенной команды в Soft...
 
Процесс тестирования в распределенной команде
Процесс тестирования в распределенной командеПроцесс тестирования в распределенной команде
Процесс тестирования в распределенной команде
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)
 
Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)Training Labs (www.cmcons.com)
Training Labs (www.cmcons.com)
 
тестирование программного обеспечения
тестирование программного обеспечениятестирование программного обеспечения
тестирование программного обеспечения
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советы
 
Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01Проектирование Программных Систем. Лекция 01
Проектирование Программных Систем. Лекция 01
 

Viewers also liked

Гибкие методологии разработки ПО в реальном мире
 Гибкие методологии разработки ПО в реальном мире Гибкие методологии разработки ПО в реальном мире
Гибкие методологии разработки ПО в реальном мире
Tech Talks @NSU
 
AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение
Anton Katkov
 

Viewers also liked (20)

Введение в методы agile
Введение в методы agileВведение в методы agile
Введение в методы agile
 
Методологии управления It проектами
Методологии управления It проектамиМетодологии управления It проектами
Методологии управления It проектами
 
Гибкие методологии разработки ПО в реальном мире
 Гибкие методологии разработки ПО в реальном мире Гибкие методологии разработки ПО в реальном мире
Гибкие методологии разработки ПО в реальном мире
 
Jira - обучение, внедрение и практика использования
Jira  - обучение, внедрение и практика использованияJira  - обучение, внедрение и практика использования
Jira - обучение, внедрение и практика использования
 
Future4kist 1.4
Future4kist 1.4Future4kist 1.4
Future4kist 1.4
 
AgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практикиAgileCamp'11 Новосибирск - введение в инженерные практики
AgileCamp'11 Новосибирск - введение в инженерные практики
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing Process
 
Scrum and XP in practice
Scrum and XP in practiceScrum and XP in practice
Scrum and XP in practice
 
AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение AgileCamp'12 Нижний Новгород: Введение
AgileCamp'12 Нижний Новгород: Введение
 
Андрій Кушнарьов «Agile планування проектів»
Андрій Кушнарьов «Agile планування проектів»Андрій Кушнарьов «Agile планування проектів»
Андрій Кушнарьов «Agile планування проектів»
 
Introduction to Agile
Introduction to AgileIntroduction to Agile
Introduction to Agile
 
Коварный Tracer Bullet Development
Коварный Tracer Bullet DevelopmentКоварный Tracer Bullet Development
Коварный Tracer Bullet Development
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Станислав Головченко. Как построить системное управление проектами за 2 месяца?
Станислав Головченко. Как построить системное управление проектами за 2 месяца?Станислав Головченко. Как построить системное управление проектами за 2 месяца?
Станислав Головченко. Как построить системное управление проектами за 2 месяца?
 
Agile - гибкое управление проектами
Agile - гибкое управление проектамиAgile - гибкое управление проектами
Agile - гибкое управление проектами
 
TDD in functional testing with WebDriver
TDD in functional testing with WebDriverTDD in functional testing with WebDriver
TDD in functional testing with WebDriver
 
Extreme banking
Extreme bankingExtreme banking
Extreme banking
 
Экстремальное программирование (XP – extreme programming)
Экстремальное программирование (XP – extreme programming)Экстремальное программирование (XP – extreme programming)
Экстремальное программирование (XP – extreme programming)
 
Agile Feedback Loops (ukr)
Agile Feedback Loops (ukr)Agile Feedback Loops (ukr)
Agile Feedback Loops (ukr)
 
TDD for DB integration
TDD for DB integrationTDD for DB integration
TDD for DB integration
 

Similar to Методоллогии Agile

Практические аспекты разработки ПО #2
Практические аспекты разработки ПО #2Практические аспекты разработки ПО #2
Практические аспекты разработки ПО #2
Denis Umnov
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
HighLoad2009
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
WRider
 
Методологии разработки по
Методологии разработки поМетодологии разработки по
Методологии разработки по
JaneKozmina
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
Technopark
 
Введение в Scrum
Введение в ScrumВведение в Scrum
Введение в Scrum
Sergey Semyonov
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к Kanban
Alexander Byndyu
 

Similar to Методоллогии Agile (20)

Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
 
Quality assurance
Quality assuranceQuality assurance
Quality assurance
 
Практические аспекты разработки ПО #2
Практические аспекты разработки ПО #2Практические аспекты разработки ПО #2
Практические аспекты разработки ПО #2
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Как сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с AgileКак сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с Agile
 
Scrum Wars
Scrum WarsScrum Wars
Scrum Wars
 
Модуль 2: Лекция 9-10. Обзор методологий, фреймворков
Модуль 2: Лекция 9-10.  Обзор методологий, фреймворковМодуль 2: Лекция 9-10.  Обзор методологий, фреймворков
Модуль 2: Лекция 9-10. Обзор методологий, фреймворков
 
Agile & .net
Agile & .netAgile & .net
Agile & .net
 
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
 
Методологии разработки по
Методологии разработки поМетодологии разработки по
Методологии разработки по
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Scrum framework
Scrum frameworkScrum framework
Scrum framework
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 
Введение в Scrum
Введение в ScrumВведение в Scrum
Введение в Scrum
 
Java one presentation
Java one presentationJava one presentation
Java one presentation
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к Kanban
 

More from Ural Federal University named after First President of Russia B.N. Yeltsin

More from Ural Federal University named after First President of Russia B.N. Yeltsin (20)

2016 ВКР Черемискина Н.А.
2016 ВКР Черемискина Н.А.2016 ВКР Черемискина Н.А.
2016 ВКР Черемискина Н.А.
 
2016 ВКР Гребнева Н.В.
2016 ВКР Гребнева Н.В.2016 ВКР Гребнева Н.В.
2016 ВКР Гребнева Н.В.
 
2016 ВКР Имашева А.А.
2016 ВКР Имашева А.А.2016 ВКР Имашева А.А.
2016 ВКР Имашева А.А.
 
ООП. Рекомендуемые информационные ресурсы
ООП. Рекомендуемые информационные ресурсыООП. Рекомендуемые информационные ресурсы
ООП. Рекомендуемые информационные ресурсы
 
3. Общая характеристика АСУ
3. Общая характеристика АСУ3. Общая характеристика АСУ
3. Общая характеристика АСУ
 
3. Информация и ее роль
3. Информация и ее роль3. Информация и ее роль
3. Информация и ее роль
 
Образовательная программа ИСТ на кафедре ТИМ УрФУ
Образовательная программа ИСТ на кафедре ТИМ УрФУОбразовательная программа ИСТ на кафедре ТИМ УрФУ
Образовательная программа ИСТ на кафедре ТИМ УрФУ
 
1. Кафедра ТИМ УрФУ
1. Кафедра ТИМ УрФУ1. Кафедра ТИМ УрФУ
1. Кафедра ТИМ УрФУ
 
Наследование и полиморфизм
Наследование и полиморфизмНаследование и полиморфизм
Наследование и полиморфизм
 
Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
Интерфейсы
ИнтерфейсыИнтерфейсы
Интерфейсы
 
магистратура 09.04.02 ист на кафедре тим урфу+
магистратура 09.04.02 ист на кафедре тим урфу+магистратура 09.04.02 ист на кафедре тим урфу+
магистратура 09.04.02 ист на кафедре тим урфу+
 
магистратура 22.04.02 металлургия на кафедре тим+
магистратура 22.04.02 металлургия на кафедре тим+магистратура 22.04.02 металлургия на кафедре тим+
магистратура 22.04.02 металлургия на кафедре тим+
 
1.5 тп (технологические подходы)+
1.5 тп (технологические подходы)+1.5 тп (технологические подходы)+
1.5 тп (технологические подходы)+
 
1.4 тп (общие принципы разработки)+
1.4 тп (общие принципы разработки)+1.4 тп (общие принципы разработки)+
1.4 тп (общие принципы разработки)+
 
1.3 тп (источники ошибок)+
1.3 тп (источники ошибок)+1.3 тп (источники ошибок)+
1.3 тп (источники ошибок)+
 
2014 Сабиров Е.Р. презентация КП по ПБД
2014 Сабиров Е.Р. презентация КП по ПБД2014 Сабиров Е.Р. презентация КП по ПБД
2014 Сабиров Е.Р. презентация КП по ПБД
 
2014 Мищенко К.В. презентация КП по ПБД
2014 Мищенко К.В. презентация КП по ПБД2014 Мищенко К.В. презентация КП по ПБД
2014 Мищенко К.В. презентация КП по ПБД
 
2014 Пильщиков С.Н. презентация КП по ПБД
2014 Пильщиков С.Н. презентация КП по ПБД2014 Пильщиков С.Н. презентация КП по ПБД
2014 Пильщиков С.Н. презентация КП по ПБД
 
2014 диплом Терехова А.Ю
2014 диплом Терехова А.Ю2014 диплом Терехова А.Ю
2014 диплом Терехова А.Ю
 

Методоллогии Agile

  • 1. 1 2. Методологии Agile Технологии разработки программного обеспечения () Владислав Лавров, vlavrov.com
  • 2. 2 • «Экстремальное программирование» (eXtreme Programming, XP) • Scrum • Метод разработки динамических систем (Dynamic Systems Development Method, DSDM) • «Парное программирование» (Pair Programming) • Бережливая разработка программного обеспечения (Lean Software Development, LSD) • Crystal Methods Основные методологии (практики) Agile () Владислав Лавров, vlavrov.com
  • 3. 3 2.1. Метод «Экстремальное программирование» (eXtreme Programming, XP) () Владислав Лавров, vlavrov.com
  • 4. 4 Источник https://ru.wikipedia.org/wiki Создатели метода XP () Владислав Лавров, vlavrov.com Уорд Каннингем Howard G. Cunningham Кент Бек Kent Beck Мартин Фаулер Martin Fowler
  • 5. 5 Основные приёмы экстремального программирования () Владислав Лавров, vlavrov.com 1) Короткий цикл обратной связи (Fine-scale feedback) • Разработка через тестирование (Test-driven development, TDD) • Игра в планирование (Planning game) • Заказчик всегда рядом (Whole team, Onsite customer) • Парное программирование (Pair programming)
  • 6. 6 Основные приёмы экстремального программирования (продолжение) () Владислав Лавров, vlavrov.com 2) Непрерывный, а не пакетный процесс • Непрерывная интеграция (Continuous integration) • Рефакторинг (Design improvement, Refactoring) • Частые небольшие релизы (Small releases)
  • 7. 7 Основные приёмы экстремального программирования (продолжение) () Владислав Лавров, vlavrov.com 3) Понимание, разделяемое всеми • Простота (Simple design) • Метафора системы (System metaphor) • Коллективное владение кодом (Collective code ownership) или выбранными шаблонами проектирования (Collective patterns ownership) • Стандарт кодирования (Coding standard or Coding conventions)
  • 8. 8 Основные приёмы экстремального программирования (окончание) () Владислав Лавров, vlavrov.com 4) Социальная защищённость программиста (Programmer welfare): • 40-часовая рабочая неделя (Sustainable pace, Forty-hour week)
  • 9. 9 2.1.1. Тестирование () Владислав Лавров, vlavrov.com Метод XP предполагает написание автоматических тестов (программный код, написанный специально для того, чтобы тестировать логику другого программного кода). Особое внимание уделяется двум разновидностям тестирования: • модульное тестирование, или юнит-тестирование модулей; • функциональное (интеграционное) тестирование.
  • 10. 10 2.1.2. Игра в планирование () Владислав Лавров, vlavrov.com Основная цель игры в планирование в методе XP — быстро сформировать приблизительный план работы и постоянно обновлять его по мере того, как условия задачи становятся всё более чёткими. Артефакты игры в планирование: • набор бумажных карточек, на которых записаны пожелания заказчика (customer stories); • приблизительный план работы по выпуску следующих одной или нескольких небольших версий продукта. www.selfishprogramming.com
  • 11. 11 2.1.3. Заказчик всегда рядом () Владислав Лавров, vlavrov.com «Заказчик» в XP — это не тот, кто оплачивает счета, а конечный пользователь программного продукта. Метод XP утверждает, что заказчик должен быть всё время на связи и доступен для вопросов.
  • 12. 12 2.1.4. Парное программирование () Владислав Лавров, vlavrov.com • Парное программирование предполагает, что весь код создается парами программистов, работающих за одним компьютером. • Один из них работает непосредственно с текстом программы, другой просматривает его работу и следит за общей картиной происходящего. При необходимости клавиатура свободно передаётся от одного к другому. • В течение работы над проектом пары не фиксированы: рекомендуется их перемешивать, чтобы каждый программист в команде имел хорошее представление о всей системе. www.selfishprogramming.com
  • 13. 13 2.1.5. Непрерывная интеграция () Владислав Лавров, vlavrov.com • Непрерывная интеграция (CI, англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. • В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. • Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.
  • 14. 14 2.1.6. Рефакторинг () Владислав Лавров, vlavrov.com • Рефакторинг (refactoring) — это методика улучшения кода без изменения его функциональности. • В методе XP рефакторинг является неотъемлемой частью цикла разработки ПО: разработчики попеременно то создают новые тесты и функциональность, то выполняют рефакторинг кода для улучшения его логичности и прозрачности. • Автоматическое юнит-тестирование позволяет убедиться, что рефакторинг не разрушил существующую функциональность.
  • 15. 15 2.1.7. Частые небольшие релизы (releases) () Владислав Лавров, vlavrov.com • Версии (releases) продукта должны поступать в эксплуатацию как можно чаще. • Работа над каждой версией должна занимать как можно меньше времени. • При этом каждая версия должна быть достаточно осмысленной с точки зрения полезности для бизнеса.
  • 16. 16 2.1.8. Простота проектирования () Владислав Лавров, vlavrov.com • В процессе работы условия задачи могут неоднократно измениться, а значит, разрабатываемый продукт не следует проектировать заблаговременно целиком и полностью. • Попытка детально спроектировать систему в самом начале работы является напрасной тратой времени. • Проектирование — это настолько важный процесс, что его необходимо выполнять постоянно в течение всего времени работы над проектом. • Проектирование должно выполняться небольшими этапами, с учётом постоянно изменяющихся требований. • В каждый момент времени следует пытаться использовать наиболее простой дизайн, который подходит для решения текущей задачи, и менять его по мере того, как условия задачи меняются
  • 17. 17 2.1.9. Метафора системы () Владислав Лавров, vlavrov.com • Метафора системы (system metaphor) — это аналог того, что в большинстве методик называется архитектурой — это представление о компонентах системы и их взаимосвязях между собой. • Разработчикам необходимо проводить анализ архитектуры программного обеспечения для того, чтобы понять, в каком месте системы необходимо добавить новую функциональность, и с чем будет взаимодействовать новый компонент.
  • 18. 18 2.1.10. Коллективное владение кодом () Владислав Лавров, vlavrov.com • Каждый член команды несёт ответственность за весь исходный код. Каждый вправе вносить изменения в любой участок программы. • За работоспособность кода несет ответственность последний, кто его изменял • Все программисты знакомятся со всеми частями кода системы. • Важное преимущество коллективного владения кодом — в том, что оно ускоряет процесс разработки, поскольку при появлении ошибки её может устранить любой программист.
  • 19. 19 2.1.11. Стандарты кодирования () Владислав Лавров, vlavrov.com • Стандарт оформления кода (стандарт кодирования, стиль программирования) — набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования. • Наличие общего стиля программирования облегчает понимание и поддержание исходного кода, написанного более чем одним программистом, а также упрощает взаимодействие нескольких человек при разработке программного обеспечения.
  • 20. 20 2.1.12. 40-часовая рабочая неделя () Владислав Лавров, vlavrov.com • Продолжительность рабочей недели не должна превышать 40 часов. По сравнению с обычной практикой постоянных переработок, в средне- и долгосрочной перспективе это повышает производительность проектной команды за счет уменьшения стресса и переутомления.
  • 21. 21 2.2. Метод Scrum () Владислав Лавров, vlavrov.com
  • 22. 22 Библиография () Владислав Лавров, vlavrov.com Майк Кон. Scrum. Гибкая разработка ПО. Пер. с англ. - М. : ООО “И.Д. Вильямс”, 2011. - 576 с. Хенрик Книберг. Scrum и XP: заметки с передовой. Пер. с англ. 2007. - 94 с. Борис Вольфсон. Гибкие методологии разработки. 112 с.
  • 23. 23 Что такое Scrum? () Владислав Лавров, vlavrov.com Скрам (Scrum) — это набор принципов, на которых строится процесс разработки, позволяющий в жёстко фиксированные и небольшие по времени итерации, называемые спринтами (sprints), предоставлять конечному пользователю работающее ПО с новыми возможностями, для которых определён наибольший приоритет. Возможности ПО к реализации в очередном спринте определяются в начале спринта на этапе планирования и не могут изменяться на всём его протяжении. При этом строго фиксированная небольшая длительность спринта придаёт процессу разработки предсказуемость и гибкость.
  • 24. 24 Основные элементы Scrum () Владислав Лавров, vlavrov.com Роли · Владелец продукта · Скрам-мастер · Команда Артефакты · Бэклог продукта · Бэклог спринта · Инкремент продукта Процессы · Скрам-митинг · Планирование спринта · Спринт · Обзор спринта · Ретроспектива
  • 25. 25 Роли в Scrum () Владислав Лавров, vlavrov.com • Владелец продукта (Product owner, Менеджер продукта) – это человек, ответственный приоритезацию требований и часто за их создание. • Скрам-мастер – член команды, который дополнительно отвечает за процессы, координацию работы команды и поддержание социальной атмосферы в команде. • Команда – 7±2 человек, которые реализуют требования владельца продукта.
  • 26. 26 Артефакты в Scrum () Владислав Лавров, vlavrov.com • Бэклог продукта (Product Backlog) – приоритезированный список требований с оценкой трудозатрат. Обычно он состоит из бизнес- требований, которые приносят конкретную бизнес-ценность и называются элементы бэклога. • Бэклог спринта (Sprint Backlog) – часть бэклога продукта, с самой высокой важностью и суммарной оценкой, не превышающей скорость команды, отобранная для спринта. • Инкремент (от англ. increment «увеличение») продукта – новая функциональность продукта, созданная во время спринта спринта.
  • 27. 27 История пользователя включает: () Владислав Лавров, vlavrov.com • Уникальный числовой идентификатор истории – обычно совпадает с идентификатором истории пользователя из трекера, которым пользуется команда. Этот идентификатор позволяет точно сказать, о какой истории пользователя в данный момент идет речь. • Название истории пользователя – короткое (примерно до 10 слов) описание функционала с точки зрения пользователя, сформулированное в виде тройки «Роль», «Действие», «Цель». • Важность – уникальный числовой приоритет истории пользователя, чем она выше, тем раньше данную историю необходимо сделать. • Оценка – числовая относительная оценка истории пользователя по специальной шкале.
  • 28. 28 () Владислав Лавров, vlavrov.com Историю пользователя удобно размещать на стикере, который прикрепляется на доску. номер в трекере задач важность оценка
  • 29. 29 Процессы в Scrum. Скрам-митинг. () Владислав Лавров, vlavrov.com • Скрам-митинг (Scrum meeting, скрам, ежедневный скрам, планерка) – собрание членов команды (с возможностью приглашения владельца продукта) для синхронизации деятельности команды и обозначения проблем. • Каждый член команды отвечает на три вопроса: 1. Что было сделано с предыдущего скрам-митинга? 2. Какие есть проблемы? 3. Что будет сделано к следующему скрам митингу?
  • 30. 30 Процессы в Scrum. Планирование спринта () Владислав Лавров, vlavrov.com • Основным результатом планирования спринта является бэклог спринта – список задач, которые команда планирует реализовать в рамках спринта. • Поскольку длина спринта в Scrum жестко фиксирована, то команда определяет количество элементов бэклога (объем работ), которые она может реализовать.
  • 31. 31 Процессы в Scrum. Обзор спринта () Владислав Лавров, vlavrov.com • Обзор спринта (также часто используется термин «демонстрация» или сокращенно «демо») – показ владельцу продукта (и заинтересованным лицам) работающего функционала продукта, сделанного за спринт. • Демонстрация результатов работы не только мотивирует команду, но и подталкивает реализовывать задачи полностью. • Основная задача проведения обзора спринта заключается в получении обратной связи.
  • 32. 32 Получение обратной связи в Scrum * () Владислав Лавров, vlavrov.com * Источник: Б.Вольфсон. Гибкие методологии разработки.
  • 33. 33 Процессы в Scrum. Ретроспектива () Владислав Лавров, vlavrov.com • Ретроспективу проводят после обзора спринта спустя небольшое количество времени, чтобы оперативно получить обратную связь (feed back). • Традиционным является формат по сбору данных, который заключается в ответах каждого участника на три вопроса: 1. Что было сделано хорошо? 2. Что можно улучшить? 3. Какие улучшения будем делать?
  • 34. 34 Общая схема Scrum * () Владислав Лавров, vlavrov.com * Источник: Б.Вольфсон. Гибкие методологии разработки.
  • 35. 35 2.3. Метод разработки динамических систем (Dynamic Systems Development Method, DSDM) () Владислав Лавров, vlavrov.com
  • 36. 36 Метод разработки динамических систем (Dynamic Systems Development Method, DSDM) () Владислав Лавров, vlavrov.com • Методика основана на концепции быстрой разработки приложений (Rapid Application Development, RAD). • Цель метода – сдать готовый проект вовремя и уложиться в бюджет, но в то же время регулируя изменения требований к проекту во время его разработки.
  • 37. 37 Основные принципы DSDM () Владислав Лавров, vlavrov.com 1. Вовлечение пользователя 2. Команда должна быть уполномочена принимать важные для проекта решения без согласования с начальством. 3. Частая поставка версий результата. 4. Главный критерий - как можно более быстрая поставка программного обеспечения, которое удовлетворяет текущим потребностям рынка. 5. Разработка - итеративная и инкрементная. 6. Любые изменения во время разработки - обратимы. 7. Требования устанавливаются на высоком уровне прежде, чем начнётся проект. 8. Тестирование интегрировано в жизненный цикл разработки. 9. Взаимодействие и сотрудничество между всеми участниками необходимо для его эффективности.
  • 38. 38 Стадии работы DSDM () Владислав Лавров, vlavrov.com • Стадия 1 – Предпроектная • Стадия 2 – Жизненный цикл проекта • Стадия 3 – Постпроектная
  • 39. 39 Жизненный цикла проекта DSDM () Владислав Лавров, vlavrov.com • Этап 1: Исследование реализуемости • Этап 2: Исследование экономической целесообразности • Этап 3: Создание функциональной модели • Этап 4: Проектирование и разработка • Этап 5: Реализация
  • 40. 40 2.4. Метод «Парное программирование» (Pair Programming) () Владислав Лавров, vlavrov.com
  • 41. 41 2.4. Метод «Парное программирование» (Pair Programming) () Владислав Лавров, vlavrov.com • Исходный код создаётся парами людей, программирующих одну задачу, сидя за одним рабочим местом. • Один программист («ведущий») управляет компьютером и, в основном, думает над кодированием в деталях. • Другой программист («штурман») сосредоточен на картине в целом и непрерывно просматривает код, производимый первым программистом. • Время от времени они меняются ролями, обычно, каждые полчаса.
  • 42. 42 Парное программирование. Роли разработчиков при работе в паре * () Владислав Лавров, vlavrov.com * Источник: Б.Вольфсон. Гибкие методологии разработки.
  • 43. 43 2.5. Метод «Бережливая разработка программного обеспечения (Lean Software Development, LSD) () Владислав Лавров, vlavrov.com
  • 44. 44 2.6. Метод «Crystal Methods» () Владислав Лавров, vlavrov.com