среда, 12 мая 2010 г.

В чем сила XP


Хотя чистый XP сейчас и мало кто использует, в основном, комбинируя практики из XP с другими процессами, я все же хочу немного разобраться с тем, из чего, собственно состоит Экстремальное Программирование. Итак, вот основные практики, принципы и правила XP:

  1. Onsite Customer
  2. Small Iterations
  3. Simple Design
  4. Continuous Integration
  5. Refactoring
  6. TDD
  7. Coding Standards & Conventions
  8. Pair Programing
  9. Collective Code Ownership
  10. Planing Games

А теперь давайте посмотрим, какую функцию выполняет тот или иной компонент XP в процессе. Итак:

1. Onsite Customer + Small Iterations + Simple Design

Распишем, что это значит: команда имеет возможность взаимодействия с заказчиком "на-лету" для получения новых/измененных требований и предоставления результатов работы на ревью. При этом за счет коротких итераций ставятся близкие задачи, результат работы над которыми обсуждается с заказчиком и принимаются меры по корректировке курса. А за счет простых технологических решений команда может выдавать конкурентоспособный темп.

Итого:

Onsite Customer + Small Iterations + Simple Design = Maximum Agility

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

2. Continuous Integration + Refactoring + TDD + Coding Standards

Максимальная гибкость, которую мы реализовали с помощью практик из пункта 1, к сожалению, чревата проблемами с качеством. Да и в принципе в любом технологическом процессе должны быть инструменты для контроля и обеспечения качества. И вот за счет чего мы гарантируем качество в XP:

Непрерывная Интеграция позволяет быстро выявлять и исправлять ошибки кодирования. Рефакторинг приводит в порядок тот код, который появляется под флагом "Simple Design", да и для TDD он необходим как воздух. Сам TDD позволяет поддерживать принцип "SimpleDesign". Стандарты кодирования помимо положительного влияния на качество, так же необходимы для другого принципа XP, который будет упомянут ниже - Совместное Владение Кодом.

Итого:

Continuous Integration + Refactoring + TDD + Coding Standard = Quality Assurance

3. Pair Programing + Collective Code Ownership + Planing Games

Это значит, что вся команда вместе планирует задачи, по ходу уточняя и разъясняя для каждого суть задачи и особенности ее реализации (да-да-да...и убивая часа по 2-4 на Planing Session в каждой итерации). А потом вся команда дружно программирует, меняясь парами и осуществляя перекрестное Code Review. За счет этого нам становятся не страшны такие вещи как неожиданная болезнь ключевого разработчика, отпуск, перемещение на другой проект, увольнение ( :) ) и прочая фигня, которая иногда так некстати сливает все планирование в унитаз. Так же мы снижаем затраты на ввод новых разработчиков в команду.

Таким образом:

Pair Programing + Collective Code Ownership + Planing games = Reliable Process

Итак, мы определили, что заявленные компоненты XP дают нам следующие ценности:

  1. Высокая Гибкость
  2. Высокое Качество
  3. Высокая Надежность Процесса

В следующем посте мы рассмотрим, какие еще существуют взаимосвязи между элементами XP, например, за счет каких практик мы можем минимизировать объем документации.

Комментариев нет:

Отправить комментарий