tech talks @nsu: Методологии разработки ПО. Что на самом деле...

30
Методологии разработки ПО

Upload: tech-talks-nsu

Post on 14-Apr-2017

67 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Методологии разработки ПО

Page 2: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

О чем сегодня пойдет речь

Эволюция процессов разработки: от «сели и наколбасили» до промышленных стандартов

Методологии разработки — что это такое?

Что на самом деле скрывается под словами scrum и agile.

Page 3: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Хранение исходного кода

Удобнее всего, конечно работать над проектом в одиночку

Как только появляется второй разработчик, сразу возникает проблема передачи изменений в коде

Всё уже придумано до нас: системы контроля версий (SVN, CVS, git, Mercurial)

Page 4: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

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

Page 5: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

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

Без системы контроля версий разработка более-менее серьезных проектов немыслима

Они совсем не лишние и для учебных и собственных проектов

Page 6: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

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

SVN: требует центрального сервера. Можно поставить свой, а можно воспользоваться code.google.com

git, Mercurial: не требуют сервера, можно пользоваться локально

Page 7: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Отслеживание задач

Процесс разработки не всегда линеен

Решения типа «продолжить делать новые фичи или поправить дефекты в старых?»

«Я нашел у себя в проекте 25 багов, в каком порядке мне их делать? Как удержать их в голове?»

Page 8: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Отслеживание задач

Багтрекер (bugtracker), система отслеживания дефектов

Page 9: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Багтрекер

Page 10: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Багтрекер

Page 11: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Багтрекеры

Нашли баг в программе? Заведите новый тикет в багтрекере

Укажите последовательность действий, приводящую к ошибке, какое поведение ожидалось, и что происходит на самом деле

Page 12: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Багтрекеры

Статусы тикетов (недавно открытый, в прогрессе, закрытый…)

Смена владельца тикета (разработчик, тестировщик)

Page 13: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Багтрекеры

Если вы хостите свой проект на code.google.com или GitHub, то багтрекер входит в комплект

Бесплатный багтрекер можно поднять на своем сервере (Trac, Bugzilla, Redmine)

Page 14: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Багтрекеры

Как это ни смешно, есть компании, не использующие ни багтрекеры, ни системы контроля версий

По возможности, избегайте их

Joel Spolsky, “The Joel Test”

Page 15: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Ведение проекта — разноплановый процесс

Выяснение требований перед началом разработки

Очередность фич и представление промежуточных релизов заказчику

Процессы тестирования и code review

Документирование написанного кода

Page 16: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Понятие методологии разработки

Методология — алгоритм разработки программных проектов

Page 17: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Понятие методологии разработки

Исторически разработка ПО считалась разновидностью инженерных процессов

Первые методологии разработки ПО (70-е годы) напоминают производственные инструкции

Page 18: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Классическая модель: waterfall

Page 19: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Классическая модель: waterfall

1. «Пока не зафиксируем все требования — дальше не пойдем!»

Page 20: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Классическая модель: waterfall

2. «Пока не закончим проектирование — реализацию не начнем»

Page 21: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Недостатки waterfall

Очень сложно адаптируема к проектам с нечеткими требованиями

Очень грустно, когда заказчик в середине проекта придумывает что-то новое

Первоначальное проектирование и написание документации может занять очень много времени (иногда больше, чем создание первого прототипа)

Page 22: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Новое веяние: agile methodologies

«Гибкие методологии»

Методологии, диктующие менее жесткие правила разработки

Начали появляться в середине 90-х, окончательно оформились в 2001 в “Agile Manifesto”

Page 23: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Agile Manifesto

We value:

Individuals and interactions over processes and tools

Working software over comprehensive

documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

Page 24: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Гибкие методологии, основные принципы

Разработка итерациями: сделали набор функциональности, протестировали, показали заказчику, перешли к следующему набору фич

Меньший акцент на проектировании и документировании

Уход от жесткой организационной структуры (команда может работать вообще без менеджера)

Page 25: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Гибкие методологии, основные принципы

И что, сработало?

Page 26: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Плюсы для разработчиков

Снижение уровня бюрократии (изменение архитектуры или новую фичу не нужно согласовывать)

Значительно меньше документации

«Садимся и делаем»

Page 27: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

А с точки зрения бизнеса?

Для слабо специфицированных проектов —самое оно! (да и для всех остальных вполне неплохо)

Снижение затрат на документацию почти не сказывается на качестве

Команде разработчиков действительно не нужно жесткое руководство

Page 28: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Интересные приемы из agile

Экстремальное программирование (Extreme Programming, XP) и, в частности, парное программирование

Test Driven Development, TDD: сначала пишем юнит-тесты, и только потом код

Page 29: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Зрелые методологии на идеях agile

Scrum, полноценная методология оценки и ведения проектов

Kanban, удобный способ организации потока задач

Page 30: Tech Talks @NSU: Методологии разработки ПО. Что на самом деле скрывается за словами "scrum"и "agile"

Kanban