Екстремно програмирање
Екстремно програмирање (XP) је агилни језик узора за развој софтвера у тиму, који чини синергија успостављених вредности тима и принципа који подржавају ове вредности кроз практичне механизме функционисања тимског рада и активности којима се тим бави. Циљ ове синергије је успостављање високог нивоа квалитета и одзива на промене.
Иако екстремно програмирање није било прва метода агилног развоја софтвера, оно популаризује и омасовљава употребу агилних метода. Екстремно програмирање је креирао Кент Бек (енгл. Kent Beck) 1996. године као начин превазилажења проблема и спашавања пројекта C3 (енгл. Chrysler Comprehensive Compensation System). Иако је тај пројекат, после скромног и делимичног успеха, на крају ипак отказан, Рон Јеффриес, Wард Цуннингхам и Кент Бецк су ову методу прерадили у јавној дискусији на Cunningham-овом Портланд Паттерн Репоситорy вики сајту који је уједно и први вики сајт. Године 1999. излази Бекова књига “Екстремно програмирање објашњено (енгл. Extreme Programming Explained)”. Елементи екстремног програмирања се у почетку заснивају на методи Сцрум и Cunnigham-овим језицима узора.
До данас, све већи број софтверских компанија прелази на екстремно програмирање. Вид њиховог организовања може бити другачији у сваком конкретном случају и за сваки појединачни захтев, јер екстремно програмирање не представља круту методологију, или методу, већ је то ипак језик узора који дозвољава тактичке измене у процедури и секвенци извођења појединих активности. Заједничко за све је коришћење обавезних практичних механизама. Чак и спровођење тих пракси подлеже адаптацијама, зависно од потребе, што и јесте основна одлика узора као новог начина научног сагледавања појава које се проучавају.
Вредности
[уреди | уреди извор]Вредности требају бити основни мотив и покретачи сваког посла који тим предузима. Без сталног напора да се достигну вредности, XP тим се суочава са већом вероватноћом пропасти пројекта. Основне вредности сваког тима који предузима XP пројекат су следеће:
- Комуникација
- Једноставност
- Повратна спрега
- Храброст
- Поштовање
Комуникација
[уреди | уреди извор]Главни проблеми у тиму често потичу од недостатка комуникације. На тај начин се спречава проток информација и потстиче софтверска ентропија, који је главни непријатељ успеху пројекта. Развој комуникације међу члановима тима, комуникације са руководством, а што је и најбитније, развој комуникације са клијентима треба да буде најприоритетнији задатак свакога у тиму.
Једноставност
[уреди | уреди извор]Посвећеност једноставности је дефинитивно једна контроверзна вредност од великог значаја за XP тим. Без једноставности нема еволутивног приступа дизајну, нити брзог одзива на промене, што се налази у језгру XP-а.
Повратна спрега
[уреди | уреди извор]Повратна спрега је важна, јер омогућује повратну информацију, као индикатор за евалуацију. Повратна спрега са клијентима, другим програмерима, конкретним кодом и досадашњим системом чине вредност коју вреди неговати.
Храброст
[уреди | уреди извор]Без храбрости нема успешног рада. То је храброст за прихватање промена, храброст за промовисање идеја, као и храброст за одбацивањем делова кода и поновним почетком, ако се покаже потребним.
Поштовање
[уреди | уреди извор]Из свих ових вредности произилази поштовање. Оно се односи на поштовање колега у тиму. Ко води рачуна о претходним вредностима, сигурно добија поштовање осталих. У XP тиму нико не сме бити запостављен, или одбачен, пре свега зато што то води лошој атмосфери у тиму и изазива опадање заинтересованости за реализацијом пројекта. На тај начин се пројекат угрожава и у најгорем случају, напушта.
Принципи
[уреди | уреди извор]- Брза повратна спрега
- Претпостављена једноставност
- Постепене промене
- Прихватање промена
- Квалитетан рад
Активности
[уреди | уреди извор]Да би се достигле вредности екстремног програмирања кроз принципе, морају се спроводити активности помоћу којих би се те вредности имплементирале у понашање и рад тима. У XP се спроводи четири врсте таквих активности:
- Кодирање
- Слушање
- Тестирање
- Дизајн (Пројектовање)
Кодирање
[уреди | уреди извор]Изворни код програма је уједно комуникационо средство и мера успеха помоћу које се врши евалуација достигнутих циљева. Само је код који ради релевантан показатељ да је XP тим на добром путу ка жељеној реализацији пројекта. Једино кроз код се на прави начин могу пласирати и показати идеје и објаснити замисли. Изворни код је алат развојног дизајна, комуникације, имплементације и тестирања.
Слушање
[уреди | уреди извор]Програмери су, по правилу, незналице за проблеме клијента. Они треба тако себе да схватају и да учествују у разговору активним слушањем. Активно слушање подразумева слушање и усмеравање клијента ка што јаснијем представљању захтева. Клијенти нису добри у разликовању вредног и битног од мање вредног, или важног. Неопходан је систем рангирања и пондерисања прича корисника како би и он сам, временом, схватио начин на који то функционише.
Тестирање
[уреди | уреди извор]Срце XP је развој вођен тестовима (енгл. Test driven development—TDD) који подразумева стално и превасходно тестирање написаног кода. XP програмер не зна колико треба да програмира до завршетка ако нема тест. Тест се пише пре кода, а након тога се пише изворни код који треба да задовољи тај тест. Када код задовољи тест, тек се онда иде даље. Рефакторисањем се овај код даље пречишћава и поједностављује, али основно је да тест који је једном прошао мора стално да пролази, при свим следећим изменама. Осим оваквог модуларног (енгл. unit) тестирања постоје и функционални тестови кроз тест примере (енгл. test case) које изводи сам клијент. Тестови корисности и корисничког интерфејса се такође изводе код клијента.
Дизајн (Пројектовање)
[уреди | уреди извор]За разлику од досадашњег планскоцентричног приступа где се прво планирало, пројектовало, па тек онда имплементирало, XP гаји еволутивни приступ дизајну. Сва побољшања се разбијају на што мање делове и онда додају на језгро које тако постаје све шире и комплексније. То се ради у малим итерацијама. После сваке итерације се пројекат објављује и предаје клијенту на даље тестирање.
Обавезна пракса
[уреди | уреди извор]Постоји дванаест практичних механизама којих се треба држати до екстрема при развоју софтвера помоћу XP. То су:
- Програмирање у пару
- Панирање игре
- Развој вођен тестовима (TDD)
- Целокупност тима
- Стална интеграција
- Побољшање дизајна (рефакторисање)
- Мале верзије
- Стандарди кодирања
- Колективно власништво кода
- Једноставан дизајн
- Метафора у систему
- Одрживи корак
Сви ови практични механизми морају бити мотивисани и вођени вредностима, без тога пројекат може да пропадне.
Види још
[уреди | уреди извор]- Агилни развој софтвера
- Агилно моделовање
- Индустријско екстремно програмирање
- Језик узора
- Сцрум
- Узори
Спољашње везе
[уреди | уреди извор]Библиографија
[уреди | уреди извор]- Кент Бецк: Еxтреме Программинг Еxплаинед: Ембраце Цханге, Аддисон-Wеслеy,. ISBN 978-0-201-61641-5
- Кент Бецк анд Мартин Фоwлер: Планнинг Еxтреме Программинг, Аддисон-Wеслеy,. ISBN 978-0-201-71091-5
- Мартин Фоwлер: Рефацторинг: Импровинг тхе Десигн оф Еxистинг Цоде, Аддисон-Wеслеy,. ISBN 978-0-201-48567-7