Экстремальное программирование

Материал из PraxOS

Перейти к: навигация, поиск

Система организационных паттернов ("правил" и принципов их применения), использующаяся в организации работы небольшого коллектива программистов.

Подробнее о паттернах экстремального программирования (eXtreme Programming, XP) в первой версии (1999г.) можно прочесть в http://www.exprogramming.ru/XPRules/XPRules.html -- но это только первая версия правил, которая (в полном соответствии с принципами самого экстремального программирования -- менять его, если что-то не удовлетворяет, выпускать рано, выпускать версии) в. 2004г. была существенно переработана во второй версии (http://www.maxkir.com/sd/extreme_programming_2.html). Изменения существены: практика "планирующая игра" заменена четырьмя разными -- "рассказы", "еженедельный цикл", "ежеквартальный цикл" и "слабина"; практика "метафора" выкинута, и т.д. Также экстремальное программирование получило развитие в "промышленном экстремальном программировании" (т.е. приспособленном для работы в больших корпорациях).

Вот список практик "промышленного XP" (оригинал -- http://industrialxp.org)

  • Бизнес-практики (Industrial)
    • ОценкаГотовности (ReadinnessAssesment)
    • НепрерывноеУправлениеРиском (ContinuousRiskManagement)
    • ПолагатьПроект (ProjectChartering)
    • СообществоПроекта (ProjectComunity)
    • УправлениеПоТестам (Test-DrivenManagement)
  • "Экстремальные" практики (eXtreme)
    • СамоподдерживающийсяРитм (SustainablePace)
    • Рассказывание (Storytelling)
    • ПланирующаяИгра (PlanningGame)
    • Тестории (Storytesting)
    • ЧастыеРелизы (FrequentReleases)
    • МалыеКоманды (SmallTeams)
    • СидетьВместе (SittingTogether)
    • НепрерывноеОбучение (ContinuousLearning)
    • ПошаговаяПригодность (IterativeUsability)
  • Программистские практики (Programming)
    • ЭволюционныйДизайн (EvolutionaryDesign)
    • Рефакторинг (Refactoring)
    • РазработкаПоРассказамТестам (StoryTest-DrivenDevelopment)
    • ДизайнПоПредметнойОбласти (DomainDrivenDesign)
    • НепрерывнаяИнтеграция (ContinuousIntegration)
    • Спаривание (Pairing)
    • КоллективноеВладение (CollectiveOwnership)
    • СтандартыКодирования (CodingStandard)
  • Ретроспективы (Retrospectives)

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

В настоящий момент практики (паттерны) экстремального программирования входят в огромное число других методов, относящихся к расторопным (agile) методам и используются повсеместно -- часто без указания на то, что они пришли именно из экстремального программирования.

В экстремальном программировании можно особо выделить следующие праксиологические паттерны: