Agiilne arendus

Agiilne arendus (inglise keeles agile devemoplement) on tarkvaraarenduse metoodika, mis rõhutab kiiret ja paindlikku lähenemist tarkvara loomisele, mis võimaldab meeskonnal reageerida muutuvatele vajadustele ja keskkonnale. Selle metoodika põhieesmärk on pakkuda väärtust tarkvaratoodete arendamise kaudu, keskendudes samal ajal inimestele, koostööle, iteratsioonidele ja pidevale paranemisele. Agiilne arendus erineb traditsioonilisest tarkvaraarendusest, kus projekti kavandamine ja täitmine on pikaajaline ja lineaarne protsess. Agiilses arenduses on tarkvaraarendus tsükliline, mis tähendab, et tarkvaraarendusprotsess jagatakse lühikesteks iteratsioonideks, mida nimetatakse sprintideks. Iga sprint keskendub konkreetsele funktsioonile või väärtusele, mis on täielikult rakendatud ja testitud, enne kui järgmine sprint algab . Agiilse arenduse põhimõtted põhinevad individuaalsete inimeste ja koostöö väärtustamisel rohkem kui protsesside ja tööriistade kasutamisel. Metoodika rõhutab, et meeskonnaliikmed peavad olema omavahel tihedas suhtluses, et lahendada probleeme, koostööd teha ja oma eesmärke täita . Kuigi agiilne arendus on tuntud peamiselt tarkvaraarenduse kontekstis, kasutatakse seda metoodikat ka projekteerimisel, turunduses, personalijuhtimises ja paljudes muudes valdkondades, kus paindlik ja kiire protsess on oluline . Agiilse arenduse ajalugu ulatub tagasi 1950. aastatesse, mil Herbert A. Simon rääkis otsuste langetamise protsessist, mis toimub lühikeste tsüklitena. Sarnased kontseptsioonid arendati välja ka 1970ndatel, kui esimest korda kasutati iteratiivseid protsesse tarkvaraarenduses. 1990ndatel arendati välja mitmed tarkvaraarenduse meetodid, mis panid aluse agiilsele arendusele. Üks selline meetod oli Scrum, mille arendasid välja Jeff Sutherland ja Ken Schwaber. Scrum keskendus väikese meeskonna tööle, kes töötasid sprintide kaupa, et saavutada eesmärgid ja tuua tarkvaratooted kiiremini turule. Agiilne arendus kui terviklik metoodika võeti kasutusele 2001. aastal "Manifesto for Agile Software Development" raames. Selle dokumendi koostasid 17 tarkvaraarenduse professionaali, sealhulgas Kent Beck, Ward Cunningham ja Martin Fowler. Agiilne arendus on arenenud tarkvaraarenduse metoodika, mis rõhutab kiiret ja paindlikku lähenemist tarkvara loomisele. Sellega saavad meeskonnad reageerida muutuvatele vajadustele ja keskkonnale. Selle metoodika põhieesmärk on pakkuda väärtust tarkvaratoodete arendamise kaudu, keskendudes samal ajal inimestele, koostööle, iteratsioonidele ja pidevale paranemisele. Agiilne arendus keskendub peamiselt tarkvaraarenduse protsessi kiirele ja paindlikule lähenemisele, et tagada kiirendatud tarkvaraarendus tsüklid ning tarkvaratoodete kvaliteet ja väärtus kliendile. Selle saavutamiseks on agiilse arenduse metoodikal mitmeid põhimõtteid ja filosoofiaid, mis juhendavad tarkvaraarendajaid kogu arendusprotsessi vältel. Agiilne arendus rõhutab inimeste vahelist suhtlemist ja koostööd. See tähendab, et meeskonnaliikmete vahel peab olema avatud ja aus suhtlus, et tagada kõigi ideede kuulamine ja arvestamine. Inimeste suhtlemine on oluline ka seetõttu, et see aitab mõista kliendi vajadusi ja ootusi ning hõlbustab seega tarkvaratoodete arendamist vastavalt nende nõuetele. Agiilne arendus rõhutab pidevat paranemist (inglise keeles "continuous improvement"). See tähendab, et meeskond peab pidevalt hindama oma tööd ja protsesse, et määratleda valdkonnad, kus saaks paremaks muutuda. Pidev paranemine võib hõlmata protsesside lihtsustamist, uute tööriistade või tehnoloogiate kasutuselevõttu või muudatusi meeskonna struktuuris. Agiilne arendus kasutab iteratiivset protsessi, kus tarkvaraarendajad töötavad lühikeste tsüklitena, mida nimetatakse sprintideks. Iga sprint keskendub konkreetsetele ülesannetele või funktsioonidele, mis tuleb lõpule viia sprinti jooksul. See võimaldab meeskonnal kiiresti kohanduda muutuvatele vajadustele ja vähendab riske arendusprotsessis. Scrum on üks populaarsemaid agiilse arenduse meetodeid, mille eesmärk on suurendada meeskonna tootlikkust ja paindlikkust. Scrumi meetodit kasutatakse tavaliselt suuremate tarkvaraprojektide jaoks, mis nõuavad kiiret reageerimist muutuvatele vajadustele ja nõuetele. Scrumi protsessi raamistik koosneb kolmest peamisest rollist: toote omanik, arendusmeeskond ja scrum master. Toote omanik vastutab toote eest ja selle määratlemise eest, mida arendusmeeskond peab looma. Arendusmeeskond vastutab tarkvara loomise eest vastavalt toote omaniku nõudmistele ja juhistele. Scrum master aga aitab juhtida scrumi protsessi, tagades, et kõik rollid ja vastutused on selgelt määratletud ning et meeskond saavutab oma eesmärgid. Scrumi meetod on jagatud sprintideks, millest igaüks kestab tavaliselt kaks kuni neli nädalat. Iga sprint algab sprinti planeerimise koosolekuga, mille käigus toote omanik selgitab, mida meeskond peab sprinti jooksul saavutama. Arendusmeeskond valib seejärel sprinti jaoks sobivad ülesanded ja koostab plaani nende lõpetamiseks. Iga päev toimub arendusmeeskonna liikmete vahel lühike kohtumine, mida nimetatakse scrum-koosolekuks. Koosoleku eesmärk on tagada, et kõik meeskonnaliikmed on kursis, mida igaüks teeb ja kas nad vajavad abi, et tagada ülesannete edukas lõpetamine. Sprint lõpeb sprinti läbivaatamise koosolekuga, kus arendusmeeskond demonstreerib, mida nad sprinti jooksul loonud on. Toote omanik hindab seejärel tarkvara vastavust nõuetele ja otsustab, kas see vastab kliendi vajadustele. Seejärel algab uus sprint ja protsess algab otsast peale. Kanban on veel üks agiilse arenduse meetod, mis põhineb visualiseerimisel ja töövoogude haldamisel. Kanban võimaldab meeskonnal jälgida ja optimeerida oma tööprotsesse ning suurendada tootlikkust ja kvaliteeti. Kanban meetodi aluseks on visuaalne Kanban laud, kus töövoogu kuvatakse tavaliselt kaardikeskuste abil. Igale kaardile märgitakse töö, mida on vaja teha, ja kaardikeskus tähistab töövoogu, mida töö läbib, kuni see on valmis. Töövoogu võib jagada mitmeks etapiks, nagu näiteks "planeerimine", "arendus", "testimine" ja "lõpetamine". Iga etapi jaoks on määratud kindel arv kaardikohti, mis näitavad, kui palju tööd võib korraga selles etapis olla. Kui kaardikoht on täis, siis ei saa uut tööd sellesse etappi lisada, enne kui mõni kaart on liikunud edasi järgmisesse etappi. Kanban laual on ka piirangud, mis määravad, kui palju tööd võib olla käimas kogu meeskonna jaoks. See aitab vältida ülekoormust ja tagada, et meeskond suudab keskenduda olulistele ülesannetele. Lean on filosoofia ja metoodika, mis on välja töötatud Toyota autotööstuses ja mis põhineb pideval protsesside parandamisel, raiskamise vähendamisel ja väärtuse loomisel. Lean on tihedalt seotud agiilse arendusega, kuna mõlemad meetodid keskenduvad pidevale täiustamisele ja klientide vajaduste rahuldamisele. Lean metoodika eesmärk on vähendada raiskamist kogu organisatsioonis. Raiskamine tähendab kõike, mis ei lisandu tootele või teenusele väärtust, nagu liigne liikumine, ooteaeg, ületootmine, vigade parandamine jne. Lean meetodil on mitmeid põhimõtteid, mida saab rakendada, et vähendada raiskamist ja parandada tootlikkust. Üks põhimõte on väärtusvoog. Väärtusvoog tähendab kõiki samme, mida toode või teenus läbib enne, kui see jõuab kliendini. Lean meetodi järgi peaksime mõtlema väärtusvoost lähtuvalt ja vähendama kõiki samme, mis ei lisa tootele või teenusele väärtust. Teine põhimõte on pull-tootmine. Pull-tootmine tähendab, et tooteid või teenuseid valmistatakse vastavalt kliendi nõudlusele, mitte vastupidi. See aitab vähendada ületootmist ja seega raiskamist. Kolmas põhimõte on täiuslikkus. Täiuslikkus tähendab pidevat protsesside parandamist ja täiustamist. Lean meetodil on spetsiaalsed tööriistad, näiteks Kaizen, mis aitavad parandada protsesse, vähendada raiskamist ja suurendada tootlikkust. Extreme Programming (XP) on üks agiilse arenduse meetodeid, mis on välja töötatud tarkvaraprogrammide arendamiseks. XP metoodika on tuntud oma iteratiivse ja inkrementaalse lähenemise poolest, kus kood kirjutatakse väikeste sammude kaupa ja testitakse pidevalt. XP metoodika põhineb kaheksal põhimõttel, mis on järgmised: 1. Planeerimine: XP metoodika keskendub tulemusele. Seetõttu on oluline planeerida projekti eesmärgid, määrata kindlaks tööülesanded ning tagada, et kõik osapooled saavad aru, mida tulemus peaks saavutama. 2. Testimine: XP meetod põhineb tarkvara testimisel kogu protsessi jooksul. Testid on programmeerimisprotsessi lahutamatu osa ning iga funktsiooni testimine toimub kohe pärast selle kirjutamist. Testimine aitab tagada, et kood toimib vastavalt oodatule ning võimaldab leida ja parandada vigu kohe alguses. 3. Väikeste sammude kaupa arendamine: XP metoodika keskendub koodi arendamisele väikeste sammude kaupa. Iga iteratsioon keskendub konkreetsele funktsioonile, mis võimaldab arendajatel keskenduda ühele asjale korraga ning tagada, et iga samm täidab projekti eesmärke. 4. Lihtsuse tagamine: XP metoodika järgib lihtsuse printsiipi, mille kohaselt tuleks luua võimalikult lihtsat ja arusaadavat koodi. Lihtsuse tagamine vähendab vigade tekke tõenäosust ning lihtsustab koodi hilisemat hooldust ja täiendamist. 5. Disaini pidev täiustamine: XP metoodika rõhutab disaini pidevat täiustamist. See tähendab, et disaini tuleb pidevalt kohandada vastavalt projektis tehtud edusammudele ja saadud tagasisidele. 6. Kliendiga pidev suhtlus: XP metoodika on tihedalt seotud kliendi kaasamisega. Kliendiga suhtlemine toimub pidevalt, et tagada, et kood areneb vastavalt kliendi soovidele ja nõudmistele. 7. Kollektiivne omandamine: XP meetod rõhutab kollektiivse omandamise tähtsust. Iga meeskonna liige on vastutav projekti edukuse eest ning jagab vastutust kõigi teiste meeskonnaliikmetega. 8. Kiire tagasiside tagamine: XP meetod rõhutab kiire tagasiside tähtsust. Kiire tasiside tagamine võimaldab meeskonnal reageerida kiiresti muudatustele, vigadele ja klientide tagasisidele ning seega paremini kohanduda nende vajadustega. Kiire tagasiside tagamine on võimalik tänu mitmetele XP meetodi rakendatavatele tehnikatele, nagu paari programmeerimine, lühikesed iteratsioonid, automaatne testimine ja koodi järjepidev integratsioon. Need tehnikad aitavad tagada, et arendusprotsess on sujuv ja reageerib kiiresti muutuvatele nõudmistele ning tagasisidele. Kiire tagasiside tagamine võimaldab ka meeskonnal õppida ja areneda, vältides korduvaid vigu ning saavutades pidevat täiustamist ja efektiivsust. Crystal on üks agiilsetest meetoditest, mis on välja töötatud Alistair Cockburni poolt. Crystal meetod keskendub rõhuasetusele inimeste ja meeskonna struktuuri suhtes, kuna selle meetodi eesmärk on aidata meeskondadel oma protsesside ja tavade optimeerimist lihtsustada. Crystal meetodil on mitu varianti, millest igaüks sobib erineva suuruse ja keerukusega projektide jaoks. Crystal meetodites on projekte jagatud kolme kategooriasse, mis põhinevad projekti suurusele ja keerukusele: Crystal Clear, Crystal Yellow ja Crystal Orange. Crystal Clear on mõeldud väikestele meeskondadele, mis koosnevad kuni kaheksast inimesest, kes töötavad ühegi või kahegi kliendi jaoks. See meetod sobib kõige paremini projektidele, mis on lihtsad ja kergesti hallatavad. Crystal Clear keskendub üksikasjade väljajätmisele ning tööprotsessi optimeerimisele. Crystal Yellow sobib projektidele, mis on suuremad ja keerukamad kui Crystal Clear meetodile sobivad projektid. See meetod sobib suurematele meeskondadele, kes töötavad mitme kliendi jaoks. Crystal Yellow keskendub tiimi rollide määratlemisele ning protsesside standardiseerimisele. Crystal Orange on mõeldud väga suurtele ja keerukatele projektidele, mis nõuavad paljusid erinevaid oskusi ja palju inimesi. See meetod sobib organisatsioonidele, kus on vaja rohkem kui ühte meeskonda. Crystal Orange keskendub protsesside paindlikkusele ja juhtimise vajaduste optimeerimisele. Crystal meetodid põhinevad kolmel põhiväärtusel: koostöö, suhtlemine ja läbipaistvus. Need põhiväärtused on seotud inimeste ja meeskonna struktuuriga ning aitavad kaasa meeskonna protsesside ja tavade optimeerimisele. Crystal meetodite kasutamisel kasutatakse mitmeid tavasid, nagu näiteks eelistused, kohtumised ja retrot, et tagada, et meeskond suudab edukalt projektiga toime tulla. Crystal meetodid on laialdaselt kasutusel tarkvaraarenduses ning neid on edukalt rakendatud erinevates projektides. Meetodi arendamisel on lähtutud mõttest, et tarkvaraarendus on inimeste tegevus, mitte masinate tootmine, seega on meeskonna toimimine ja suhtlemine kriitilise tähtsusega. Crystal meetodid on avatud süsteemid, mis võimaldavad meeskondadel oma protsesse vastavalt projektide vajadustele kohandada. Dynamic Systems Development Method (DSDM) on üks esimestest agiilsetest meetoditest, mis loodi 1994. aastal Inglismaal. DSDM keskendub äriliste vajaduste täitmisele, arendades samal ajal kvaliteetset ja hästi dokumenteeritud tarkvara. See meetod on mõeldud erineva suurusega projektidele ja seda saab kasutada erinevates valdkondades . DSDM rakendab kõiki agiilseid põhimõtteid, sealhulgas iteratiivset arendust, katsetamist, pidevat tagasisidet ja muutuste juhtimist. DSDM-i eripära on selle raamistiku struktuur, mis koosneb viiest staadiumist: ettevalmistamine, modelleerimine ja funktsioonide määratlemine, projekti ehitus, rakendamine ja hooldus. DSDM-iga töötamisel on meeskonnal selge ettekujutus projekti ärilistest eesmärkidest ja vajadustest, mis tagab tarkvara kvaliteedi ja kasutajasõbralikkuse. DSDM-i raamistik võimaldab meeskonnal projekti igas etapis reageerida muutuvatele tingimustele ja tagada, et projekti lõpptulemus vastab kliendi vajadustele. DSDM-i raamistik hõlmab ka protsessi, mis võimaldab meeskonnal pidevalt hinnata projekti edenemist ja teha parandusi vastavalt sellele, mida nad õpivad. Samuti julgustab DSDM meeskonda koostööle ja suhtlemisele, et tagada projekti õnnestumine. Feature-Driven Development (FDD) on üks agiilse tarkvaraarenduse meetodeid, mis põhineb iteratiivsel ja inkrementaalsel lähenemisel. FDD keskendub funktsionaalsuste arendamisele ja juhtimisele, pakkudes raamistikku tarkvaraarendusprojektide jaoks. FDD meetod arendati Aasias Singapuris 1990. aastatel. FDD hõlmab viit peamist protsessi: arendusplaanide loomine, funktsionaalsuste loomine, üksikasjalik disain, ehitus ja lõpuks lähetamine. Arendusplaanide loomine hõlmab funktsionaalsuste tuvastamist ja prioriseerimist, meeskonna rollide ja vastutuse määratlemist ning projekti ajakava koostamist. Funktsionaalsuste loomise protsessis töötavad arendajad välja iga funktsionaalsuse kirjelduse, määravad kindlaks, millised objektid on vajalikud, ja koostavad funktsionaalsuste loendi. Üksikasjaliku disaini protsessis koostavad arendajad üksikasjaliku disainidokumendi, mis kirjeldab funktsionaalsuse töövoogu, kasutajaliidese disaini ja objektide arhitektuuri. Ehitusprotsessis teostavad arendajad funktsionaalsuste implementeerimist ja testimist. Lõpuks toimub lähetamine, kus tarkvara saab valmis ja toodetakse kasutamiseks. FDD-l on mitmeid eeliseid, näiteks tugev keskendumine funktsionaalsuste arendamisele, objektorienteeritud lähenemine, pidev dokumentatsioon ja hea meeskonnatöö edendamine. Samuti võimaldab FDD meeskonnal töötada efektiivselt ja kiiresti ning tagada, et tarkvara vastab täpselt kliendi vajadustele. Planeerimine ja planeerimismängud on oluline osa agiilsest tarkvaraarendusest, sest need aitavad meeskonnal mõista ja planeerida projekti eesmärke ning ülesandeid. Planeerimine toimub tavaliselt iteratsioonide kaupa, kus igas iteratsioonis määratakse kindlaks, millised funktsionaalsused arendatakse, milliseid ressursse kasutatakse ja millal iteratsioon lõpeb . Agiilne planeerimine erineb traditsioonilisest planeerimisest selle poolest, et see toimub tihti koos meeskonna liikmetega, kes vastutavad projekti eri osade eest. See aitab meeskonnal mõista, milliseid väljakutseid nad peavad tulevikus ületama, ning planeerida vastavalt. Planeerimismängud on aga protsess, kus meeskond mängib rollimängu, et mõista paremini projekti väljakutseid. See aitab meeskonnal mõista, milliseid takistusi nad võivad tulevikus kohata, ning õppida, kuidas neid takistusi lahendada. Näiteks võib meeskond mängida mängu, kus nad peavad koos töötama, et saavutada eesmärke ja lahendada probleeme. Planeerimine ja planeerimismängud on olulised agiilse tarkvaraarenduse meetodite osad, sest need aitavad meeskonnal mõista, millised väljakutsed neid ees ootavad, ning planeerida vastavalt. See võib aidata vältida viivitusi ja probleeme projekti käigus ning tagada, et tarkvara vastab täpselt kliendi vajadustele. Tarkvaratehnoloogiad mängivad olulist rolli agiilse arendusprotsessi juures, sest need võimaldavad arendajatel kiiremini ja tõhusamalt tarkvara luua ja juhtida. Agile arendajad kasutavad paljusid erinevaid tarkvaratehnoloogiaid, näiteks integreeritud arenduskeskkondi (IDE), koodihaldussüsteeme, testimis- ja veahaldustööriistu ning CI/CD-pipeline tööriistu. Integreeritud arenduskeskkonnad nagu Eclipse, IntelliJ IDEA ja Visual Studio Code on tarkvaratehnoloogiad, mis võimaldavad arendajatel programmeerimistööd teha lihtsamalt ja kiiremini. IDE-s saavad arendajad kasutada mitmesuguseid funktsioone, sealhulgas koodihüpikaknaid, tarkvarakomponentide redigeerimist, sisseehitatud testimist ja veahaldust. Samuti võimaldavad IDE-d arendajatel koos töötada ja koodi ühises repositooriumis hoida. Koodihaldussüsteemid nagu Git, SVN ja Mercurial on tarkvaratehnoloogiad, mis aitavad arendajatel tarkvara koodi hoida ja juhtida. Need süsteemid võimaldavad arendajatel oma koodi versioonida, mis tähendab, et igat koodi muudatust säilitatakse. See annab arendajatele võimaluse oma tööd koordineerida ja vajadusel varasemaid versioone taastada. Testimis- ja veahaldustööriistad nagu JUnit, Selenium ja JIRA aitavad arendajatel automatiseerida testimist ja veahaldust. Need tööriistad võimaldavad arendajatel kiiresti tuvastada vigu ja lahendada neid enne, kui need muutuvad tõsisteks probleemideks. CI/CD-pipeline tööriistad nagu Jenkins, Travis CI ja CircleCI võimaldavad arendajatel automatiseerida tarkvara ehitamist, testimist ja lähetamist. Need tööriistad võimaldavad arendajatel rakendada pidevat integreerimist ja pidevat väljastamist (CI/CD), mis tähendab, et kood on pidevalt testitud ja valmis tootmiseks. Agiilse arenduse eelised on mitmekülgsed ja neid on põhjalikult uuritud. Üks peamisi eeliseid on võime kiiresti reageerida muutuvatele vajadustele ja nõuetele. Agiilse lähenemisviisi abil on võimalik vähendada riske, sest arendajad ja kliendid saavad pidevalt suhelda ja tagasisidet anda. Lisaks võimaldab agiilne arendus tõhusamat koostööd meeskonnaliikmete vahel ja kiirendab toote turule toomist. Teisest küljest võivad agiilse lähenemisviisi puudused olla seotud selle paindlikkusega. Projekt võib muutuda keeruliseks, kui eesmärgid pole selged või kui klientide nõudmised muutuvad liiga sageli. Samuti võib tarkvara kvaliteet kannatada, kui testimisele ei pöörata piisavalt tähelepanu. Agiilne arendus ei piirdu ainult tarkvaraarendusega, vaid seda võib rakendada ka väljaspool seda valdkonda. Näiteks on agiilset arendust edukalt rakendatud mitmesuguste projektide juhtimisel, sealhulgas hariduse, tervishoiu ja juhtimise valdkonnas. Agiilset lähenemist on kasutatud ka tootearenduses ja turunduses, et kiiremini reageerida muutuvatele turutingimustele ja klientide vajadustele. Samuti on agiilset arendust kasutatud protsesside täiustamiseks ja keeruliste probleemide lahendamiseks. Üks edukas agiilse arenduse rakendus väljaspool tarkvaraarendust on Agile Learning Labs, mis on spetsialiseerunud agiilse hariduse valdkonnale. Agile Learning Labs kasutab agiilseid meetodeid, et parandada haridussüsteemi ja koolide toimimist. Nad aitavad koolidel kiiresti reageerida õpilaste vajadustele ja muutuvatele turutingimustele ning tõhusamalt rakendada uusi õppemeetodeid. Teine näide on agiilse lähenemisega projekti- ja protsessijuhtimise rakendamine tervishoius. Agile Healthcare Leadership blogis kirjeldatakse, kuidas agiilset lähenemist on edukalt rakendatud tervishoiu valdkonnas, et parandada patsiendi ravi ja kogemust ning suurendada tõhusust ja produktiivsust. Agiilne arendus on juba aastaid olnud tarkvaraarenduse standardne meetod, kuid selle tulevik ei piirdu ainult tarkvaraarendusega. Agiilne metoodika on juba laienenud väljapoole tarkvaraarenduse valdkonda, näiteks disaini, turunduse ja müügi valdkonda. Tulevikus on eeldatavasti agiilne arendus veelgi laialdasemalt levinud ja rakendatud, hõlmates erinevaid valdkondi ja organisatsioone. Näiteks on juba olemas Agile Manufacturing ja Agile Marketing, mis kasutavad agiilse arenduse põhimõtteid tootmise ja turunduse protsesside optimeerimiseks. Üks võimalus agiilse arenduse tulevikuks võib olla selle edasiarendamine tehisintellekti (AI) ja masinõppega. AI võib aidata arendajatel paremini planeerida ja hinnata projekte ning tuvastada probleeme arendusprotsessis. Masinõpe võib samuti aidata parandada agiilse arenduse protsessi efektiivsust, analüüsides suurt hulka andmeid arendusprotsessi kohta ja andes soovitusi parema tulemuse saavutamiseks. Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., ... & Kern, J. (2001). Manifesto for Agile Software Development. Agile Alliance. Cohn, M. (2006). What is Scrum?[alaline kõdulink]. Scrum Alliance. Ambler, S. W. (2002). Agile Software Development: It's about Feedback and Change. Agile Modeling. "The History of Agile Development". Agile Alliance. Vaadatud 13. mai 2023.[alaline kõdulink] "Agile History: How It All Began". Digite. Vaadatud 13. mai 2023.[alaline kõdulink] "The History of Agile Methodology". Mendix. Vaadatud 13. mai 2023.[alaline kõdulink] "What is Scrum?". Scrum.org. Vaadatud 13. mai 2023. "Agile Alliance". "What is Continuous Improvement?". Scrum.org.[alaline kõdulink] "What is a Sprint?". Scrum.org.[alaline kõdulink] "What is Scrum?". Scrum.org. Vaadatud 13.05.2023. "Kanban vs. scrum: what's the difference?". Atlassian. 26. juuli 2021. Vaadatud 13. mail 2023. "Kanban boards". Atlassian. 26. juuli 2021. Vaadatud 13. mail 2023. "How to Create a Kanban Board in 5 Steps". Smartsheet. Vaadatud 13. mail 2023.[alaline kõdulink] Dynamic Systems Development Method Consortium. "What is DSDM?". Dynamic Systems Development Method Consortium. Vaadatud 13. mai 2023.[alaline kõdulink] Technopedia. "Dynamic Systems Development Method (DSDM)". Technopedia. Vaadatud 13. mai 2023.[alaline kõdulink] Barry Boehm ja Richard Turner (2004). "The Agile Alliance: Feature-Driven Development (FDD): An Agile Alternative to Extreme Programming" (PDF). The Agile Alliance. Vaadatud 13. mai 2023.[alaline kõdulink] Simon Rook. "Atlassian: Feature-Driven Development". Atlassian. Vaadatud 13. mai 2023.[alaline kõdulink] Mike Cohn. "Planning Poker: An Agile Estimating and Planning Technique". Mountain Goat Software.