Zhvillimi i shkathët i softuerit

Zhvillimi i shkathët i programit kompjuterik është një term mbulim për qasjet ndaj zhvillimit të softuerit që pasqyrojnë vlerat dhe parimet e miratuara nga The Agile Alliance, një grup prej 17 praktikuesish të softuerit, në vitin 2001. Siç dokumentohet në Manifestin e tyre për Zhvillimin e Softuerit të shkathët, praktikuesit i japin rëndësi:

 Individët dhe ndërveprimet mbi proceset dhe mjete
 Softueri funksional mbi dokumentimin e plotë
 Bashkëpunimi me klientin mbi negociatat e kontratave
 Reagimi ndaj ndryshimeve mbi ndjekjen e një plani

Praktikuesit marrin frymëzim nga praktikat e reja në atë kohë, si: programimin ekstrem, scrum, metodën dinamike të zhvillimit të sistemeve, zhvillimin adaptiv të softuerit dhe të qenit i hapur ndaj nevojës për një alternativë ndaj proceseve të zhvillimit të softuerit të bazuara në dokumentacion.

Shumë praktika të zhvillimit të softuerit dolën nga mendësia e shkathët. Këto praktika të bazuara në shkathtësi, të quajtura ndonjëherë Agile (me shkronjën A) përfshijnë përcaktimin e kërkesave, eksplorimin dhe përmirësimin e zgjidhjeve përmes përpjekjeve bashkëpunuese nga ekipe vetë-organizuese dhe ndërfunksionale, në partneritet me klientët dhe përdoruesit përfundimtarë. 

Megjithëse ekzistojnë shumë  prova anekdotike që mendësia e shkathët dhe praktikat e bazuara në shkathtësi përmirësojnë procesin e zhvillimit të softuerit, provat empirike janë të kufizuara dhe më pak se përfundimtare.  

 Historia 
Metodat përsëritëse dhe rritëse të zhvillimit të softuerit mund të gjurmohen qysh në vitin 1957,  me menaxhimin evolucionar të projektit   dhe zhvillimin adaptiv të softuerit  të cilat filluan të shfaqen në fillim të viteve 1970".

Në vitet 1990,disa qasje të lehta për zhvillimin e softuerit evoluan si reagim ndaj metodave mbizotëruese të peshave të rënda (shpesh të referuara kolektivisht si ujëvarë ) që kritikët i përshkruan si tepër të rregulluara, të planifikuara dhe të mikromenaxhuara . Këto metoda të lehta përfshinin: zhvillimin e shpejtë të aplikacioneve (RAD), nga viti 1991;  procesi i unifikuar (UP) dhe metoda dinamike e zhvillimit të sistemeve (DSDM), të dyja nga viti 1994; Scrum, nga viti 1995; Crystal Clear dhe programim ekstrem (XP), të dyja nga viti 1996; dhe zhvillimi i drejtuar nga tiparet (FDD), nga 1997.Edhe pse të gjitha këto kanë nisur përpara publikimit të Manifestit të Agile, tani ato njihen së bashku si metoda të zhvillimit të softuerit agil.

Që nga viti 1991, ndryshime të ngjashme ishin duke u zhvilluar në prodhim   dhe në të menduarit e menaxhimit  që rrjedhin nga Menaxhimi i Lean .

Në vitin 2001, shtatëmbëdhjetë zhvillues softuerësh u mblodhën  në një vendpushim në Snowbird, Utah për të diskutuar metodat e lehta të zhvillimit. Anëtarët e grupit ishin: Kent Beck (Programim Ekstrem), Ward Cunningham (Programim Ekstrem), Dave Thomas ( Programim Pragmatik, Ruby), Jeff Sutherland (Scrum), Ken Schwaber (Scrum), Jim Highsmith (Zhvillim Adaptive Software), Alistair Cockburn (Crystal ), Robert C. Martin ( SOLID ), Mike Beedle (Scrum), Arie van Bennekum, Martin Fowler ( OOAD dhe UML ), James Grenning, Andrew Hunt (Programim Pragmatik, Ruby), Ron Jeffries (Programim Ekstrem), Jon Kern, Brian Marick (Ruby, zhvillim i drejtuar nga testi ) dhe Steve Mellor ( OOA ). Grupi, The Agile Alliance, publikoi Manifestin për Zhvillimin e Softuerit Agile .

Në vitin 2005, një grup i udhëhequr  nga Cockburn dhe Highsmith përgatiti  një shtojcë të parimeve të menaxhimit të projektit, Deklaratën PM të Ndërvarësisë, për të udhëhequr menaxhimin e projekteve të softuerit sipas metodave të shkathët të zhvillimit të softuerit.

Në vitin 2009, një grup që bashkëpunonte me Martin shkroi një shtrirje të parimeve të zhvillimit të softuerit, Manifestin e mjeshtërisë së softuerit, për të udhëhequr zhvillimin e shkathët të softuerit sipas sjelljes dhe zotërimit profesional .

Në vitin 2011, Aleanca Agile  përgatiti udhëzuesin  Guide to Agile Practices (i riemërtuar në Fjalorthin Agile në 2016), një përmbledhje në zhvillim me burim të hapur të përkufizimeve të punës të praktikave, termave dhe elementeve të shkathët, së bashku me interpretimet dhe udhëzimet e përvojës nga komuniteti mbarëbotëror i praktikuesve të shkathët.

 Vlerat dhe parimet 

 Vlerat 
Po kërkojmë mënyra më të mira për të zhvilluar softuer duke e bërë atë dhe duke ndihmuar të tjerët ta bëjnë atë. Nëpërmjet kësaj pune ne kemi arritur të vlerësojmë:

   Njerëzit dhe bashkëveprimi mbi proceset dhe mjetet.
 Software funksional mbi dokumentacionin e plotë.
 Bashkëpunimi me klientin mbi negociatën e kontratës.
 Përgjigjja ndaj ndryshimeve mbi ndjekjen e një plani.

Kjo do të thotë se, ndonëse ka vlerë në artikujt në të djathtë, ne i vlerësojmë më shumë artikujt në të majtë.

Scott Ambler shpjegoi:

 Mjetet dhe procedurat kanë rëndësi, por është më e rëndësishme të kesh njerëz kompetentë që punojnë së bashku në mënyrë efektive.
 Dokumentacioni i qartë ndihmon njerëzit të kuptojnë se si është ndërtuar softueri dhe si ta përdorin atë, por pika kryesore e zhvillimit është krijimi i softuerit dhe jo dokumentacionit.
 Një kontratë është e nevojshme, por nuk është një zëvendësim për të punuar ngushtë me klientët për të zbuluar atë që ata kanë nevojë.
 Një plan projekti është thelbësor, por ai nuk duhet të jetë shumë i ngurtë për të përshtatur ndryshimet në teknologji ose mjedis, prioritetet e palëve të interesuara dhe të kuptuarit e njerëzve për problemin dhe zgjidhjen e tij.

Në emër të Aleancës Agile, Jim Highsmith prezantoi Manifestin dhe tha:

Agile nuk është kundër metodologjive, në fakt shumë prej nesh duan të rikthejnë besueshmërinë në fjalën metodologji. Ne duam të rikthejmë një ekuilibër. Ne përqafojmë modelimin, por jo për ta futur në një dosje dhe për ta arkivuar në një depo korporate të pluhurosur. Ne përqafojmë dokumentimin, por jo qindra faqe dokumentesh që kurrë nuk përditësohen dhe që përdoren rrallë. Ne planifikojmë, por e kuptojmë kufizimin e planifikimit në një mjedis të turbullt. Ata që etiketojnë mbështetësit e XP, SCRUM, ose çdo metodologji tjetër Agile si "hacker" janë të paditur për të dyja, metodologjitë dhe përkufizimin origjinal të fjalës hacker.

--Jim Highsmith, History: The Agile ManifestoJim Highsmith (2001). "History: The Agile Manifesto". agilemanifesto.org.



 Parimet 
Vlerat bazohen në këto parime:
</ref>

 Kënaqësia e klientit me dorëzimin i shpejtë dhe i vazhdueshëm të softuerit të vlefshëm.
 Pranon kërkesat që ndryshojnë, madje edhe në zhvillim të vonshëm.
 Siguroni softuer që funksionon shpesh (javë dhe jo muaj).
 Bashkëpunim i ngushtë, i përditshëm mes biznesmenëve dhe zhvilluesve.
 Projektet krijohen rreth individëve të motivuar, të cilëve duhet t'u besohet.
 Biseda ballë për ballë është forma më e mirë e komunikimit (bashkëvendndodhja).
 Softueri i punës është masa kryesore e progresit.
 Zhvillim i qëndrueshëm, i aftë për të mbajtur një ritëm konstant.
 Kujdesi  i vazhdueshëm për përsosmërinë teknike dhe dizajnin e mirë.
 Thjeshtësia - arti i maksimizimit të sasisë së punës not bërë - është thelbësor.
 Arkitekturat, kërkesat dhe dizajnet më të mira dalin nga ekipet vetë-organizuese.
 Rregullisht, ekipi reflekton se si të bëhet më efektiv dhe përshtatet në përputhje me rrethanat.

 Vështrim i përgjithshëm 

 Iterative, rritëse dhe evolucionare 
Shumica e metodave të zhvillimit të shkathët e thyejnë punën e zhvillimit të produktit në rritje të vogla që minimizojnë sasinë e planifikimit dhe dizajnit paraprak. Përsëritjet, ose sprintet, janë korniza të shkurtra kohore ( kuti kohore )  që zakonisht zgjasin nga një deri në katër javë. Çdo përsëritje përfshin një ekip ndërfunksional që realizon të gjitha aktivitetet: planifikim, analizë, projektim, kodim, testim dhe testim pranimi. Në fund, demonstrohet një produkt funksional për palët e interesuara, duke reduktuar rrezikun dhe mundësuar përshtatjen shpejtë me ndryshimet   Një përsëritje mund të mos shtojë funksionalitet të mjaftueshëm për të garantuar një lëshim të menjëhershëm në treg, por qëllimi është të kemi një version funksional (me sa më pak gabime) në fund të çdo përsëritjeje. Përmes zhvillimit të vazhdueshëm, produktet kanë mundësinë të "dështojnë shpesh dhe herët" gjatë çdo faze përsëritëse, në vend që të ndodhin ndodhi drastike në një datë të caktuar përfundimtare të lëshimit. Mund të kërkohen përsëritje të shumta për të nxjerrë një produkt ose veçori të reja. Softueri i punës është masa kryesore e progresit.

Një avantazh kryesor i qasjeve të shkathëta është shpejtësia në treg dhe menaxhimi i rrezikut. Rritje më të vogla zakonisht lëshohen në treg, duke zvogëlon rreziqet e kohës dhe kostos së inxhinierisë së një produkti që nuk i plotëson kërkesat e përdoruesit.

 Komunikim efikas dhe ballë për ballë 
Rregulli i 6-të i manifestit të shkathët për zhvillimin e softuerit thotë ".Mënyra më produktive dhe funksionale për të përcjellë informacionin tek dhe brenda një ekipi zhvillimi është komunikimi ballë për ballë. Manifesti, i shkruar në vitin 2001, kur video-konferencat nuk ishin përdorur gjerësisht, thekson këtë lidhur me komunikimin e informacionit, pa e bërë të domosdoshme që ekipi të jetë gjithmonë i bashkëvendosur.

Parimi i bashkëvendosjes është që bashkëpunëtorët në të njëjtin ekip duhet të vendosen së bashku për të krijuar më mirë identitetin si ekip dhe për të përmirësuar komunikimin. Kjo mundëson ndërveprimin ballë për ballë, idealisht para një dërrase të bardhë, që përshpejton procesin krahasuar me ndërmjetësimin e pyetjeve dhe përgjigjeve përmes telefonit, chat-it, wiki-t ose email-it.  Me miratimin e gjerë të punës në distancë gjatë pandemisë COVID-19 dhe ndryshimet në mjete, janë realizuar më shumë studime  rreth bashkëvendosjes dhe punës së shpërndarë, të cilat tregojnë se bashkëvendndodhja është gjithnjë e më pak e rëndësishme.

Pavarësisht qasjes së zhvillimit që ndiqet, çdo ekip duhet të përfshijë një përfaqësues të klientit (i njohur si pronar produkti në Scrum). Ky përfaqësues është i pranuar nga palët e interesuara për të vepruar në emër të tyre dhe angazhohet personalisht për t'u qenë i disponueshëm zhvilluesve për t'iu përgjigjur pyetjeve gjatë gjithë ciklit të zhvillimit. Në fund të çdo cikli, palët e interesuara, së bashku me përfaqësuesin e klientit, rishikojnë përparimin dhe rivlerësojnë prioritetet, me qëllimin për të optimizuar kthimin e investimit (ROI) dhe për të siguruar që produkti të përmbushë nevojat e klientëve dhe objektivat e kompanisë. Rëndësia e kënaqësisë së palëve të interesuara, e cila sigurohet përmes ndërveprimeve dhe rishikimeve të shpeshta në fund të çdo faze, është arsyeja pse kjo qasje shpesh konsiderohet si një metodologji e përqendruar te klienti.

 Radiator informacioni 
Në zhvillimin e softuerit të shkathët,jë radiator informacioni është një ekran fizik (zakonisht i madh), një tabelë me shënime ngjitëse ose një mjet tjetër të ngjashëm, i vendosur në një zonë të dukshme pranë ekipit të zhvillimit, ku kalimtarët mund ta shohin dhe të aksesojnë informacionin e shfaqur. Ai paraqet një përmbledhje të përditësuar të statusit të zhvillimit të produktit. Një tregues i dritës së ndërtimit mund të përdoret gjithashtu për të informuar një ekip për statusin aktual të zhvillimit të produktit të tyre.

 Cikli shumë i shkurtër i reagimit dhe cikli i përshtatjes 
Një karakteristikë e zakonshme në zhvillimin e softuerit të shkathët është stand-up-i ditor (i njohur si scrum ditor në kornizën Scrum). Në një seancë të shkurtër (p.sh., 15 minuta), anëtarët e grupit shqyrtojnë së bashku përparimin e tyre në arritjen e qëllimeve dhe vendosin nëse duhet të modifikojnë qasjen e tyre.. Për të mbajtur afatin kohor të rënë dakord, ekipet shpesh përdorin pyetje të thjeshta të koduara (siç janë ato që kanë përfunduar një ditë më parë, çfarë synojnë të plotësojnë atë ditë dhe nëse ka ndonjë pengesë ose rrezik për përparimin) dhe vonojnë diskutimet dhe problemin e detajuar zgjidhje deri pas ngritjes.

 Fokusi në cilësi 
djathtas|parapamje| Programimi i çifteve, një teknikë e shkathët zhvillimi e përdorur në XP
Mjetet dhe metodat e veçanta, të tilla si integrimi i vazhdueshëm, testimi i automatizuar i njësive, programimi i çifteve, zhvillimi i drejtuar nga testet, modelet e projektimit, zhvillimi i drejtuar nga sjellja, dizajni i drejtuar nga domeni, rifaktorimi i kodit dhe teknika të tjera përdoren shpesh për të përmirësuar cilësinë dhe për të përmirësuar zhvillimin e produktit shkathtësia. Kjo bazohet në dizajnimin dhe ndërtimin e cilësisë që nga fillimi dhe aftësinë për të paraqitur softuer për klientët në çdo moment, ose të paktën në fund të çdo përsëritjeje.

 Filozofia 
Krahasuar me inxhinierinë tradicionale të softuerit, zhvillimi i shkathët i softuerit synon kryesisht sisteme komplekse dhe zhvillimin e produkteve me veti dinamike, indeterministe dhe jolineare.Vlerësimet e sakta, planet e qëndrueshme dhe parashikimet shpesh janë të vështira për t'u realizuar në fazat e hershme, dhe besimi në to pritet të jetë i ulët. Praktikuesit e shkathët përdorin lirinë e tyre për të zvogëluar "hapjen e besimit" që kërkohet përpara se të bëhen ndonjë provë me vlerë . Kërkesat dhe dizajni konsiderohen si emergjente . Specifikimet e mëdha paraprake ndoshta do të shkaktonin shumë  mbetjet e panevojshme në raste të tilla, dmth. nuk janë ekonomikisht të shëndosha. Këto argumente bazë dhe përvojat e mëparshme të industrisë, të mësuara nga vitet e sukseseve dhe dështimeve, kanë ndihmuar në formimin e favorit të zhvillimit të shkathët ndaj zhvillimit adaptues, përsëritës dhe evolucionar.

 Përshtatës kundrejt parashikues 
Metodat e zhvillimit ekzistojnë në një vazhdimësi nga adaptive në parashikuese .Appendix A, pages 165–194 Metodat e zhvillimit të softuerit të shkathët qëndrojnë në anën e përshtatshme  të kësaj vazhdimësie. Një çelës i metodave adaptive të zhvillimit është një qasje <i id="mwAS4">me valë rrotulluese</i> për planifikimin e orarit, e cila identifikon dëshira kryesore, por lë fleksibilitet në rrugën për t'i arritur ato, dhe gjithashtu lejon që vetë piketat të ndryshojnë.

Metodat adaptive fokusohen në përshtatjen e shpejtë me realitetet në ndryshim. Kur nevojat e një projekti ndryshojnë, një ekip adaptiv gjithashtu ndryshon. Një ekip adaptiv ka vështirësi të përshkruajë saktësisht se çfarë do të ndodhë në të ardhmen. Sa më larg të jetë një datë, aq më e paqartë është një metodë adaptive për atë që do të ndodhë në atë datë. Një ekip adaptiv nuk mund të informoj me saktësi se cilat detyra do të bëjnë javën e ardhshme, por vetëm cilat veçori planifikojnë për muajin e ardhshëm. Kur pyetet për një lëshim pas gjashtë muajsh, një ekip përshtatës mund të jetë në gjendje të raportojë vetëm deklaratën e misionit për lëshimin, ose një deklaratë të vlerës së pritur kundrejt kostos.

Metodat parashikuese, në të kundërt, përqendrohen në analizimin dhe planifikimin e së ardhmes në detaje dhe kujdesen për rreziqet e njohura. Në ekstremet, një ekip parashikues mund të figurojnë informacion të saktë se cilat veçori dhe detyra janë planifikuar për të gjithë gjatësinë e procesit të zhvillimit. Metodat parashikuese mbështeten në analizën efektive të fazës së hershme, dhe nëse kjo shkon shumë keq, projekti mund të ketë vështirësi në ndryshimin e drejtimit. Ekipet parashikuese shpesh krijojnë një bord kontrolli të ndryshimeve për të siguruar që ata marrin parasysh vetëm ndryshimet më të vlefshme.

Analiza e rrezikut mund të shfrytëzohet për të bërë një zgjedhje midis metodave adaptive ( të shkathëta ose të drejtuara nga vlera ) dhe parashikuese ( të drejtuara nga plani ). Barry Boehm dhe Richard Turner sugjerojnë që secila anë e vazhdimësisë ka terrenin e vet, si më poshtë:
+Bazat shtëpiake të metodave të ndryshme të zhvillimit Metodat e drejtuara nga vlera (të shkathëta) Metodat e drejtuara nga plani (ujëvara) Metodat formale Kriticitet i ulët Kriticitet i lartë Kriticitet ekstrem Zhvilluesit e vjetër Zhvilluesit e rinj (?) Zhvilluesit e vjetër Kërkesat ndryshojnë shpesh Kërkesat nuk ndryshojnë shpesh Kërkesa të kufizuara, veçori të kufizuara, shihni ligjin e Wirth Një numër i vogël zhvilluesish Një numër i madh zhvilluesish Kërkesat që mund të modelohen Kultura që i përgjigjet ndryshimit Kulturë që kërkon rregull Cilësi ekstreme

 Agile kundrejt ujëvarës 
Një ndryshim midis metodave të zhvillimit të softuerit të shkathët dhe ujëvarës është qasja ndaj cilësisë dhe testimit. Në modelin e ujëvarës, puna kalon nëpër fazat e ciklit jetësor të zhvillimit të softuerit (SDLC), ku faza e testimit është e ndarë pas ndërtimit. Ndërsa në zhvillimin e softuerit të shkathët, testimi bëhet brenda të njëjtës përsëritje si programimi.

Për shkak se verifikimi bëhet në çdo përsëritje - që ndërton një pjesë të vogël të softuerit - përdoruesit mund t'i përdorin shpesh ato pjesë të reja të softuerit dhe të vërtetojnë vlerën.Kur klientët njohin vlerën e vërtetë të përditësimit të softuerit, ata mund të marrin vendime më të mira për të ardhmen e tij. Pasi çdo përsëritje përfshin një sesion retrospektiv për vlerësim dhe ri-planifikim, ekipet mund të përshtatin planet për të maksimizuar vlerën që ofrohet. Ky proces është i ngjashëm me ciklin PDCA, ku puna planifikohet, realizohet, kontrollohet dhe veprohet sipas rezultateve të analizës.

Kjo metodë e përsëritur mbështet një artikull dhe jo një mentalitet projekti . Kjo ofron fleksibilitet gjatë gjithë procesit të zhvillimit, ndërsa në projektet me kërkesa të përcaktuara që në fillim, është e vështirë t’i ndryshosh ato më vonë. Zhvillimi i përsëritur lejon softuerin të evoluojë sipas ndryshimeve në mjedisin e biznesit ose kërkesat e tregut.

 Kodi kundrejt dokumentacionit 
Në një letër drejtuar IEEE Computer, Steven Rakitin shprehu dyshim për zhvillimin e shkathët, duke e quajtur atë "një përpjekje tjetër për të ulur disiplinën e inxhinierisë softuerike" dhe duke interpretuar "softuerin që funksionon mbi dokumentacionin gjithëpërfshirës" si "ne duam të kalojmë gjithë kohën duke koduar. Mos harroni, programuesit e vërtetë nuk shkruajnë dokumentacion."

Ithtarët e zhvillimit të softuerit të shkathët kundërshtojnë këtë, duke thënë se zhvilluesit duhet të shkruajnë dokumentacion kur është e nevojshme, por shpesh ka mënyra më të efektshme për të arritur qëllimet sesa shkrimi i dokumentacionit statik. Scott Ambler thekson se dokumentacioni duhet të jetë "mezi mjaftueshëm i mirë" (JBGE), se dokumentacioni i tepërt ose gjithëpërfshirës zakonisht do të shkaktonte humbje dhe zhvilluesit rrallë i besojnë dokumentacionit të detajuar sepse zakonisht nuk është i pasqyruar me kodin, megjithatë, shumë pak dokumentacion mund të shkaktojë probleme në mirëmbajtje, komunikim, mësim dhe shkëmbim njohurish. Alistair Cockburn shkroi për metodën Crystal Clear:

Alistair CockburnGeoffrey Wiseman (18 July 2007). "Do Agile Methods Require Documentation?". InfoQ. Quoting Cooper, Ian (6 July 2007). "Staccato Signals: Agile and Documentation". WordPress.com.

 Metodat 
djathtas|parapamje| Mbështetja e ciklit jetësor të zhvillimit të softuerit 
djathtas|parapamje| Procesi i unifikuar i shkathët (AUP) bazohet në një proces të unifikuar (një kuadër procesi i zhvillimit të softuerit përsëritës dhe në rritje).
Metodat e zhvillimit të softuerit të shkathët favorizojnë një gamë të gjerë të ciklit jetësor të zhvillimit të softuerit . 

Kornizat e njohura të zhvillimit të softuerit të shkathët përfshijnë:
Korniza Kontribuesit kryesorë Zhvillimi adaptiv i softuerit (ASD) Jim Highsmith, Sam Bayer Modelimi i shkathët Scott Ambler, Robert Cecil Martin Procesi i unifikuar i shkathët (AUP) Scott Ambler Ofrimi i shkathët i disiplinuar Scott Ambler Metoda e zhvillimit të sistemeve dinamike (DSDM) Jennifer Stapleton Programim ekstrem (XP) Kent Beck, Robert Cecil Martin Zhvillimi i drejtuar nga veçoritë (FDD) Jeff De Luca Zhvillimi i dobët i softuerit Mary Poppendieck, Tom Poppendieck Fillimi i dobët Eric Ries Kanban Taiichi Ohno Zhvillimi i shpejtë i aplikacioneve (RAD) James Martin Scrum Ken Schwaber, Jeff Sutherland Scrumban

 Praktikat e zhvillimit të softuerit të shkathët 
Zhvillimi i softuerit të shkathët mbështetet në praktika të ndryshme që mbulojnë fusha si kërkesat, dizajni, modelimi, kodimi, testimi, planifikimi, menaxhimi i rrezikut, procesi dhe cilësia. Disa mënyra pune të dukshme të zhvillimit të softuerit të shkathët përfshijnë:
Praktikoni Kontribuesit kryesorë Zhvillimi i drejtuar nga testi i pranimit (ATDD) Ken Pugh Modelimi i shkathët Scott Ambler Testimi i shkathët Lisa Crispin, Janet Gregory Mbështetjet (Produkti dhe Sprinti) Ken Schwaber, Jeff Sutherland Zhvillimi i drejtuar nga sjellja (BDD) Dan North, Liz Keogh Integrimi i vazhdueshëm (CI) Grady Booch Ekipi ndërfunksional Stand-up ditor / Daily Scrum James O Coplien Dizajni i drejtuar nga domeni (DDD) Eric Evans Zhvillimi përsëritës dhe rritës (IID) Programimi në çift Kent Beck Planifikimi i pokerit James Grenning, Mike Cohn Rifaktorimi Martin Fowler Retrospektive Esther Derby, Diana Larsen, Ben Linders, Luis Gonçalves Ngjarjet Scrum (planifikimi i sprintit, rishikimi i sprintit dhe retrospektiva) Ken Schwaber, Jeff Sutherland Specifikimi me shembull Modelimi i drejtuar nga historia Albert Zündorf Zhvillimi i drejtuar nga testi (TDD) Kent Beck Timeboxing Historia e përdoruesit Alistair Cockburn Ndjekja e shpejtësisë

 Zhvillimi i drejtuar nga testi i pranimit 
Zhvillimi i bazuar në testet e pranueshmërisë (ATDD) është një metodologji zhvillimi e bazuar në komunikimin midis klientëve të biznesit, zhvilluesve dhe testuesve.Pugh, Ken (2011). Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration. Addison-Wesley. ISBN 978-0321714084. ATDD përfshin shumë nga praktikat e ngjashme me specifikimin përmes shembujve (SBE),Adzic, Gojko (2009). Bridging the Communication Gap: Specification by Example and Agile Acceptance Testing. Neuri Limited.  
Adzic, Gojko (2011). Specification by Example: How Successful Teams Deliver the Right Software. Manning. ISBN 978-0-321-27865-4. zhvillimin e bazuar në sjellje (BDD),Chelimsky, David; Dave Astels; Zach Dennis; Aslak Hellesøy; Bryan Helmkamp; Dan North. The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends. The Pragmatic Bookshelf. zhvillimin e bazuar në shembuj (EDD)"Example Driven Design". Retrieved 15 April 2013. dhe zhvillimin e mbështetur, i quajtur gjithashtu zhvillimi i bazuar në testet e tregimeve (SDD)."Story Test-Driven Development" (PDF). Retrieved 15 April. Të gjitha këto procese ndihmojnë zhvilluesit dhe testuesit të kuptojnë nevojat e klientëve para implementimit dhe lejojnë klientët të mund të komunikojnë në gjuhën e tyre të domain-it.

Modelimi Agile (AM) është një metodologji për modelimin dhe dokumentimin e sistemeve softuerikë, e bazuar në praktikat më të mira. Ajo është një koleksion vlerash dhe parimesh që mund të aplikohen në një projekt zhvillimi softuerik (agil). Kjo metodologji është më fleksibël se metodat tradicionale të modelimit, duke e bërë atë më të përshtatshme në një mjedis që ndryshon shpejt."Agile Modeling (AM) Home Page: Effective Practices for Modeling and Documentation". Ajo është pjesë e paketës së mjeteve për zhvillimin softuerik agil.

 Testimi i shkathët 
Testimi Agile është një praktikë e testimit të softuerit që ndjek parimet e zhvillimit agil të softuerit. Testimi Agile përfshin të gjithë anëtarët e një ekipi agil të ndërkufizuar, me ekspertizën speciale të kontribuar nga testuesit, për të siguruar dorëzimin e vlerës së biznesit që kërkohet nga klienti në intervale të shpeshta, duke punuar me një ritëm të qëndrueshëm. Specifikimi përmes shembujve përdoret për të kapur shembuj të sjelljeve të dëshiruara dhe të padëshiruara dhe për të udhëhequr kodimin.

Backlogs

Në menaxhimin e projekteve agile, backlog-u i produktit i referohet një liste të renditur sipas prioriteteve të funksionaliteteve që një produkt duhet të përmbushë. Ndonjëherë quhet si një listë për të bërë,Atlassian. "The product backlog: your ultimate to-do list". Atlassian. Retrieved 19 December 2021. dhe konsiderohet si një "objekt" (një formë dokumentimi) brenda kuadrit të zhvillimit softuerik Scrum."What is a Product Backlog?" Scrum.org. Retrieved 19 December 2021. Backlog-u i produktit ka emra të ndryshëm në kuadër të metodologjive të ndryshme të menaxhimit të projekteve, siç janë backlog-u i produktit në Scrum,"Agile Core Practice: Prioritized Requirements". agilemodeling.com. Retrieved 19 December 2021. lista e elementeve të punës në Disciplined Agile,"Agile Core Practice: Prioritized Requirements". agilemodeling.com. Retrieved 19 December 2021.  
"Artifact: Work Items List". www.utm.mx. Retrieved 19 December 2021. dhe pishina e opsioneve në Lean."Agile Core Practice: Prioritized Requirements". agilemodeling.com. Retrieved 19 December 2021. Në kuadrin e Scrum, krijimi dhe mirëmbajtja e vazhdueshme e backlog-ut të produktit është pjesë e përgjegjësisë së pronarit të produktit.

 Zhvillimi i drejtuar nga sjellja 
Zhvillimi i bazuar në sjellje (BDD) përfshin emërtimin e testeve të softuerit duke përdorur gjuhën e domain-it për të përshkruar sjelljen e kodit.

 Integrim i vazhdueshëm 
Integrimi i vazhdueshëm (CI - Continuous Integration) është praktika e integrimit të ndryshimeve të kodit burimor shpesh dhe sigurimi që baza e kodit të integruar të jetë në një gjendje të punueshme.

 Ekipi ndërfunksional 
Një ekip ndër-funksional (XFN), i njohur gjithashtu si ekip multidisiplinar ose interdisiplinar,What is a Cross-functional Team? Definition and meaning. Use of XFN as abbreviation. A leadership blog named XFN. është një grup njerëzish me ekspertizë të ndryshme funksionale që punojnë drejt një qëllimi të përbashkët.Krajewski, L. J., & Ritzman, L. P. (2005). Operations Management: Processes and Value Chains. Pearson Education. Upper Saddle River. Ai mund të përfshijë njerëz nga departamentet e financës, marketingut, operacioneve dhe burimeve njerëzore. Zakonisht, ai përfshin punonjës nga të gjitha nivelet e një organizate. Anëtarët mund të vijnë gjithashtu nga jashtë organizatës (sidomos nga furnizuesit, klientët kyç, ose konsulentët).

 Stand up ditor 
Në literaturë, përdoren terma të ndryshëm për përshtatjen e metodës, si "përshtatja e metodës", "përshtatja e pjesëve të metodës" dhe "inxhinieria e metodës së situatës". Përshtatja e metodës përcaktohet si:

Përshtatshmëria ndaj situatës është një veçori e rëndësishme e metodave të shkathëta, që u lejon ekipeve të zhvillimit të përshtatin metodat e punës sipas nevojave të produkteve individuale, në krahasim me metodat më të orientuara nga plani.  Potencialisht, shumica e metodave të shkathëta mund të jenë të përshtatshme për përshtatjen e metodave,  siç është DSDM e përshtatur në një kontekst CMM .  dhe XP të përshtatura me teknikën e praktikave të përshkrimit të rregullave (RDP). Jo të gjithë mbështetësit e shkathët pajtohen, megjithatë, me Schwaber që vëren "kështu u futëm në telashe në radhë të parë, duke menduar se problemi nuk ishte të kishim një metodologji të përsosur. Përpjekjet [duhet] të përqendrohen në ndryshimet [të nevojshme] në ndërmarrje".   Bas Vodde e përforcoi këtë këndvështrim, duke sugjeruar që ndryshe nga metodologjitë tradicionale, të mëdha që kërkojnë nga ju të zgjidhni dhe zgjidhni elementë, Scrum ofron bazat mbi të cilat shtoni elementë shtesë për të lokalizuar dhe kontekstualizuar përdorimin e tij.  Përgjithësisht, praktikuesit nuk i përdorin metodat e zhvillimit të sistemeve, ose metodat e shkathëta specifikisht, në përputhje me udhëzimet e librit, shpesh duke zgjedhur të lënë jashtë ose të përshtatin disa nga praktikat e një metode për të krijuar një metodë të brendshme. 

Në praktikë, metodat mund të përshtaten duke përdorur mjete të ndryshme. Gjuhët gjenerike të modelimit të proceseve, si gjuha e unifikuar e modelimit, mund të përdoren për të përshtatur metodat e zhvillimit të softuerit. Sidoqoftë, ekzistojnë gjithashtu mjete të dedikuara për inxhinierinë e metodave, siç është Koncepti iThelbit dhe Inxhinierisë Softuerike të SEMAT . 

 Në shkallë të gjerë, në det të hapur dhe të shpërndarë 
Zhvillimi i softuerit të shkathët është parë gjerësisht si shumë i përshtatshëm për disa lloje mjedisesh, duke përfshirë grupe të specializuara të zhvilluesve që punojnë në projekte të reja,  dhe sfidat dhe kufizimet që hasen në adoptimin e metodave të zhvillimit të softuerit të shkathët në një organizatë të madhe, me infrastrukturë të trashëguar, janë të dokumentuara dhe të kuptuara mirë.

Si përgjigje, një sërë strategjish dhe modelesh ka përparuar për të tejkaluar sfidat me përpjekje zhvillimi në shkallë të gjerë (>20 zhvillues)   ose ekipe zhvillimi të shpërndara (jo të vendosura),  mes sfidave të tjera, tani ka disa struktura të njohura që synojnë të zbusin ose shmangin këto sfida.

Ka shumë mendime të kundërta nëse të gjitha këto janë efektive apo me të vërtetë përshtaten me përkufizimin e zhvillimit të shkathët, dhe kjo mbetet një fushë kërkimore aktive dhe e vazhdueshme.  

Kur zhvillimi i shkathët i softuerit zbatohet në një ambient të shpërndarë (me ekipe të shpërndara nëpër vende të shumta biznesi), ai zakonisht quhet zhvillim i shkathët i softuerit të shpërndarë. Qëllimi është të shfrytëzohen përfitimet unike të ofruara nga çdo qasje. Zhvillimi i shpërndarë i mundëson organizatave të ndërtojnë softuer duke ngritur në mënyrë strategjike ekipe në pjesë të ndryshme të globit, duke ndërtuar praktikisht softuer gjatë gjithë orarit (më shpesh i referuar si modeli ndjekës i diellit). Nga ana tjetër, zhvillimi i shkathët siguron rritje të dukshmërisë, reagime të vazhdueshme dhe më shumë fleksibilitet kur iu përgjigjet ndryshimeve.

 Domenet e rregulluara 
Metodat e zhvillimit të softuerit të shkathët fillimisht janë konsideruar si më të përshtatshmet për zhvillime jo kritike të produkteve, duke përjashtuar kështu përdorimin në fusha të rregulluara si pajisjet mjekësore, farmaceutike, financiare, sistemet bërthamore, automobilat dhe sektorët e avionikës, etj.Sidoqoftë, gjatë viteve të fundit, ka pasur disa iniciativa për përshtatjen e metodave të shkathëta për këto fusha.    

Ekzistojnë shumë standarde që mund të zbatohen në fusha të rregulluara, siç janë: ISO 26262, ISO 9000, ISO 9001 dhe ISO/IEC 15504 . Një numër shqetësimesh kryesore janë të një rëndësie të veçantë në fushat e rregulluara:

 Sigurimi i cilësisë (QA): Menaxhimi sistematik dhe i natyrshëm i cilësisë që mbështet një proces të kontrolluar profesional dhe besueshmërinë dhe korrektësinë e produktit.
 Siguria dhe siguria: Planifikimi formal dhe menaxhimi i rrezikut për të ulur kërcënimet ndaj sigurisë  për përdoruesit dhe për të mbrojtur në mënyrë të sigurt përdoruesit nga keqpërdorimi i paqëllimshëm dhe me qëllim të keq.
 Gjurmueshmëria : Dokumentacioni që ofron dëshmi të auditueshme të përputhshmërisë rregullatore dhe lehtëson gjurmueshmërinë dhe hetimin e problemeve.
 Verifikimi dhe vlefshmëria (V&V): pjesëmarrja e këtyre aktiviteteve gjatë gjithë procesit të zhvillimit të softuerit (p.sh. specifikimet e kërkesave të përdoruesit, specifikimet funksionale, specifikimet e dizajnit, rishikimi i kodit, testet e njësisë, testet e integrimit, testet e sistemit).

 Përvoja dhe adoptimi 
Megjithëse praktikat e zhvillimit të softuerit të shkathët mund të përdoren me çdo paradigmë ose gjuhë programimi në praktikë, ato fillimisht ishin të lidhura ngushtë me mjedise të orientuara nga objekti si Smalltalk, Lisp dhe më vonë Java, C#. Përdoruesit fillestarë të metodave të shkathëta ishin zakonisht ekipe të vogla dhe të mesme që punonin në sisteme të paprecedentë me kërkesa që ishin të vështira për t'u finalizuar dhe me gjasë që të ndryshonin gjatë sistemit po zhvillohej. 

 Matja e shkathtësisë 

 Vlerësimet e brendshme 
Indeksi i matjes së shkathtësisë vlerëson, ndër të tjera, zhvillimet në raport me pesë aspekte të rëndësishme të zhvillimit të produktit: kohëzgjatjen, rrezikun, risinë, përpjekjet dhe ndërveprimin.  Teknika të tjera mbështetet në qëllime të matshme dhe një studim sugjeron që shpejtësia mund të përdoret si një metrikë e shkathtësisë. Ekzistojnë gjithashtu vetë-vlerësime të shkathëta për të përcaktuar nëse një grup po përdor praktika të shkathët të zhvillimit të softuerit (testi i Nokia-s, testi Karlskrona, testi me 42 pikë).

 Sondazhet publike 
Një nga studimet i mëparshëm që raportoi fitime në cilësi, produktivitet dhe kënaqësi të biznesit duke përdorur metoda të shkathëta të zhvillimit të softuerit ishte një sondazh i realizuar nga Shine Technologies nga nëntori 2002 deri në janar 2003.

Një sondazh i ngjashëm, State of Agile, zhvillohet çdo vit që nga viti 2006 dhe përfshin mijëra pjesëmarrës nga komuniteti global i zhvilluesve të softuerit. Ky sondazh monitoron tendencat në lidhje me përfitimet e perceptuara të shkathtësisë, mësimet e nxjerra dhe praktikat më të mira. Çdo vit, sondazhi raporton një rritje të numrit të atyre që thonë se zhvillimi i shkathët i ndihmon ata të dorëzojnë softuer më shpejt, përmirëson aftësinë për të menaxhuar ndryshimet në prioritetet e klientëve dhe rrit produktivitetin. Sondazhet gjithashtu kanë treguar vazhdimisht rezultate më të mira me metodat e zhvillimit të produktit të shkathët në krahasim me menaxhimin klasik të projektit. Në ekuilibër, ka raporte që disa mendojnë se metodat e zhvillimit të shkathët janë ende shumë të reja për të mundësuar kërkime të gjera akademike të suksesit të tyre.

 Grackat e zakonshme të zhvillimit të softuerit të shkathët 
Organizatat dhe ekipet që adoptojnë zhvillimin e softuerit të shkathët shpesh hasin vështirësi kur kalojnë nga metodat tradicionale, si zhvillimi në ujëvarë, në procese më fleksibël, ku ekipet duhet të ndjekin një qasje të shkathët që mund të jetë shumë më e detajuar dhe e ndërlikuar. Këto shpesh quhen antimodele të shkathëta ose më shpesh erëra të shkathëta . Më poshtë janë disa shembuj të zakonshëm:

 Mungesa e dizajnit të përgjithshëm të produktit 
Një nga qëllimet kryesore të zhvillimit të softuerit të shkathët është të fokusohet më shumë në krijimin e softuerit funksional dhe më pak në krijimin e dokumentacionit të detajuar. Kjo është në kundërshtim me modelet tradicionale si zhvillimi në ujëvarë, ku procesi është shumë i kontrolluar dhe çdo ndryshim i vogël kërkon përditësime të mëdha të dokumentacionit mbështetës. Megjithatë, kjo nuk do të thotë që nuk duhet të bëhet analiza apo dizajni. Moskryerja e një analize të thelluar mund të çojë në një zhvillim të shpejtë fillestar, por më pas të krijojë nevojën për ripunim të rëndësishëm kur sistemi zgjerohet. Një nga veçoritë e rëndësishme të zhvillimit të softuerit të shkathët është përsëritshmëria, që do të thotë se dizajni evoluon gjatë zhvillimit të softuerit. Kjo i mundëson ekipeve të zbulojnë mundësi për ripërdorim dhe të shmangin zgjidhjet që mund të krijojnë probleme më vonë.

 Shtimi i tregimeve në një përsëritje në vazhdim 
Në zhvillimin e softuerit të shkathët, tregimet (të ngjashme me përshkrimet e rasteve të përdorimit ) zakonisht përdoren për të përcaktuar kërkesat dhe një përsëritje është një periudhë e shkurtër kohore gjatë së cilës ekipi fokusohet  në  qëllime specifike. Shtimi i tregimeve në një përsëritje në vazhdim është e dëmshme për një rrjedhë të qetë  të punës. Këto duhet t'i shtohen sasisë së mbetur të produktit dhe t'i jepen përparësi për një përsëritje të mëvonshme ose në raste të rralla përsëritja mund të anulohet.

Kjo nuk do të thotë që një histori nuk mund të zgjerohet. Ekipet shpesh duhet të përballen me informacion të ri, i cili mund të krijojë detyra shtesë për një histori. Nëse ky informacion i ri pengon përfundimin e historisë brenda një përsëritjeje, ai duhet të shtyhet për një përsëritje të mëvonshme. Megjithatë, ky informacion i ri duhet të marrë përparësi ndaj të gjitha histori të tjera të mbetura, pasi mund të ketë ndryshuar prioritetin e fillestar të historisë, duke e bërë atë më të rëndësishme për zhvillimin e mëtejshëm.

 Mungesa e mbështetjes nga sponsorët 
Zhvillimi i shkathët i softuerit shpesh zbatohet nga ekipet e zhvillimit të softuerit në organizata, që synojnë optimizimin e proceseve të tyre të zhvillimit dhe sigurinë e stabilitetit në ciklin jetësor të zhvillimit të softuerit. Pa mbështetje nga sponsorët, këto ekipe mund të hasin vështirësi dhe rezistencë nga partnerët e biznesit, ekipet e tjera të zhvillimit dhe menaxhmenti. Po ashtu, ato mund të vuajnë nga mungesa e financimit dhe burimeve të nevojshme për të realizuar qëllimet e përcaktuara. Kjo rrit rastin e dështimit.

 Trajnim i pamjaftueshëm 
Një sondazh i realizuar nga VersionOne zbuloi se të anketuarit theksuan trajnimin e pamjaftueshëm si shkakun më të rëndësishëm për zbatimin e dështuar të shkathët Ekipet mund të mendojnë se zhvillimi i shkathët është më i thjeshtë dhe më i shpejtë se metodat si ujëvara, duke menduar se nuk ka rregulla të qarta. Megjithatë, zhvillimi i shkathët ka parime dhe praktika të qarta që udhëhojnë ekipet për të arritur efikasitet dhe cilësi, duke u fokusuar në fleksibilitet dhe bashkëpunim.

 Roli i pronarit të produktit nuk është plotësuar siç duhet 
Pronari i produktit ka përgjegjësinë për të përfaqësuar  biznesin në aktivitetin e zhvillimit dhe shpesh është roli më kërkues.

Një gabim i zakonshëm është që roli i pronarit të produktit të mbulohet nga dikush nga ekipi i zhvillimit. Kjo e bën ekipin të marrë vendime për prioritizimin pa pasur reagime të drejtpërdrejta nga biznesi, duke i detyruar ata të zgjidhin çështje biznesi brenda ekipit ose të vonojnë punën për të marrë drejtim nga jashtë. Kjo shpesh çon në shpërqendrim dhe dëmton bashkëpunimin.

 Skuadrat nuk janë të fokusuara 
Zhvillimi i softuerit të shkathët kërkon që ekipet të angazhohen plotësisht për produktin dhe të përqendrohen vetëm në atë punë. Megjithatë, anëtarët e ekipit që duket se kanë kapacitet të lirë shpesh pritet të marrin përsipër detyra të tjera, duke bërë të vështirë për ta që të kontribuojnë në përfundimin e punës për të cilën ekipi ishte angazhuar.

 Përgatitje/planifikim i tepruar 
Ekipet mund të bien në grackën e shpenzimit të tepërt të kohës në përgatitje ose planifikim. Ky është një gabim i zakonshëm për ekipet që nuk janë mjaft të njohura me zhvillimin e softuerit të shkathët, ku ata ndihen të detyruar të kenë një kuptim dhe specifikim të plotë të të gjitha historive. Në të vërtetë, ekipet duhet të jenë të gatshme të përparojnë vetëm me ato histori për të cilat kanë besim dhe të vazhdojnë të zbulojnë dhe përgatisin punën për përsëritjet e ardhshme, duke i konsideruar këto si përpunim ose rregullim të mbeturinave.

 Zgjidhja e problemeve në standupin e përditshëm 
Një qëndrim i përditshëm duhet të jetë një takim i fokusuar dhe në kohë ku të gjithë anëtarët e ekipit ndajnë informacion. Nëse ndodhin probleme, shpesh mund të kërkojnë vetëm përfshirjen e disa anëtarëve të ekipit dhe mund të mos jetë përdorimi më efikas i kohës së të gjithë grupit. Nëse ekipi fillon të zhytet në zgjidhjen e këtyre problemeve gjatë aktiviteteve të përditshme, është më mirë t'i shtyhet zgjidhja për një moment të dytë, kur një nën-ekip mund të diskutojë dhe të merret me to, zakonisht menjëherë pas përfundimit të punëve të planifikuara.

 Caktimi i detyrave 
Një nga përfitimet kryesore të zhvillimit të softuerit të shkathët është fuqizimi i ekipit për të marrë vendime, duke qenë më afër problemit dhe situatës. Për më tepër, ekipet duhet të bëjnë zgjedhje sa më afër momentit të zbatimit, për të përdorur informacionin më të saktë dhe të përditësuar për vendimmarrjen. Nëse detyrat u caktohen anëtarëve të ekipit nga jashtë ose shumë herët në proces, kjo mund të minojë përfitimet e vendimmarrjes lokale dhe të shpejtë, duke e bërë procesin më të ngadalshëm dhe më pak efikas.

Duke u caktuar detyra të caktuara, anëtarëve të ekipit u vihet një kufizim i roleve (p.sh., anëtari i ekipit A duhet të kryejë gjithmonë punën e bazës së të dhënave), duke i kufizuar mundësitë për trajnime dhe zhvillim të mëtejshëm ndërmjet tyre. Kjo mund të pengojë fleksibilitetin dhe mundësitë për t’u rritur si një ekip, duke ngushtuar mundësitë për ndihmën e ndërsjellë dhe krijimin e njohurive të përbashkëta. Vetë anëtarët e ekipit mund të zgjedhin të marrin përsipër detyra që zgjerojnë aftësitë e tyre dhe ofrojnë mundësi ndër-trajnimi.

 Scrum master si kontribues 
Në kornizën Scrum, roli i masterit të Scrum është i fokusuar në sigurinë që procesi Scrum ndiqet në mënyrë të saktë dhe që ekipi i Scrum ka mbështetje për të përfunduar detyrat e tij. Një gabim i zakonshëm është që masteri i Scrum të përfshihet drejtpërdrejt në zhvillimin e produktit, duke kontribuar si një zhvillues. Edhe pse kjo nuk është ndaluar shprehimisht nga korniza Scrum, roli kryesor i masterit të Scrum është të sigurojë që ekipi të ndiqet procesin dhe të ndihmojë në heqjen e pengesave, dhe jo të marrë pjesë aktivisht në krijimin e produktit. Kjo i mundëson masterit të Scrum të fokusohet në lehtësimin e procesit dhe udhëheqjen e ekipit drejt suksesit.

Një master scrum, si një ekspert i multitasking-ut, shpesh përballet me ndërrime të shpeshta të kontekstit, gjë që mund ta bëjë sfiduese ruajtjen e produktivitetit. Për më tepër, duke qenë përgjegjës për heqjen e pengesave që pengojnë ekipin të përparojë, përfitimi nga përparimi në detyrat individuale mund të mos ketë të njëjtën peshë me vonesat e shkaktuara nga mungesa e burimeve apo kapacitetit për të adresuar ato pengesa.

 Mungesa e automatizimit të testit 
Për shkak të natyrës përsëritëse të metodologjisë Agile, shpesh kërkohen cikle të shumta testimi. Automatizimi i testimit luan një rol kyç në zvogëlimin e ndikimit të testeve të përsëritura, si ato të njësisë, integrimit dhe regresionit, duke u mundësuar zhvilluesve dhe testuesve të përqendrohen në detyra që ofrojnë më shumë vlerë.

Automatizimi i testimit mbështet gjithashtu rifaktorimin e vazhdueshëm, i cili është thelbësor në zhvillimin e përsëritur të softuerit. Ai i mundëson zhvilluesit të ekzekutojë shpejt teste për të konfirmuar se rifaktorimi nuk ka ndikuar në funksionalitetin e aplikacionit, duke zvogëluar ngarkesën e punës dhe rritur besimin se procesi i pastrimit nuk ka sjellë defekte të reja.

 Lejimi i rritjes së borxhit teknik 
Përqendrimi i tepërt në zhvillimin e funksionaliteteve të reja mund të çojë në akumulimin e borxhit teknik. Për të shmangur këtë, është e rëndësishme që ekipi të planifikojë kohë për të adresuar dhe rifaktoruar defektet ekzistuese. Borxhi teknik dëmton aftësinë për të planifikuar me saktësi, duke shtuar punën e paplanifikuar, pasi problemet në prodhim shpesh shpërqendrojnë ekipin dhe ngadalësojnë përparimin e mëtejshëm.

Ndërsa sistemi zhvillohet, është e rëndësishme të rifaktohet . Me kalimin e kohës, mungesa e mirëmbaajtjes së vazhdueshme rezulton në një rritje të numrit të defekteve dhe kostove të zhvillimit, duke ndikuar negativisht në efikasitetin dhe cilësinë e përgjithshme të produktit.

 Përpjekja për të marrë shumë në një përsëritje 
Një keqkuptim i zakonshëm është se zhvillimi i softuerit të shkathët lejon ndryshime të vazhdueshme pa kufizime. Megjithatë, backlog-u i përsëritjes përfaqëson një marrëveshje të qartë për punën që duhet të përfundohet brenda një përsëritjeje, duke ofruar një strukturë dhe fokus për ekipin gjatë asaj periudhe. Posedimi i shumë punëve të papërfunduara (WIP) rezulton në paefikasitet siç janë kalimet e kontekstit dhe formimi i grumbujve.  Ekipi duhet të shmangë ndjenjën e presionit për të marrë punë shtesë.

 Koha, burimet, shtrirja dhe cilësia e fiksuar 
Zhvillimi i softuerit të shkathët rregullon paraprakisht kohëzgjatjen e përsëritjes, cilësinë dhe zakonisht burimet, edhe pse ruajtja e burimeve fikse mund të jetë sfiduese kur zhvilluesit ndërpriten shpesh për të trajtuar incidente të prodhimit. Ndërkohë, qëllimi mbetet fleksibël dhe i ndryshueshëm. Klienti ose pronari i produktit shpesh kërkon një afat të fiksuar për një përsëritje. Megjithatë, ekipet duhet të shmangin angazhimin për një kohë, burime dhe shtrirje të mbyllur njëkohësisht (të njohur si trekëndëshi i menaxhimit të projektit). Përpjekjet për të zgjeruar shtrirjen pa rritur burimet ose kohën në mënyrë proporcionale mund të çojnë në ulje të cilësisë.

 Djegia e zhvilluesve 
Për shkak të ritmit të shpejtë dhe natyrës së vazhdueshme të praktikave të shkathëta, ekziston një rrezik i shtuar i lodhjes dhe djegies (burnout) midis anëtarëve të ekipit të zhvillimit. Presioni për të përmbushur afatet dhe për t’u përshtatur vazhdimisht me ndryshimet mund të ndikojë negativisht në mirëqenien dhe performancën e ekipit.

 Menaxhimi i shkathët 
Menaxhimi i shkathët i projektit është një proces i përsëritur zhvillimi, ku reagimet mblidhen vazhdimisht nga përdoruesit dhe palët e interesuara për të krijuar përvojën e duhur të përdoruesit. Metoda të ndryshme mund të përdoren për të kryer një proces të shkathët, këto përfshijnë scrum, programim ekstrem, lean dhe kanban . Termi "menaxhim i shkathët" zbatohet për një metodë përsëritëse, e cila përqendrohet në menaxhimin e projektimit dhe ndërtimit të aktiviteteve të inxhinierisë, teknologjisë së informacionit, dhe fushave të tjera të biznesit. Ky qasje synon ofrimin e zhvillimit të produkteve ose shërbimeve të reja në mënyrë fleksibile dhe ndërvepruese, duke u bazuar në parimet e shprehura në Manifestin për Zhvillimin e Softuerit të Shkathët. Ajo thekson vlerësimin e reagimeve të vazhdueshme, bashkëpunimin e ngushtë të ekipit, dhe përshtatjen e shpejtë ndaj ndryshimeve për të krijuar produkte që plotësojnë nevojat e përdoruesve. 

Metrikat e shkathëta të menaxhimit ndihmojnë në reduktimin e konfuzionit, identifikimin e pikave të dobëta dhe matjen e performancës. Shkathtësia e zinxhirit të furnizimit lejon përshtatje të shpejtë me variacionet e ofertës dhe kërkesës. Shkathtësia strategjike është aftësia për të ndryshuar drejtimin ndërsa mjedisi evoluon, duke identifikuar dhe alokuar burimet për t'u adaptuar me ndryshimet e jashtme.

Teknikat Agile X mund të quhen gjithashtu menaxhimi ekstrem i projektit . Është një variant i ciklit jetësor iterativ  ku dorëzimet dorëzohen në faza. Dallimi kryesor midis zhvillimit të shkathët dhe atij iterativ është se metodat e shkathëta plotësojnë pjesë të vogla të dorëzuesve në çdo cikël shpërndarjeje (përsëritje), ndërsa metodat përsëritëse evoluojnë të gjithë grupin e dërgesave me kalimin e kohës, duke i përfunduar ato afër fundit të projektit.Si metodat përsëritëse, ashtu edhe ato të shkathëta, u zhvilluan si përgjigje ndaj sfidave që u shfaqën gjatë zhvillimit të modeleve të organizimit të projekteve më lineare. Për shembull, ndërsa projektet teknologjike bëhen gjithnjë e më komplekse, përdoruesit përfundimtarë shpesh hasin vështirësi në përcaktimin e kërkesave afatgjata pa pasur mundësinë të shohin prototipe që zhvillohen gradualisht. Projektet që zhvillohen në cikle të përsëritura mund të mbledhin vazhdimisht reagime, duke ndihmuar në përmirësimin dhe përsosjen e këtyre kërkesave.

Menaxhimi i shkathët ofron gjithashtu një kornizë të thjeshtë që promovon këmbimi i mendimeve mbi përparimin e kaluar midis anëtarëve të ekipit .Ekipet që përdornin metodën tradicionale të planifikimit të ujëvarës dhe kaluan në mënyrën e shkathët të zhvillimit shpesh kalojnë një fazë transformimi dhe zakonisht kërkojnë mbështetje nga trajnerë të shkathët, të cilët i ndihmojnë në udhëheqjen e ekipit drejt një kalimi më të lehtë. Zakonisht ekzistojnë dy stile trajnimi të shkathët: trajnimi i bazuar në shtytje dhe i bazuar në tërheqje. Në këtë kuadër, një "sistem shtytjeje" mund të nënkuptojë një vlerësim paraprak të detyrave që mund të përshtaten në një sprint (punë shtytjeje), si në metodën tradicionale të Scrum, ndërsa një "sistem tërheqës" mund të nënkuptojë një mjedis ku detyrat kryhen vetëm kur kapaciteti është i disponueshëm . Qasjet e menaxhimit të shkathët janë përdorur gjithashtu dhe janë adoptimi në sektorët e biznesit dhe administratën shtetërore. Për shembull, brenda qeverisë federale të Shteteve të Bashkuara, Agjencia e Shteteve të Bashkuara për Zhvillim Ndërkombëtar (USAID) po përdor një qasje bashkëpunuese të menaxhimit të projektit që fokusohet në përfshirjen e strategjive të bashkëpunimit, të mësuarit dhe përshtatjes (CLA) për të përsëritur dhe përshtatur programimin. 

Metodat e shkathëta përfshihen në Udhëzuesin për Trupin e Njohurive të Menaxhimit të Projektit ( PMBOK Guide Edition 6 ) nën përkufizimin e ciklit jetësor të zhvillimit të produktit :

Brenda ciklit të jetës së një projekti, zakonisht ka një ose më shumë faza që lidhen me zhvillimin e produktit, shërbimit, ose rezultatit. Këto quhen cikle zhvillimi (...) Ciklet adaptuese janë të tilla që përshtaten, janë të përsëritshme ose të incremental. Fusha e hollësishme caktohet dhe miratohet para fillimit të një iteracioni. Ciklet adaptuese quhen gjithashtu cikle agile ose cikle të drejtuara nga ndryshimi.
djathtas|parapamje| Konferenca Agile Brazil 2014
Sipas Jean-Loup Richet (bashkëpunëtor kërkimor në Institutin për Inovacionin dhe Shërbimet Strategjike ESSEC ) "kjo mënyrë veprimi mund të aplikohet në mënyrë efektive për produktet jo-softuerike dhe për menaxhimin e projekteve në përgjithësi, veçanërisht në fushat e inovacionit dhe pasigurisë".Rezultati është një produkt ose projekt që i përgjigjet më mirë nevojave të aktuale të klientëve, duke u ofruar atyre me kosto më të ulëta, humbje më të vogla dhe më pak kohë, duke mundësuar kështu që kompanitë të arrijnë fitime më shpejt se me qasjet tradicionale . 

Teknikat e krijimit të softuerit të shkathët janë zbatuar gjerësisht për zhvillimin e produkteve softuerike dhe disa prej tyre përdorin veçori të caktuara të softuerit, siç janë teknologjitë e objekteve . Megjithatë, këto teknika mund të përdoren gjithashtu në krijimin e produkteve jo-softuerike, si kompjuterët, pajisjet mjekësore, ushqimi, veshmbathja dhe muzika. Disa nga parimet më të gjera të zhvillimit të softuerit të shkathët kanë gjetur aplikim edhe në menaxhimin e përgjithshëm (p.sh., strategjia, qeverisja, rreziku, financa) nën termat shkathtësia e biznesit ose menaxhim i shkathët i biznesit.Metodologjitë e zhvillimit të softuerit të shkathët janë miratuar gjithashtu për t'u përdorur në procesin e inxhinierisë mësimore, një proces i përsëritur dhe i mbështetur në të dhëna që përdor shkencat e të mësuarit, dizajnin e fokusuar te njeriu dhe vendimmarrjen e bazuar në të dhëna për të udhëhequr nxënësit dhe zhvillimin e aftësive të tyre.

Paradigmat e krijimit të softuerit të shkathët mund të aplikohen në fusha të tjera të jetës si rritja e fëmijëve.Suksesi i tij në zhvillimin e fëmijëve mund të mbështetet në disa parime kyçe të menaxhimit: komunikimi, fleksibiliteti dhe ndërgjegjësimi. Në një fjalim TED, Bruce Feiler shpjegoi se si ai i aplikoi parimet thelbësore të shkathësisë për menaxhimin e familjes dhe rritjen e fëmijëve."Agile programming – for your family".

 Kritika 
Metodat e shkathëta janë cituar si potencialisht  jo të suksesshme në organizata të mëdha dhe lloje të caktuara zhvillimi. Shumë organizata besojnë se metodologjitë e zhvillimit të softuerit të shkathët janë shumë ekstreme dhe miratojnë një qasje hibride që përzien elementet e zhvillimit të softuerit të shkathët dhe qasjet e drejtuara nga plani. Disa metoda, si Metoda Dinamike e Zhvillimit të Sistemeve (DSDM), përpiqen ta arrijnë këtë në një mënyrë të disiplinuar, pa komprometuar parimet thelbësore.

Adoptimi në rritje i praktikave të shkathëta është vlerësuar negativisht gjithashtu si një modë menaxhimi që thjesht përshkruan praktikat e mira ekzistuese nën terminologjinë e re, promovon një mendim të vetëm për strategjitë e zhvillimit dhe thekson gabimisht metodën mbi rezultatet.

Alistair Cockburn drejtoi një festë të 10-vjetorit të Manifestit për Zhvillimin e Softuerit të shkathët në Snowbird, Jutah më 12 shkurt 2011, duke grumbulluar rreth 30 persona që ishin përfshirë në takimin fillestar dhe që atëherë. U krijua një listë prej rreth 20 "elefantësh në dhomë" (temat/çështjet e padiskutueshme të shkathësisë), duke përfshirë aspekte si aleancat, dështimet dhe kufizimet e praktikave dhe kontekstit të zhvillimit të softuerit të shkathët. Shkaqet e mundshme për këto probleme përfshijnë interesat komerciale, dekontekstualizimin, mungesën e një mënyre të qartë për të arritur përparim pas dështimeve, dëshmitë e kufizuara objektive, paragjykimet njohëse dhe gabimet e arsyetimit, si dhe ndikimet e politikës dhe kulturës. Siç shkroi Philippe Kruchten :

Lëvizja Agile, në disa aspekte, është si një adoleshent: shumë i vetëdijshëm për veten, duke kontrolluar vazhdimisht pamjen e tij në pasqyrë, duke pranuar pak kritika, duke qenë vetëm i interesuar për shoqërinë me të njëjtët të rinj, duke refuzuar totalisht çdo mençuri të së kaluarës vetëm sepse vjen nga e kaluara, duke adoptuar trende dhe terminologji të reja, shpesh herë kokëfortë dhe arrogant. Por nuk kam dyshime se do të rritet më tej, do të bëhet më i hapur ndaj botës së jashtme, më reflektues dhe, për pasojë, më efektiv.

--Philippe KruchtenKrajewski, L. J., & Ritzman, L. P. (2005). Operations Management: Processes and Value Chains. Pearson Education. Upper Saddle River.

"Manifesti" mund të ketë pasur një pasoj negativ në menaxhimin dhe drejtimin e arsimit të lartë,ku u rekomandua administratorëve që proceset tradicionale më të ngadalta dhe debatuese të zëvendësohen me ato më "të shkathëta". Koncepti rrallë gjente pranim në fakultetin e universitetit. 

Një tjetër kritikë është se në shumë mënyra, menaxhimi i shkathët dhe praktikat tradicionale të menaxhimit përfundojnë në kundërshtim me njëra-tjetrën. Një kritikë e zakonshme ndaj kësaj praktike është se koha e shpenzuar për të mësuar dhe implementuar metodat e reja është shumë e kushtueshme, pavarësisht përfitimeve të mundshme. Kalimi nga menaxhimi tradicional në menaxhimin agil kërkon angazhim të plotë ndaj shkathtësisë dhe një përkushtim të palëkundur nga të gjithë anëtarët e organizatës për të realizuar procesin. Çështje si rezultatet e pabarabarta në nivel organizativ, ndryshime të shumta që ndikojnë aftësinë e punonjësve për t'u adaptuar, ose mungesa e sigurisë përfundimtare pas transformimit janë disa nga shqetësimet kryesore. 

 Shihni gjithashtu 

 Automatizimi i shkathët
 Ekip ndërfunksional
 Scrum (zhvillimi i softuerit)
 Dështoni shpejt (biznes), një lëndë e lidhur në menaxhimin e biznesit
 Kanban
 Udhëheqje e shkathët
 Kontratat e shkathëta
 Procesi racional i unifikuar

 Referime 

[[Kategoria:Faqe me përkthime të pashqyrtuara]]

Kategoria:Zhvillim programi kompjuterik
Kategoria:Inxhinieri kompjuterike