Spesifikke verktøy og teknikker, for eksempel kontinuerlig integrasjon, automatisert enhetstesting, parprogrammering, testdrevet utvikling, designmønstre, atferdsdrevet utvikling, domenedrevet design, koderefaktorering og andre teknikker brukes ofte for å forbedre kvaliteten og forbedre utviklingens smidighet. Dette baserer seg på at man designer og leverer kvalitet fra starten og at man skal kunne demonstrere programvare for kunden når som helst, eller i det minste på slutten av hver iterasjon.