•     •   10 min read

Экстремалды программист (XP):
Жүрегі әлсіздерге арналмаған

Экстремалды бағдарламалау (XP) — бұл икемді бағдарламалық жасақтаманы әзірлеу әдістемесі. Басқа икемді әдістемелер сияқты, XP-де өзіне тән құралдар, процестер мен рөлдер бар. XP-нің жасаушысы, америкалық әзірлеуші Кент Бек, мүлдем жаңа ештеңе ойлап тапқан жоқ, бірақ икемді әзірлеудің ең үздік тәжірибелерін алып, оларды экстремалды деңгейге көтерді; осы себепті бұл әдістеме Экстремалды бағдарламалау деп аталады.

Әдістеменің авторы Кент Бек 90-шы жылдардың соңында Крайслердің кешенді өтем жүйесі жобасын басқарды, мұнда ол алғаш XP тәжірибелерін қолданды. Ол өзінің тәжірибесі мен құрылған концепцияны 1999 жылы жарияланған Экстремалды бағдарламалауды түсіндіру” атты кітапта құжаттады. Бұл кітаптан кейін XP тәжірибелерін егжей-тегжейлі сипаттайтын басқа кітаптар да жарық көрді. Әдістеменің дамуына үлес қосқан адамдар қатарында Уорд Каннингем, Мартин Фаулер және басқалар бар.
Басқа икемді әдістемелерден айырмашылығы, XP бағдарламалық жасақтама әзірлеуде ерекше қолданылады. Оны басқа бизнес жағдайларында немесе күнделікті өмірде Scrum, Канбан немесе Lean сияқты әдістермен қолдану мүмкін емес.
XP-нің мақсаты — бағдарламалық өнім үшін үнемі өзгеріп тұратын талаптарға бейімделу және әзірлеу сапасын арттыру. Сондықтан XP күрделі және алдын ала болжанбайтын жобалар үшін қолайлы.

XP-нің төрт негізгі қызметі бар: кодтау, тестілеу, жобалау және тыңдау. Сонымен қатар, Экстремалды бағдарламалаудың негізгі құндылықтары бар: қарапайымдық, коммуникация, кері байланыс, батылдық және құрмет.

Экстремалды бағдарламалаудың 13 тәжірибесі

1. Толық команда

XP-ны қолданатын барлық жоба қатысушылары бір команда ретінде жұмыс істейді. Команда құрамына міндетті түрде бизнес туралы хабардар, нақты соңғы пайдаланушы ретіндегі тұтынушы өкілі кіруі тиіс. Тұтынушы өнімнің талаптарын белгілеп, функционалдықты басымдықтарға бөледі. Бизнес талдаушылар тұтынушыға көмектесе алады. Орындаушылар тарапынан командаға әзірлеушілер, тестерлер, кейде команданы бағыттайтын жаттықтырушы мен ресурстарды қамтамасыз ететін менеджер кіреді.

2. Жоспарлау ойыны

XP-да жоспарлау екі кезеңде жүзеге асырылады: шығарылымды жоспарлау және итерация жоспары.
  • Шығарым жоспарлау: Бағдарламалау тобы тұтынушымен кездесіп, келесі шығару үшін қажетті функционалдықты анықтайды, әдетте, 2 – 6 ай ішінде. Тұтынушы талаптары көбінесе анық емес болғандықтан, әзірлеушілер оларды нақтылап, бір күн немесе одан аз мерзімде орындалатын тапсырмаларға бөледі. Тұтынушы өнімнің жұмыс істейтін операциялық ортасын түсінуі тиіс.

    Тапсырмалар карточкаларға жазылады, ал тұтынушы оларды басымдықтарға бөледі. Содан кейін әзірлеушілер әр тапсырманың орындалу уақытына баға береді. Тапсырмалар сипатталып, бағаланғаннан кейін, тұтынушы құжаттаманы қарап, жұмыс бастауға келісім береді. Жобаның табысы үшін тұтынушы мен бағдарламалау тобы бір алаңда ойнауы өте маңызды: тұтынушы бюджет шеңберінде шын мәнінде қажет функционалдықты таңдайды, ал бағдарламашылар тұтынушының талаптарын өз мүмкіндіктерімен сәйкес келтіреді.
  • Итерация жоспары: Әр екі апта сайын жүргізіледі, кейде жиі немесе сирек кездеседі. Тұтынушы келесі итерация үшін функционалды анықтау және өнім талаптарына өзгерістер енгізу үшін қатысады.

3. Кіші шығарымдар

XP-де шығарымдар жиі, бірақ шектелген функционалдықпен жүзеге асырылады. Бұл тәсіл жүйенің жұмыс қабілетін тексеруді және ұстауды жеңілдетеді, сонымен қатар әр итерацияда тұтынушыға бизнес-құнды функционалдылықты ұсынады.

4. Тұтынушы тестері

Тұтынушы өнімнің функционалдылығын тексеру үшін автоматтандырылған қабылдау тестілерін белгілейді. Топ осы тестілерді жазып, кодты тестілеуге пайдаланады.

5. Коллективті кодтың иесі

XP-де кез келген әзірлеуші кодтың кез келген бөлігін өзгерте алады, өйткені код оның авторына тиесілі емес, бүкіл командаға тиесілі.

6. Үздіксіз интеграция

Жаңа код бөліктері жүйеге дереу енгізіледі — XP командалары әр 2 – 3 сағат сайын немесе одан жиі жаңа нұсқаны шығарады. Бұл практика соңғы өзгерістердің жүйеге әсерін дереу көруге мүмкіндік береді. Егер кодтың жаңа бөлігі бірдеңені бұзса, қателікті анықтау және түзету әлдеқайда оңай.

7. Кодтау стандарттары

Жалпы код иелігі болғандықтан, стандарттарды қабылдау кодты бір кәсіби маман жазғандай етіп көрсету үшін өте маңызды. Командалар өз стандарттарын әзірлеуі немесе бар стандарттарды қабылдауы мүмкін.

8. Жүйе метафорасы

Жүйе метафорасы команда ішінде ортақ көрініс жасау үшін таныс нәрсемен салыстырма жасайды. Әдетте, архитектураны дамытатын және жүйені тұтастай көретін адам метафораны ойлап табады.

9. Ұзақ мерзімді қарқын

XP командалары максималды өнімділікпен, тұрақты қарқынмен жұмыс істейді. Экстремалды бағдарламалау қосымша жұмыс жасаудан тартынуға және аптасына 40 сағаттық жұмыс уақытын ұсынуға баса назар аударады.

10. Тест-бағдарланған даму (TDD)

XP-дегі ең қиын тәжірибелердің бірі. Бағдарламашылар код жазбас бұрын тестілер жазып алады. Бұл тәсіл әр функционалдылықтың толықтай тестілермен қамтылуын қамтамасыз етеді. Әзірлеушілер кодты com­mit­ment жасағанда, бірлік тестілері дереу іске қосылады және барлық тестілер сәтті өтуі тиіс, команда дұрыс бағытта жүретінін қамтамасыз етеді.

11. Жұппен бағдарламалау

Екі әзірлеушінің бір компьютерде бір функционалдылық туралы жұмыс істейтінін көз алдыңызға елестетіңіз. Бұл тәжірибе — XP-дегі ең даулы тәжірибе. Екі бас бір басқа қарағанда жақсы” деген сөз оның мәнін жақсы жеткізеді. Екі шешімнің арасынан ең жақсысы таңдалған кезде, код дереу оңтайланады, ал қателер бұзылғанға дейін ұсталынады, нәтижесінде екі әзірлеушіге түсінікті таза код пайда болады.

12. Қарапайым дизайн

XP-дегі қарапайым дизайн дегеніміз — тек қазіргі уақытта қажетті нәрсені жасау, болашақ функционалдылықты болжауға тырыспау. Қарапайым дизайн мен үздіксіз рефакторинг синергиялық әсер береді — код қарапайым болғанда, оны оңтайландыру жеңілдейді.

13. Рефакторинг

Рефакторинг — жүйенің дизайнын жаңа талаптарға сай келтірудің үздіксіз процесі. Ол кодтың қайталанған жерлерін жоюды, біртектілікті арттыруды және байланыстылықты төмендетуді қамтиды. XP тұрақты рефакторингті талап етеді, сондықтан код дизайны әрдайым қарапайым болып қызмет етеді.

XP-тің артықшылықтары мен кемшіліктері

XP дауыс тудырады және оны іске асыра алмағандар тарапынан жиі сынға жақсылады. Алайда команда XP тәжірибесінің кемінде біреуін толық пайдалана алғанда оның артықшылықтары анық көрінеді.

XP-ге ұмтылудың артықшылықтарына мыналар жатады:

  • Тұтынушының қанағаттанушылығы: Тұтынушылар қажетті өнімді алады, тіпті олар бастапқыда нақты көрінісі болмаса да.
  • Икемділік: Команда қарапайым код дизайны, жиі жоспарлау және шығарымдар арқасында кодқа жылдам өзгерістер енгізеді және жаңа функционалдық қосады.
  • Сенімділік: Код тұрақты тексерулер мен үздіксіз интеграция арқасында әрдайым жұмыс істейді.
  • Ұстау: Команда кодты оңай ұстап тұра алады, себебі ол бір стандартқа сәйкес жазылған және үнемі рефакторингтен өтеді.
  • Өнімділік: Жұппен программалаудың, қосымша жұмыс жоқтығы мен тұтынушының қатысуы арқасында жылдам дамыту қарқыны.
  • Сапалы код
  • Рискіні төмендету: Дамыту тәуекелдері теңдестірілген жауапкершілік, жобаның команда мүшелерінің кетуі мен келуінен қауіпсіздігін қамтамасыз етеді.
  • Шығын тиімділігі: Дамыту шығындары төмен, себебі команда кодқа, құжаттама мен кездесулерге емес, назар аударады.

Артықшылықтарына қарамастан, XP әрқашан жұмыс істемейді және бірнеше кемшіліктері бар:

  • Тұтынушының қатысуы: Сәттілік тұтынушының қатысуына байланысты, бұл бәріне қол жеткізу қиынға соғады.
  • Bелгісіз уақыт кестелері: Жоба уақыт шығындарын болжау қиын, өйткені бастапқыда толық талаптар тізімі белгісіз.
  • Мамандығының деңгейіне тәуелділік: XP бағдарламашының кәсібилігіне күшті тәуелді, ең жақсы нәтижелерді жоғарғы деңгейдегі мамандар мен жұмыс істейді.
  • Басқарудың қарсылығы: Басқару жиі жұппен бағдарламалауға қарсы шығады, екі бағдарламашыға бір ғана адамның қажет екендігіне сұрақ қояды.
  • Шығын: Бағдарламашылармен жиі кездесулер тұтынушылар үшін қымбат болуы мүмкін.
  • Мәдени өзгерістер: XP-ні енгізу елеулі мәдени өзгерістерді талап етеді.
  • Құрылымның жетіспеушілігі: XP-нің құрылымының және құжаттамасының жетіспеушілігі үлкен жобалар үшін жарамсыз етеді.
  • Функционалды талаптар: Икемді әдістемелерге пайдаланушы оқиғалары ретінде функционалды талаптарды сипаттау қиын.

XP принциптері

Кент Бек өз бірінші кітабында XP-нің мынадай принциптерін анықтады: қарапайымдылық, коммуникация, кері байланыс және батылдық. Кейінгі басылымда ол бесінші принцип — құрметті қосты.

1. Қарапайымдылық

XP-дің дамуы қазіргі функционалдық қажеттілікті қанағаттандыратын ең қарапайым шешімнен басталады. Команда мүшелері тек қазір істеу керек нәрсесін ғана қарастырады, болашақта қажет болуы мүмкін функционалдылықты қосуға тырыспайды.

2. Коммуникация

XP-дегі коммуникация құжаттамасы арқылы емес, тікелей жүреді. Команда мүшелері бір-бірімен және тұтынушымен белсенді түрде қарым-қатынас жасайды.

3. Кері байланыс

XP-дегі кері байланыс үш жолмен жүзеге асырылады:
  1. Жүйе кері байланысы: Үздіксіз модульді тестілеу арқылы.
  2. Тұтынушының кері байланысы: Тұтынушы команда құрамында болып, қабылдау тестілерін жазуға қатысады.
  3. Команданың кері байланысы: Жоспарлау барысында, даму уақытын бағалау кезінде.

4. Батылдық

Кейбір XP тәжірибелері соншалықты дәстүрлі емес, олар батылдық пен үнемі өзін-өзі бақылауды талап етеді.

5. Құрмет

XP-дегі құрмет командаға құрмет көрсету және өзін-өзі құрметтеуді білдіреді. Команда мүшелері компиляцияны бұзатын, модульді тестілерді немесе әріптестерінің жұмысын баяулататын өзгерістер енгізбеуі тиіс. Әрбір қатысушы кодтың және дизайнның ең жоғары сапасына ұмтылады.

XP-ні енгізу және жұмыс барысы

Кент Бек XP-ні жоба мәселелерін шешу үшін енгізуді ұсынады. Команда ең шұғыл мәселені таңдап, оны XP тәжірибелерінің бірі арқылы шешеді. Содан кейін олар келесі мәселені шешу үшін басқа тәжірибені қолданады. Бұл тәсіл мәселелер XP-ні қабылдауға ынталандырарлық етеді, команда әдістеменің барлық құралдарын біртіндеп меңгереді.

XP-ні қолда бар жобаға енгізу үшін, келесі бағыттардағы тәжірибелерді біртіндеп қабылдаңыз:

  • Тестілеу: Команда жаңа код жазар алдында тесттер жасайды және ескі кодты біртіндеп рефакторингтен өткізеді.
  • Дизайн: Команда ескі кодты үздіксіз рефакторингтен өткізеді, әдетте, жаңа функционалдылықты қосар алдында.
  • Жоспарлау: Команда тұтынушыға жақын өзара әрекеттесуі тиіс.
  • Басқару: Менеджерлер барлық команда мүшелерінің жаңа ережелерді ұстануын қамтамасыз етеді.
  • Даму: Жұппен бағдарламалауға арналған жұмыс станцияларын ұйымдасуды бастаңыз және жұптарға уақыттың көп бөлігінде бағдарламалауды ынталандырыңыз.

XP пайдалану арқылы жұмыс барысының мысалы

XP-ні кім қолданады

2016 жылғы Ver­sionOne сауалнамасына сәйкес, тек 1% икемді компаниялар XP-ны таза күйінде қолданады. Тағы 10% Scrum мен XP-ның гибридін пайдаланады.
XP ең көп таралған әдістеме болмаса да, оның тәжірибелері икемді әдістемелерді қолданатын көптеген компанияларда пайдаланылады. Мысалы, Piv­otal Soft­ware, Inc. өзінің табысын XP-ге жатқызады.

Piv­otal Soft­ware, Inc.

Piv­otal Soft­ware, Inc. үлкен деректер негізінде бизнес аналитикасын әзірлеп, консультациялық қызметтер ұсынады. Олардың өнімдерін Ford, Mer­cedes, BMW, GAP, Humana, ірі банктер, мемлекеттік органдар және сақтандыру компаниялары сияқты корпорациялар пайдаланады.

Piv­otal икемді әдістемелерді қазіргі даму үшін маңызды деп насихаттайды. Икемді нұсқалардың арасында олар клиенттер мен бағдарламалау командалары үшін ұтымды тәсіл болып табылатын XP-ны таңдады. Олардың жұмыс күні стенд-ап кездесулермен басталып, PM-де аяқталады — қосымша жұмыс жоқ. Piv­otal жоспарлау ойындарын, жұппен бағдарламалауды, тұрақты тестілеуді, үздіксіз интеграцияны және басқа XP тәжірибелерін пайдалануда.

XP-ні түсіну үшін не оқу керек

  1. Экстремалды бағдарламаудын түсіндірмесі”, Экстремалдық бағдарламалауды жоспарлау”, Тест-бағдарланған даму” Кент Бек: XP-ның жасаушысының осы кітаптары әдістеменің терең түсінігін және оның артықшылықтарын береді.
  2. Рефакторинг: Существующий кодтың дизайнын жақсарту” Мартин Фаулер: XP-нің авторларының бірі рефакторинг принциптерін және әдістерін түсіндіретін кітап.
  3. Экстремалды бағдарламалау қолданған: Ұт ақшаға” Кен Ауэр мен Рой Миллер: XP практикасына арналған практикалық нұсқаулық.

XP-ні командаларда енгізу құралдары

Red­mine

Тапсырмаларды басқару құралы, бірнеше жобаларды қолдау, икемді тапсырма басқару, Гантт диаграммалары, уақытты бақылау, құжаттама басқару және электронды пошта арқылы тапсырма жасау сияқты мүмкіндіктері бар тегін, ашық кодты тасымалдаушы.

Base­camp


Жұптық жобалық жұмысқа арналған қарапайым, қол жетімді сервис, тапсырма менеджері, хабарландыру тақталары, кіріктірілген чат, файл сақтау орны және күнтізбе бар.

Jira


Икемді жобалар әзірлеушілері үшін арналған, қателік трекері мен жобаларды басқару құралы біріктірілген күшті сервис, көптеген функциялармен және синхронизация мүмкіндіктерімен.

Work­sec­tion


Жобалық жұмыс үшін қауіпсіз қызмет, тапсырмаларды бекіту, процестерді бақылау, хат алмасуды бақылау, сүзгілерді даярлау, уақыт пен қаржыны бақылау және файлдарды басқару.

Қорытынды

Экстремалды бағдарламалау — жоғары сапалы, функционалды код жасауға бағытталған икемді әдістеме. Оның мақсаты — жобалардағы белгісіздікті азайту және өнімнің өзгеріп отырған талаптарына икемді жауап беру.

XP бағдарламалық жасақтаманың әзірленуіне арналған және басқа бизнеске бейімделмейді.
Ол 13 тәжірибесімен іске асырылуы ең қиын әдістемелердің бірі болып табылады. Алайда, оның тәжірибелері икемді жобаларда кеңінен пайдаланылады, олардың тиімділігін дәлелдейді.

Авторлар жобалық мәселелерді шешу барысында XP тәжірибелерін біртіндеп меңгеруге кеңес береді. Егер сіз артықшылықтарын көрсеңіз, сол жолда жалғастырыңыз. XP-ні барлық нәрсеге немесе еш нәрсеге міндетті түрде енгізу міндетті емес. Нақтылы жоба тобының қажеттіліктеріне бейімделу үшін икемді әдістемелері қолдану керек.

esc
Бөлісіңіз
или
ПМ мектеп
Неге Worksection уақыт трекері жобаның ресурстарын бақылау үшін ең жақсы таңдау Сағаттар есте сақтаудан жазылады және жиі кешігулермен. Уақыт парақтары тапсырмалармен байланыссыз, сондықтан есептерді...
2 Мамыр 2025   •   7 min read
ПМ мектеп
Чаттар мен тақталар бойында шашырап жатқан тапсырмаларды бақылау жобаның орындалуын қиындатады. Басшылық командаға тапсырмалардың қазіргі статусын білу үшін синхрондауға көп уақыт жұмсауға тура келеді...
1 Мамыр 2025   •   7 min read
ПМ мектеп
Жобаның уақытша шеңберін түсінбеу, үнемі кешіктіру, мердігерлермен процестерді үйлестіруде қиындықтар. Бюджет өсуде, ал нәтиже үнемі кейінге шегеріледі. Бұл процестерді үйлестіру мен жоспарлауға арналған...
30 Сәуір 2025   •   4 min read
Қазір бастаңыз
Нақты электрондық поштаңызды енгізіңіз 🙂