33
Маргарита Котова mailto: [email protected] NIX Solutions Харьков

Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Маргарита Котоваmailto:[email protected]

NIX SolutionsХарьков

Page 2: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Характеристика проекта Проблемы проекта Почему и как планировалcя переход на Agile Как это происходит на самом деле Попытка анализа причин неудач Попытка прогноза результатов проекта

Page 3: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Специализированный программный продукт, клиентами являются крупные корпорации

Аутсорсинговый проект До начала 2008 года выполнялся по водопадной

модели, релизы примерно раз в полгода С начала 2008 по решению руководства начал

выполняться по процессу Agile

Page 4: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Заказчик NIX Solutions

Page 5: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Web-приложение Java:Сервер приложенийСервер базы данныхLDAPИнтеграция с несколькими видами DMS

Вспомогательные сервера

Page 6: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Use Cases: 402

UI Pages: 473 Hierarchical Trees: 3 Wizards: 15

Database Tables: 602

Tests: 2814

Page 7: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Проблемы проекта при водопадной модели

Page 8: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

PM: Нереалистичное планирование релизов

Development: Низкое качество разработки

QC: Неэффективная автоматизация тестирования

Page 9: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Стремление усилить конкурентоспособность продукта за счет наращивания функциональности

Стремление уменьшить стоимость выполнения проекта за счет сокращения ресурсов и времени на разработку

Неправильная оценка уровня квалификации разработчиков, необходимого для успешной реализации планов

Page 10: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

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

Несовершенная внутренняя архитектура приложения, ограничивающая возможности наращивания функциональности и исправления дефектов

Необходимость работать в сжатые сроки из-за нереалистичного планирования

Page 11: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Неправильная идентификация тестов, подлежащих автоматизации

Неправильный процесс составления сценариев автоматических тестов

Отсутствие координации ручного и автоматизированного тестирования

Использование инструмента, непригодного для автоматического тестирования приложения

Page 12: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

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

Page 13: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Маркетинговая обстановка: появление потенциально конкурентоспособных продуктов

Появление новых клиентов, и, как следствие – увеличение вариабельности требований к продукту

Необходимость добавления новой функциональности и коренной переработки старой

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

Page 14: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Работа по процессу Agile

Как это предполагалось осуществить?

Page 15: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Минимализация объема разработки за счет реализации только необходимой клиентам функциональности (Lean)

Постоянная обратная связь PM с клиентами для выяснения и уточнения требований

Регулярная демонстрация клиентам промежуточных результатов, сбор замечаний и пожеланий

Page 16: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Улучшение качества поставляемого продукта

Улучшение качества кода (рефакторинг)

Качественное улучшение архитектуры Тестирование продукта одновременно с

разработкой Раннее обнаружение дефектов Исправление дефектов одновременно с

разработкой новой функциональности

Page 17: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Двухнедельные итерации Планирование каждой итерации

(Iteration Planning Meetings) Разработка требований для каждой

итерации и их уточнение/изменение по мере разработки каждой функциональности

Unit-тестирование исправленного кода перед сборкой билда

Ежедневная автоматическая сборка билда

Тестирование на daily билдах Завершение работы над

функциональностью по результатам приемочного тестирования

Page 18: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Неформальное тестирование◦Ad-hoc тестирование на daily билдах для

ознакомления с функциональностью, написания формальных

◦Предоставление отчетов о дефектах непосредственно разработчикам, работающим над данной функциональностью, минуя баг-трекинговую систему

◦Приемочное тестирование функциональности в конце итерации на QC билдах

Формальное тестирование с регистрацией результатов тестирования и дефектов в баг-трекинговой системе (Quality Center)

Page 19: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Работа по процессу Agile

Как это происходило?

Page 20: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Заказчик NIX Solutions

Page 21: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Водопадная модель Agile

Manual Team

Automation Team

Manual Team

Automation Team

Page 22: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Хорошее взаимодействие и взаимопонимание между PM и QС

Руководство QC оказывает всяческую поддержку, прислушивается к мнению и спрашивает советов

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

Болезненная реакция разработчиков на обнаруженные дефекты

Page 23: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

На первых четырех итерациях отсутствовало вообще, начиная с пятой итерации начало формироваться и к настоящему моменту в вошло в норму

Нереалистичное планирование итераций: объем запланированных работ существенно превышает возможности их реализации

Page 24: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Требования для каждой итерации разрабатываются в нужные сроки, в нужном объеме

Документация быстро обновляется при изменении требований

Из-за невозможности правильно реализовать некоторые функции в должной мере и в должном объеме, требования адаптируются под возможности реализации, либо откладываются на следующий релиз

Page 25: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Испробовано: WIKI Version One Списки дефектов, отправляемые по

электронной почте Quality Center Excel spreadsheetВ настоящее время используется: Version One + Quality Center + Excel

+ Documentum

Page 26: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Хроническое отсутствие билда Неполное покрытие unit тестами (20%) Зачастую билды, поставляемые для

приемочного тестирования содержат критические дефекты

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

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

Рефакторинг каждой функциональной области приводит к ее поломке

При малейшей возможности протестировать какую-либо функциональность, анонсированную как завершенную, обнаруживается большое количество дефектов

Дефекты не устраняются в процессе работы

Page 27: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Тестирование проводится хаотично, в спешке, при каждом появлении билда

Из-за отсутствия билда невозможно разрабатывать тесты параллельно с разработкой функциональности, поэтому тесты разрабатываются вслепую, по требованиям

Обнаруженные дефекты не исправляются либо отклоняются

Из-за нерегулярности работы, невозможно сосредоточиться ни на тестировании ни на разработке тестов

Page 28: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Ни одна из итераций не была завершена успешно

К настоящему моменту условно готовой к формальному тестированию можно считать только одну функциональную область, завершение которой намечалось на второй итерации (в настоящее время выполняется десятая)

Практически ни одна функциональность не реализована так, как планировалось, из-за ограничений внутренней архитектуры

Существует огромный риск провала проекта

Page 29: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Водопад Agile

PM: Нереалистичное планирование релизов

Development: Низкое качество разработки

QC: Неэффективная автоматизация тестирования

PM: Нереалистичное планирование релизов

Development: Низкое качество разработки

Page 30: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Неправильная идентификация основной проблемы проекта и отсутствие мер по ее устранению

Неготовность либо неспособность команды к работе по данному процессу

Отсутствие деятельности по формированию команды

Отсутствие подготовки и адаптации стиля работы команды к новому процессу

Использование старых методов, непригодных для нового процесса

Page 31: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Фактически проект выполняется не по Agile, а лишь под вывеской

Agile

Page 32: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Agile может быть успешным при соблюдении следующих условий:Правильная организация и подготовка к процессуПодбор соответствующей командыАдаптация методов и приемов к условиям конкретного проекта

Page 33: Пример внедрения Agile в крупном проекте. Как не следует внедрять Agile

Оцените все «за» и «против» Продумайте, какие препятствия вам

могут встретиться, постарайтесь представить как вы их будете преодолевать; мыслите стратегически

Оцените способность команды соответствовать требованиям

Если нужно, заблаговременно произведите необходимые замены в команде

Заранее продумайте процедуру и инструменты, которые вы будете использовать

Не придерживайтесь процедуры, если она не работает для вашего проекта, адаптируйте ее или придумывайте новую