Введение


Экстремальное Программирование (Extreme Programming)

Методология разработки ПО – это набор правил и практик, используемых для создания компьютерных программ.

 

Тяжеловесные методологии (heavyweight methodology) имеют много правил и практик и документов. Требуется жёсткая дисциплина для того чтобы следовать всему этому достаточно чётко.

 

Легковесная методология (lightweight methodology) вводит всего несколько правил и практик, причём только те из них, которым легко следовать.

 

В конце 1960 – начале 1970ых годов написание программ представляло собой хаотических процесс, когда программисты просто писали программы, мало задумываясь о том что эти программы переживут их. Программы получались настолько сложными, что никто, кроме их авторов не мог в них разобраться. В то время оказывалось чудом, если программа вообще работала без большого числа ошибок. Таким образом, заставить работать программу, особенно более-менее большую и сложную, было похоже на приключение.

 

Позже, постепенно стали появляться методологии. Многие из которых наивно предполагали, что если расписать все действия программистов, а так же иных лиц, задействованных в разработке ПО, то можно будет создавать сложные программные системы, наподобие того, как строятся сложные здания и другие архитектурные сооружения. Стала возникать дисциплина – программная инженерия. Так возникло большое количество тяжёлых методологий, разработка ПО постепенно обросла большим количеством документации, проведением совещаний, утверждений и согласований. В конечном счёте, случилось так, что на поддержание методологий в актуальном состоянии и на контроль работы в соответсвие с этими методологиями уходило значительно больше ресурсов, чем непосредственно на создание программы, которая и нужна была заказчику. Важно понимать – конечному пользователю не нужна куча бумаг, документов, диаграмм и планов – ему нужна работающая программа, которая решает его текущие задачи. Кроме того, тяжёлые методологии плохо (а порой совсем) не учитывали человеческий фактор. Так, например, программистам нравится писать программы, а вовсе не кучу сопроводительной документации и руководств пользователя, которую, особенно в условиях часто меняющихся требований, приходиться поддерживать в актуальном состоянии.

 

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

 

Эти условия привели к тому, что в последнее время для разработки автоматизированных систем для бизнеса всё чаще предпочтение отдаётся не тяжеловесным процессам, требующим большого объёма документации и других вспомогательных процессов и задач, что приводит как к удорожанию конечного продукта, так и, что наиболее важно, в увеличенному времени его создания, т.е. к плохому удовлетворению требования Time To Market, а более лёгким (или гибким, Agile) методологиям. Одной из таких методологий является Экстремальное Программирование.

 

Экстремальное программирование, несмотря на своё название, представляет собой весьма строгую и дисциплинированную методологию построения жизненного цикла ПО. Эта методология существует уже более 8 лет и уже доказала свою эффективность во многих компаниях и больших и маленьких.

 

Основной причиной успеха XP является его ориентированность на удовлетворённость заказчика. Основной принцип методологии – это доставка того ПО которых хочет заказчик и тогда когда он в нём нуждается. XP позволяет разработчикам реагировать на изменение требований заказчиком даже на поздих этапах его жизненного цикла.

 

Кроме того методология делает упор на командной работе. Менеджеры, заказчики и разработчики – все являются частью одной команды целью которой является создание и поставка качественного ПО.

 

XP улучшает проектные работы четырьмя способами:

  • Общение (communication)
  • Простота (simplicity)
  • Обратная связь с заказчиком (feedback)
  • Персональное вовлечение (courage)