Spējā programmatūras izstrāde

**Spējā programmatūras izstrāde** jeb vienkārši **spējā izstrāde** () ir izmantota metodoloģija, lai veiktu ātru izstrādi un ieviešanu informācijas sistēmās un lietotnēs. Šī pieeja ietver pakāpeniskus tuvinājumus, lai uzlabotu sistēmas, iekļaujot jaunākās lietotāju prasības. Sākotnējai specifikācijai nav jābūt visaptverošai, tās jāietver tikai absolūti nepieciešamās prasības. Detalizētāka prasību izstrāde un programmatūras attīstība notiek turpmākos posmos, nodrošinot, ka pirms izplatīšanas programmatūra ir darboties spējīga un bez kļūdām. Šāda pieeja ļauj elastīgi reaģēt uz lietotāju vajadzībām, samazinot sākotnējo specifikācijas nepieciešamību un ļaujot sistēmai attīstīties progresīvi.

Galvenais uzsvars tiek likts uz cilvēkiem un to savstarpējām attiecībām, nevis uz rīkiem un procesiem. Metodoloģija koncentrējas uz produktu attīstību, nevis formālu dokumentāciju. Lielāka uzmanība tiek veltīta klienta iesaistei, kas ir koleģiāla un neierobežota ar līguma nosacījumiem.

## Vēsture
Spējās programmizstrādes pirmsākumi ir atrodami 1957. gadā. Pieeja ir minēta Craig Larman un Victor Basili rakstā. 1970. gadā Dr. Winstons Royce prezentēja savu rakstu "Lielu programmizstrādes projektu vadība" (), kurā kritizēja secīgu programmizstrādi un papildināja, ka programmatūras izstrādi nevar salīdzināt un veikt līdzīgi kā mašīnas izstrādi uz konveijera. Tajā pašā gadā E. A. Edmonds sagatavoja rakstu "Programmatūras izstrādes process netehniskiem lietotājiem kā adaptīva sistēma" ().

## Spējās izstrādes manifests
2001. gada 11-13. februārī tika izveidots **spējās izstrādes manifests**, kas ir uzskatu un vērtību kopums, kurā akcentētas prioritātes un pieejas programmatūras izstrādē. Manifesta darbā novērtējumi ir:
* **Cilvēkus un viņu mijiedarbi** augstāk par rīkiem un procesiem
* **Strādājošu programmatūru** augstāk par detalizētu dokumentāciju
* **Kopsadarbību ar pasūtītāju** augstāk par līguma sarunām
* **Reaģēšanu uz izmaiņām** augstāk par sekošanu plānam
*Protams, svarīgi ir arī tas, kas rakstīts pa labi, tomēr par būtiskāku mēs atzīstam to, kas rakstīts pa kreisi.*
17 speciālisti vienojās par spējās metodoloģijas manifestu un 12 spējās metodoloģijas pamatprincipiem:
* Augstākā prioritāte ir apmierināt pasūtītājus, izmantojot agras un regulāras vērtīgas programmatūras piegādes.
* Mainīgās prasības tiek pieņemtas, pat ja tās rodas vēlu izstrādes procesā. Pieņemt izmaiņas vēlu izstrādes procesā, lai uzlabotu klienta konkurētspēju.
* Piegādājam strādājošu programmatūru regulāri, no pāris nedēļām līdz pāris mēnešiem, ar priekšroku īsākiem periodiem.
* Biznesa cilvēkiem un izstrādātājiem ir jāstrādā kopā ik dienu visa projekta garumā.
* Veidojiet projektu, izmantojot motivētus indivīdus. Sniedziet viņiem nepieciešamo vidi un atbalstu un uzticieties viņiem, ka darbs tiks paveikts.
* Klātienes komunikācija ir efektīvākā.
* Strādājoša programmatūra ir primārā progresa metrika.
* Spējā metodoloģija veicina ilgtspējīgu attīstību.
* Nepārtraukti ir jāpievērš uzmanība tehniskai izcilībai, labai arhitektūrai un dizainam.
* Vienkāršība ir māksla maksimizēt to darba daļu, kuru nav nepieciešams realizēt.
* Labākās arhitektūras un dizaini tiek veidoti pašorganizētās komandās.
* Regulāros intervālos komanda pārskata savu darbu, analizē to un veic nepieciešamās korekcijas.

## Spējās metodes un prakses
[thumb|[Programmēšana pāros ir viena no praksēm]]
Programmatūras izstrādes uzņēmumi parasti par pamatu spējai izstrādei izmanto kādu no spējām metodēm. Spējās metodes izvēle tiek atstāta uzņēmuma ziņā. Uzņēmumi un komandas izmanto dažādas spējās metodes. Biežāk izmantotā metode ir *Scrum*.

Spējās metodes parasti netiek izmantotas vienas pašas. Vairumā gadījumu to izmantošana ir saistīta ar vairāku spējo prakšu izmantošanu. Spējās prakses nodrošina veiksmīgāku metodes izmantošanu. Prakšu izvēle vairumā gadījumu tiek atstāta komandas ziņā, bet ir arī prakses, kuru izmantošana ir saistīta ar lēmumiem organizācijas līmenī.

### Metodes
* *Scrum*
* Minimāla izstrāde ()
* Ekstrēmā programmatūras izstrāde ()
* Raksturiezīmju virzīta izstrāde/Iezīmju vadītā metode ()
* Dynamic system development method (DSDM)
* *Crystal*

### Prakses
* Pieņemšanas testu vadīta izstrāde ()
* Pieņemšanas testēšana ()
* Aktīva klienta dalība ()
* Programmēšana pāros

## Atsauces