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

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
Разработка программного обеспечения
Процесс разработки ПО
Шаги процесса

Анализ | Проектирование | Реализация | Тестирование | Внедрение | Сопровождение

Модели / Методы

Agile | Cleanroom | Итеративная | RAD | Scrum | RUP | OpenUP | MSF | Спиральная | Водопад | XP

Сопутствующие дисциплины

Конфигурационное управление | Документирование | Управление проектами


Экстрема́льное программи́рование (англ. Extreme Programming, XP) — одна из гибких методологий разработки программного обеспечения. Авторы методологии — Кент Бек (Kent Beck), Уорд Каннингем (Ward Cunningham), Мартин Фаулер и другие.

Содержание

Основные приёмы XP

Двенадцать основных приёмов экстремального программирования (по первому изданию книги Extreme programming explained) могут быть объединены в четыре группы:

  • Короткий цикл обратной связи (Fine scale feedback)
  • Непрерывный, а не пакетный процесс
  • Понимание, разделяемое всеми
    • Простота (Simple design)
    • Метафора системы (System metaphor)
    • Коллективное владение кодом (Collective code ownership) или выбранными шаблонами проектирования (Collective patterns ownership)
    • Стандарт кодирования (Coding standard or Coding conventions)
  • Социальная защищенность программиста (Programmer welfare):
    • 40-часовая рабочая неделя (Sustainable pace, Forty hour week)

Парное программирование

Основная статья: Парное программирование

Парное программирование предполагает, что весь код создается парами программистов, работающих за одним компьютером. Один из них работает непосредственно с текстом программы, другой просматривает его работу и следит за общей картиной происходящего. При необходимости клавиатура свободно передается от одного к другому. В течение работы над проектом пары не фиксированы: рекомендуется их перемешивать, чтобы каждый программист в команде имел хорошее представление о всей системе. Таким образом, парное программирование усиливает взаимодействие внутри команды.

Коллективное владение

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

Давая каждому программисту право изменять код, мы получаем риск появления ошибок, вносимых программистами, которые считают что знают что делают, но не рассматривают некоторые зависимости. Хорошо определённые UNIT-тесты решают эту проблему: если не рассмотренные зависимости порождают ошибки, то следующий запуск UNIT-тестов будет неудачным.

Заказчик всегда рядом

«Заказчик» в XP — это не тот, кто оплачивает счета, а тот, кто на самом деле использует систему. XP утверждает, что заказчик должен быть всё время на связи и доступен для вопросов.

Литература

  • Кент Бек: Экстремальное программирование — Питер, 2002, ISBN 5-94723-032-1.
  • Кент Бек, Мартин Фаулер: Экстремальное программирование: планирование — Питер, 2003, ISBN 5-318-00111-4.
  • Кент Бек: Экстремальное программирование: разработка через тестирование — Питер, 2003, ISBN 5-8046-0051-6.

См. также

Ссылки


<tr><th style="white-space:nowrap;" >Концепции</th> <td style="width:100%;background:#f0f0f0" > Моделирование данныхАрхитектура программного обеспеченияFunctional specificationЯзык моделированияПарадигма программированияПрограммное обеспечениеАрхитектура программного обеспеченияМетодология разработки программного обеспеченияЦикл разработки программного обеспеченияКачество программного обеспеченияОбеспечение качества программного обеспеченияСтруктурный анализ программного обеспечения </span></td></tr><tr><th style="white-space:nowrap;" >Направления</th> <td style="width:100%;" > Гибкая методология разработкиАспектно-ориентированное программированиеОбъектно-ориентированное программированиеПроблемно-ориентированное программированиеОнтологияСервисно-ориентированная архитектураЦикл разработки программного обеспеченияОценка затрат на разработку программного обеспечения</span></td></tr><tr><th style="white-space:nowrap;" >Модели</th> <td style="width:100%;background:#f0f0f0" > Модели разработки: Гибкая методология разработкиCleanroomИтеративная разработкаRUPOpenUPRADScrumMSFСпиральная модельМодель водопадаXPV-Model
Другие модели: CMMCMMIМодель данныхFunction modelIDEFInformation modelMetamodelingObject modelView modelUML </span></td></tr><tr><th style="white-space:nowrap;" >Выдающиеся
деятели</th> <td style="width:100%;" > Kent BeckГради БучФред БруксBarry BoehmУорд КаннингемОле-Йохан ДальTom DeMarcoЭдсгер Вибе ДейкстраДональд КнутМартин ФаулерЧарльз Энтони Ричард ХоарWatts HumphreyMichael A. JacksonIvar JacobsonCraig LarmanJames MartinBertrand MeyerDavid ParnasWinston W. RoyceJames RumbaughНиклаус ВиртЭдвард Йордан</span></td></tr><tr><th style="white-space:nowrap;" >Связанные
статьи</th> <td style="width:100%;background:#f0f0f0" > ИнформатикаКомпьютерная инженерияОрганизационная инженерияИстория разработки ПОКонфигурационное управлениеМенеджментДокументированиеМатематикаУправление проектамиУправление программамиВсеобщее управление качествомЭргономикаСистемотехникаОбратная разработка</span></td></tr></table> <span id="interwiki-de-ga" />be-x-old:Экстрэмальнае праграмаваньнеbg:Екстремно програмиранеca:Programació Extremacs:Extrémní programovánída:Extreme Programmingde:Extreme Programmingen:Extreme Programminges:Programación extremafi:Extreme Programmingfr:Extreme programminggl:Programación Extremahe:Extreme Programmingit:Extreme Programmingja:エクストリーム・プログラミングko:익스트림 프로그래밍lt:Ribinis programavimasnl:Extreme Programmingno:Extreme Programmingpl:Programowanie ekstremalnept:Programação extremash:Ekstremno programiranjesr:Ekstremno programiranjesv:Extrem programmeringth:Extreme programminguk:Екстремальне програмуванняvi:Lập trình cực hạnzh:极限编程
Личные инструменты

Served in 0.266 secs.