Членове

Какво е екстремно програмиране (XP)?, на какви ценности, принципи и практики се основава

Вие сте запознати с програмирането, но Extreme Programming (накратко XP) все още е малко мистерия за вас.

Не позволявайте на името да ви отблъсне, рискувате да пропуснете полезна информация.

В тази статия ще разгледаме всичко, което трябва да знаете за екстремното програмиране, за да можете да го използвате във ваша полза.

Какво е екстремно програмиране (XP)?

Екстремното програмиране е методология за разработка на софтуер, която е част от това, което е общо известно като гъвкави методологии. XP се основава на ценности, принципи и практики и целта му е да даде възможност на малки и средни екипи да произвеждат висококачествен софтуер и да се адаптират към непрекъснато променящите се и развиващи се изисквания.

Това, което отличава XP от другите гъвкави методологии е, че XP набляга на техническите аспекти на разработката на софтуер. Екстремното програмиране е прецизно за това как работят инженерите, тъй като следването на инженерните практики позволява на екипите да доставят висококачествен код с устойчиво темпо.

Екстремното програмиране е, накратко, добри практики, доведени до крайност. Тъй като програмирането по двойки е добро, нека го правим през цялото време. Тъй като предварителното тестване е добро, ние тестваме, преди производственият код дори да бъде написан.

Как работи екстремното програмиране (XP)?

XP, за разлика от други методологии, се основава на ценности и принципи, които са важни и уместни по отношение на инженерните практики.

Ценностите осигуряват цел на екипите. Те действат като "северна звезда", за да ръководят вашите решения на високо ниво. Стойностите обаче са абстрактни и твърде размити за конкретни насоки. Например: Да кажете, че цените комуникацията, може да доведе до много различни резултати.

Практиките в известен смисъл са противоположни на ценностите. Те са бетонни и земни, defiопределяне на спецификата на това какво да се прави. Практиките помагат на екипите да се държат отговорни за ценностите. Например, практиката на информационните работни пространства насърчава прозрачна и проста комуникация.

Принципите са насоки, специфични за дадена област, които преодоляват пропастта между практики и ценности.

Стойностите на екстремното програмиране XP

XP ценности: комуникация, простота, обратна връзка, смелост и уважение. Нека разгледаме всеки от тях по-подробно.

Ценности и принципи на екстремното програмиране

чертане BlogInnovazione.то на изображението alexsoft.com

общуване: Липсата на комуникация пречи на протичането на знания в екипа. Често, когато има проблем, някой вече знае как да го поправи. Но липсата на комуникация им пречи да научат за проблема или да допринесат за неговото разрешаване. Така проблемът в крайна сметка се решава два пъти, генерирайки отпадъци.

Семплицита: Простотата казва, че винаги се стремите да правите най-простото нещо, което работи. Често се разбира погрешно и се приема като най-простото нещо, точка, като се игнорира частта „това работи“.

Също така е жизненоважно да запомните, че простотата е силно контекстуална. Това, което е просто за един екип, е сложно за друг и зависи изцяло от уменията, опита и знанията на всеки екип.

Обратна връзка: Обратната връзка в по-традиционните, каскадни методологии за разработка на софтуер често е „твърде малко, твърде късно“.

XP обаче приема промяна и екипите на XP се стремят към навременна и постоянна обратна връзка. Ако е необходима корекция на курса, XPers искат да знаят възможно най-скоро.

Цикъл на екстремно програмиране

чертане BlogInnovazione.то на изображението alexsoft.com

Обратната връзка идва в много форми и размери. Когато сте партньор в програмирането, коментарите от ваш колега са жизненоважна обратна връзка. Такива са и мненията на другите членове на екипа за дадена идея, включително клиента, който в идеалния случай е член на екипа.

Тестовете са друг източник на ценна обратна връзка, която надхвърля резултатите от тестовете. Независимо дали писането на тестове е лесно или трудно, такава е и обратната връзка. Ако имате проблеми с писането на тестове, вашият проект вероятно е твърде сложен. Вслушайте се в отзивите и оптимизирайте дизайна си.

Нещо, което звучи като страхотна идея, може да не работи толкова добре на практика. Следователно готовият код също е източник на обратна връзка, както и разпределеният продукт.

И накрая, имайте предвид, че има твърде много обратна връзка. Ако даден екип генерира повече обратна връзка, отколкото може да понесе, важна обратна връзка може да изчезне от радара. Така че е важно да забавите темпото и да разберете какво причинява излишната обратна връзка и да го коригирате.

Кораджо: Кент Бек defiсмелостта се появява като „ефективно действие в лицето на страха“. Като софтуерен инженер има от какво да се страхувате и следователно имате много възможности да покажете смелост.

Необходима е смелост да се каже истината, особено неприятните, като честните оценки. Даването и получаването на обратна връзка също изисква смелост. Изисква се и смелост, за да избегнете заблудата за невъзстановимите разходи и да отхвърлите неуспешно решение, което е получило значителни инвестиции.

отношение: Основна предпоставка на XP е, че всеки се грижи за работата си. Никакво техническо съвършенство не може да спаси проект, ако няма грижа и уважение.

Всеки човек заслужава достойнство и уважение и това включва, разбира се, хората, участващи в проект за разработка на софтуер. Когато вие и членовете на вашия екип се уважавате и се грижите един за друг, клиента, проекта и бъдещите му потребители, всички печелят

Принципите на екстремното програмиране XP

Принципите предоставят по-конкретни насоки от ценностите. Те са насоки, които осветяват ценностите и ги правят по-ясни и по-малко двусмислени.

чертане BlogInnovazione.то на изображението alexsoft.com

Например, въз основа на стойността само на смелостта, може да заключите, че е препоръчително да направите голяма промяна в графика си веднага. Принципът Baby Steps обаче ни казва, че големите промени са рисковани. Така че вместо това предпочитайте малките.

Уманита: Хората създават софтуер за хора, често пренебрегван факт. Но вземането под внимание на основните човешки нужди, силните и слабите страни създава продукти, които хората искат да използват. А работна среда, която ви предлага възможност за реализация и растеж, чувството за принадлежност и основна сигурност, е място, където по-лесно се съобразявате с нуждите на другите.

Икономика: В XP екипите винаги обръщат внимание на икономическите реалности на разработката на софтуер, постоянно оценяват икономическите рискове и нуждите на проекта.

Например, те биха внедрили потребителски истории въз основа на тяхната бизнес стойност, а не на технически проблеми.

Взаимна изгода: След XP избягвате решения, които облагодетелстват една страна за сметка на друга. Например, разширените спецификации може да помогнат на някой друг да го разбере, но ви отвличат от внедряването им и го забавят за вашите потребители.

Взаимно изгодно решение е използването на автоматизирани тестове за приемане. Получете незабавна обратна връзка за вашето внедряване, вашите партньори получават точни спецификации в кода, а потребителите получават своите функции първи. Освен това всички вие ще имате предпазна мрежа срещу регресии.

Полза (взаимна изгода): Ако дадено решение работи на едно ниво, то може да работи и на по-високо или по-ниско ниво. Например получаването на ранна и постоянна обратна връзка е заложено в различна степен в XP.

  • на ниво разработчици програмистите получават обратна връзка от работата си, използвайки подхода първо тестване;
  • на ниво екип, тръбопроводът за непрекъсната интеграция интегрира, изгражда и тества код няколко пъти на ден;
  • Организационно, седмичните и тримесечните цикли позволяват на екипите да получат обратна връзка и да подобрят работата си, ако е необходимо.

Подобрение: Съгласно принципа на подобряване, екипите не се стремят към съвършенство в първоначалното внедряване, а към изпълнение, което е достатъчно добро, след което непрекъснато се учат и подобряват с обратна връзка от реални потребители.

разнообразие: Вие и вашите колеги се възползвате от разнообразие от гледни точки, умения и нагласи. Такова разнообразие често води до конфликти, но това е добре.

Конфликтите и несъгласията са възможности за поява на по-добри идеи, когато всеки играе на ценностите на смелостта и уважението. Смелост за изразяване на противоположни гледни точки, уважение при изразяването им по граждански и емпатичен начин. И всичко това е ефективно упражнение за комуникация.

размисъл: Страхотните екипи отразяват работата си и анализират как да бъдат по-добри. XP предлага много възможности за това. Не само в своите седмични и тримесечни цикли, но във всяка практика, която насърчава.

Чувствата са важни за разглеждане в допълнение към логическия анализ. Вашият инстинкт може да ви информира, преди да можете да разсъждавате за каквото и да било. И така той може да говори с нетехнически хора, те могат да задават въпроси, които отварят напълно нови възможности.

Флусо: Традиционните методологии за разработка на софтуер имат отделни фази, които продължават дълго време и имат малко възможности за обратна връзка и корекция на курса. Вместо това разработката на софтуер в XP се извършва в дейности, които се извършват непрекъснато, в последователен „поток“ от стойност.

Възможност: Проблемите са неизбежни при разработването на софтуер. Всеки проблем обаче е възможност за подобрение. Научете се да гледате на тях по този начин и е много по-вероятно да излезете с креативни и целенасочени решения, които също служат за предотвратяване на повторната им поява.

Съкращаване: Принципът на излишъка гласи, че ако даден проблем е критичен, трябва да използвате много тактики, за да му се противопоставите.

Вземете недостатъците. Няма единствена тактика, която може да попречи на всички дефекти да избягат от производството.

Така че решението на XP е да подреди набор от мерки за качество. Програмиране по двойки, тестване, непрекъсната интеграция. Всяка отделна отбранителна линия, заедно почти непроницаема стена.

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

Качество: Хората често смятат, че има дилема между качество и бързина.

Това е обратното: стремежът към подобряване на качеството е това, което ви кара да вървите по-бързо.

Иновационен бюлетин
Не пропускайте най-важните новини за иновациите. Регистрирайте се, за да ги получавате по имейл.

Например, рефакторингът - промяна на структурата на кода без промяна на поведението му - е практика, която прави кода по-лесен за разбиране и промяна. В резултат на това е по-малко вероятно да въведете дефекти в кода, което ви позволява първо да доставите повече стойност, като не се налага да коригирате грешки.

Малки стъпки: Големите промени са рискови. XP намалява този риск, като прави промени на малки стъпки, на всяко ниво.

Програмистите пишат код на малки стъпки, използвайки разработка, управлявана от тестове. Те интегрират своя код в основната линия няколко пъти на ден, вместо само на всеки няколко седмици или дори месеци. Самият проект се осъществява на кратки цикли, а не на дълготрайни фази.

Отговорността е приета: В XP отговорността трябва да се приема, никога да не се възлага.

Отговорността трябва да идва с правомощията да вземате решения за това, за какво сте отговорни. Обратното също е вярно. Не искате хората да вземат решения, ако не трябва да живеят с техните последствия.

Прилики и разлики с традиционните и негъвкави методи

Екстремното програмиране, тъй като е гъвкава методология, може да бъде прието и да започне да се възприема, без да се следват твърди планове. Това е по-скоро итеративен дизайн, отколкото голям първоначален проект.

XP се различава значително от традиционните методологии, т.е. каскадно, като се избягват дълготрайни фази.

  • Вместо фаза на планиране, в XP планирате в началото на всеки цикъл на разработка, който обикновено е само една седмица.
  • Вместо да тествате епизоди, тествайте приложението си възможно най-рано: тоест преди реалният код да бъде внедрен.
  • Вместо да пускате функции изолирано по време на дълги фази на внедряване и след това да се мъчите да обедините вашите приноси към основната линия, вие работите на малки парчета и ги интегрирате възможно най-често

Как XP се различава от другите гъвкави методологии?

Екстремното програмиране, по своето естество, има много общо с други гъвкави методологии, но е и уникално сред тях.

Повечето други методологии за разработка не казват много, ако изобщо говорят, за това как да се свърши работата. XP, от друга страна, е много мнителен, когато става въпрос за това и поставя голям акцент върху практиките за софтуерно инженерство.

Екстремно програмиране срещу Scrum

Scrum е рамка, която помага на екипите да разработват сложни проекти по адаптивен начин. Scrum не диктува как разработчиците да вършат работата си. XP, както споменахме, поставя голям акцент върху добрите практики за програмиране.

Scrum рамка

чертане BlogInnovazione.en Изображение нетни решения

Освен това XP очевидно е за програмиране. Scrum, от друга страна, може да се приложи към всеки проект, който се възползва от итеративен подход.

XP приема промени в своите компоненти. Екипите са овластени и дори насърчавани да променят практиките въз основа на техните специфични нужди. Ръководството за Scrum, от друга страна, е категорично, че „Въпреки че само части от Scrum могат да бъдат внедрени, резултатът не е Scrum“.

Освен това Scrum е рамка, която трябва да бъде допълнена с методологии и практики, за да се свърши работата.

Това означава, че работата в екстремно програмиране и Scrum е силно препоръчителна.

Роли и отговорности

Според Кент Бек, един зрял XP екип не трябва да възлага твърди роли, но трябва да признае, че ролите могат да бъдат полезни за новосъздадени екипи, докато започнат да забавят или да затрудняват сътрудничеството.

Нека да разгледаме някои ключови роли:

  • Клиент: В идеалния случай клиентът трябва да е на място, за да отговаря на въпроси, да приоритизира изискванията на потребителя или да помага при тестване за приемане. Когато това не е възможно, тази роля може да бъде изпълнена от представител на клиента.
  • Програмисти: В екип на XP програмистите оценяват усилията, необходими за изпълнение на задачи, писане на автоматизирани тестове и прилагане на истории.
  • Coach: не е необходимо да имате треньор и е възможно да постигнете целта и без такъв. Въпреки това, наличието на някой с XP опит, който да тренира екип, може да гарантира, че членовете на екипа следват практики, превръщат ги в навици и не се връщат към старите начини.
  • Tracker- Инструмент за проследяване проследява показателите за напредъка на екипа и разговаря с всеки член на екипа, за да идентифицира проблемите и да намери решения. Проследяващото устройство изчислява показатели, които показват колко добре се справя екипът, като графики за скорост и изгаряне, или екипът използва дигитален scrum или канбан борд, който автоматично ги изчислява.

Методи и техники

Това са практиките, възприети в XP. Те са разделени на три основни групи: софтуерно инженерство, управление на работното място и управление на проекти.

Софтуерно инженерство

Програмиране по двойки: В XP пишете код по двойки, седнали на машина. Вие и вашата двойка разговаряте помежду си, докато анализирате, прилагате и тествате функцията, върху която работите. Програмирането по двойки е особено добро за създаване на код с по-малко грешки, като същевременно е ангажиращо, забавно и уморително.

Ограничение от десет минути: Задължително Позволява 10 минути за изграждане на целия проект, включително изпълнение на всички автоматизирани тестове, за максимум десет минути. Това ограничение е, за да поддържа тестването рационализирано и ефективно.

Тестове преди програмиране: имплементирайте функции, използвайки подхода първо тестване, наричан още разработка, управлявана от тестове (TDD). TDD се състои от разработка с помощта на проста итеративна процедура:

  • пишете код след неуспешен тест;
  • след това напишете производствен код, за да преминете теста;
  • ако е необходимо, преработете своя производствен код, за да го направите по-чист и по-лесен за разбиране.

TDD носи няколко предимства.

Първо, обратна връзка. Ако е трудно да напишете тест, дизайнът, който търсите или който сте наследили, вероятно е твърде сложен и трябва да го опростите.

Второ, TDD позволява на програмистите да се доверят на кода, който пишат, и създава приятен цикличен ритъм, при който следващата стъпка винаги е ясна.

Не на последно място, използването на TDD от самото начало гарантира 100% покритие на кода. След това тестовият пакет наистина се превръща в предпазна мрежа за бъдещи промени, насърчавайки преработването на кода и създавайки добродетелен кръг на качеството.

Инкрементален дизайн: Практиката на постепенно проектиране означава, че трябва да инвестирате в дизайна на вашето приложение всеки ден, търсейки възможности за премахване на дублирането и да направите малки подобрения, за да постигнете възможно най-добрия дизайн за това, от което вашата система се нуждае днес.

Непрекъсната интеграция: В XP вие интегрирате работата си в основното споделено хранилище няколко пъти на ден, задействайки автоматично изграждане на цялата система. Интегрирането възможно най-рано и възможно най-често драстично намалява цената на интеграцията, тъй като намалява вероятността от сливания и логически конфликти. Той също така излага проблемите на околната среда и пристрастяването.

Споделен код (колективна собственост): XP насърчава споделения код или колективната собственост: всеки разработчик е отговорен за целия код. Той насърчава обмена на информация, намалява фактора на екипната шина и повишава общото качество на всеки модул, ако вземем предвид принципа на разнообразието.

Единична база кодове: Единичната кодова база е известна също като „разработка, базирана на магистрала“. Това означава, че има само един източник на истина. Така че вместо да се развивате изолирано за дълги периоди от време, обединявайте приносите си в един поток рано и често. Флаговете на функциите ви помагат да ограничите използването на функции, докато не бъдат завършени.

Ежедневно разпределение: внедряването в производството поне веднъж на ден е логично следствие от непрекъснатата интеграция:. Всъщност днес много екипи отиват дори по-далеч и практикуват непрекъснато внедряване. Тоест, всеки път, когато някой се присъедини към основната линия, приложението се внедрява в производство.

Код и тестове: Тази практика означава, че изходният код, включително тестовете, е единственият постоянен артефакт на софтуерен проект. Ангажирането с генерирането на други видове артефакти, включително документация, често е разточително, защото не генерира реална стойност за клиента.

Ако имате нужда от други артефакти или документи, направете усилие да ги генерирате от производствен код и тестове.

Анализ на първопричините: Всеки път, когато даден дефект влезе в производство, не просто коригирайте дефекта. Уверете се, че сте разбрали какво го е причинило на първо място, защо вие и вашите съотборници не сте успели да предотвратите занасянето. След това вземете мерки, за да сте сигурни, че това няма да се случи отново.

Работна среда

Седнете заедно: В XP екипите предпочитат да работят заедно в открито пространство. Тази практика насърчава комуникацията и чувството за принадлежност към екип.

Целият екип: Всеки, който е необходим за успеха на проекта, е част от екипа на XP. Това е силно контекстуално – различно за всеки екип – и динамично, може да се променя в рамките на екип.

Информационни работни пространства: Информационното работно пространство използва физическото пространство на екипа, за да покаже информация, която позволява на всеки да знае с един поглед напредъка на проекта. Начинът, по който се прави това, може да варира, от физически бележки и графики до екранни снимки, показващи Kanban дъски и табла за управление от софтуер за управление на проекти.

Енергизирана работа: В XP работите само докато можете да извършвате енергична работа. Работните часове трябва да бъдат ограничени до максимум 40 на седмица.

Управление на проекти

Analisi- Напишете потребителските изисквания във формат, известен като потребителски анализ. Потребителският анализ има кратко, описателно име, както и кратко описание на това, което трябва да се приложи.

Застой: Когато планирате цикъл, добавете второстепенни задачи, които екипът може да изостави, ако възникне необходимост. Винаги могат да се добавят още истории, ако екипът предоставя твърде много.

Цикли (месечни и седмични): Разработката в XP протича в два основни цикъла: седмичен цикъл и месечен цикъл.

Срещи, цикли, планирани издания: Разработката в XP работи в два основни цикъла: седмичен цикъл и тримесечен цикъл. Първоначално Кент Бек препоръчва двуседмичен цикъл, но го променя във второто издание на книгата си.

Седмичен цикъл: седмичният цикъл е "пулсът" на XP проект. Цикълът започва със среща, в която клиентът избира кои истории иска да създава през седмицата. Освен това екипът преглежда работата си, включително напредъка от миналата седмица, и обмисля начини за подобряване на процеса.

Месечен цикъл: Всеки месец екипът отразява и идентифицира възможностите за подобрение в своя процес. Клиентът избира една или повече теми за този месец, заедно с анализите в тези теми.

Как да започнете работа с екстремно програмиране?
Техническите умения и XP навиците могат да бъдат трудни за усвояване. Някои от практиките може да изглеждат чужди на програмисти, които не са свикнали с тях.

Ercole Palmeri

Иновационен бюлетин
Не пропускайте най-важните новини за иновациите. Регистрирайте се, за да ги получавате по имейл.

Последни статии

Иновативна намеса в добавената реалност с Apple Viewer в поликлиниката в Катания

Операция по офталмопластика с помощта на търговския зрител Apple Vision Pro беше извършена в поликлиниката в Катания...

3 май 2024

Предимствата на страниците за оцветяване за деца - свят на магия за всички възрасти

Развитието на фини двигателни умения чрез оцветяване подготвя децата за по-сложни умения като писане. Оцветявам…

2 май 2024

Бъдещето е тук: Как корабната индустрия революционизира глобалната икономика

Военноморският сектор е истинска световна икономическа сила, която се е насочила към пазар от 150 милиарда...

1 май 2024

Издателите и OpenAI подписват споразумения за регулиране на потока от информация, обработвана от изкуствения интелект

Миналия понеделник Financial Times обяви сделка с OpenAI. FT лицензира своята журналистика от световна класа...

30 април 2024

Прочетете Иновация на вашия език

Иновационен бюлетин
Не пропускайте най-важните новини за иновациите. Регистрирайте се, за да ги получавате по имейл.

Следвайте ни