Kuigi järgnevad praktikad tulevad erinevatest koolkondadest, on neid võimalik omavahel siduda asjaoluga, et need kõik juhinduvad mingist:
Neid praktikaid ei saa võrdselt liigitada mingi kindla metodoloogia alla, kuigi mitmed neist on levinud näiteks agiilsetes meetodites, nende seas praktikad nagu TDD ja BDD. Üldiselt saaks neid kõiki praktikaid kirjeldada kui "eesmärgist juhinduva tarkvaraarenduse" (Intent-Driven Software Development) praktikad.
Aja jooksul on tarkvaraarendus liikunud järjest rohkem põhimõtte "kood kui tagajärg, mitte alguspunkt" suunas ning seda on viimaste aastate jooksul hüppeliselt kiirendanud tehisaru areng, mis on aidanud vähendada mehaanilisust mitmetes etappe arendustöös, nagu dokumentatsiooni koostamine ning lihtsamate koodiplokkide kirjutamine. Ometi on need praktikad eksisteerinud juba enne tehisaru võidukäiku, kuid nad on kandnud endas sama põhimõtet - tarkvara arendus peaks olema juhitud selgelt määratletud kavatsustest, mitte ainult tehnilisest teostusest.
Need praktikad lähtuvad ideest, et enne koodi peavad alati tulema testid ning kood ehitatakse nende testide "ümber". Selle eesmärk on ennetada vigu nende tuvastamise ja parandamise asemel.
Lähenemisviis tarkvaraarenduses, kus enne funktsionaalsuse implementeerimist koodis luuakse vastavale osale testid (tavaliselt ühiktestid) ning koodi kirjutamisel lähtutakse sellest, et need testid peaksid alati läbi minema. Väga populaarne praktika näiteks ekstreemprogrammeerimises.
Üsna analoogne TDD-ga, kuigi selle keskmeks on kogu süsteemi testimine tervikuna eelduseks tarkvara funktsionaalsuse implementeerimisele koodis.
Edasiarendus TDD-st, kus loodavat koodi testitakse pidevalt automatiseeritud ühiktestidega selle asemel, et arendaja manuaalselt neid teste läbi viib. Selle eesmärk on, et arendaja peab projekti algfaasis vaid looma testid ning hiljem pole tal vaja neid teste ise läbi viia.
Neid praktikaid seob keskendumine peamiselt sellele, mis on loodava tarkvarasüsteemi oodatud käitumine - mida ta peab tegema ja kuidas.
Keskendub kasutajakogemusele ning sellest lähtuvalt on selle olulisemaks jooneks tihe ärialane suhtlus projekti asjaosalistega (ingl. k. stakeholders). Samuti teeb selle praktika suur rõhk tiimialasele koostööle ja suhtlusele üheks populaarseks praktikas mitmetes agiilsetes metoodikates.
Kandub siia üle oma seetõttu, et keskendub süsteemide testimisele tervikuna, mis hõlmab ka selle käitumist.
Meetod, mille põhieesmärk on läbi põhjaliku koostöö ja kommunikatsiooni projekti erinevate osapoolte vahel luua väga täpsed ja selged kirjeldused loodava tarkvara ootustest ja eesmärkidest selle algusfaasis ning seejärel kogu arendusprotsessi jooksul juhinduda sellest spetsifikatsioonist. Seda praktikate kogumit rakendatakse näiteks ekstreemprogrammeerimises, Scrumis ja Kanbanis.
NB! Kuigi teoreetiliselt on neil praktikatel väikseid erinevusi, kiputakse reaalses elus tihti kasutama BDD-d, SBE-d ja ATDD-d sünonüümselt.
Tegemist on tarkvaradisaini lähenemisviisiga, kus lähtutakse ideest, et hea tarkvara loomiseks pead sa täpselt aru saama, mis päriselu valdkonna probleemi see tarkvara lahendab. See tähendab, et eduka tarkvaraprojekti jaoks tuleb kasuks kommunikeerida vastava valdkonna ekspertidega, näiteks pangarakenduse loomisel aitaks pangandusevaldkonna ekspertidega suhtlemine.
Prioritiseerib kasutajakogemust, keskendudes toote vastavusele kliendi vajadustele ja ootustele. See praktika hõlmab lisaks testipõhise arenduse rakendamisele ka rohket prototüüpimist.
Tarkvaraarenduse lähenemisviis, mis keskendub arenduse igal etapil turvariskide vähendamisele ja ennetamisele. Ometi ei hõlma see vaid arendust, vaid nõuab holistlikku lähenemist organisatoorsel tasemel küberturvalisusele. Eesmärk on tagada tarbija andmete turvalisus toote disainimisfaasist selle hooldamisperioodini välja.
Deklaratiivse programmeerimise alla kuuluv paradigma, kus algandmete põhjal koostatakse projekti jaoks domeenispetsiifilisi keeli (domain specific languages) selleks, et võimalikult selgelt ja täpselt kirjeldada ("deklareerida") andmete omavahelisi seoseid. Lähemalt deklaratiivse ja imperatiivse programmeerimise erinevustest.
Optimiseerimisvõte programmeerimises, mida peamiselt kasutatakse videomängude arenduses. Selle peamine eesmärk on protsessori vahemälu kasutamise tõhustamine läbi andmete jaotusele keskendumise. Selle tehnika jaoks on oluline teada, kuidas andmed mälus paigutatud on.
What is Behavior-Driven Development (BDD)? - GeeksForGeeks
What is Test-Driven Development (TDD)? | IBM
Acceptance Test Driven Development (ATDD) | Agile Alliance
Arendust suunavad praktikad - ChatGPT
Specification by Example [Book] - O'Reilly
What is Design-Driven Development? | UXPin
Domain Driven Design - DEV Community
Secure by Design | Cyber.gov.au
Distinction between three data related programming paradigms. | Yehonathan Sharvit