zisky:
- Schopnosť transformovať nejasné obchodné požiadavky na jasné, testovateľné softvérové požiadavky a príbehy používateľov s podporou AI
- Schopnosť porovnávať výhody a nevýhody návrhu systému, dátového modelu a architektonických rozhodnutí štruktúrovaným spôsobom s AI
- Schopnosť kriticky overiť navrhovaný dizajn AI vzhľadom na požiadavky, škálovateľnosť a obmedzenia
Väčšina softvérových projektov zlyhá nie kvôli zlému kódu, ale kvôli nepochopeným požiadavkám. Žiadosť v jednej vete, ako napríklad „Umožnite používateľom sťahovať prehľady“, zanecháva desiatky nezodpovedaných otázok: V akom formáte? Kto to má na starosti? Koľko záznamov? Čo ak je to pomalé? Analýza požiadaviek (premena obchodnej požiadavky na jasné, testovateľné technické potreby) a návrh softvéru (vytvorenie štruktúry na papieri tak, aby vyhovovala týmto potrebám) je fázou, v ktorej sa pred napísaním kódu zabráni najdrahším chybám. V tejto časti sa naučíme používať AI ako „myšlienkového partnera“ v tejto fáze: partnera, ktorý demystifikuje neistotu, triedi možnosti, ale konečné rozhodnutie necháva na vás.
AI tu vytvára dve veľké hodnoty. Po prvé, kladie otázky, ktoré preskočíte; Vynáša na povrch skryté predpoklady a okrajové prípady v požiadavke. Po druhé, rýchlo zostaví klady a zápory rozhodnutia o dizajne. Ale to je nebezpečenstvo: AI poskytne všeobecné odporúčania ako „najlepšiu prax“ bez toho, aby plne poznal váš kontext (rozpočet, tím, existujúci systém, právne obmedzenie). Vašou úlohou je filtrovať tieto rady proti vašej vlastnej pravde.
Pojmy: Užívateľský príbeh: Krátka veta vyjadrujúca potrebu vo forme „... ako, chcem byť schopný... lebo...“. Kritériá prijatia: Testovateľné podmienky, ktoré musia byť splnené, aby bola práca považovaná za „hotovú“. Nefunkčná požiadavka: Požiadavky týkajúce sa „ako sa bude správať“ a nie „čo to bude robiť“, ako je rýchlosť, bezpečnosť, škálovateľnosť.
Od nejasnej požiadavky k testovateľnej požiadavke
Dobrá požiadavka je merateľná a overiteľná. Nie „nech je systém rýchly“, ale „nech sa výsledky vyhľadávania vrátia do 500 ms“. Tu je postup, ako pomocou AI zúžiť neistotu:
- Zadajte požiadavku tak, ako je, a nechajte vygenerovať otázku. Nepýtajte sa AI nie na riešenie, ale najprv „uveďte čokoľvek nejasné v tejto žiadosti ako otázku“.
- Vy dávate odpovede. Iba vy poznáte kontext; Odpovedzte na otázky AI s vašimi skutočnými obchodnými obmedzeniami.
- Nechajte to preložiť do príbehov používateľov a kritérií prijatia. Preložte objasnenú potrebu do testovateľných položiek.
- Pridajte okrajové prípady a negatívne scenáre. "Prázdny výsledok", "neoprávnený používateľ", "príliš veľký súbor" atď.
Výzva na extrakciu nejasností: „Nasledujúcu obchodnú požiadavku preložíme na softvérovú požiadavku. Zatiaľ nenavrhujte riešenie. Najprv extrahujte VŠETKY nejednoznačnosti a skryté predpoklady, ktoré nie sú zodpovedané v tejto požiadavke, ako zoznam otázok. Zoskupte otázky do nasledujúcich nadpisov: rozsah, používateľ/autorita, objem údajov, výkon, chybové stavy, bezpečnosť. Požiadavka: „Umožnite používateľom stiahnuť históriu objednávok ako správu“.
Príbeh používateľa + výzva na prijatie kritérií: "Rozdeľte nasledujúcu objasnenú potrebu na príbehy používateľov, ktoré sú v súlade s princípmi INVEST. Napíšte 3-5 testovateľných kritérií prijatia pre každý príbeh (vo formáte Dan-When-Then). Pridajte aspoň 2 negatívne scenáre (neoprávnený prístup, prázdne údaje). Potreba: [napíšte objasnenú potrebu tu]"
Porovnanie návrhových rozhodnutí s AI
Dizajn je neustály kompromis: rýchlosť versus flexibilita, jednoduchosť versus škálovateľnosť? AI vkladá tieto kompromisy do rýchlej tabuľky. Napríklad pri funkcii „odoslať upozornenie“ môžete diskutovať o tom, či použiť synchrónny (odoslať na požiadanie) alebo asynchrónny (vo fronte, odoslať na pozadí).
Výzva na porovnanie dizajnu: „Navrhujem funkciu „odoslať e-mailové upozornenie používateľovi“. Porovnajte dva prístupy: (A) synchrónne doručovanie počas požiadavky HTTP, (B) asynchrónne doručovanie na pozadí jej umiestnením do frontu správ. Vytvorte tabuľku na nasledujúcich osiach: doba čakania používateľa, odolnosť voči chybám, zložitosť, náklady na infraštruktúru, ťažkosti pri ladení. Zhrňte, ktorý prípad by som vetu 2 zhrnul. rozhodnutie pre mňa."
os
synchrónny prenos
Asynchrónne (vo fronte)
Čakacia doba používateľa
Dlhé (čakanie na zásielku)
Krátke (okamžite sa vráti)
Odolnosť voči poruchám
Nízka (požiadavka vybuchne, ak vybuchne odosielanie)
Vysoká (možný opakovaný pokus)
zložitosť
nízka
Stredne vysoká (infraštruktúra v rade)
Náklady na infraštruktúru
nízka
Potrebné ďalšie komponenty
Kde sa to hodí
Nízka hlasitosť, jednoduchá aplikácia
Veľký objem, kritické doručenie
Tip: Povedať AI „nerozhodujte za mňa, len mi ukážte možnosti a podmienky“ vás núti premýšľať a znižuje riziko slepého prijatia návrhu. Najlepšie rozhodnutie o dizajne urobí osoba, ktorá pozná váš kontext (vy).
Slabá výzva / silná výzva
SLABÝ: "Navrhnite databázu pre objednávkový systém." (Výsledok: aký rozsah, aké vzťahy, ktoré obmedzenia nie sú jasné; všeobecná, nerealistická schéma.) SILNÝ: "Navrhnite návrh dátového modelu pre malý elektronický obchod. Entity: Zákazník, Objednávka, Produkt, Položka objednávky. Obmedzenia: V objednávke môže byť veľa produktov; cena produktu sa môže časom meniť, ale aktuálna cena by mala byť zachovaná ~500 dní a očakávané objednávky z predchádzajúcich objednávok. „Vysvetlite, že ste sa rozhodli. Uveďte, ako ste vyriešili problém s históriou cien. Uveďte to ako zoznam entít a polí, nie kód."
Rozdiel silnej výzvy; stupnica (500 objednávok za deň), obchodné pravidlo (predchádzajúca cena musí byť zachovaná) a požadovaný výstupný formát. Jediná veta ako „Cena z minulosti musí byť zachovaná“ úplne zmení dizajn; Ak to nešpecifikujete, AI vytvorí nepresný, ale hodnoverne vyzerajúci diagram.
Mini kufríky
Prípad 1 – Skrytý predpoklad. Tím priamo kóduje požiadavku „používateľ môže nahrať profilovú fotografiu“. Iný tím sa opýtal AI na neistotu: "maximálna veľkosť? povolené formáty? nevhodné ovládanie obsahu? odstrániť starú fotku?" Vytvára 8 otázok ako. Prvý tím sa dozvie o probléme v produkcii, keď 20 MB súbory zaplnia server; Druhý tím to rieši dizajnovo.
Prípad 2 – Nesprávny predpoklad mierky. AI navrhuje komplexnú vrstvu ukladania do vyrovnávacej pamäte pre funkciu vytvárania prehľadov. Keď inžinier poukazuje na to, že skutočné údaje sú len 30 správ za deň, AI návrh zjednoduší. Neuvedenie rozsahu spôsobuje náklady zbytočnej zložitosti; špecifikovaním ušetríte 2 týždne zbytočnej práce.
Prípad 3 – Medzera kritérií prijatia. "Čo sa stane, ak platba zlyhá?" Keďže otázka nebola nikdy položená, objednávkový systém v prípade neúspešnej platby aj tak označí objednávku ako "potvrdenú". Zoznam negatívnych scenárov generovaných AI zachytáva túto medzeru; Kritériá prijatia 1 riadku bránia strate skutočných peňazí.
Časté chyby
- Odoslanie požiadavky priamo do kódu. Kód napísaný pred vyriešením nejednoznačnosti rýchlo rieši nesprávny problém.
- Slepo brať všeobecnú „najlepšiu prax“ AI. Ak nešpecifikujete svoj kontext (rozsah, rozpočet, tím), odporúčanie pre vás nebude fungovať.
- Preskakovanie nefunkčných požiadaviek. Ak rýchlosť, bezpečnosť a rozsah nie sú špecifikované, návrh bude neúplný.
- Len premýšľam o šťastnom scenári. Negatívne scenáre, ako sú prázdne údaje, neoprávnený používateľ, chybový stav by mali byť zahrnuté v návrhu.
- Delegovanie rozhodnutia na AI. AI generuje možnosti; Vy sa rozhodnete, ktorý kompromis vyhovuje vášmu podnikaniu.
V súhrne
Analýza a návrh požiadaviek je fázou, v ktorej sa zachytávajú najlacnejšie chyby. Umelá inteligencia tu generuje otázky, ktoré odhaľujú neistotu, navrhuje príbehy používateľov a kritériá prijatia a mapuje kompromisy v dizajne. Ale kontext poznáte len vy; Vašou úlohou je filtrovať odporúčania AI na základe vášho rozsahu, rozpočtu, tímu a právnych obmedzení a urobiť konečné rozhodnutie. Disciplína „nerozhoduj za mňa, ukáž mi možnosti“ vedie k lepšiemu dizajnu a hlbšiemu učeniu.
Aplikačná úloha
Vyberte si žiadosť o prácu v jednej vete z vášho kontextu. Najprv použite výzvu na nejednoznačnosť na AI a odpovedzte na otázky so svojimi skutočnými obmedzeniami. Potom preložte objasnenú potrebu do aspoň 2 príbehov používateľov a 3 kritérií prijatia pre každý z nich; Zahrňte aspoň 1 negatívny scenár. Nakoniec vytvorte porovnávaciu tabuľku pre návrhové rozhodnutie (synchrónne/asynchrónne, štruktúra tabuľky atď.) a napíšte svoje vlastné rozhodnutie v 2 vetách.
kontrolný zoznam
- [ ] Nejasnosti som odstránil ako otázky pred odovzdaním požiadavky do kódu.
- [ ] Kontext (rozsah, právomoc, výkon, právne obmedzenie) som dal AI.
- [ ] Rozdelil som príbehy používateľov do testovateľných kritérií prijatia.
- [ ] Pridal som aspoň jeden negatívny/okrajový scenár.
- [ ] Konštrukčné rozhodnutie som vyhodnotil pomocou porovnávacej tabuľky.
- [ ] Konečné rozhodnutie som urobil na základe môjho kontextu, nenechal som to na AI.