Քենթ Բեք - Ծայրահեղ ծրագրավորում: Փորձարկման վրա հիմնված զարգացում

Ժանրը՝ ,

Սերիա:
Տարիքային սահմանափակումներ: +
Լեզու:
Բնօրինակ լեզու.
Թարգմանիչ (ներ):
Հրատարակիչ:
Հրատարակման քաղաք.Սանկտ Պետերբուրգ
Հրատարակման տարի.
ISBN: 978-5-496-02570-6 Չափը: 382 Կբ



Հեղինակային իրավունքի սեփականատերեր!

Աշխատանքի ներկայացված հատվածը տեղադրվել է օրինական բովանդակության դիստրիբյուտոր «Լիտեր» ՍՊԸ-ի հետ համաձայնությամբ (բնօրինակ տեքստի 20%-ից ոչ ավել): Եթե ​​կարծում եք, որ նյութի տեղադրումը խախտում է ինչ-որ մեկի իրավունքները, ապա.

Ընթերցողներ։

Վճարե՞լ եք, բայց չգիտեք, թե ինչ անել հետո:



Ուշադրություն. Դուք ներբեռնում եք օրենքով և հեղինակային իրավունքի իրավատիրոջ կողմից թույլատրված հատված (տեքստի 20%-ից ոչ ավելի):
Վերանայելուց հետո ձեզ կառաջարկվի գնալ հեղինակային իրավունքի սեփականատիրոջ կայք և գնել աշխատանքի ամբողջական տարբերակը:


Գրքի նկարագրություն

Հայտնի բեսթսելերի վերադարձը. Նրբագեղ, ճկուն և հասկանալի կոդ, որը հեշտ է փոփոխվում, որը ճիշտ է աշխատում և որը տհաճ անակնկալներ չի մատուցում իր ստեղծողներին։ Սա իսկապես հնարավո՞ր է: Ձեր նպատակին հասնելու համար փորձեք փորձարկել ձեր ծրագիրը նախքան այն գրելը: Հենց այս պարադոքսալ գաղափարն է ընկած TDD (Test-Driven-Development) մեթոդաբանության հիմքում: Անհեթեթություն? Մի շտապեք հապճեպ եզրակացություններ անել։ Հաշվի առնելով TDD-ի օգտագործումը իրական ծրագրային կոդի մշակման օրինակով, հեղինակը ցույց է տալիս այս տեխնիկայի պարզությունն ու հզորությունը: Գիրքը պարունակում է երկու ծրագրային նախագիծ, որոնք ամբողջությամբ և ամբողջությամբ իրականացվել են TDD-ի միջոցով: Օրինակներին հաջորդում է TDD ոճի տեխնիկայի և TDD-ի հետ կապված օրինաչափությունների ու վերամշակումների ընդարձակ կատալոգը: Գիրքը օգտակար կլինի ցանկացած ծրագրավորողի համար, ով ցանկանում է բարձրացնել իր աշխատանքի արտադրողականությունը և հաճույք ստանալ ծրագրավորումից։

Գրքի վերջին տպավորությունը
  • SharerSharpened:
  • 16-12-2018, 02:17

Մինչ այս գիրքը կարդալը, ես փորձեցի թեստեր գրել իմ կարդացած հոդվածների վրա, բայց միայն դրանով սկսեցի լավանալ:

Երկու անգամ կարդացի։ Առաջին անգամ հենց նոր կարդացի։

ոչինչ չհասկացա։ Երկրորդ անգամ, երբ ես գիրքը կարդալիս գրեցի ծածկագիրը, և վերջապես հասկացա, թե ինչ է, և ամենակարևորը. ես զգացի իմ քայլի չափը, որով կարող եմ փոխել կոդը՝ չկորցնելով դրա նկատմամբ վերահսկողությունը: Ինձ գոհացրեց երկրորդ գլուխը, որտեղ հեղինակի հետ նա գրել էր իր միավորների թեստավորման համակարգը Python-ով, այնպիսի զգացողություն էր, կարծես դու վիրահատություն ես անում քո սեփական ուղեղի վրա (փաստորեն, հեղինակն ինքը նման համեմատություն է արել) - մեկ անզգույշ շարժում և ոչինչ չի ստացվում, պետք է շարժվել շատ փոքր քայլերով: Երրորդ գլուխը ընտրովի եմ կարդացել, միգուցե մի օր կարդամ:

Փլուզում

Այլ մեկնաբանություններ

Այս գիրքը էքստրեմալ ծրագրավորման մասին է։ Ծայրահեղ ծրագրավորումը, որը հաճախ կոչվում է «XP», արտադրության պարզեցված մեթոդաբանություն է փոքր և միջին զարգացման թիմերի համար: ծրագրային արտադրանքանհասկանալի կամ արագ փոփոխվող պահանջների պայմաններում: Այս գիրքը նախատեսված է օգնելու ձեզ որոշել, թե արդյոք XP-ը համապատասխանում է ձեր իրավիճակին…

XP շարքի մասին

Ծայրահեղ ծրագրավորումը, որը հաճախ կոչվում է XP, զարգացման կարգ է ծրագրային ապահովումև բիզնեսով զբաղվել ծրագրային արտադրանքի ստեղծման ոլորտում, որը կենտրոնացնում է երկու կողմերի (ծրագրավորողների և գործարարների) ջանքերը ընդհանուր, բավականին հասանելի նպատակների վրա։ XP թիմերը մեծ արագությամբ արտադրում են որակյալ ծրագրակազմ: Տեխնիկաները, որոնք այս գրքում նկարագրված XP կարգապահության մի մասն են, ընտրվել են, քանի որ դրանք հիմնված են մարդկային ստեղծագործության և ընդունման վրա, որ մարդը անկայուն և սխալների հակված արարած է:

XP-ն հաճախ ներկայացվում է որպես տեխնիկայի հավաքածու, սակայն XP-ն ինքնին վերջնագիծ չէ: Այս գործընթացի վերջում երկար սպասված ոսկե աստղը ստանալու համար ձեզ հարկավոր չէ ավելի ու ավելի լավ սովորել և զարգացնել XP-ը: Ընդհակառակը, XP-ն մեկնարկային գիծ է։ XP-ն հարց է տալիս. «Որքանո՞վ կարող են մեր ջանքերը նվազագույն լինել, որպեսզի կարողանանք շարունակել որակյալ ծրագրային ապահովման արտադրությունը»:

Հարցի պատասխանի սկիզբը հնչում է այսպես. եթե մենք ցանկանում ենք որակյալ ծրագրեր մշակել առանց խառնաշփոթի և խառնաշփոթի, մենք պետք է պատրաստ լինենք ամբողջությամբ և ամբողջությամբ ներդնել մեր թիմում մի քանի տեխնիկա, որոնք մենք պատրաստվում ենք օգտագործել առավելագույնը: Եթե ​​այս տեխնիկան կիսով չափ օգտագործենք, խնդիրները մնում են, և դրանք լուծելու համար անհրաժեշտ կլինի անցնել տեխնիկայի լիարժեք օգտագործմանը։ Եթե ​​սահմանափակվենք կիսաչափ չափերով, ժամանակի ընթացքում այնքան կշփոթվենք դրանց մեջ, որ չենք կարողանա հասկանալ, որ այն հիմնական բաները, որոնք ստեղծվում են ծրագրավորողների աշխատանքով, ծնվում են ծրագրավորման շնորհիվ։

Ես ասացի «սկսիր պատասխանը», քանի որ շարունակությունն իրականում գոյություն չունի։ Այս հարցը լուծելու մասին մտածել են նաև XP-ի ստեղծած և ներդրած մարդիկ։ Փորձելով օգտագործել XP, նրանք անցան շեմը և անցան անհայտության մեջ: Երբ նրանք վերադարձան, նրանք պատմեցին իրենց պատմությունը։ Նրանց մտքերը ճանապարհի երկայնքով տեղադրված ցուցանակներ են՝ «Այստեղ ապրում են վիշապներ», «15 կմ անց. լավ տեսարան«Այս տարածքը վտանգավոր է անձրևի ժամանակ»:

Կներեք, բայց ժամանակն է, որ ես գնամ ծրագրային:

Առաջաբան

Ծայրահեղ ծրագրավորում (

Էքստրեմալ ծրագրավորում

XP) կոդավորումը սահմանում է որպես հիմնական և հիմնարար գործունեություն ծրագրային նախագծի վրա աշխատելիս: Դա կարող է սխալ լինել:

Կարծում եմ՝ արժե հիշել ծրագրային ապահովման մշակման իմ սեփական փորձը։ Ես աշխատում եմ մի միջավայրում, որտեղ մշակվող արտադրանքը մշտապես գտնվում է աշխատանքային վիճակ, և միևնույն ժամանակ անընդհատ փոփոխվում է։ Հաջորդ գործունակ տարբերակի թողարկման ժամանակացույցը հրեշավոր նեղ է, և միևնույն ժամանակ, այս ամենի վրա կախված է հսկայական տեխնիկական ռիսկ: Նման միջավայրում զինակցին շտկելու կարողությունը արվեստ է, առանց որի մարդը չի կարող գոյատևել: Տեղեկատվության փոխանակումը ինչպես թիմի ներսում, այնպես էլ մի քանի թիմերի միջև, որոնք հաճախ աշխարհագրորեն առանձնացված են, կատարվում է ծածկագրի միջոցով: Մենք կարդում ենք կոդը, որպեսզի հասկանանք համակարգի նոր կամ փոփոխված ծրագրային միջերեսների կառուցվածքը: Կյանքի ցիկլև վարքագիծ բարդ օբյեկտներսահմանվում են թեստային դեպքերի միջոցով, այսինքն՝ կրկին օգտագործելով կոդը։ Խնդրի մասին հաշվետվությունները ուղեկցվում են խնդիրը ցույց տվող թեստային դեպքերով, դրա համար կրկին օգտագործվում է ծածկագիրը: Վերջապես, մենք մշտապես զբաղված ենք գոյություն ունեցող ծածկագրի բարելավմամբ՝ այն դարձնելով ավելի արդյունավետ, ճկուն և ավելի հասկանալի։ Ակնհայտ է, որ նման պայմաններում ծրագրային արտադրանքի մշակումը գրեթե ամբողջությամբ հիմնված է կոդավորման վրա, բայց միևնույն ժամանակ մեզ հաջողվում է ժամանակին հաջողությամբ ավարտել նախագծերը, այդպիսով. այս մոտեցումըբավականին կենսունակ:

Մի կարծեք, որ այն ամենը, ինչ ձեզ անհրաժեշտ է ծրագրային ապահովման նախագիծը հաջողությամբ իրականացնելու համար, անխոհեմ դաժան ծրագրավորումն է: Ծրագրային ապահովման մշակումը շատ դժվար է, իսկ բարձրորակ ծրագրային ապահովում մշակելը և գործը ժամանակին կատարելն ավելի դժվար է: Որպեսզի իմ նկարագրած մոտեցումն աշխատի, դուք պետք է հետևողականորեն կիրառեք կարևոր լրացուցիչ կանոններ և տեխնիկա: Այստեղից է, որ Քենթ Բեքը սկսում է իր միտքը գրգռող գիրքը XP-ի մասին:

Քենթը Tektronix-ի այն ղեկավարներից էր, ովքեր գիտակցեցին զուգակցված զույգ ծրագրավորման հսկայական ներուժը Smalltalk-ում բարդ ինժեներական հավելվածներ մշակելու համար: Բարդ Կանինգհեմի (Ward Cunningham) հետ միասին Քենթը դարձավ օրինաչափություններից ծրագրավորման տեխնիկայի մշակման ոգեշնչում (այն նաև կոչվում է ծրագրավորում՝ օգտագործելով օրինաչափությունները.

Ես համագործակցեցի Քենթի հետ և օգտագործեցի XP դրվագները JUnit կոչվող փոքր, բայց տխրահռչակ նախագծի վրա:

Ներածություն

Այս գիրքը էքստրեմալ ծրագրավորման մասին է (

Էքստրեմալ ծրագրավորում

XP): Extreme Programming-ը պարզեցված արտադրության մեթոդաբանություն է փոքր և միջին մասնագետների թիմերի համար, որոնք ներգրավված են ծրագրային ապահովման մշակման մեջ անհասկանալի կամ արագ փոփոխվող պահանջների միջավայրում: Այս գիրքը նախատեսված է օգնելու ձեզ որոշել, թե արդյոք XP-ը համապատասխանում է ձեր իրավիճակին:

Շատերի համար XP-ն աշխատանքի կազմակերպման մեթոդների մի շարք է թվում, որոնք միանգամայն ընդունելի են և արդարացված ողջախոհության տեսանկյունից։ Այդ դեպքում ինչու են XP ծրագրավորումը կոչվում ծայրահեղ: Բանն այն է, որ XP-ն ծրագրավորման շատ ընդհանուր ընդունված և լայնորեն կիրառվող սկզբունքներ է հասցնում ծայրահեղ մակարդակների:

Եթե ​​կոդի վերանայումը լավ է, ապա մենք անընդհատ կվերանայենք կոդը (ծրագրավորումը զույգերով);

Եթե ​​թեստավորումը լավ է, ծրագրի յուրաքանչյուր մասնակից անընդհատ կփորձարկի ծրագրի կոդը (միավորի թեստավորում), նույնիսկ հաճախորդները ( ֆունկցիոնալ փորձարկում);

Եթե ​​դիզայնը լավն է, ապա դիզայնը պետք է դառնա ծրագրի մասնակիցներից յուրաքանչյուրի ամենօրյա աշխատանքի անբաժանելի մասը (օրենսգրքի վերանայում);

Ծայրահեղ ծրագրավորում

Նվիրվում է հորս և նաև շնորհակալություն Սինդի Անդրեսին՝ իմ կնոջն ու գործընկերոջը, որ ինձանից պահանջեց անտեսել իրեն և գրել: Շնորհակալություն Բեթանիին, Լինքոլնին, Ֆորեսթին, որ ինձ մաքուր պահեցին և թույլ տվեցին գրել:

XP շարքի մասին

Ծայրահեղ ծրագրավորումը, որը հաճախ կոչվում է XP, ծրագրային ապահովման ճարտարագիտության և ծրագրային ապահովման բիզնես կարգապահություն է, որը կենտրոնացնում է ինչպես ծրագրավորողների, այնպես էլ գործարար մարդկանց ընդհանուր, հասանելի նպատակների վրա: XP թիմերը մեծ արագությամբ արտադրում են որակյալ ծրագրակազմ: Տեխնիկաները, որոնք այս գրքում նկարագրված XP կարգապահության մի մասն են, ընտրվել են, քանի որ դրանք հիմնված են մարդկային ստեղծագործության և ընդունման վրա, որ մարդը անկայուն և սխալների հակված արարած է:

XP-ն հաճախ ներկայացվում է որպես տեխնիկայի հավաքածու, սակայն XP-ն ինքնին վերջնագիծ չէ: Այս գործընթացի վերջում երկար սպասված ոսկե աստղը ստանալու համար ձեզ հարկավոր չէ ավելի ու ավելի լավ սովորել և զարգացնել XP-ը: Ընդհակառակը, XP-ն մեկնարկային գիծ է։ XP-ն հարց է տալիս. «Որքանո՞վ կարող են մեր ջանքերը նվազագույն լինել, որպեսզի կարողանանք շարունակել որակյալ ծրագրային ապահովման արտադրությունը»:

Հարցի պատասխանի սկիզբը հնչում է այսպես. եթե մենք ցանկանում ենք որակյալ ծրագրեր մշակել առանց խառնաշփոթի և խառնաշփոթի, մենք պետք է պատրաստ լինենք ամբողջությամբ և ամբողջությամբ ներդնել մեր թիմում մի քանի տեխնիկա, որոնք մենք պատրաստվում ենք օգտագործել առավելագույնը: Եթե ​​այս տեխնիկան կիսով չափ օգտագործենք, խնդիրները մնում են, և դրանք լուծելու համար անհրաժեշտ կլինի անցնել տեխնիկայի լիարժեք օգտագործմանը։ Եթե ​​սահմանափակվենք կիսաչափ չափերով, ժամանակի ընթացքում այնքան կշփոթվենք դրանց մեջ, որ չենք կարողանա հասկանալ, որ այն հիմնական բաները, որոնք ստեղծվում են ծրագրավորողների աշխատանքով, ծնվում են ծրագրավորման շնորհիվ։

Ես ասացի «սկսիր պատասխանը», քանի որ շարունակությունն իրականում գոյություն չունի։ Այս հարցը լուծելու մասին մտածել են նաև XP-ի ստեղծած և ներդրած մարդիկ։ Փորձելով օգտագործել XP, նրանք անցան շեմը և անցան անհայտության մեջ: Երբ նրանք վերադարձան, նրանք պատմեցին իրենց պատմությունը։ Նրանց մտքերը ճանապարհի երկայնքով տեղադրված ցուցանակներ են՝ «Այստեղ ապրում են վիշապներ», «15 կմ-ից լավ տեսարան է բացվում», «Այս տարածքը վտանգավոր է անձրեւի տակ»։

Կներեք, բայց ժամանակն է, որ ես գնամ ծրագրային:

Քենթ Բեք, սերիաների խորհրդատու

Առաջաբան

Ծայրահեղ ծրագրավորում ( Էքստրեմալ ծրագրավորում, XP) կոդավորումը սահմանում է որպես հիմնական և հիմնարար գործունեություն ծրագրային նախագծի վրա աշխատելիս: Դա կարող է սխալ լինել:

Կարծում եմ՝ արժե հիշել ծրագրային ապահովման մշակման իմ սեփական փորձը։ Ես աշխատում եմ մի միջավայրում, որտեղ մշակվող ապրանքը մշտապես գտնվում է աշխատանքային վիճակում, և դրա հետ մեկտեղ անընդհատ փոփոխություններ են կատարվում։ Հաջորդ գործունակ տարբերակի թողարկման ժամանակացույցը հրեշավոր նեղ է, և միևնույն ժամանակ, այս ամենի վրա կախված է հսկայական տեխնիկական ռիսկ: Նման միջավայրում զինակցին շտկելու կարողությունը արվեստ է, առանց որի մարդը չի կարող գոյատևել: Տեղեկատվության փոխանակումը ինչպես թիմի ներսում, այնպես էլ մի քանի թիմերի միջև, որոնք հաճախ աշխարհագրորեն առանձնացված են, կատարվում է ծածկագրի միջոցով: Մենք կարդում ենք կոդը, որպեսզի հասկանանք համակարգի նոր կամ փոփոխված ծրագրային միջերեսների կառուցվածքը: Բարդ օբյեկտների կյանքի ցիկլը և վարքագիծը սահմանվում են թեստային դեպքերի միջոցով, այսինքն՝ կրկին օգտագործելով ծածկագիրը։ Խնդրի մասին հաշվետվությունները ուղեկցվում են խնդիրը ցույց տվող թեստային դեպքերով, դրա համար կրկին օգտագործվում է ծածկագիրը: Վերջապես, մենք մշտապես զբաղված ենք գոյություն ունեցող ծածկագրի բարելավմամբ՝ այն դարձնելով ավելի արդյունավետ, ճկուն և ավելի հասկանալի։ Ակնհայտ է, որ նման պայմաններում ծրագրային ապահովման մշակումը գրեթե ամբողջությամբ հիմնված է կոդավորման վրա, բայց միևնույն ժամանակ մեզ հաջողվում է ժամանակին հաջողությամբ ավարտել նախագծերը, ուստի այս մոտեցումը բավականին կենսունակ է։

Մի կարծեք, որ այն ամենը, ինչ ձեզ անհրաժեշտ է ծրագրային ապահովման նախագիծը հաջողությամբ իրականացնելու համար, անխոհեմ դաժան ծրագրավորումն է: Ծրագրային ապահովման մշակումը շատ դժվար է, իսկ բարձրորակ ծրագրային ապահովում մշակելը և գործը ժամանակին կատարելն ավելի դժվար է: Որպեսզի իմ նկարագրած մոտեցումն աշխատի, դուք պետք է հետևողականորեն կիրառեք կարևոր լրացուցիչ կանոններ և տեխնիկա: Այստեղից է, որ Քենթ Բեքը սկսում է իր միտքը գրգռող գիրքը XP-ի մասին:

Քենթը Tektronix-ի այն ղեկավարներից էր, ովքեր գիտակցեցին զուգակցված զույգ ծրագրավորման հսկայական ներուժը Smalltalk-ում բարդ ինժեներական հավելվածներ մշակելու համար: Բարդ Կանինգհեմի (Ward Cunningham) հետ միասին Քենթը դարձավ օրինաչափություններից ծրագրավորման տեխնիկայի մշակման ոգեշնչում (այն նաև կոչվում է ծրագրավորում՝ օգտագործելով օրինաչափությունները. նախշերի ծրագրավորումինչը մեծ ազդեցություն է ունեցել իմ սեփական կարիերայի վրա: XP-ն նկարագրում է ծրագրային ապահովման մշակման մոտեցումը, որը միավորում է բազմաթիվ հաջողակ մշակողների կողմից օգտագործվող տեխնիկան, ովքեր ուսումնասիրել են բազմաթիվ գրականություն ծրագրավորողների աշխատանքի կազմակերպման վերաբերյալ և փորձել են ծրագրային արտադրանքի մշակման բազմաթիվ մեթոդներ և ընթացակարգեր: Ինչպես օրինակով ծրագրավորումը, XP-ն ապահովում է լավագույն փորձի մի շարք, ինչպիսիք են միավորի փորձարկումը, զույգերով ծրագրավորումը և կոդերի վերագրումը: XP-ում այս տեխնիկան համակցված են այնպես, որ լրացնեն և հաճախ վերահսկեն միմյանց: Այս գրքի հիմնական նպատակն է խոսել տարբեր տեխնիկաների փոխազդեցության և համատեղ օգտագործման մասին: Ծրագրավորման բոլոր տեխնիկան ունի մեկ նպատակ՝ տվյալ ժամկետում ստեղծել տվյալ ֆունկցիոնալությամբ ծրագրային արտադրանք: OTI-ի շատ հաջող Just In Time Software գործընթացը XP-ի մեջ չէ մաքուր ձևայնուամենայնիվ, երկու մոտեցումների միջև շատ ընդհանրություններ կան:

Ես համագործակցեցի Քենթի հետ և օգտագործեցի XP դրվագները JUnit կոչվող փոքր, բայց տխրահռչակ նախագծի վրա: Ծրագրային ապահովման մշակման վերաբերյալ նրա հայացքներն ու մոտեցումները ինձ միշտ ստիպել են մտածել, թե ինչպես եմ ես անձամբ վարժվել ծրագրային նախագծի վրա աշխատելուն: Անկասկած, XP-ն մարտահրավեր է նետում ծրագրավորման ոլորտում օգտագործվող ավանդական մոտեցումներից շատերին: Այս գիրքը կարդալուց հետո կարող եք ինքներդ որոշել՝ ձեր աշխատանքում անհրաժեշտ է օգտագործել XP, թե ոչ:

Ծայրահեղ ծրագրավորում

Նվիրվում է հորս և նաև շնորհակալություն Սինդի Անդրեսին՝ իմ կնոջն ու գործընկերոջը, որ ինձանից պահանջեց անտեսել իրեն և գրել: Շնորհակալություն Բեթանիին, Լինքոլնին, Ֆորեսթին, որ ինձ մաքուր պահեցին և թույլ տվեցին գրել:

XP շարքի մասին

Ծայրահեղ ծրագրավորումը, որը հաճախ կոչվում է XP, ծրագրային ապահովման ճարտարագիտության և ծրագրային ապահովման բիզնես կարգապահություն է, որը կենտրոնացնում է ինչպես ծրագրավորողների, այնպես էլ գործարար մարդկանց ընդհանուր, հասանելի նպատակների վրա: XP թիմերը մեծ արագությամբ արտադրում են որակյալ ծրագրակազմ: Տեխնիկաները, որոնք այս գրքում նկարագրված XP կարգապահության մի մասն են, ընտրվել են, քանի որ դրանք հիմնված են մարդկային ստեղծագործության և ընդունման վրա, որ մարդը անկայուն և սխալների հակված արարած է:

XP-ն հաճախ ներկայացվում է որպես տեխնիկայի հավաքածու, սակայն XP-ն ինքնին վերջնագիծ չէ: Այս գործընթացի վերջում երկար սպասված ոսկե աստղը ստանալու համար ձեզ հարկավոր չէ ավելի ու ավելի լավ սովորել և զարգացնել XP-ը: Ընդհակառակը, XP-ն մեկնարկային գիծ է։ XP-ն հարց է տալիս. «Որքանո՞վ կարող են մեր ջանքերը նվազագույն լինել, որպեսզի կարողանանք շարունակել որակյալ ծրագրային ապահովման արտադրությունը»:

Հարցի պատասխանի սկիզբը հնչում է այսպես. եթե մենք ցանկանում ենք որակյալ ծրագրեր մշակել առանց խառնաշփոթի և խառնաշփոթի, մենք պետք է պատրաստ լինենք ամբողջությամբ և ամբողջությամբ ներդնել մեր թիմում մի քանի տեխնիկա, որոնք մենք պատրաստվում ենք օգտագործել առավելագույնը: Եթե ​​այս տեխնիկան կիսով չափ օգտագործենք, խնդիրները մնում են, և դրանք լուծելու համար անհրաժեշտ կլինի անցնել տեխնիկայի լիարժեք օգտագործմանը։ Եթե ​​սահմանափակվենք կիսաչափ չափերով, ժամանակի ընթացքում այնքան կշփոթվենք դրանց մեջ, որ չենք կարողանա հասկանալ, որ այն հիմնական բաները, որոնք ստեղծվում են ծրագրավորողների աշխատանքով, ծնվում են ծրագրավորման շնորհիվ։

Ես ասացի «սկսիր պատասխանը», քանի որ շարունակությունն իրականում գոյություն չունի։ Այս հարցը լուծելու մասին մտածել են նաև XP-ի ստեղծած և ներդրած մարդիկ։ Փորձելով օգտագործել XP, նրանք անցան շեմը և անցան անհայտության մեջ: Երբ նրանք վերադարձան, նրանք պատմեցին իրենց պատմությունը։ Նրանց մտքերը ճանապարհի երկայնքով տեղադրված ցուցանակներ են՝ «Այստեղ ապրում են վիշապներ», «15 կմ-ից լավ տեսարան է բացվում», «Այս տարածքը վտանգավոր է անձրեւի տակ»։

Կներեք, բայց ժամանակն է, որ ես գնամ ծրագրային:

Քենթ Բեք, սերիաների խորհրդատու

Առաջաբան

Ծայրահեղ ծրագրավորում ( Էքստրեմալ ծրագրավորում, XP) կոդավորումը սահմանում է որպես հիմնական և հիմնարար գործունեություն ծրագրային նախագծի վրա աշխատելիս: Դա կարող է սխալ լինել:

Կարծում եմ՝ արժե հիշել ծրագրային ապահովման մշակման իմ սեփական փորձը։ Ես աշխատում եմ մի միջավայրում, որտեղ մշակվող ապրանքը մշտապես գտնվում է աշխատանքային վիճակում, և դրա հետ մեկտեղ անընդհատ փոփոխություններ են կատարվում։ Հաջորդ գործունակ տարբերակի թողարկման ժամանակացույցը հրեշավոր նեղ է, և միևնույն ժամանակ, այս ամենի վրա կախված է հսկայական տեխնիկական ռիսկ: Նման միջավայրում զինակցին շտկելու կարողությունը արվեստ է, առանց որի մարդը չի կարող գոյատևել: Տեղեկատվության փոխանակումը ինչպես թիմի ներսում, այնպես էլ մի քանի թիմերի միջև, որոնք հաճախ աշխարհագրորեն առանձնացված են, կատարվում է ծածկագրի միջոցով: Մենք կարդում ենք կոդը, որպեսզի հասկանանք համակարգի նոր կամ փոփոխված ծրագրային միջերեսների կառուցվածքը: Բարդ օբյեկտների կյանքի ցիկլը և վարքագիծը սահմանվում են թեստային դեպքերի միջոցով, այսինքն՝ կրկին օգտագործելով ծածկագիրը։ Խնդրի մասին հաշվետվությունները ուղեկցվում են խնդիրը ցույց տվող թեստային դեպքերով, դրա համար կրկին օգտագործվում է ծածկագիրը: Վերջապես, մենք մշտապես զբաղված ենք գոյություն ունեցող ծածկագրի բարելավմամբ՝ այն դարձնելով ավելի արդյունավետ, ճկուն և ավելի հասկանալի։ Ակնհայտ է, որ նման պայմաններում ծրագրային ապահովման մշակումը գրեթե ամբողջությամբ հիմնված է կոդավորման վրա, բայց միևնույն ժամանակ մեզ հաջողվում է ժամանակին հաջողությամբ ավարտել նախագծերը, ուստի այս մոտեցումը բավականին կենսունակ է։

Մի կարծեք, որ այն ամենը, ինչ ձեզ անհրաժեշտ է ծրագրային ապահովման նախագիծը հաջողությամբ իրականացնելու համար, անխոհեմ դաժան ծրագրավորումն է: Ծրագրային ապահովման մշակումը շատ դժվար է, իսկ բարձրորակ ծրագրային ապահովում մշակելը և գործը ժամանակին կատարելն ավելի դժվար է: Որպեսզի իմ նկարագրած մոտեցումն աշխատի, դուք պետք է հետևողականորեն կիրառեք կարևոր լրացուցիչ կանոններ և տեխնիկա: Այստեղից է, որ Քենթ Բեքը սկսում է իր միտքը գրգռող գիրքը XP-ի մասին:

Քենթը Tektronix-ի այն ղեկավարներից էր, ովքեր գիտակցեցին զուգակցված զույգ ծրագրավորման հսկայական ներուժը Smalltalk-ում բարդ ինժեներական հավելվածներ մշակելու համար: Բարդ Կանինգհեմի (Ward Cunningham) հետ միասին Քենթը դարձավ օրինաչափություններից ծրագրավորման տեխնիկայի մշակման ոգեշնչում (այն նաև կոչվում է ծրագրավորում՝ օգտագործելով օրինաչափությունները. նախշերի ծրագրավորումինչը մեծ ազդեցություն է ունեցել իմ սեփական կարիերայի վրա: XP-ն նկարագրում է ծրագրային ապահովման մշակման մոտեցումը, որը միավորում է բազմաթիվ հաջողակ մշակողների կողմից օգտագործվող տեխնիկան, ովքեր ուսումնասիրել են բազմաթիվ գրականություն ծրագրավորողների աշխատանքի կազմակերպման վերաբերյալ և փորձել են ծրագրային արտադրանքի մշակման բազմաթիվ մեթոդներ և ընթացակարգեր: Ինչպես օրինակով ծրագրավորումը, XP-ն ապահովում է լավագույն փորձի մի շարք, ինչպիսիք են միավորի փորձարկումը, զույգերով ծրագրավորումը և կոդերի վերագրումը: XP-ում այս տեխնիկան համակցված են այնպես, որ լրացնեն և հաճախ վերահսկեն միմյանց: Այս գրքի հիմնական նպատակն է խոսել տարբեր տեխնիկաների փոխազդեցության և համատեղ օգտագործման մասին: Ծրագրավորման բոլոր տեխնիկան ունի մեկ նպատակ՝ տվյալ ժամկետում ստեղծել տվյալ ֆունկցիոնալությամբ ծրագրային արտադրանք: OTI-ի շատ հաջող Just In Time Software գործընթացը մաքուր XP չէ, բայց երկու մոտեցումների միջև շատ նմանություններ կան:

Ես համագործակցեցի Քենթի հետ և օգտագործեցի XP դրվագները JUnit կոչվող փոքր, բայց տխրահռչակ նախագծի վրա: Ծրագրային ապահովման մշակման վերաբերյալ նրա հայացքներն ու մոտեցումները ինձ միշտ ստիպել են մտածել, թե ինչպես եմ ես անձամբ վարժվել ծրագրային նախագծի վրա աշխատելուն: Անկասկած, XP-ն մարտահրավեր է նետում ծրագրավորման ոլորտում օգտագործվող ավանդական մոտեցումներից շատերին: Այս գիրքը կարդալուց հետո կարող եք ինքներդ որոշել՝ ձեր աշխատանքում անհրաժեշտ է օգտագործել XP, թե ոչ:

Էրիխ Գամմա

Ներածություն

Այս գիրքը էքստրեմալ ծրագրավորման մասին է ( Էքստրեմալ ծրագրավորում, XP): Extreme Programming-ը պարզեցված արտադրության մեթոդաբանություն է փոքր և միջին մասնագետների թիմերի համար, որոնք ներգրավված են ծրագրային ապահովման մշակման մեջ անհասկանալի կամ արագ փոփոխվող պահանջների միջավայրում: Այս գիրքը նախատեսված է օգնելու ձեզ որոշել, թե արդյոք XP-ը համապատասխանում է ձեր իրավիճակին:

Շատերի համար XP-ն աշխատանքի կազմակերպման մեթոդների մի շարք է թվում, որոնք միանգամայն ընդունելի են և արդարացված ողջախոհության տեսանկյունից։ Այդ դեպքում ինչու են XP ծրագրավորումը կոչվում ծայրահեղ: Բանն այն է, որ XP-ն ծրագրավորման շատ ընդհանուր ընդունված և լայնորեն կիրառվող սկզբունքներ է հասցնում ծայրահեղ մակարդակների:

Եթե ​​կոդի վերանայումը լավ է, ապա մենք անընդհատ կվերանայենք կոդը (ծրագրավորումը զույգերով);

Եթե ​​թեստավորումը լավ է, ծրագրի յուրաքանչյուր մասնակից անընդհատ կփորձարկի ծրագրի կոդը (միավորի թեստավորում), նույնիսկ հաճախորդները (ֆունկցիոնալ թեստավորում);

Եթե ​​դիզայնը լավն է, ապա դիզայնը պետք է դառնա ծրագրի մասնակիցներից յուրաքանչյուրի ամենօրյա աշխատանքի անբաժանելի մասը (օրենսգրքի վերանայում);

Եթե ​​պարզությունը լավ է, ապա մենք պետք է համակարգը հնարավորինս պարզ պահենք, որպեսզի ապահովենք պահանջվող ֆունկցիոնալության ներկայիս մակարդակը (ամենապարզ բանը, որը հավանաբար կաշխատի); եթե ճարտարապետությունը կարևոր է, ապա ծրագրի մասնակիցներից յուրաքանչյուրը մշտապես կաշխատի ճարտարապետության սահմանման և վերանայման վրա (փոխաբերություն);

Եթե ​​ինտեգրացիոն թեստավորումը կարևոր է, ապա անհրաժեշտ է հավաքել և փորձարկել մշակված համակարգը օրը մի քանի անգամ (շարունակական ինտեգրում);

Եթե ​​փոքր կրկնությունները լավ են, դուք պետք է կրկնությունները դարձնեք շատ, շատ փոքր՝ վայրկյաններ, րոպեներ, գուցե ժամեր, բայց ոչ շաբաթներ և ամիսներ, և ոչ մի դեպքում տարիներ (պլանավորման խաղ):

Երբ ես առաջին անգամ որոշեցի արտահայտել XP-ի էությունը ինքս ինձ համար, ես պատկերացրեցի մի շարք բռնակներ կառավարման վահանակի վրա: Յուրաքանչյուր բռնակ համապատասխանում էր որոշակի մեթոդի, որի մասին իր անձնական փորձԵս գիտեի, որ դա բավականին արդյունավետ է: Յուրաքանչյուր բռնակ թույլ էր տալիս օգտագործել այս կամ այն ​​տեխնիկան որոշակի չափով, 1-ից 10-ը: Ես փորձեցի բոլոր ձեռքերը դնել իրենց առավելագույն դիրքի վրա (10) և զարմացա, երբ հայտնաբերեցի, որ տեխնիկայի ողջ շրջանակը, որը ես դիտարկում էի, մնում է կայուն, կանխատեսելի և ճկուն:

XP-ն ստեղծում է խոստումների երկու հավաքածու.

XP-ն ծրագրավորողներին խոստանում է, որ յուրաքանչյուր աշխատանքային օր աշխատելու է իսկապես կարևոր խնդիրների լուծման վրա։ Նրանցից յուրաքանչյուրը երբեք մենակ չի հայտնվի: Նրանցից յուրաքանչյուրը կկարողանա ամեն ինչ անել, որպեսզի զարգացած համակարգը հաջողակ լինի։ Նրանցից յուրաքանչյուրը կկարողանա որոշում կայացնել հենց այն ոլորտում, որտեղ իրավասու է, իսկ եթե ինչ-որ ոլորտում բավականաչափ կոմպետենտ չէ, որոշումների կայացմանը չի մասնակցի։

XP-ն հաճախորդներին և մենեջերներին խոստանում է, որ նրանք առավելագույն օգուտ կքաղեն նախագծի մշակման յուրաքանչյուր շաբաթվա ընթացքում: Մի քանի շաբաթը մեկ նրանք կկարողանան առաջընթաց տեսնել դեպի իրենց նպատակները: Նրանք կկարողանան փոխել նախագծի ուղղությունը զարգացման կեսին՝ առանց լրացուցիչ արտառոց ծախսերի վախի։

Մի խոսքով, XP-ն խոստանում է նվազեցնել նախագծի ռիսկը, բարելավել բիզնեսի փոփոխություններին արձագանքելու ունակությունը, բարելավել նախագծի արտադրողականությունը և ծրագրային ապահովման մշակումն ավելի հաճելի դարձնել՝ բոլորը միևնույն ժամանակ: Չեմ կատակում, վերջ տվեք ծիծաղել։ Պարզապես կարդացեք այս գիրքը և ինքներդ կարող եք ստուգել, ​​թե արդյոք ես խենթ եմ:

Այս գիրքը

Այս գիրքը խոսում է XP տեխնիկայի հետ կապված բաների մասին՝ դրա արմատները, փիլիսոփայությունը, բոլոր տեսակի պատմություններն ու առասպելները: Այս գիրքը նախատեսված է օգնելու ձեզ տեղեկացված որոշում կայացնել ձեր սեփական նախագծում XP-ի օգտագործման վերաբերյալ: Եթե ​​այս գիրքը կարդալուց հետո որոշեք չօգտագործել XP-ն ձեր նախագծի վրա աշխատելիս, ես հիմնական նպատակը ձեռք բերված կհամարեմ այնպես, ինչպես եթե այս գիրքը կարդալուց հետո որոշեիք, որ XP-ն այն է, ինչ ձեզ անհրաժեշտ է: . Այս գրքի երկրորդ նպատակն է օգնել ձեզնից նրանց, ովքեր արդեն օգտագործում են XP: Գիրքը կարդալուց հետո նման ընթերցողները կկարողանան ավելի լավ հասկանալ այս տեխնիկան:

Այս գիրքը ճշգրիտ հրահանգներ չի տալիս այն մասին, թե ինչպես պետք է կատարվի ծայրահեղ ծրագրավորման գործընթացը: Դրանում դուք չեք տեսնի շատ օրինակներ, ալգորիթմներ կամ ծրագրավորման պատմություններ: Այս ամենը ստանալու համար կարող եք որոնել համացանցում, զրուցել նախագծի որոշ մասնակիցների հետ, սպասել, որ այս մասին գրքեր հայտնվեն կամ ինքներդ սկսեք ստեղծել նման նյութ։

XP ծրագրային ապահովման մշակման կարգապահության հետագա ճակատագիրը, որը ես նկարագրեցի, գտնվում է մի խումբ մարդկանց ձեռքում (գուցե դուք նրանցից մեկն եք), ովքեր դժգոհ են այն ամենից, ինչ գոյություն ունի: այս պահինծրագրավորողների աշխատանքի կազմակերպման ավանդական մեթոդներ. Ձեզ անհրաժեշտ է լավագույն միջոցըծրագրային ապահովման մշակում, դուք ցանկանում եք ավելի արդյունավետ և ողջունելի հարաբերություններ կառուցել ձեր հաճախորդների հետ, ցանկանում եք ձեր ղեկավարությամբ աշխատող ծրագրավորողներին դարձնել ավելի երջանիկ, ավելի հավատարիմ և ավելի արդյունավետ: Մի խոսքով, դուք էական առավելություն եք ուզում և չեք վախենում օգտվել նոր գաղափարներից՝ այդ առավելությունը ձեռք բերելու համար։ Այնուամենայնիվ, նախքան ռիսկի դիմելը, դուք ցանկանում եք համոզվել, որ դուք առնվազն կատարյալ հիմար չեք:

XP-ն ձեզ ասում է, որ ձեր գործն անեք շատ այլ կերպ, քան սովոր եք: Որոշ դեպքերում XP-ի առաջարկությունները լիովին հակասում են ընդհանուր ընդունված նորմերին: Վրա այս պահինԵս հավատում եմ, որ XP-ն կարող է օգտագործվել միայն նրանց կողմից, ովքեր հիմնավոր պատճառներ ունեն փոխելու իրերի գոյություն ունեցող կարգը: Այնուամենայնիվ, եթե նման պատճառներ կան, կարող եք սկսել օգտագործել XP-ն հենց հիմա: Ես գրել եմ այս գիրքը, որպեսզի դուք կարողանաք ավելին իմանալ այս պատճառների մասին:

Ինչ է XP-ն:

Ինչ է XP-ն: XP-ն պարզեցված, արդյունավետ, ճկուն, կանխատեսելի, գիտականորեն հիմնավորված և շատ հաճելի միջոց է՝ մշակելու ծրագրակազմ, որը ներառում է. ցածր մակարդակռիսկը։ XP-ն այլ տեխնիկայից տարբերվում է հետևյալ կերպ.

Օգտագործելով չափազանց կարճ զարգացման ցիկլեր՝ XP-ն առաջարկում է արագ, իրական և մշտական ​​հետադարձ կապ:

XP-ն օգտագործում է աստիճանական պլանավորում, որի արդյունքում ընդհանուր ծրագրի պլանը բավականին արագ է առաջանում, բայց դա ենթադրում է, որ այս պլանը զարգանում է ծրագրի ողջ կյանքի ընթացքում:

XP-ն օգտագործում է ճկուն ժամանակացույց՝ ֆունկցիոնալությունը տրամադրելու համար՝ բարելավելու արձագանքողությունը փոփոխվող բիզնեսներին և հաճախորդների պահանջների փոփոխմանը:

XP-ն հիմնված է ավտոմատացված թեստերի վրա, որոնք մշակվել են ինչպես ծրագրավորողների, այնպես էլ հաճախորդների կողմից: Այս թեստերի շնորհիվ հնարավոր է վերահսկել զարգացման գործընթացը, ապահովել համակարգի ճիշտ էվոլյուցիան և անմիջապես հայտնաբերել համակարգում առկա թերությունները։

XP-ն հիմնված է բանավոր հաղորդակցության, թեստերի և սկզբնական կոդի վրա: Այս երեք գործիքներն օգտագործվում են համակարգի կառուցվածքի և նրա վարքագծի մասին տեղեկատվության փոխանակման համար:

XP-ն հիմնված է զարգացող նախագծման գործընթացի վրա, որը տևում է այնքան ժամանակ, որքան ինքնին համակարգը:

XP-ն հիմնված է ամենատարածված հմտություններով և հնարավորություններով ծրագրավորողների սերտ փոխգործակցության վրա:

XP-ն հիմնված է տեխնիկայի վրա, որը բավարարում է ինչպես առանձին ծրագրավորողների կարճաժամկետ բնազդները, այնպես էլ՝ որպես ամբողջություն նախագծի երկարաժամկետ շահերը:

XP-ն ծրագրային ապահովման մշակման կարգ է: Սա կարգապահություն է, քանի որ XP-ում կան որոշակի բաներ, որոնք դուք պետք է անեք, եթե մտադիր եք օգտագործել XP: Պետք չէ ընտրել թեստեր գրել-չգրել, քանի որ եթե չես անում, ծրագրավորումը, որ անում ես, ծայրահեղ չէ. քննարկման ավարտ:

XP տեխնիկան նախատեսված է նախագծերի վրա աշխատելու համար, որոնց վրա կարող են աշխատել երկուսից տասը ծրագրավորողներ, որոնք սահմանափակված չեն գոյություն ունեցող համակարգչային միջավայրի կոշտ շրջանակով և որոնցում թեստավորման հետ կապված բոլոր անհրաժեշտ աշխատանքները կարող են ավարտվել մեկ օրվա ընթացքում:

XP-ն վախեցնում կամ նյարդայնացնում է որոշ մարդկանց, ովքեր առաջին անգամ են օգտագործում այս տեխնիկան: Այնուամենայնիվ, XP-ի հիմքում ընկած ոչ մի գաղափար նորություն չէ: Ինչ-որ իմաստով, XP մեթոդաբանությունը պահպանողական է. դրա շրջանակներում օգտագործվող բոլոր տեխնիկաները փորձարկվել են տասնամյակների ընթացքում (կատարման ռազմավարության առումով) և նույնիսկ դարերի ընթացքում (կառավարման ռազմավարության հետ կապված) պրակտիկայի ընթացքում:

XP-ում նոր են հետևյալ հատկանիշները.

Այս բոլոր հայտնի տեխնիկաները հավաքված են մեկ հարկի տակ.

Այն ինտենսիվությունը, որով այս տեխնիկան ներմուծվում է ամենօրյա աշխատանքի մեջ, հասցվել է ծայրահեղության.

Օգտագործված տեխնիկան հնարավորինս աջակցում է միմյանց:

Համարժեքություն

Իր ստեղծագործություններում Անտառի մարդիկ և լեռնային մարդիկմարդաբան Քոլին Թերնբուլը նկարագրում է երկու շատ տարբեր հասարակություններ: Սարերում կյանքի համար անհրաժեշտ ռեսուրսները չեն բավարարում, մարդիկ միշտ սովի եզրին են։ Մշակույթը, որն առաջացել է այս պայմաններում, սարսափելի է թվում: Մայրերը թողնում են իրենց երեխաներին՝ ինքնուրույն գոյատևելու համար։ Սնունդը կարող է մահացու լինել. Դաժանությունը, դաժանությունն ու դավաճանությունը սովորական են և ամենօրյա:

Ի տարբերություն լեռների, անտառները հարուստ են ռեսուրսներով։ Ամբողջ օրվա սնունդով ապահովելու համար մարդուն անհրաժեշտ է ընդամենը մոտ կես ժամ ծախսել։ Անտառային մշակույթը լեռնային մշակույթի հակառակն է։ Մեծահասակները մասնակցում են սովորական երեխաների մեծացմանն ու դաստիարակությանը, որոնք մեծանում են սիրո և հոգատարության մեջ այնքան ժամանակ, քանի դեռ չեն կարողանում ինքնուրույն հոգ տանել իրենց մասին: Եթե ​​մեկը սխալմամբ սպանում է մյուսին (կանխամտածված սպանությունն այս մարդկանց ծանոթ չէ), նա հեռացվում է հասարակությունից։ Սակայն այս դեպքում աքսորյալը պարզապես պետք է թոշակի անցնի անտառ և այնտեղ մի քանի ամիս անցկացնի, և նույնիսկ այդ ժամանակ ցեղի որոշ անդամներ նրան սնունդ և նվերներ են բերում։

XP-ն փորձ է պատասխանելու հարցին. ինչպե՞ս կծրագրավորեիք անձամբ, եթե բավական ժամանակ ունենայիք: Դուք իսկապես շատ ժամանակ չունեք վատնելու համար, քանի որ ծրագրավորումն ի վերջո բիզնես է: Ցանկացած բիզնեսում հաղթում է նա, ով ավելի արագ է կատարում գործը: Այնուամենայնիվ, եթե ժամանակ ունենայիք, հավանաբար ուշադրություն կդարձնեիք թեստի ձևավորմանը. Դուք, ամենայն հավանականությամբ, կվերակառուցեիք համակարգը, եթե գաք այն եզրակացության, որ դա անհրաժեշտ է. Դուք հավանաբար ավելի շատ կշփվեք ձեր գործընկեր ծրագրավորողների, ինչպես նաև հաճախորդի հետ:

Բավարարության այս զգացումն ավելի մարդկային է թվում՝ ի տարբերություն այն իրավիճակների, երբ ծրագրավորողները ամեն կերպ փորձում են մնալ տվյալ ժամկետում, ժամանակացույցից դուրս են, ժամանակ չունեն մեծ քանակությամբ չափազանց կարևոր աշխատանք կատարելու՝ պարզապես ժամանակ ունենալու համար։ նախագիծը ժամանակին ավարտելու համար. Շտապողականությունը խանգարում է ծրագրավորողներին լիովին ցուցադրել իրենց տաղանդը և վայելել իրենց աշխատանքը: Այնուամենայնիվ, երբ սկսում եք XP սովորել, պետք է հասկանաք, որ բավարարության զգացումը նույնպես լավ բիզնես է: Բավարարության զգացումը դառնում է արդյունավետության աղբյուր այնպես, ինչպես պակասի զգացումը առաջացնում է աշխատանքում ձախողումներ, հանգեցնում է թերությունների ի հայտ գալուն և որակի նվազմանը և, ի վերջո, աշխատանքի արտադրողականության նվազմանը:

Գրքի պլան

Գիրքը գրված է այնպես, կարծես ես և դու միասին ստեղծում ենք ծրագրային ապահովման մշակման նոր կարգապահություն: Մենք սկսում ենք ուսումնասիրելով ծրագրային ապահովման մշակման մեր հիմնական պատկերացումները: Դրանից հետո մենք փաստացի ստեղծում ենք նոր կարգապահություն։ Այնուհետև մենք ուսումնասիրում ենք մեր ստեղծածի հետևանքները. ինչպես կարելի է այն իրականացնել և կիրառել գործնականում, երբ այն չպետք է օգտագործվի և ինչ հնարավորություններ է բացում բիզնեսի համար:

Գիրքը բաժանված է երեք մասի.

Խնդիր-ով սկսվող գլուխներում Ռիսկ. հիմնական խնդիրըև վերջ Վերադարձ դեպի հիմունքներ, որոշվում է խնդիրը, որը փորձում է լուծել էքստրեմալ ծրագրավորումը, և սահմանվում են չափանիշներ, որոնցով կարելի է գնահատել լուծման որակը։ Այս մասում դուք կստանաք ակնարկ ծայրահեղ ծրագրավորման տեխնիկայի մասին:

Լուծում-ով սկսվող գլուխներում Կարճ ակնարկև վերջ Փորձարկման ռազմավարություն, գրքի առաջին մասում ներկայացված վերացական գաղափարները վերածվում են մեթոդաբանությունների մի շարք կոնկրետ գիտակարգի համար։ Այս գլուխը չի պարունակում որևէ տեղեկատվություն այն մասին, թե ինչպես կարող եք գործնականում կիրառել նկարագրված տեխնիկան: Փոխարենը խոսքը գնում է տեխնիկաներից յուրաքանչյուրի ընդհանուր ձևի մասին։ Երբ ես քննարկում եմ յուրաքանչյուր տեխնիկա, ես այն կապում եմ գրքի առաջին մասում քննարկված խնդիրների և սկզբունքների հետ:

XP-ի իրականացում-ով սկսվող գլուխներում XP-ի իրականացումև վերջ XP-ն գործողության մեջ է, քննարկում է XP-ի ներդրման հետ կապված բազմաթիվ հարցեր՝ ինչպես իրականացնել XP, ինչ սպասել XP նախագծում ներգրավված տարբեր մարդկանցից, ինչպիսի XP մարդիկ ունեն բիզնես աշխարհում։

Երախտագիտություն

Ես առաջին դեմքով խոսում եմ ընթերցողների հետ ոչ թե այն պատճառով, որ գիրքը ներկայացնում է իմ սեփական գաղափարները, այլ որովհետև ես ձեզ ասում եմ այս գաղափարների իմ ընկալման մասին: XP-ում օգտագործվող տեխնիկաներից շատերը նույնքան հին են, որքան բոլոր ծրագրավորումները:

Ուորդ Կանինգհեմը գրքի համար նյութի իմ հիմնական աղբյուրն է: Համենայն դեպս, ես վերջին տասնհինգ տարին անցկացրել եմ պարզապես փորձելով բացատրել այլ մարդկանց, թե ինչ է անում Ուորդը գործնականում երկար ժամանակ: Շնորհակալություն նաև Ռոն Ջեֆրիսին սա նույնպես փորձելու և հետո շատ բարելավումներ անելու համար: Շնորհակալություն Մարտին Ֆաուլերին այս ամենը պարզ, մեղմ լեզվով և առանց նյարդային ցնցումների բացատրելու համար։ Շնորհակալ եմ Էրիխ Գամային երկար զրույցների համար՝ զուգորդված Լիմայում կարապների մասին մտորումների հետ, ինչպես նաև թույլ չտվեց, որ թողնեմ իրեն վատ մտքերով։ Եվ իհարկե, այս ամենից ոչ մեկը չէր լինի իմ կյանքում, եթե ես չունենայի իմ հոր՝ Դագ Բեքի պես օրինակ, ով տարիների ընթացքում կատարելագործել է իր ծրագրավորման հմտությունները:

Շնորհակալություն Chrysler-ի C3 թիմին՝ իմ հետազոտության ժամանակ ինձ ուղեկցելու համար: Եվ նաև հատուկ շնորհակալություն ենք հայտնում մեր մենեջերներին՝ Սյու Անգերին և Ռոն Սևեյջին, որ համարձակություն ունեցան փորձել մեզ:

Շնորհակալություն Daedalos Consulting-ին, որ օգնեց ինձ գրել այս գիրքը:

The Watching Champion-ը գնում է Փոլ Չիշոլմի մոտ՝ իր առատ, լակոնիկ, բծախնդիր և հաճախ ուղղակի նյարդայնացնող մեկնաբանությունների համար: Առանց նրա օգնության այս գիրքըկիսով չափ հայտնի չէր լինի:

Ինձ շատ դուր եկավ շփվել բոլոր նրանց հետ, ովքեր իրականացրել էին նախադիտումիմ գրածից։

Նրանց աշխատանքն ինձ մեծ օգնեց։ Ես երախտագիտության խոսքեր չեմ գտնում այն ​​բանի համար, որ նրանք համբերություն ունեցան մինչև վերջ կարդալու այս ամբողջ արձակը, քանի որ նրանցից շատերն օտար լեզվով էին շարադրված։

Շնորհակալություն (պատահական թվարկված, որտեղ ես նրանցից մեկնաբանություններ եմ ստացել) Գրեգ Հաթչինսոն, Մասիմո Առնոլդի, Դեյվ Քլեյլ, Սեյմս Շուստեր, Դոն Ուելս, Ջոշուա Քերիևսկի, Թորստեն Դիտմար, Մորից Բեքեր, Դանիել Գաբլեր, Քրիստոֆ Հենրիչի, Թոմաս Զանգ, Դիրկ Քյոնիգ, Դիերք Կոենիգ Միրոսլավ Նովակ, Ռոդնի Ռայան, Ֆրենկ Վեստֆալ, Փոլ Թրունց, Սթիվ Հեյս, Քևին Բրադկե, Ժանին Դե Գուզման, Թոմ Կուբիտ, Ֆալկ Բրյուգման, Հասկո Հայնեկե, Փիթեր Մերել, Ռոբ Մի, Փիթ Մակբրին, Թոմաս Էռնստ, Գվիդո Գիդո Հոլեր Դի Գուսման Մարտին Կնեխտ, Դիրկ Կրամպ ( Դիերկ Կրամպե, Պատրիկ Լիսսեր, Էլիզաբեթ Մայեր, Թոմաս Մանչինի, Ալեքսիո Մորենո, Ռոլֆ Պֆենինգեր և Մաթիաս Ռեսսել։

Հրատարակչից

Ձեր մեկնաբանությունները, առաջարկությունները, հարցերն ուղարկեք հասցեով Էլ [էլփոստը պաշտպանված է](հրատարակչություն Peter, համակարգչային հրատարակություն):

Մենք կցանկանայինք լսել ձեզանից:

Գրքում տրված բոլոր սկզբնաղբյուր տեքստերը կարող եք գտնել այստեղ http://www.piter.com/download.

Հրատարակչի http://www.piter.com կայքում դուք կգտնեք մանրամասն տեղեկություններ մեր գրքերի մասին:

Խնդիր

Գրքի այս հատվածը պատրաստում է այն տեսարանը, որի վրա պետք է հայտնվի էքստրեմալ ծրագրավորումը ապագայում: Այն նկարագրում է խնդրի տարբեր ասպեկտներ, որոնք պետք է լուծվեն՝ ձևավորելով ծրագրային ապահովման մշակման նոր կարգապահություն:

Այս մասում քննարկվում են հիմքում ընկած ենթադրությունները, որոնք մենք պետք է նկատի ունենանք ծրագրային ապահովման մշակման պրակտիկաների նախագծման ժամանակ՝ շարժիչ փոխաբերությունը, չորս իմաստները, այդ իմաստներից բխող սկզբունքները և այն գործողությունները, որոնք պետք է կառուցվեն ծրագրային ապահովման մշակման նոր կարգի շրջանակներում:

Ռիսկ. հիմնական խնդիրը

Ծրագրային ապահովման մշակման գոյություն ունեցող դիսցիպլինները չեն գործում և չեն տալիս ցանկալի տնտեսական էֆեկտը։ Այս խնդիրն ունի հսկայական տնտեսական և հումանիտար նշանակություն։ Մեզ անհրաժեշտ է ծրագրային ապահովման մշակման նոր ճանապարհ։

Ծրագրային ապահովման մշակման հիմնական խնդիրն է ռիսկը.

Ահա ռիսկի մի քանի օրինակ:

Օֆսեթ գծապատկերներ- գալիս է աշխատանքի առաքման օրը, և դուք ստիպված եք տեղեկացնել հաճախորդին, որ մշակվող համակարգը պատրաստ չի լինելու ևս վեց ամիս։

Նախագծի փակում- ժամանակացույցի մի քանի հերթափոխից և առաքման ամսաթվի հետաձգումից հետո նախագիծը փակվում է, նույնիսկ առանց աշխատանքային պայմաններում փորձարկման փուլի բերելու:

Համակարգը կորցնում է իր օգտակարությունը- մշակված ծրագրաշարը հաջողությամբ տեղադրվում է իրական արտադրական աշխատանքային միջավայրում, սակայն մի քանի տարի օգտագործելուց հետո դրանում փոփոխություններ կատարելու և/կամ թերությունների քանակն այնքան մեծանում է, որ ավելի էժան է դառնում համակարգը փոխարինելը նոր զարգացում.

- Ծրագրային համակարգը տեղադրված է իրական արտադրական աշխատանքային միջավայրում, սակայն թերությունների և թերությունների թիվն այնքան մեծ է, որ համակարգը չի օգտագործվում:

- Ծրագրային համակարգը տեղադրված է իրական արտադրական աշխատանքային միջավայրում, բայց պարզվում է, որ այն իրականում չի լուծում բիզնեսի այն խնդիրը, որն ի սկզբանե նախատեսված էր լուծել:

Բիզնեսի բնույթի փոփոխություն- Ծրագրային համակարգը տեղադրվում է իրական արտադրական միջավայրում, սակայն վերջին վեց ամիսների ընթացքում խնդիրը, որը նախատեսվում էր լուծել համակարգը, կորցրել է իր արդիականությունը, և փոխարենը բիզնեսը բախվել է նոր, էլ ավելի լուրջ խնդրի. .

Հնարավորությունների բացակայություն- Ծրագրային համակարգն ունի բազմաթիվ պոտենցիալ հետաքրքիր հնարավորություններ, որոնցից յուրաքանչյուրը շատ հաճելի էր ծրագրավորել, բայց պարզվում է, որ այս հնարավորություններից և ոչ մեկը հաճախորդին մեծ օգուտ չի բերում:

Անձնակազմի շրջանառություն- աշխատանքի երկու տարվա ընթացքում՝ բոլորը լավ ծրագրավորողներովքեր աշխատում էին նախագծի վրա, հերթով ատում էին մշակված ծրագրային համակարգը և մեկնում մեկ այլ աշխատանքի։

Այս գրքի էջերում դուք կկարդաք էքստրեմալ ծրագրավորման մասին ( Էքստրեմալ ծրագրավորում, XP) ծրագրային ապահովման մշակման կարգ է, որը կենտրոնանում է զարգացման գործընթացի բոլոր մակարդակներում ռիսկերի նվազեցման վրա: XP-ն օգնում է զգալիորեն բարձրացնել արտադրողականությունը և բարելավել մշակված ծրագրերի որակը, բացի այդ, դա շատ զվարճալի պրակտիկա է, որը մեծ հաճույք է պատճառում իր բոլոր մասնակիցներին։

Ինչպե՞ս է XP-ն մեղմացնում վերը նշված ռիսկերը:

Օֆսեթ գրաֆիկ- XP-ն առաջարկում է յուրաքանչյուր հաջորդ տարբերակի համար օգտագործել շատ կարճ թողարկման ժամանակներ: Ենթադրվում է, որ համակարգի յուրաքանչյուր հաջորդ՝ օգտագործման համար պատրաստ տարբերակ մշակվում է առավելագույնը մի քանի ամսվա ընթացքում: Այսպիսով, յուրաքանչյուր տարբերակում աշխատանքի ծավալը սահմանափակ է, ինչը նշանակում է, որ եթե կա տեղաշարժ, ապա այն ավելի քիչ էական է։ Յուրաքանչյուր տարբերակ կներառի հաճախորդի պահանջած հատկանիշների մի քանի կրկնություններ, որոնց մշակման համար յուրաքանչյուր կրկնություն տևում է մեկից չորս շաբաթ: Սա հաճախորդին տալիս է ճկուն և պատասխանատու արձագանք, որպեսզի նա պատկերացում կազմի աշխատանքի ընթացիկ առաջընթացի մասին: Յուրաքանչյուր կրկնության շրջանակներում XP-ին համապատասխան պլանավորումն իրականացվում է մի քանի առաջադրանքների առումով, որոնք պետք է լուծվեն հաջորդ կրկնությունը ստանալու համար: Առաջադրանքներից յուրաքանչյուրի լուծմանը հատկացվում է մեկից երեք օր։ Արդյունքում թիմը կարող է հայտնաբերել և շտկել խնդիրները նույնիսկ կրկնման ընթացքում: Ի վերջո, XP-ն ենթադրում է, որ առաջին հերթին կիրականացվեն ամենաառաջնահերթ գործառույթները: Այսպիսով, ցանկացած հնարավորություն, որը հնարավոր չէր իրականացնել ծրագրային արտադրանքի այս հաջորդ տարբերակի շրջանակներում, ավելի ցածր առաջնահերթություն է:

Նախագծի փակում- XP-ի շրջանակներում հաճախորդը պետք է որոշի հնարավորությունների ամենափոքր թույլատրելի փաթեթը, որը պետք է ունենա ծրագրի նվազագույն գործունակ տարբերակը, որն իմաստ ունի բիզնեսի խնդիրների լուծման տեսանկյունից: Այսպիսով, ծրագրավորողները պետք է նվազագույն ջանքեր գործադրեն, որպեսզի հաճախորդը հասկանա՝ իրեն այս նախագիծը պե՞տք է, թե՞ ոչ։

Համակարգը կորցնում է իր օգտակարությունը- XP-ի շրջանակներում ստեղծվում և պահպանվում են հսկայական թվով թեստեր, որոնք գործարկվում և վերագործարկվում են համակարգում որևէ փոփոխություն կատարելուց հետո (օրական մի քանի անգամ), դրա շնորհիվ հնարավոր է ուշադիր հետևել մշակվող ծրագրի որակին: . XP-ն միշտ պահում է համակարգը գերազանց վիճակում: Թերությունները պարզապես թույլ չեն տալիս կուտակել։

Թերությունների և թերությունների քանակը- XP-ի շրջանակներում մշակվող համակարգը փորձարկվում է ինչպես ծրագրավորողների կողմից, ովքեր ստեղծում են թեստեր յուրաքանչյուր մշակվող առանձին գործառույթի համար, այնպես էլ հաճախորդների կողմից, ովքեր ստեղծում են թեստեր յուրաքանչյուր ներդրված համակարգի գործառույթի համար:

Լուծվող խնդրի հետ անհամապատասխանություն- XP-ում հաճախորդը նախագծի վրա աշխատող թիմի անբաժանելի մասն է: Ծրագրի հստակեցումը մշտապես վերանայվում է նախագծի վրա աշխատանքի ողջ ժամանակահատվածում, որի շնորհիվ ցանկացած պարզաբանում և բացահայտում, որի մասին հաճախորդը տեղեկացնում է զարգացման թիմին, անմիջապես արտացոլվում են մշակված ծրագրում:

Ծայրահեղ ծրագրավորում. թեստային զարգացում

Նվիրվում է Սինդիին. իմ հոգու թևերը

Հրատարակչական իրավունքները ձեռք են բերվել Addison-Wesley Longman-ի հետ համաձայնությամբ: Բոլոր իրավունքները պաշտպանված են. Այս գրքի ոչ մի մաս չի կարող վերարտադրվել որևէ ձևով` առանց հեղինակային իրավունքի սեփականատերերի գրավոր թույլտվության:


Այս գրքում պարունակվող տեղեկատվությունը ստացվել է հրատարակչի կողմից վստահելի համարվող աղբյուրներից: Այնուամենայնիվ, հաշվի առնելով հնարավոր մարդկային կամ տեխնիկական սխալները, հրատարակիչը չի կարող երաշխավորել տրամադրված տեղեկատվության բացարձակ ճշգրտությունն ու ամբողջականությունը և պատասխանատվություն չի կրում գրքի օգտագործման հետ կապված հնարավոր սխալների համար:


ISBN 978-0321146533 Անգլ.

ISBN 978-5-496-02570-6


© 2003 Pearson Education, Inc.

© Թարգմանությունը ռուսերեն Piter Publishing House LLC, 2017 թ

© Հրատարակություն ռուսերեն, նախագծված Piter Publishing House ՍՊԸ-ի կողմից, 2017 թ

© Սերիա «Ծրագրողների գրադարան», 2017 թ

Առաջաբան

Մաքուր կոդ, որն աշխատում է(մաքուր կոդ, որն աշխատում է), Ռոն Ջեֆրիսի կողմից ստեղծված այս կարճ, բայց խղճուկ արտահայտության մեջ, թեստի վրա հիմնված զարգացման (TDD) ամբողջ իմաստն է: Գործող մաքուր կոդը նպատակ է, որին արժե ձգտել, քանի որ

Սա ծրագրերի մշակման կանխատեսելի միջոց է։ Դուք գիտեք, թե երբ կարելի է աշխատանքը ավարտված համարել և չանհանգստանալ սխալների երկար շարքից.

Ձեզ հնարավորություն է տալիս սովորելու դասերը, որոնք սովորեցնում է կոդը: Եթե ​​դուք օգտագործում եք առաջին միտքը, որը գալիս է ձեր մտքում, դուք հնարավորություն չեք ունենա կյանքի կոչել երկրորդ, ավելի լավ գաղափարը.

Բարելավում է ձեր ծրագրերի օգտագործողների կյանքը.

Թույլ է տալիս ձեր գործընկերներին հույս դնել ձեզ վրա, իսկ դուք՝ նրանց վրա;

Այսպես կոդ գրելն ավելի հաճելի է.

Բայց ինչպե՞ս եք ստանում մաքուր կոդ, որն աշխատում է: Շատ ուժեր մեզ խանգարում են ստանալ մաքուր կոդ, և երբեմն մենք նույնիսկ չենք կարողանում ստանալ կոդ, որը պարզապես աշխատում է: Բազմաթիվ խնդիրներից ազատվելու համար մենք կմշակենք կոդը՝ հենվելով ավտոմատացված թեստավորման վրա։ Ծրագրավորման այս ոճը կոչվում է թեստային զարգացում: Այս տեխնիկայի համաձայն

Նոր կոդը գրվում է միայն այն բանից հետո, երբ ավտոմատ թեստը գրվի և ձախողվի.

Ցանկացած կրկնօրինակում վերացվում է։

Երկու պարզ կանոններ, այդպես չէ? Այնուամենայնիվ, դրանք առաջացնում են բարդ անհատական ​​և խմբային վարքագիծ՝ բազմաթիվ տեխնիկական հետևանքներով.

Նախագծման գործընթացում մենք անընդհատ գործարկում ենք կոդը և պատկերացում ենք կազմում դրա աշխատանքի մասին, դա օգնում է ճիշտ որոշումներ կայացնել.

Մենք ինքներս ենք թեստեր գրում, քանի որ չենք կարող սպասել, որ ուրիշը մեզ համար թեստեր գրի;

Մեր զարգացման միջավայրը պետք է արագ արձագանքի կոդի փոքր փոփոխություններին.

Ծրագրի ձևավորումը պետք է հիմնված լինի բազմաթիվ ինքնամփոփ, թույլ զուգակցված բաղադրիչների օգտագործման վրա, որպեսզի ավելի հեշտ լինի փորձարկել ձեր կոդը:

Նշված երկու TDD կանոնները թելադրում են ծրագրավորման քայլերի հերթականությունը:

1. Կարմիր - գրել մի փոքրիկ թեստ, որը չի աշխատում, և կարող է նույնիսկ չկազմել:

2. Կանաչ - այնպես անել, որ թեստը հնարավորինս արագ կատարվի՝ չմտածելով ճիշտ դիզայնի և մաքուր կոդի մասին: Գրեք բավականաչափ կոդ, որպեսզի թեստն աշխատի:

3. Refactoring – հեռացնել ցանկացած կրկնօրինակում գրված կոդից:

Կարմիր-կանաչ-վերագործարկումը TDD-ի մանտրան է:

Եթե ​​ենթադրենք, որ ծրագրավորման այս ոճը հնարավոր է, կարող ենք ենթադրել, որ դրա օգտագործման շնորհիվ կոդը զգալիորեն ավելի քիչ թերություններ կպարունակի, բացի այդ, աշխատանքի նպատակը պարզ կլինի բոլոր նրանց, ովքեր մասնակցում են դրան։ Եթե ​​այո, ապա միայն թեստերն անցնելու համար անհրաժեշտ ծածկագրի մշակումն ունի նաև սոցիալական հետևանքներ.

Թերությունների բավական ցածր խտության դեպքում Որակի ապահովման (ՈԱ) թիմը կկարողանա սխալներին արձագանքելուց անցնել դրանց կանխարգելմանը.

Նվազեցնելով տհաճ անակնկալների քանակը՝ ծրագրի ղեկավարները կկարողանան ավելի ճշգրիտ գնահատել աշխատուժի ծախսերը և հաճախորդներին ներգրավել զարգացման գործընթացում.

Եթե ​​տեխնիկական քննարկումների թեմաները հստակ սահմանված են, ծրագրավորողները կարող են միմյանց հետ շփվել ամեն օր, այլ ոչ թե օրը մեկ կամ շաբաթը մեկ անգամ;

Կրկին, բավական ցածր թերության խտությամբ, մենք կկարողանանք ամեն օր ունենալ ինտեգրված աշխատանքային արտադրանք՝ դրան ավելացված նոր ֆունկցիոնալությամբ, որպեսզի կարողանանք բոլորովին նոր տեսակի բիզնես հարաբերությունների մեջ մտնել մեր հաճախորդների հետ:

Այսպիսով, գաղափարը պարզ է, բայց ո՞րն է մեր շահը: Ինչո՞ւ պետք է ծրագրավորողը ստանձնի ավտոմատացված թեստեր գրելու լրացուցիչ պատասխանատվությունը: Ինչո՞ւ կարող է ծրագրավորողը փոքրիկ փոքր քայլերով առաջ գնալ, երբ նրա ուղեղը կարող է մտածել շատ ավելի բարդ դիզայնի կառուցվածքի միջոցով: Քաջություն.

Քաջություն

TDD-ն ծրագրավորման գործընթացում վախը կառավարելու միջոց է: Ես նկատի չունեմ աթոռից ընկնելու կամ ղեկավարի վախը: Ես նկատի ունեմ վախը խնդրից «այնքան դժվար, որ ես դեռ գաղափար չունեմ, թե ինչպես լուծել այն»: Ցավն այն է, երբ բնությունը մեզ ասում է. Զգույշ լինելն ամենևին էլ վատ չէ, բայց բացի օգտակար լինելուց, վախը մի քանի բացասական ազդեցություն է թողնում մեզ վրա.

Վախը ստիպում է մեզ նախօրոք և ուշադիր մտածել, թե ինչի կարող է հանգեցնել այս կամ այն ​​գործողությունը.

Վախը ստիպում է մեզ ավելի քիչ շփվել;

Վախը ստիպում է մեզ վախեցնել մեր աշխատանքի ակնարկներից.

Վախը մեզ դյուրագրգիռ է դարձնում։

Սրանցից ոչ մեկը օգտակար չէ ծրագրավորման գործընթացի համար, հատկապես, եթե դուք աշխատում եք բարդ խնդրի վրա: Այսպիսով, մենք կանգնած ենք այն հարցի առաջ, թե ինչպես դուրս գալ բարդ իրավիճակից և

Մի փորձեք գուշակել ապագան, այլ անմիջապես սկսեք խնդրի գործնական ուսումնասիրությունը.

Ոչ թե ցանկապատվել մնացած աշխարհից, այլ բարձրացնել հաղորդակցության մակարդակը.

Մի խուսափեք հետադարձ կապից, այլ, ընդհակառակը, հաստատեք հուսալի հետադարձ կապ և դրա օգնությամբ ուշադիր հետևեք ձեր գործողությունների արդյունքներին.

(դուք ինքներդ պետք է զբաղվեք տհաճությամբ):

Համեմատեք ծրագրավորումը ջրհորից դույլ բարձրացնելու հետ: Դույլը լցված է ջրով, դուք պտտում եք լծակը, շղթան պտտելով դարպասի շուրջը և դույլը վեր բարձրացնելով։ Եթե ​​դույլը փոքր է, սովորական, ազատ պտտվող մանյակը լավ է: Բայց եթե դույլը մեծ է և ծանր, դուք կհոգնեք այն վերցնելուց առաջ։ Լծակի շրջադարձերի միջև հանգստանալու համար անհրաժեշտ է լծակ՝ լծակը տեղում պահելու համար: Որքան ծանր է դույլը, այնքան ավելի հաճախ պետք է հետևեն ամրագոտիների ատամները:

TDD-ում փորձարկումներն այն ատամներն են, որոնք ամրացված են ամրագոտիների վրա: Թեստն աշխատեցնելով՝ մենք գիտենք, որ թեստն այժմ աշխատում է, այժմ և ընդմիշտ: Մենք մեկ քայլ ավելի մոտ ենք աշխատանքն ավարտելուն, քան մինչև թեստը սկսելը: Դրանից հետո մենք ստիպում ենք աշխատել երկրորդ թեստը, այնուհետև երրորդը, չորրորդը և այլն։Որքան բարդ է ծրագրավորողի առջև ծառացած խնդիրը, այնքան ավելի քիչ ֆունկցիոնալություն պետք է ներառի յուրաքանչյուր թեստ։

Գիրք ընթերցողներ Ծայրահեղ ծրագրավորում Բացատրեքպետք է նկատել, որ հնչերանգների տարբերությունը Ծայրահեղ ծրագրավորման (XP) և թեստի վրա հիմնված զարգացման (TDD) միջև: Ի տարբերություն XP-ի, TDD-ն բացարձակ չէ: XP-ն ասում է, որ «դուք պետք է տիրապետեք այս և այն բանին, որպեսզի առաջ շարժվեք»: TDD-ն ավելի քիչ կոնկրետ տեխնիկա է: TDD-ն ենթադրում է, որ կա որոշումների կայացման և արդյունքների միջև ընդմիջում, և առաջարկում է գործիքներ այս ինտերվալի երկարությունը վերահսկելու համար: «Ի՞նչ կլինի, եթե ես մեկ շաբաթվա ընթացքում թղթի վրա նախագծեմ ալգորիթմ, ապա գրեմ կոդը՝ օգտագործելով առաջին թեստային մոտեցումը: Արդյո՞ք սա կհամապատասխանի TDD-ին»: Իհարկե կլինի։ Դուք գիտեք որոշում կայացնելու և արդյունքները գնահատելու միջակայքի երկարությունը և գիտակցաբար վերահսկում եք այս ընդմիջումը:

Մարդկանց մեծ մասը, ովքեր տիրապետում են TDD-ին, պնդում են, որ իրենց ծրագրավորման պրակտիկան փոխվել է դեպի լավը: Վարակված թեստերով(թեստ վարակված) Էրիխ Գամմայի սահմանումն է, որը հորինել է այս փոփոխությունը նկարագրելու համար: Երբ դուք տիրապետում եք TDD-ին, տեսնում եք, որ գրում եք զգալիորեն ավելի շատ թեստեր, քան նախկինում էիք անում, և առաջ եք շարժվում փոքր քայլերով, որոնք նախկինում ձեզ անիմաստ կթվա: Մյուս կողմից, որոշ ծրագրավորողներ, ծանոթանալով TDD-ին, որոշում են վերադառնալ հին պրակտիկաներին՝ վերապահելով TDD-ն հատուկ դեպքերի համար, երբ սովորական ծրագրավորումը չի հանգեցնում ցանկալի առաջընթացի:

Իհարկե, կան խնդիրներ, որոնք հնարավոր չէ (գոնե այս պահին) լուծել միայն թեստերով։ Մասնավորապես, TDD-ն թույլ չի տալիս մեխանիկորեն ցուցադրել մշակված կոդի համապատասխանությունը տվյալների անվտանգության և զուգահեռ գործողությունների հուսալիության առումով: Իհարկե, անվտանգությունը հիմնված է ծածկագրի վրա, որը պետք է զերծ լինի թերություններից, բայց այն հիմնված է նաև տվյալների պաշտպանության ընթացակարգերում մարդու մասնակցության վրա: Միաժամանակության նուրբ խնդիրները չեն կարող վերարտադրվել որոշակիորեն՝ պարզապես ինչ-որ կոդ գործարկելով: