Jedinica 2 / 12

Analiza zahtjeva i dizajn softvera

Dobici:

  • Sposobnost transformacije nejasnih poslovnih zahtjeva u jasne softverske zahtjeve koji se mogu testirati i korisničke priče uz podršku AI
  • Sposobnost usporedbe prednosti i nedostataka dizajna sustava, modela podataka i arhitektonskih odluka na strukturiran način s umjetnom inteligencijom
  • Sposobnost kritičke provjere predloženog dizajna umjetne inteligencije u odnosu na zahtjeve, skalabilnost i ograničenja

Većina softverskih projekata ne propada zbog lošeg koda, već zbog pogrešno shvaćenih zahtjeva. Zahtjev u jednoj rečenici poput "Dopusti korisnicima preuzimanje izvješća" ostavlja za sobom desetke neodgovorenih pitanja: U kojem formatu? Tko je glavni? Koliko zapisa? Što ako je sporo? Analiza zahtjeva (prevođenje poslovnog zahtjeva u jasne tehničke potrebe koje se mogu testirati) i dizajn softvera (konstrukcija strukture na papiru kako bi se zadovoljile te potrebe) je faza u kojoj se prije pisanja koda sprječavaju najskuplje pogreške. U ovoj jedinici naučit ćemo koristiti AI kao "misaonog partnera" u ovoj fazi: partnera koji demistificira neizvjesnost, razvrstava opcije, ali konačnu odluku ostavlja vama.

AI ovdje proizvodi dvije velike vrijednosti. Prvo, postavlja pitanja koja preskačete; Izvlači na površinu skrivene pretpostavke i rubne slučajeve u zahtjevu. Drugo, brzo prikazuje prednosti i nedostatke dizajnerske odluke. Ali to je opasnost: AI će dati generičke preporuke kao "najbolju praksu" bez potpunog poznavanja vašeg konteksta (proračun, tim, postojeći sustav, pravno ograničenje). Vaš je posao filtrirati ove savjete prema vlastitoj istini.

Koncepti: Korisnička priča: Kratka rečenica koja izražava potrebu u obliku "... kao, želim biti u mogućnosti... jer...". Kriteriji prihvaćanja: uvjeti koji se mogu provjeriti i koji moraju biti ispunjeni da bi se posao smatrao "obavljenim". Nefunkcionalni zahtjev: Zahtjevi koji se odnose na "kako će se ponašati", a ne na "što će raditi", kao što su brzina, sigurnost, skalabilnost.

Od nejasnog zahtjeva do zahtjeva koji se može testirati

Dobar zahtjev je mjerljiv i provjerljiv. Ne "neka sustav bude brz", nego "neka se rezultati pretraživanja vraćaju unutar 500 ms". Evo korak po korak načina korištenja umjetne inteligencije za sužavanje nesigurnosti:

  1. Pošaljite zahtjev kakav jest i neka se pitanje generira. Pitajte AI ne za rješenje, već prvo da "navede sve nejasnoće u ovom zahtjevu kao pitanje."
  2. Vi dajete odgovore. Samo ti znaš kontekst; Odgovorite na pitanja umjetne inteligencije svojim stvarnim poslovnim ograničenjima.
  3. Pretočite to u priče korisnika i kriterije prihvaćanja. Prevedite razjašnjenu potrebu u stavke koje se mogu provjeriti.
  4. Dodajte rubne slučajeve i negativne scenarije. "Prazan rezultat", "neovlašteni korisnik", "prevelika datoteka" itd.

Upit za izdvajanje dvosmislenosti: "Prevest ćemo sljedeći poslovni zahtjev u softverski zahtjev. Nemojte još predlagati rješenje. Prvo izdvojite SVE dvosmislenosti i skrivene pretpostavke na koje nema odgovora u ovom zahtjevu kao popis pitanja. Grupirajte pitanja pod sljedećim naslovima: opseg, korisnik/autoritet, količina podataka, performanse, uvjeti pogreške, sigurnost. Zahtjev: 'Dopustite korisnicima da preuzmu povijest narudžbi kao izvješće.'"

Korisnička priča + zahtjev za kriterijima prihvaćanja: "Podijelite sljedeću razjašnjenu potrebu u korisničke priče koje su u skladu s načelima INVEST-a. Napišite 3-5 provjerljivih kriterija prihvatljivosti za svaku priču (u formatu Dana-kada-tada). Dodajte najmanje 2 negativna scenarija (neovlašteni pristup, prazni podaci). Potreba: [ovdje napišite razjašnjenu potrebu]"

Usporedba dizajnerskih odluka s umjetnom inteligencijom

Dizajn je stalni kompromis: brzina nasuprot fleksibilnosti, jednostavnost nasuprot skalabilnosti? AI stavlja te kompromise u brzu proračunsku tablicu. Na primjer, za značajku "pošalji obavijest" možete raspravljati o tome hoćete li koristiti sinkroni (pošalji na zahtjev) ili asinkroni (čekanje, slanje u pozadini) pristup.

Uputa za usporedbu dizajna: "Dizajniram značajku 'pošalji obavijest e-poštom korisniku'. Usporedite dva pristupa: (A) sinkrona isporuka tijekom HTTP zahtjeva, (B) asinkrona isporuka u pozadini stavljanjem u red poruka. Napravite tablicu na sljedećim osima: vrijeme čekanja korisnika, tolerancija greške, složenost, troškovi infrastrukture, poteškoće u otklanjanju pogrešaka. Sažmite u 2 rečenice koju bih na kraju izaberi u kojem slučaju nemoj donositi odluku umjesto mene."

osovina

sinkroni prijenos

Asinkrono (red čekanja)

Vrijeme čekanja korisnika

Dugo (čeka se pošiljka)

Kratko (odmah se vraća)

Tolerancija na greške

Nizak (zahtjev eksplodira ako se pošalje)

Visoko (moguć je ponovni pokušaj)

složenost

nizak

Srednje-visoka (infrastruktura čekanja)

Infrastrukturni trošak

nizak

Potrebne dodatne komponente

Gdje stane

Mali volumen, jednostavna primjena

Velika količina, kritična isporuka

Savjet: reći umjetnoj inteligenciji "nemoj donositi odluku umjesto mene, samo mi pokaži opcije i uvjete" tjera vas na razmišljanje i smanjuje rizik od slijepog prihvaćanja prijedloga. Najbolja dizajnerska odluka je ona koju donese osoba koja poznaje vaš kontekst (vi).

Slab upit / Jak upit

SLABO: "Dizajniraj bazu podataka za sustav narudžbi." (Rezultat: koji razmjeri, koji odnosi, koja ograničenja nisu jasna; opća, nerealistična shema.) SNAŽNO: "Predložite nacrt podatkovnog modela za malu e-trgovinu. Entiteti: kupac, narudžba, proizvod, stavka narudžbe. Ograničenja: u narudžbi može biti mnogo proizvoda; cijena proizvoda može se mijenjati tijekom vremena, ali trenutna cijena treba biti sačuvana u prošloj narudžbi; očekuje se oko 500 narudžbi dnevno. Odnosi i zašto to "Objasnite da ste donijeli odluku. Navedite kako ste riješili problem povijesti cijena. Dajte to kao popis entiteta i polja, a ne kod."

Razlika snažnog poticaja; skala (500 narudžbi dnevno), poslovno pravilo (prethodna cijena se mora održavati) i željeni izlazni format. Jedna rečenica poput "Prošla cijena se mora zadržati" potpuno mijenja dizajn; Ako to ne navedete, AI će proizvesti netočan, ali uvjerljiv dijagram.

Mini kućišta

Slučaj 1 — Skrivena pretpostavka. Tim izravno kodira zahtjev "korisnik može prenijeti profilnu fotografiju". Drugi tim pitao je AI o nesigurnosti: "maksimalna veličina? dopušteni formati? neprikladna kontrola sadržaja? brisanje stare fotografije?" Proizvodi 8 pitanja poput. Prvi tim saznaje za problem u proizvodnji kada 20 MB datoteka napuni poslužitelj; Drugi tim to rješava dizajnom.

Slučaj 2 — Netočna pretpostavka o mjerilu. AI predlaže složeni sloj predmemoriranja za značajku izvješćivanja. Kada inženjer ističe da su pravi podaci samo 30 izvješća dnevno, AI pojednostavljuje prijedlog. Nenavođenje razmjera uzrokuje troškove nepotrebne složenosti; navođenjem se štede 2 tjedna nepotrebnog rada.

Slučaj 3 — Nedostatak kriterija prihvatljivosti. "Što se događa ako plaćanje ne uspije?" Budući da pitanje nikada nije postavljeno, sustav narudžbe će i dalje označavati narudžbu kao "potvrđenu" u slučaju neuspješnog plaćanja. Popis negativnih scenarija koje je generirala umjetna inteligencija pokriva ovu prazninu; Kriteriji prihvaćanja 1 reda sprječavaju stvarni gubitak novca.

Uobičajene greške

  • Prosljeđivanje zahtjeva izravno kodu. Kod napisan prije nego što se dvosmislenost riješi brzo rješava pogrešan problem.
  • Slijepo prihvaćanje opće "najbolje prakse" umjetne inteligencije. Ako ne navedete svoj kontekst (razmjer, proračun, tim), preporuka vam neće odgovarati.
  • Preskakanje nefunkcionalnih zahtjeva. Ako brzina, sigurnost i razmjer nisu navedeni, dizajn će biti nepotpun.
  • Samo razmišljam o sretnom scenariju. Negativni scenariji kao što su prazni podaci, neovlašteni korisnik, status pogreške trebaju biti uključeni u dizajn.
  • Delegiranje odluke AI-u. AI generira opcije; Vi odlučujete koji kompromis odgovara vašem poslovanju.

Ukratko

Analiza zahtjeva i dizajn je faza u kojoj se hvataju najjeftinije pogreške. Ovdje umjetna inteligencija generira pitanja koja otkrivaju nesigurnost, sastavlja korisničke priče i kriterije prihvaćanja te grafikone dizajnira kompromise. Ali samo vi znate kontekst; Vaš je posao filtrirati preporuke umjetne inteligencije na temelju vaše veličine, proračuna, tima i zakonskih ograničenja i donijeti konačnu odluku. Disciplina "nemoj donositi odluku umjesto mene, pokaži mi mogućnosti" vodi i boljem dizajnu i dubljem učenju.

Zadatak aplikacije

Odaberite zahtjev za posao u jednoj rečenici iz svog konteksta. Prvo primijenite dvosmisleni upit na AI i odgovorite na pitanja svojim stvarnim ograničenjima. Zatim prevedite razjašnjenu potrebu u najmanje 2 korisničke priče i 3 kriterija prihvaćanja za svaku; Uključite barem 1 negativan scenarij. Na kraju, izradite usporednu tablicu za odluku o dizajnu (sinkroni/asinkroni, struktura tablice itd.) i napišite vlastitu odluku u 2 rečenice.

popis za provjeru

  • [ ] Uklonio sam dvosmislenosti kao pitanja prije prosljeđivanja zahtjeva u kod.
  • [ ] Dao sam kontekst (razmjer, autoritet, izvedba, pravno ograničenje) AI-u.
  • [ ] Razbio sam korisničke priče na kriterije prihvatljivosti koji se mogu testirati.
  • [ ] Dodao sam najmanje jedan scenarij loše strane/ruba.
  • [ ] Ocijenio sam odluku o dizajnu pomoću tablice kompromisa.
  • [ ] Donio sam konačnu odluku na temelju svog konteksta, nisam je prepustio umjetnoj inteligenciji.