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

Разработка программного обеспечения
Ключевые процессы
Парадигмы и модели
Методологии
Инструменты

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

Название методологии исходит из идеи применить полезные традиционные методы и практики разработки программного обеспечения, подняв их на новый «экстремальный» уровень. Так, например, практика выполнения ревизии кода, заключающаяся в проверке одним программистом кода, написанного другим программистом, в «экстремальном» варианте представляет собой «парное программирование», когда один программист занимается написанием кода, а его напарник в это же время непрерывно просматривает только что написанный код.

История

Методология была разработана Кентом Беком во время его работы над проектом системы для расчета зарплатных ведомостей Chrysler Comprehensive Compensation System[англ.] (C3). Бек стал ведущим специалистом проекта в марте 1996 года. Он начал совершенствовать применяемую в проекте методологию разработки, и написал о ней книгу "Extreme Programming Explained" (опубликована в октябре 1999 года).[1] Проект был закрыт в феврале 2000 года.

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

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

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

Тестирование

XP предполагает написание автоматических тестов (программный код, написанный специально для того, чтобы тестировать логику другого программного кода). Особое внимание уделяется двум разновидностям тестирования:

Разработчик не может быть уверен в правильности написанного им кода до тех пор, пока не сработают абсолютно все тесты модулей разрабатываемой им системы. Тесты модулей (юнит-тесты) позволяют разработчикам убедиться в том, что каждый из них по отдельности работает корректно. Они также помогают другим разработчикам понять, зачем нужен тот или иной фрагмент кода, и как он функционирует — в ходе изучения кода тестов логика работы тестируемого кода становится понятной, так как видно, как он должен использоваться. Тесты модулей также позволяют разработчику без каких-либо опасений выполнять рефакторинг (refactoring).

Функциональные тесты предназначены для тестирования функционирования логики, образуемой взаимодействием нескольких (часто — довольно внушительного размера) частей. Они менее детальны, чем юнит-тесты, но покрывают гораздо больше — то есть, у тестов, которые при своём выполнении затрагивают больший объём кода, шанс обнаружить какое-либо некорректное поведение, очевидно, больше. По этой причине в промышленном программировании написание функциональных тестов нередко имеет больший приоритет, чем написание юнит-тестов.

Для XP более приоритетным является подход, называемый TDD (от англ. test-driven development — разработка через тестирование). В соответствии с этим подходом сначала пишется тест, который изначально не проходит (так как логики, которую он должен проверять, ещё просто не существует), затем реализуется логика, необходимая для того, чтобы тест прошёл. TDD, в некотором смысле, позволяет писать код, более удобный в использовании — потому что при написании теста, когда логики ещё нет, проще всего позаботиться об удобстве будущей системы.

Игра в планирование

Основная цель игры в планирование — быстро сформировать приблизительный план работы и постоянно обновлять его по мере того, как условия задачи становятся всё более чёткими. Артефактами игры в планирование является набор бумажных карточек, на которых записаны пожелания заказчика (customer stories), и приблизительный план работы по выпуску следующих одной или нескольких небольших версий продукта. Критическим фактором, благодаря которому такой стиль планирования оказывается эффективным, является то, что в данном случае заказчик отвечает за принятие бизнес-решений, а команда разработчиков отвечает за принятие технических решений. Если не выполняется это правило, весь процесс распадается на части.

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

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

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

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

Непрерывная интеграция

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

Рефакторинг

Рефакторинг (refactoring) — это методика улучшения кода без изменения его функциональности. XP подразумевает, что однажды написанный код в процессе работы над проектом почти наверняка будет неоднократно переделан. Разработчики XP безжалостно переделывают написанный ранее код для того, чтобы улучшить его. Этот процесс называется рефакторингом. Отсутствие тестового покрытия провоцирует отказ от рефакторинга в связи с боязнью поломать систему, что приводит к постепенной деградации кода.

Частые небольшие релизы

Версии (releases) продукта должны поступать в эксплуатацию как можно чаще. Работа над каждой версией должна занимать как можно меньше времени. При этом каждая версия должна быть достаточно осмысленной с точки зрения полезности для бизнеса.

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

Простота проектирования

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

Кент Бэк и Мартин Фаулер[2] предлагают описывать "простое проектирование" как выполнение следующих четырех критериев:

  1. Система проходит все тесты
  2. Каждый элемент системы имеет своё явное назначение
  3. В системе отсутствует дублирование
  4. Система содержит как можно меньше элементов

Роберт Мартин соглашается[3] c этими правилами, однако в своих ранних работах[4] так же предлагает описывать "простое проектирование" следующими тремя принципами:

  • DRY - не допускайте дублирование кода или ответственности [5]
  • KISS - реализуйте функциональность самым простым из доступных способов
  • YAGNI - не реализуйте функциональности больше, чем требуется для текущей итерации

Метафора системы

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

Метафора системы (system metaphor) — это аналог того, что в большинстве методик называется архитектурой. Метафора системы даёт команде представление о том, каким образом система работает в настоящее время, в каких местах добавляются новые компоненты, и какую форму они должны принять.

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

В настоящий момент Боб Мартин признал, что метафора системы устарела и должна быть заменена на Domain Driven Design.

Стандарты оформления кода

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

  • члены команды не тратят время на споры о вещах, которые фактически никак не влияют на скорость работы над проектом;
  • обеспечивается эффективное выполнение остальных практик.

Если в команде не используются единые стандарты оформления кода, разработчикам становится сложнее выполнять рефакторинг; при смене партнёров в парах возникает больше затруднений; в общем и целом, продвижение проекта затрудняется. В рамках XP необходимо добиться того, чтобы было сложно понять, кто является автором того или иного участка кода, — вся команда работает унифицированно, как один человек. Команда должна сформировать набор правил, а затем каждый член команды должен следовать этим правилам в процессе написания кода. Перечень правил не должен быть исчерпывающим или слишком объёмным. Задача состоит в том, чтобы сформулировать общие указания, благодаря которым код станет понятным для каждого из членов команды. Стандарт оформления кода поначалу должен быть простым, затем он может постепенно усложняться по мере наработки опыта группой разработчиков. Не нужно тратить слишком много времени на предварительную разработку стандарта.

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

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

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

Примечания

  1. Lee Copeland. Extreme Programming (англ.). Computerworld (3 декабря 2001). Дата обращения: 26 ноября 2019. Архивировано 30 июля 2019 года.
  2. BeckDesignRules. Дата обращения: 24 августа 2022. Архивировано 9 июля 2022 года.
  3. Clean Craftsmanship: Disciplines, Standards, and Ethics, Robert C. Martin, ISBN 978-0136915713
  4. Agile Software Development, Principles, Patterns, and Practices, Robert C. Martin
  5. The Pragmatic Programmer, 20th Anniversary Edition, David Thomas and Andrew Hunt, 2019, Addison Wesley, ISBN 978-0135957059

Литература

  • Кент Бек: Экстремальное программирование — Питер, 2002, ISBN 5-94723-032-1.
  • Кент Бек, Мартин Фаулер: Экстремальное программирование: планирование — Питер, 2003, ISBN 5-318-00111-4.
  • Кент Бек: Экстремальное программирование: разработка через тестирование — Питер, 2003, ISBN 5-8046-0051-6.
  • Кен Ауэр, Рой Миллер: «Экстремальное программирование: постановка процесса с первых шагов и до победного конца» — Питер, 2003, ISBN 5-318-00132-7.

См. также

Ссылки

Read other articles:

Rasyid Rasyid adalah seorang politikus Indonesia. Pada Pemilihan umum Bupati Konawe Selatan 2020, ia terpilih menjadi Wakil Bupati Konawe Selatan mendampingi Surunuddin Dangga selaku Bupati Konawe Selatan. Ia tergabung dalam Partai Keadilan Sejahtera (PKS).[1] Ia merupakan anggota Dewan Perwakilan Rakyat Daerah (DPRD) Provinsi Sulawesi Tenggara dari 2004 sampai 2024 dan berada di Komisi II PKS.[2] Referensi ^ Dwi, Hamka (23 September 2020). Hambali, Haerani, ed. KPU Tetapkan T...

 

Professional services company in the design and consulting industry This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Stantec – news · newspapers · books · scholar · JSTOR (May 2016) (Learn how and when to remove this template message) Stantec Inc.Company typePublicTraded asTSX: STNNYSE: STNIndustryP...

 

Eding Sungkana Komandan SeskoauPetahanaMulai menjabat 18 Desember 2023 PendahuluElianto SusetioPenggantiPetahana Informasi pribadiLahir13 Oktober 1966 (umur 57)Kuningan, Jawa BaratAlma materAkademi Angkatan Udara (1989)Karier militerPihak IndonesiaDinas/cabang TNI Angkatan UdaraMasa dinas1989—sekarangPangkat Marsekal Muda TNISatuanKorps Penerbang (Helikopter)Pertempuran/perangPemberontakan di AcehKonflik PapuaSunting kotak info • L • B Marsekal Muda TNI Edin...

العلاقات الإكوادورية الميكرونيسية الإكوادور ولايات ميكرونيسيا المتحدة   الإكوادور   ولايات ميكرونيسيا المتحدة تعديل مصدري - تعديل   العلاقات الإكوادورية الميكرونيسية هي العلاقات الثنائية التي تجمع بين الإكوادور وولايات ميكرونيسيا المتحدة.[1][2][3&#...

 

American actress (born 1962) Gina GershonGershon in 2018BornGina L. Gershon (1962-06-10) June 10, 1962 (age 61)Los Angeles, California, U.S.Alma materNew York University (BFA '83)Occupation(s)Actress, singer, authorYears active1981–presentKnown forBound Cocktail ShowgirlsFace/OffKiller Joe Gina L. Gershon (born June 10, 1962) is an American actress and singer. She has starred in such films as Cocktail (1988), Red Heat (1988), Showgirls (1995), Bound (1996), Face/Off (19...

 

Tokyu Corporation東急株式会社 Création 2 septembre 1922[1] Fondateurs Keita Gotō Forme juridique Kabushiki gaisha Action Bourse de Tokyo (9005)[2] Siège social 5-6 Nanpeidai-chō, Shibuya-ku, Tokyo 150-8511 Japon Activité Holding Filiales Izukyu Holdings (d)Tokyu Hotels (d)[3]Mauna Lani Bay Hotel & Bungalows (d)Réseau ferré de la Tōkyū (d)Tokyu Bus (d)[4]Tokyu Department Store (en)Tokyu Store (d)Tokyu Lifia (d)[5] Site web www.tokyu.co.jp Chiffre d'affaires 931,3 milli...

Home Guardawalnya bernama Local Defence VolunteersPos Home Guard di Admiralty Arch, London pusat, 21 Juni 1940.Aktif14 Mei 1940 – 3 Desember 1944Negara Britania RayaCabang Angkatan Darat Britania RayaPeranPertahanan menghadapi invasiDibubarkan31 Desember 1945 Home Guard (awalnya bernama Local Defence Volunteers disingkat LDV) adalah milisi sipil bersenjata yang mendukung Angkatan Darat Britania selama Perang Dunia Kedua. Home Guard aktif tahun 1940 hingga 1944, memiliki 1,5 j...

 

City in Iowa, United StatesDixon, IowaCityLocation of Dixon, IowaCoordinates: 41°44′29″N 90°46′58″W / 41.74139°N 90.78278°W / 41.74139; -90.78278CountryUnited StatesState IowaCountyScottGovernment • MayorSteve LaughlinArea[1] • City0.13 sq mi (0.32 km2) • Land0.13 sq mi (0.32 km2) • Water0.00 sq mi (0.00 km2)Elevation676 ft (206 m)Population&...

 

Chinese character radical dog 犬 ← 93 Radical 94 (U+2F5D) 95 → 犬 (U+72AC) dogPronunciationsPinyin:quǎnBopomofo:ㄑㄩㄢˇWade–Giles:ch'üan3Cantonese Yale:hyúnJyutping:hyun2Pe̍h-ōe-jī:khiánJapanese Kana:ケン ken (on'yomi)いぬ inu (kun'yomi)Sino-Korean:견 gyeonNamesChinese name(s):(犭) 反犬旁 fǎnquǎnpángJapanese name(s):犬/いぬ inu(犭) 獣偏/けものへん kemonohenHangul:개 gaeStroke order animation Radical 94, meaning dog (�...

Arthur KornbergArthur KornbergLahir(1918-03-03)3 Maret 1918New York City, United StatesMeninggal26 Oktober 2007(2007-10-26) (umur 89)Stanford, United StatesAlmamaterUniversity of RochesterPenghargaanPenghargaan Nobel dalam Fisiologi atau Kedokteran 1959; Paul Lewis Award 1951;National Medal of Science 1979;Gairdner Foundation Award 1995;Karier ilmiahBidangMolecular biologyInstitusiUniversity of California, BerkeleyNational Institutes of Health Washington University in St. LouisStanford ...

 

Ancient Egyptian ruler, co-regent For other uses, see Neferneferuaten (disambiguation). NeferneferuatenPharaohReignc 1334–1332 BCPredecessorSmenkhkareSuccessorTutankhamunRoyal titulary Prenomen  (Praenomen) Ankhkheperure (plus ephithet) Nomen Neferneferuaten (plus ephithet) Consortif Nefertiti: Akhenatenif Meritaten: SmenkhkareDiedc. 1332 BCDynastyEighteenth dynasty of Egypt Ankhkheperure-Merit-Neferkheperure/Waenre/Aten Neferneferuaten (Ancient Egyptian: nfr-nfrw-jtn)[citation...

 

Unjuk rasa Kuba 2021Bagian dari Gerakan pembangkang Kuba dan protes atas tanggapan terhadap pandemi COVID-19Orang-orang di Havana pada 11 JuliTanggal11 Juli 2021 – 17 Juli 2021LokasiKuba dan demonstrasi dukungan lokal di seluruh dunia, terutama di FloridaSebab Kekurangan makanan dan obat-obatan[1] Tanggapan pemerintah terhadap pandemi COVID-19[1][nb 1] Kontraksi ekonomi[nb 2] Otoritarianisme[8] dan kurangnya kebebasan sipil[9][nb 3] Tu...

BEFORE The Backstreet Boys 1989 - 1993album kompilasi karya Nick CarterDirilis1 Oktober 2002 (Amerika Serikat)Direkam1989—1993GenrePopLabelDyenamic DiscsProduserAndrew Winton and Mark J. Dye Kronologi Nick Carter BEFORE The Backstreet Boys 1989 - 1993 (2002) Now or Never (2002)Now or Never2002 BEFORE The Backstreet Boys 1989 - 1993 adalah album tidak resmi dan merupakan album demo yang dirilis secara independen oleh anggota Backstreet Boys, Nick Carter. Lagu-lagu ini direkam oleh Nick ...

 

Football clubPeralada del GironaFull nameClub de Fútbol PeraladaFounded1915; 109 years ago (1915)GroundMunicipal, Peralada, Catalonia, SpainCapacity1,500PresidentJosep IsernHead coachJavi García (caretaker)LeagueTercera Federación – Group 52022–23Tercera Federación – Group 5, 5th of 16WebsiteClub website Home colours Away colours Club de Futbol Peralada is a Spanish football team based in Peralada, in Province of Girona of the autonomous community of Catalonia. Fou...

 

Glossary of Hindustani words and phrases to describe familial relationships This article may require cleanup to meet Wikipedia's quality standards. The specific problem is: Common nouns like mother and sister should be in lowercase not capitals. Please help improve this article if you can. (March 2020) (Learn how and when to remove this message) Part of a series on theAnthropology of kinship Basic concepts Family Lineage Affinity Consanguinity Marriage Incest taboo Endogamy Exogamy Moiety Mon...

Sporting event delegationIndia at theOlympicsFlag of IndiaIOC codeINDNOCIndian Olympic AssociationWebsiteolympic.ind.inMedalsRanked 56th Gold 10 Silver 9 Bronze 16 Total 35 Summer appearances19001904–19121920192419281932193619481952195619601964196819721976198019841988199219962000200420082012201620202024Winter appearances196419681972–19841988199219941998200220062010201420182022Other related appearances Independent Olympic Participants (2014) India first participated at the Olympic Gam...

 

شعار ليبيا {{{alt}}}الشعار الحالي التفاصيل المستعمل ليبيا البلد ليبيا  الاعتماد 2014 الدرع فرسن ليبيا الدعامات ليبيا القاعدة رجل السوده كلمات مكتوبة اليبيا مجالات الاستخدام ليبيا إصدارات أقدم تعديل مصدري - تعديل   شعار ليبيا حاليا والذي يمثّل المجلس الوطني الانتقالي، أنش...

 

Asian investment firm PAGHong Kong OfficeFormerlyPacific Alliance GroupCompany typePrivate OwnershipIndustryInvestment ManagementFounded2002; 22 years ago (2002)FoundersWeijian ShanChris GradelJon-Paul ToppinoKey peopleWeijian Shan (Co-founder, Executive chairman)Chris Gradel (Co-founder, CEO)Jon-Paul Toppino (Co-founder, President)ProductsPrivate EquityReal EstatePrivate creditHedge FundsAUMUS$55 billion (2023)Number of employees577 (2022)[1]Websitewww.pag.comF...

Low-pressure voids formed in liquids For other uses, see Cavitation (disambiguation). This article needs attention from an expert in Physics. The specific problem is: Several usages of the term appear to be mixed up. See the talk page for details. WikiProject Physics may be able to help recruit an expert. (July 2023) Cavitating propeller model in a water tunnel experiment Cavitation damage on a valve plate for an axial piston hydraulic pump This video shows cavitation in a gear pump Cavitatio...

 

American politician (born 1955) For other people named Ron Johnson, see Ron Johnson (disambiguation). Ron JohnsonChair of the Senate Homeland Security and Governmental Affairs CommitteeIn officeJanuary 3, 2015 – February 3, 2021Preceded byTom CarperSucceeded byGary PetersUnited States Senatorfrom WisconsinIncumbentAssumed office January 3, 2011Serving with Tammy BaldwinPreceded byRuss Feingold Personal detailsBornRonald Harold Johnson (1955-04-08) April 8, 1955 (age...