SlideShare a Scribd company logo
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

PPTX
МиСПИСиТ (внешнее описание)
PPTX
PPTX
Составные части объектного подхода
PPTX
МиСПИСиТ (общие принципы разработки)
PPTX
МиСПИСиТ (разработка программного модуля)
PPTX
МиСПИСиТ (источники ошибок)
МиСПИСиТ (внешнее описание)
Составные части объектного подхода
МиСПИСиТ (общие принципы разработки)
МиСПИСиТ (разработка программного модуля)
МиСПИСиТ (источники ошибок)

What's hot (19)

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

Viewers also liked (20)

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

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

PDF
Семинар ФКН: современные подходы к разработке ПО - часть 1
PDF
Общие темы. Тема 03.
PPT
Методологии разработки по
PDF
Гибкие методологии при создании ИТ продукта.
PDF
Разработка веб-сервисов осень 2013 лекция 2
PPTX
Mva stf module 4 - rus
PPTX
Методологии разработки ПО
PDF
Методы управления проектами с коротким циклом - Agile от практиков_InnoTrain_...
PDF
Модуль 2: Лекция 9-10. Обзор методологий, фреймворков
PPTX
Scrum framework
PPTX
Agile/Scrum методологии разработки программного обеспечения
ODP
Гибкие требования и приоритезация
PPTX
Agile testing
PPTX
Практические аспекты разработки ПО #2
PPTX
гибкая методология разработки по
PDF
работа в крупной компании на примере Banki.ru
PPT
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
PPT
Quality assurance
PPTX
Процесс разработки Agile & Java
PPTX
Лучшие практики на практике
Семинар ФКН: современные подходы к разработке ПО - часть 1
Общие темы. Тема 03.
Методологии разработки по
Гибкие методологии при создании ИТ продукта.
Разработка веб-сервисов осень 2013 лекция 2
Mva stf module 4 - rus
Методологии разработки ПО
Методы управления проектами с коротким циклом - Agile от практиков_InnoTrain_...
Модуль 2: Лекция 9-10. Обзор методологий, фреймворков
Scrum framework
Agile/Scrum методологии разработки программного обеспечения
Гибкие требования и приоритезация
Agile testing
Практические аспекты разработки ПО #2
гибкая методология разработки по
работа в крупной компании на примере Banki.ru
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Quality assurance
Процесс разработки Agile & Java
Лучшие практики на практике

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

PPTX
ООП. Рекомендуемые информационные ресурсы
PPTX
3. Общая характеристика АСУ
PPTX
Образовательная программа ИСТ на кафедре ТИМ УрФУ
PPTX
Наследование и полиморфизм
PPTX
магистратура 09.04.02 ист на кафедре тим урфу+
PPT
магистратура 22.04.02 металлургия на кафедре тим+
PPT
1.5 тп (технологические подходы)+
PPT
1.4 тп (общие принципы разработки)+
PPT
2014 Сабиров Е.Р. презентация КП по ПБД
PPT
2014 Мищенко К.В. презентация КП по ПБД
PPT
2014 Пильщиков С.Н. презентация КП по ПБД
ООП. Рекомендуемые информационные ресурсы
3. Общая характеристика АСУ
Образовательная программа ИСТ на кафедре ТИМ УрФУ
Наследование и полиморфизм
магистратура 09.04.02 ист на кафедре тим урфу+
магистратура 22.04.02 металлургия на кафедре тим+
1.5 тп (технологические подходы)+
1.4 тп (общие принципы разработки)+
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