- Onsite Customer
- Small Iterations
- Simple Design
- Continuous Integration
- Refactoring
- TDD
- Coding Standards & Conventions
- Pair Programing
- Collective Code Ownership
- 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 дают нам следующие ценности:
- Высокая Гибкость
- Высокое Качество
- Высокая Надежность Процесса
В следующем посте мы рассмотрим, какие еще существуют взаимосвязи между элементами XP, например, за счет каких практик мы можем минимизировать объем документации.
Комментариев нет:
Отправить комментарий