29
Обзор прикладных методологий - выбираем адекватный процесс Александр Сербул Руководитель направления контроля качества интеграции и внедрений 1C-Битрикс

Обзор прикладных методологий - выбираем адекватный процесс

Embed Size (px)

DESCRIPTION

Обзор прикладных методологий - выбираем адекватный процесс. Александр Сербул Руководитель направления контроля качества интеграции и внедрений 1C- Битрикс. Причины появления процессов. Программирование – это как строить дом, каждый раз из новых материалов  - PowerPoint PPT Presentation

Citation preview

Page 1: Обзор прикладных методологий - выбираем адекватный процесс

Обзор прикладных методологий - выбираем адекватный процесс

Александр СербулРуководитель направления контроля качества интеграции и внедрений

1C-Битрикс

Page 2: Обзор прикладных методологий - выбираем адекватный процесс

Причины появления процессов

Программирование – это как строить дом, каждый раз из новых материалов

Большой объем требований от Клиента – структура, суть

Замена людей в проекте, «человеческие» риски

Много людей и «букв»

Кристаллизация историй успеха

Page 3: Обзор прикладных методологий - выбираем адекватный процесс

Успех веб-проекта

Успешный – далее только в техническом плане.

• Может ли Клиент «завалить» успешный веб-проект?

• Все условия созданы, а Партнер «заваливает» веб-проект, почему?

• Люди или методологии?

• Компетенция, сертификации, совесть: «зачем делать просто, если можно сложно»?

Page 4: Обзор прикладных методологий - выбираем адекватный процесс

Когда процесса - нет

Сделать к 1 ноября – конечно, деньги вперед!!!

Ничего не проектируется - зачем, все «понятно»

Разработчик делает «лишь бы работало до зарплаты»

Тестировщик покликал – багов нет!

Аврально вносятся изменения

Документация – а что это?

Этап сдан?

Page 5: Обзор прикладных методологий - выбираем адекватный процесс

Делаем «на коленке»

Риски:

• Систему все сложнее развивать (экспонента)

• Новый программист пытается все переписать с нуля

• Программист может и не разобраться в такой веб-системе

• Веб-система - боится изменений

• Никто не помнит, как все работает (даже Заказчик!)

• Любое изменение рождает много ошибок

• Тестировщик не знает, как все проверить

Page 6: Обзор прикладных методологий - выбираем адекватный процесс

Давайте все пропишем в ТЗ!

Процесс – «Водопад»:

• Подробно все проектируем, рисуем интерфейсы, описываем в ТЗ

• Получаем ТЗ на 1000-20000 страниц

• Кодируем

• Проводим нагрузочные испытания

• Тестируем

• Сдаем проект/этап Заказчику

Работает на сложных/больших, специфических проектах. Любое изменение требует больших затрат на пересогласование, перепроектирование…

Page 7: Обзор прикладных методологий - выбираем адекватный процесс

Давайте все делать последовательно!

Page 8: Обзор прикладных методологий - выбираем адекватный процесс

Давайте все пропишем в ТЗ!

Page 9: Обзор прикладных методологий - выбираем адекватный процесс

Вы – не эксперты!

• Вы – не эксперты в предметной области!

• Эксперт – Клиент (если повезет)

• Нельзя «отрезать голову» у Клиента и заставить жить в офисе разработки

• По мере формализации требований – будут появляться НОВЫЕ идеи

• Это будет продолжаться – до запуска веб-системы

Page 10: Обзор прикладных методологий - выбираем адекватный процесс

Итеративный процесс

Page 11: Обзор прикладных методологий - выбираем адекватный процесс

Итеративный процесс

Повторяем все фазы, но на каждом этапе

Улучшается обратная связь с Заказчиком – он принимает каждый этап (итерацию)

Занимаемся самыми приоритетными задачам и рисками

Затраты на проект распределяются равномерно, а не в конце проекта

Постоянное тестирование – в процессе, а не в конце

Эффективная загрузка команды

(+) Эффективно работает на сложных, больших проектах. Изменения требований – можно пережить. RUP

(-) Много ролей, сложно настроить, внедрить, поддерживать процесс.

Page 12: Обзор прикладных методологий - выбираем адекватный процесс

Agile-манифест разработки программного обеспечения

«Мы постоянно открываем для себя более совершенные методы разработки программного обеспечения, занимаясь разработкой непосредственно и помогая в этом другим. Благодаря проделанной работе мы смогли осознать, что:

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

То есть, не отрицая важности того, что справа, мы всё таки больше ценим то, что слева.»

2001 год

Page 13: Обзор прикладных методологий - выбираем адекватный процесс

Agile-манифест разработки программного обеспечения

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

«Непосредственное общение является наиболее практичным и эффективным способом обмена информацией как с самой командой, так и внутри команды.»

«Постоянное внимание к техническому совершенству и качеству проектирования повышает гибкость проекта.»

«Наивысшим приоритетом для нас является удовлетворение потребностей заказчика, благодаря регулярной и ранней поставке ценного программного обеспечения.»

«Изменение требований приветствуется, даже на поздних стадиях разработки. Agile-процессы позволяют использовать изменения для обеспечения заказчикуконкурентного преимущества. .»

Page 14: Обзор прикладных методологий - выбираем адекватный процесс

Agile

Page 15: Обзор прикладных методологий - выбираем адекватный процесс

Agile – управление требованиями

Page 16: Обзор прикладных методологий - выбираем адекватный процесс

Agile - планирование

Page 17: Обзор прикладных методологий - выбираем адекватный процесс

Agile – короткие итерации, feedback

Page 18: Обзор прикладных методологий - выбираем адекватный процесс

Agile – короткие итерации, feedback

Page 19: Обзор прикладных методологий - выбираем адекватный процесс

Agile – полный цикл

Page 20: Обзор прикладных методологий - выбираем адекватный процесс

Agile – tests

Код тестирует сам себя!

• Модульные тесты – для библиотек и т.п.

• Функциональные тесты – часто более полезны, больший охват, вероятность срабатывания

• Документация работы системы! Нет лишней работы

• Пишите просто, лаконично

• Тесты в веб-системе – это ВСЕГДА хорошо и полезно!

• Тесты все не покрывают, ну и что! 60% - и то хорошо

Page 21: Обзор прикладных методологий - выбираем адекватный процесс

Agile – tests

Selenium

Page 22: Обзор прикладных методологий - выбираем адекватный процесс

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

Кому это нужно?

PHPDocumentor – подсказки в IDE, автогенерация документации

Поддержка актуальности документации в коде

Код должен быть понятен САМ ПО СЕБЕ

Модульные и функциональные тесты – тоже документирование

Page 23: Обзор прикладных методологий - выбираем адекватный процесс

XP

XP – это «кровь и пот» боевых проектов, учимся на чужих ошибках!

Kent Beck, “Chrysler ComprehensiveCompensation System (C3)”, 1996

Page 24: Обзор прикладных методологий - выбираем адекватный процесс

XP

Экстремальное программирование (extreme programming) – 13 правил

Page 25: Обзор прикладных методологий - выбираем адекватный процесс

XP

Page 26: Обзор прикладных методологий - выбираем адекватный процесс

Kanban

Цель - сократить время прохода задачи до «готовности»

• Задача = ММФ – минимальная маркетинговая фича

• Уменьшение числа || выполняемых задач (“work in progress”)

• Визуализация задач

• Постоянное совершенствование производства

Система очень проста, удобна как для веб-студий, так и для работы с фрилансерами.

Page 27: Обзор прикладных методологий - выбираем адекватный процесс

Kanban

Page 28: Обзор прикладных методологий - выбираем адекватный процесс

Kanban

Page 29: Обзор прикладных методологий - выбираем адекватный процесс

Спасибо за внимание! Вопросы?

Александр Сербул[email protected]

@AlexSerbul