Обзор прикладных методологий выбираем адекватный процесс Александр Сербул Руководитель направления контроля качества интеграции и внедрений 1C-Битрикс Причины появления процессов Программирование – это как строить дом, каждый раз из новых материалов Большой объем требований от Клиента – структура, суть Замена людей в проекте, «человеческие» риски Много людей и «букв» Кристаллизация историй успеха Успех веб-проекта Успешный – далее только в техническом плане. • Может ли Клиент «завалить» успешный веб-проект? • Все условия созданы, а Партнер «заваливает» вебпроект, почему? • Люди или методологии? • Компетенция, сертификации, совесть: «зачем делать просто, если можно сложно»? Когда процесса - нет Сделать к 1 ноября – конечно, деньги вперед!!! Ничего не проектируется - зачем, все «понятно» Разработчик делает «лишь бы работало до зарплаты» Тестировщик покликал – багов нет! Аврально вносятся изменения Документация – а что это? Этап сдан? Делаем «на коленке» Риски: • • • Систему все сложнее развивать (экспонента) • • • • Веб-система - боится изменений Новый программист пытается все переписать с нуля Программист может и не разобраться в такой веб-системе Никто не помнит, как все работает (даже Заказчик!) Любое изменение рождает много ошибок Тестировщик не знает, как все проверить Давайте все пропишем в ТЗ! Процесс – «Водопад»: • Подробно все проектируем, рисуем интерфейсы, описываем в ТЗ • • • • • Получаем ТЗ на 1000-20000 страниц Кодируем Проводим нагрузочные испытания Тестируем Сдаем проект/этап Заказчику Работает на сложных/больших, специфических проектах. Любое изменение требует больших затрат на пересогласование, перепроектирование… Давайте все делать последовательно! Давайте все пропишем в ТЗ! Вы – не эксперты! • • • Вы – не эксперты в предметной области! • По мере формализации требований – будут появляться НОВЫЕ идеи • Это будет продолжаться – до запуска веб-системы Эксперт – Клиент (если повезет) Нельзя «отрезать голову» у Клиента и заставить жить в офисе разработки Итеративный процесс Итеративный процесс Повторяем все фазы, но на каждом этапе Улучшается обратная связь с Заказчиком – он принимает каждый этап (итерацию) Занимаемся самыми приоритетными задачам и рисками Затраты на проект распределяются равномерно, а не в конце проекта Постоянное тестирование – в процессе, а не в конце Эффективная загрузка команды (+) Эффективно работает на сложных, больших проектах. Изменения требований – можно пережить. RUP (-) Много ролей, сложно настроить, внедрить, поддерживать процесс. Agile-манифест разработки программного обеспечения «Мы постоянно открываем для себя более совершенные методы разработки программного обеспечения, занимаясь разработкой непосредственно и помогая в этом другим. Благодаря проделанной работе мы смогли осознать, что: Люди и взаимодействие важнее процессов и инструментов Работающий продукт важнее исчерпывающей документации Сотрудничество с заказчиком важнее согласования условий контракта Готовность к изменениям важнее следования первоначальному плану То есть, не отрицая важности того, что справа, мы всё таки больше ценим то, что слева.» 2001 год Agile-манифест разработки программного обеспечения «Наивысшим приоритетом для нас является удовлетворение потребностей заказчика, благодаря регулярной и ранней поставке ценного программного обеспечения.» «Изменение требований приветствуется, даже на поздних стадиях разработки. Agile-процессы позволяют использовать изменения для обеспечения заказчи конкурентного преимущества. .» «Непосредственное общение является наиболее практичным и эффективным способом обмена информацией как с самой командой, так и внутри команды.» «Постоянное внимание к техническому совершенству и качеству проектирования повышает гибкость проекта.» «Над проектом должны работать мотивированные профессионалы. Чтобы работа была сделана, создайте условия, обеспечьте поддержку и полностью доверьтесь им.» Agile Agile – управление требованиями Agile - планирование Agile – короткие итерации, feedback Agile – короткие итерации, feedback Agile – полный цикл Agile – tests Код тестирует сам себя! • • Модульные тесты – для библиотек и т.п. • • • • Документация работы системы! Нет лишней работы Функциональные тесты – часто более полезны, больший охват, вероятность срабатывания Пишите просто, лаконично Тесты в веб-системе – это ВСЕГДА хорошо и полезно! Тесты все не покрывают, ну и что! 60% - и то хорошо Agile – tests Selenium Документирование кода Кому это нужно? PHPDocumentor – подсказки в IDE, автогенерация документации Поддержка актуальности документации в коде Код должен быть понятен САМ ПО СЕБЕ Модульные и функциональные тесты – тоже документирование XP XP – это «кровь и пот» боевых проектов, учимся на чужих ошибках! Kent Beck, “Chrysler Comprehensive Compensation System (C3)”, 1996 XP Экстремальное программирование (extreme programming) – 13 правил XP Kanban Цель - сократить время прохода задачи до «готовности» • Задача = ММФ – минимальная маркетинговая фича • • • Уменьшение числа || выполняемых задач (“work in progress”) Визуализация задач Постоянное совершенствование производства Система очень проста, удобна как для веб-студий, так и для работы с фрилансерами. Kanban Kanban Спасибо за внимание! Вопросы? Александр Сербул serbul@1c-bitrix.ru @AlexSerbul