ebSkola

8.2 Prasību specifikācija - Lietotāju stāsti

Stundas uzdevums: Iemācīties definēt programmatūras funkcijas no lietotāja skatpunkta. Programmētāji bieži mēdz aizrauties ar tehnisko pusi, aizmirstot, kam kods ir domāts. Izveido skaidru sarakstu ar to, ko Tavam jaunajam "Krustiņi un nullītes" spēlesm ir jāspēj izdarīt.

SR 2.4.4. (Definē programmatūras prasības no lietotāja skatīpunkta)

Stundas mērķi:

70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - uzraksti trīs lietotāju stāstus · 2. uzdevums (~25 min) - pievieno akceptēšanas kritērijus · 3. uzdevums (~20 min) - sakārto backlog pēc prioritātes. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.

Pirms sāc: izveido savā projekta mapē failu PRASIBAS.md. Noderēs 8.1 stundā formulētā problēma - stāstiem jārisina tieši tā.

Teorija: User Stories - Kāpēc un Kā?

  • Kas ir User Story? Tas ir īss, vienkāršs funkcijas apraksts, kas uzrakstīts no tās personas viedokļa, kura šo funkciju izmantos.
  • Zelta formula: "Kā [lietotājs], es vēlos [darbība], lai [ieguvums]."
    • Piemērs: "Kā spēlētājs, es vēlos redzēt savu inventāru, lai zinātu, kādus priekšmetus esmu savācis."
  • Akceptēšanas kritēriji: Pārbaudes saraksts, kas definē, kad uzdevums ir pabeigts.
    • Piemērs: 1) Saraksts ir redzams, nospiežot pogu 'I'. 2) Tukšs saraksts izvada ziņojumu "Soma ir tukša".
  • Prioritāte: Ne visas funkcijas ir vienlīdz svarīgas. Mēs sākam ar tām, bez kurām spēle nav spēlējama (MVP - Minimum Viable Product).

Vides sagatavošana (Windows)

Šodienas prasību specifikāciju mēs rakstīsim Markdown (.md) failā, kas ir standartizēts veids, kā programmētāji veido dokumentāciju GitHub vidē.

  1. Atver PowerShell.
  2. Ieej sava projekta mapē:

cd KrustiniNullites_Arhitektura
    
  1. Izveido prasību dokumentu un atver to kodu redaktorā:

ni PRASIBAS.md
code PRASIBAS.md
    

Praktiskie uzdevumi

1. uzdevums -

Uzraksti trīs lietotāju stāstus

Beigās katra funkcija būs aprakstīta no lietotāja skatpunkta.

  1. Izveido failu PRASIBAS.md.
  2. Uzraksti pirmo stāstu pēc formulas: Kā [lietotājs], es vēlos [darbība], lai [ieguvums].
  3. Uzraksti otro stāstu no spēlētāja skatpunkta.
  4. Uzraksti trešo stāstu no skolotāja vai satura autora skatpunkta.
  5. Pārbaudi, vai katrā stāstā ir visas trīs daļas.
  6. Izsvītro no stāstiem visus tehniskos vārdus, piemēram masīvs vai funkcija.

Gatavs, kad: failā ir trīs stāsti, katrs ar visām trim daļām un bez tehniskiem terminiem.

2. uzdevums -

Pievieno akceptēšanas kritērijus

Beigās tu varēsi pārbaudīt, vai funkcija tiešām ir gatava.

  1. Pievieno zem katra stāsta sadaļu ## Akceptēšanas kritēriji.
  2. Uzraksti katram stāstam vismaz divus kritērijus ar rūtiņām - [ ].
  3. Formulē katru kritēriju tā, lai uz to var atbildēt tikai jā vai nē.
  4. Pārbaudi, vai kritērijs neprasa viedokli, piemēram izskatās labi.
  5. Pārraksti tos kritērijus, kurus nevar pārbaudīt.
  6. Iedod vienu stāstu klasesbiedram un palūdz pateikt, kā viņš to pārbaudītu.

Gatavs, kad: uz katru kritēriju var atbildēt ar jā vai nē, un klasesbiedrs zināja, kā tos pārbaudīt.

3. uzdevums -

Sakārto backlog pēc prioritātes

Beigās tu zināsi, ar kuru funkciju sākt.

  1. Pievieno katram stāstam atzīmi M (obligāts) vai V (vēlams).
  2. Novērtē katram stāstam darba apjomu ar skaitli no 1 līdz 5.
  3. Pārkārto stāstus tā, lai obligātie ar mazāku apjomu būtu augšā.
  4. Pieraksti, kurš stāsts būs pirmais izstrādē.
  5. Pamato šo izvēli vienā teikumā.
  6. Pārbaudi, vai pirmais stāsts tiešām risina 8.1 stundā formulēto problēmu.

Gatavs, kad: saraksta augšā ir obligātais stāsts ar mazāko apjomu, un tas sasaucas ar tavu problēmas formulējumu.

Papildu uzdevums - Uzraksti pretstāstu

Ja pamatdarbs ir gatavs, pieraksti, ko sistēma apzināti NEDARĪS.

  1. Pievieno sadaļu ## Ārpus apjoma.
  2. Uzraksti trīs lietas, ko šī versija nedarīs.
  3. Pamato katru ar vienu teikumu.
  4. Pārbaudi, vai neviena no tām nav obligātais stāsts.
  5. Parādi sarakstu klasesbiedram un pajautā, vai kaut kas šķiet nepareizi izslēgts.

Gatavs, kad: sadaļā ir trīs skaidri izslēgtas lietas ar pamatojumu.

Snieguma līmeņa apraksts (SLA)

Kritēriji 4-6 (Turpina apgūt) 7-8 (Apguvis) 9-10 (Padziļināti)
Lietotāju stāsti Stāsti ir nepilnīgi vai neievēro formulu. Stāsti ir skaidri un no dažādām lomām. Stāsti ir profesionāli, iekļaujot biznesa vērtību (ieguvumu).
Kritēriji Nav definēti pārbaudes punkti. Definēti vienkārši punkti funkcijas darbībai. Definēti tehniski un robežgadījumu (edge-case) punkti.
Prioritizācija Visi uzdevumi ir vienā sarakstā bez secības. Uzdevumi sadalīti pēc svarīguma. Pamatots "Must-have" un "Nice-to-have" sadalījums.

Koda piemērs (pārbaudāmi akceptēšanas kritēriji - grūtākā daļa)

## User Story
Kā spēlētājs, es vēlos redzēt savu inventāru,
lai zinātu, kādus priekšmetus esmu savācis.

## Akceptēšanas kritēriji - PĀRBAUDĀMI (tā vajag)
- [ ] Nospiežot "i", ekrānā parādās saraksts ar visiem priekšmetiem
- [ ] Tukšs inventārs rāda tekstu "Inventārs ir tukšs", nevis kļūdu
- [ ] Katram priekšmetam redzams nosaukums un skaits
- [ ] No inventāra var atgriezties spēlē ar "q"

  Uz katru var atbildēt tikai JĀ vai NĒ.

## Akceptēšanas kritēriji - NEPĀRBAUDĀMI (tā nevajag)
- [ ] Inventārs izskatās labi          <-- kā to izmērīt?
- [ ] Inventārs strādā ātri            <-- cik ātri? 1 s? 10 ms?
- [ ] Lietotājam ir ērti               <-- kuram lietotājam?

## Ārpus apjoma
- Priekšmetu pārdošana (nav šajā versijā)
Pārbaudāmie kritēriji ļauj vienā minūtē pateikt, vai funkcija ir gatava: paņem sarakstu un izej cauri punktiem. Nepārbaudāmie kritēriji noved pie strīda ar skolotāju vai komandas biedru, jo katram "izskatās labi" nozīmē ko citu.