Enota 2 / 12

Analiza zahtev in načrtovanje programske opreme

Dobički:

  • Sposobnost preoblikovanja nejasnih poslovnih zahtev v jasne zahteve programske opreme, ki jih je mogoče preizkusiti, in uporabniške zgodbe s podporo AI
  • Sposobnost primerjave prednosti in slabosti načrtovanja sistema, podatkovnega modela in arhitekturnih odločitev na strukturiran način z AI
  • Sposobnost kritičnega preverjanja predlagane zasnove AI glede na zahteve, razširljivost in omejitve

Večina programskih projektov ne uspe zaradi slabe kode, temveč zaradi napačno razumljenih zahtev. Zahteva v enem stavku, kot je »Dovoli uporabnikom, da prenesejo poročila«, pusti za sabo na desetine neodgovorjenih vprašanj: V kateri obliki? Kdo je glavni? Koliko zapisov? Kaj če je počasno? Analiza zahtev (pretvorba poslovne zahteve v jasne tehnične potrebe, ki jih je mogoče preizkusiti) in načrtovanje programske opreme (konstruiranje strukture na papirju za izpolnjevanje teh potreb) sta stopnji, kjer so najdražje napake preprečene pred pisanjem kode. V tej enoti se bomo naučili uporabljati AI kot »miselnega partnerja« na tej stopnji: partnerja, ki demistificira negotovost, razvršča možnosti, vendar prepušča končno odločitev vam.

AI tukaj ustvari dve veliki vrednosti. Prvič, postavlja vprašanja, ki jih preskočite; Na površje prinese skrite predpostavke in robne primere v zahtevi. Drugič, hitro razpredeluje prednosti in slabosti oblikovalske odločitve. Toda to je nevarnost: AI bo dal splošna priporočila kot "najboljšo prakso", ne da bi v celoti poznal vaš kontekst (proračun, ekipa, obstoječi sistem, pravne omejitve). Vaša naloga je, da te nasvete filtrirate proti lastni resnici.

Koncepti: Uporabniška zgodba: kratek stavek, ki izraža potrebo v obliki "... kot, želim biti sposoben ... ker ...". Merila sprejemljivosti: pogoji, ki jih je mogoče preizkusiti in ki morajo biti izpolnjeni, da se delo šteje za "opravljeno". Nefunkcionalna zahteva: zahteve, povezane s tem, "kako se bo obnašal" in ne "kaj bo naredil", kot so hitrost, varnost, razširljivost.

Od nejasne zahteve do zahteve, ki jo je mogoče preizkusiti

Dobra zahteva je merljiva in preverljiva. Ne "naj bo sistem hiter", ampak "naj se rezultati iskanja vrnejo v 500 ms". Tukaj je korak za korakom način uporabe umetne inteligence za zmanjšanje negotovosti:

  1. Podajte zahtevo takšno, kot je, in ustvarite vprašanje. Ne vprašajte AI za rešitev, ampak najprej "vprašajte vse, kar je nejasno v tej zahtevi kot vprašanje."
  2. Ti daj odgovore. Samo vi poznate kontekst; Odgovorite na vprašanja AI s svojimi resničnimi poslovnimi omejitvami.
  3. Naj se prevede v uporabniške zgodbe in merila sprejemljivosti. Prenesite razjasnjeno potrebo v predmete, ki jih je mogoče preizkusiti.
  4. Dodajte robne primere in negativne scenarije. "Prazen rezultat", "nepooblaščen uporabnik", "prevelika datoteka" itd.

Poziv za ekstrakcijo dvoumnosti: "Naslednjo poslovno zahtevo bomo prevedli v programsko zahtevo. Ne predlagajte še rešitve. Najprej izluščite VSE dvoumnosti in skrite predpostavke, na katere v tej zahtevi ni odgovora, kot seznam vprašanj. Združite vprašanja pod naslednjimi naslovi: obseg, uporabnik/oblast, količina podatkov, zmogljivost, pogoji napak, varnost. Zahteva: 'Dovoli uporabnikom, da prenesejo zgodovino naročil kot poročilo.'"

Uporabniška zgodba + poziv za merila sprejemljivosti: "Naslednjo razjasnjeno potrebo razdelite na uporabniške zgodbe, ki so skladne z načeli INVEST. Za vsako zgodbo napišite 3-5 meril sprejemljivosti, ki jih je mogoče preizkusiti (v formatu Given-When-Then). Dodajte vsaj 2 negativna scenarija (nepooblaščen dostop, prazni podatki). Potreba: [tukaj napišite razjasnjeno potrebo]"

Primerjava oblikovalskih odločitev z AI

Oblikovanje je stalen kompromis: hitrost proti prilagodljivosti, preprostost proti razširljivosti? AI te kompromise postavi v hitro preglednico. Na primer, za funkcijo »pošlji obvestilo« lahko razpravljate o uporabi sinhronega (pošlji na zahtevo) ali asinhronega (čakalna vrsta, pošiljanje v ozadju) pristopa.

Poziv za primerjavo načrta: »Načrtujem funkcijo 'pošlji e-poštno obvestilo uporabniku'. Primerjajte dva pristopa: (A) sinhrono dostavo med zahtevo HTTP, (B) asinhrono dostavo v ozadju tako, da jo postavite v čakalno vrsto sporočil. Naredite tabelo na naslednjih oseh: čakalni čas uporabnika, toleranca napak, zapletenost, stroški infrastrukture, težave pri odpravljanju napak. Povzemite v 2 stavkih, katerega bi želel na koncu izberite, v katerem primeru se ne odločite namesto mene."

os

sinhroni prenos

Asinhrono (čakalna vrsta)

Uporabniški čakalni čas

Dolgo (čakanje na pošiljko)

Kratek (takoj se vrne)

Toleranca napak

Nizka (zahteva eksplodira, če eksplodira pošiljanje)

Visoka (možen ponovni poskus)

kompleksnost

nizka

Srednje visoko (infrastruktura čakalne vrste)

Infrastrukturni stroški

nizka

Potrebne dodatne komponente

Kjer se spodobi

Nizek volumen, enostavna uporaba

Velika količina, kritična dostava

Namig: Če AI rečete »ne odločaj namesto mene, samo pokaži mi možnosti in pogoje«, vas prisili k razmišljanju in zmanjša tveganje, da bi slepo sprejeli predlog. Najboljša oblikovalska odločitev je tista, ki jo sprejme oseba, ki pozna vaš kontekst (vi).

Šibek poziv / močan poziv

ŠIBKO: "Oblikujte bazo podatkov za sistem naročil." (Rezultat: katera lestvica, kateri odnosi, katere omejitve niso jasne; splošna, nerealistična shema.) MOČNO: "Predlagajte osnutek podatkovnega modela za majhno e-trgovino. Entitete: stranka, naročilo, izdelek, predmet naročila. Omejitve: v naročilu je lahko veliko izdelkov; cena izdelka se lahko sčasoma spremeni, vendar je treba trenutno ceno ohraniti v preteklem naročilu; pričakuje se približno 500 naročil na dan. Odnosi in zakaj to "Pojasnite, da ste se odločili. Navedite, kako ste rešili problem zgodovine cen. Podajte ga kot seznam entitet in polj, ne kot kodo."

Razlika močnega poziva; obseg (500 naročil na dan), poslovno pravilo (ohraniti je treba preteklo ceno) in želeni izhodni format. En sam stavek, kot je "Preteklo ceno je treba ohraniti", popolnoma spremeni zasnovo; Če tega ne določite, bo umetna inteligenca ustvarila netočen, vendar verjeten diagram.

Mini etuiji

Primer 1 – Skrita predpostavka. Ekipa neposredno kodira zahtevo "uporabnik lahko naloži fotografijo profila". Druga ekipa je AI vprašala o negotovosti: "največja velikost? dovoljeni formati? neprimeren nadzor vsebine? brisanje stare fotografije?" Ustvari 8 vprašanj, kot je. Prva ekipa izve za težavo v proizvodnji, ko 20 MB datotek napolni strežnik; Druga ekipa jo rešuje oblikovno.

Primer 2 – Napačna predpostavka lestvice. AI predlaga zapleten sloj predpomnjenja za funkcijo poročanja. Ko inženir poudari, da so resnični podatki le 30 poročil na dan, AI poenostavi predlog. Nenavedba obsega povzroča stroške nepotrebne zapletenosti; določanje prihrani 2 tedna nepotrebnega dela.

Primer 3 – Vrzel v merilih sprejemljivosti. "Kaj se zgodi, če plačilo ne uspe?" Ker vprašanje ni bilo nikoli zastavljeno, bo sistem naročila v primeru neuspešnega plačila še vedno označil naročilo kot "potrjeno". Seznam negativnih scenarijev, ki jih ustvari umetna inteligenca, zajema to vrzel; Merila sprejemljivosti v eno vrstico preprečujejo izgubo pravega denarja.

Pogoste napake

  • Posredovanje zahteve neposredno v kodo. Koda, napisana preden je dvoumnost razrešena, hitro reši napačen problem.
  • Slepo upoštevanje splošne "najboljše prakse" AI. Če ne navedete svojega konteksta (obseg, proračun, ekipa), priporočilo za vas ne bo delovalo.
  • Preskok nefunkcionalnih zahtev. Če hitrost, varnost in obseg niso določeni, bo načrt nepopoln.
  • Samo razmišljam o srečnem scenariju. V zasnovo je treba vključiti negativne scenarije, kot so prazni podatki, nepooblaščen uporabnik, stanje napake.
  • Prenos odločitve na AI. AI ustvarja možnosti; Vi se odločite, kateri kompromis ustreza vašemu podjetju.

Če povzamem

Analiza in načrtovanje zahtev je faza, kjer se ujamejo najcenejše napake. Tukaj umetna inteligenca ustvarja vprašanja, ki razkrivajo negotovost, pripravlja osnutke uporabniških zgodb in kriterijev sprejemljivosti ter načrtuje kompromise. Toda samo vi poznate kontekst; Vaša naloga je, da filtrirate priporočila umetne inteligence na podlagi vašega obsega, proračuna, ekipe in pravnih omejitev ter sprejmete končno odločitev. Disciplina »ne odločaj namesto mene, pokaži mi možnosti« vodi tako k boljšemu oblikovanju kot k globljemu učenju.

Aplikacijska naloga

Iz svojega konteksta izberite prošnjo za delo v enem stavku. Najprej uporabite dvoumni poziv za AI in odgovorite na vprašanja s svojimi resničnimi omejitvami. Nato razjasnjeno potrebo prevedite v vsaj 2 uporabniški zgodbi in 3 merila sprejemljivosti za vsako; Vključite vsaj 1 negativen scenarij. Na koncu ustvarite primerjalno tabelo za oblikovalsko odločitev (sinhrono/asinhrono, struktura tabele itd.) in napišite svojo odločitev v 2 stavkih.

kontrolni seznam

  • [ ] Dvoumnosti sem odstranil kot vprašanja, preden sem zahtevo posredoval v kodo.
  • [ ] Umetni inteligenci sem dal kontekst (obseg, avtoriteta, uspešnost, pravne omejitve).
  • [ ] Zgodbe uporabnikov sem razdelil na merila sprejemljivosti, ki jih je mogoče preizkusiti.
  • [ ] Dodal sem vsaj en slabši/robni scenarij.
  • [ ] Oblikovalsko odločitev sem ovrednotil s tabelo kompromisov.
  • [ ] Končno odločitev sem sprejel na podlagi svojega konteksta, nisem je prepustil AI.