Jednostka 2 / 12

Analiza wymagań i projektowanie oprogramowania

Zyski:

  • Możliwość przekształcania niejasnych żądań biznesowych w jasne, testowalne wymagania dotyczące oprogramowania i historie użytkowników dzięki wsparciu AI
  • Możliwość porównywania zalet i wad projektu systemu, modelu danych i decyzji architektonicznych w ustrukturyzowany sposób za pomocą sztucznej inteligencji
  • Możliwość krytycznej weryfikacji proponowanego projektu sztucznej inteligencji pod kątem wymagań, skalowalności i ograniczeń

Większość projektów oprogramowania kończy się niepowodzeniem nie z powodu złego kodu, ale z powodu źle zrozumiałych wymagań. Jednozdaniowe żądanie, takie jak „Pozwól użytkownikom pobierać raporty”, pozostawia dziesiątki pytań bez odpowiedzi: W jakim formacie? Kto jest odpowiedzialny? Ile rekordów? A co jeśli jest powolny? Analiza wymagań (przełożenie wniosku biznesowego na jasne, testowalne potrzeby techniczne) i projektowanie oprogramowania (konstruowanie na papierze struktury spełniającej te potrzeby) to etapy, na których zapobiega się najbardziej kosztownym błędom przed napisaniem kodu. W tej części nauczymy się wykorzystywać sztuczną inteligencję jako „partnera myślowego” na tym etapie: partnera, który wyjaśnia niepewność, analizuje opcje, ale ostateczną decyzję pozostawia Tobie.

AI generuje tutaj dwie duże wartości. Po pierwsze, zadaje pytania, które pomijasz; Wydobywa na powierzchnię ukryte założenia i przypadki brzegowe w żądaniu. Po drugie, szybko zestawia zalety i wady decyzji projektowej. Ale to jest niebezpieczeństwo: sztuczna inteligencja poda ogólne zalecenia jako „najlepsze praktyki”, nie znając w pełni kontekstu (budżet, zespół, istniejący system, ograniczenia prawne). Twoim zadaniem jest odfiltrowanie tej rady od własnej prawdy.

Koncepcje: Historia użytkownika: Krótkie zdanie wyrażające potrzebę w formie „…jak, chcę móc… ponieważ…”. Kryteria akceptacji: Testowalne warunki, które muszą zostać spełnione, aby zadanie zostało uznane za „ukończone”. Wymaganie niefunkcjonalne: wymagania dotyczące „jak będzie się zachowywać”, a nie „co zrobi”, takie jak szybkość, bezpieczeństwo, skalowalność.

Od niejasnego żądania do sprawdzalnego wymagania

Dobry wymóg jest mierzalny i weryfikowalny. Nie „niech system będzie szybki”, ale „niech wyniki wyszukiwania wrócą w ciągu 500 ms”. Oto szczegółowy sposób wykorzystania sztucznej inteligencji do zawężenia niepewności:

  1. Podaj żądanie w niezmienionej postaci i poproś o wygenerowanie pytania. Poproś sztuczną inteligencję nie o rozwiązanie, ale najpierw „wymień w tej prośbie wszystko, co jest niejasne, jako pytanie”.
  2. Ty dajesz odpowiedzi. Tylko ty znasz kontekst; Odpowiadaj na pytania AI, uwzględniając rzeczywiste ograniczenia biznesowe.
  3. Przełóż to na historie użytkowników i kryteria akceptacji. Przełóż wyjaśnioną potrzebę na testowalne elementy.
  4. Dodaj przypadki brzegowe i scenariusze negatywne. „Pusty wynik”, „nieautoryzowany użytkownik”, „zbyt duży plik” itp.

Monit o wyodrębnienie niejednoznaczności: „Przetłumaczymy następujące żądanie biznesowe na wymagania dotyczące oprogramowania. Nie proponuj jeszcze rozwiązania. Najpierw wyodrębnij WSZYSTKIE niejasności i ukryte założenia, na które nie ma odpowiedzi w tym żądaniu, w formie listy pytań. Pogrupuj pytania według następujących nagłówków: zakres, użytkownik/uprawnienie, ilość danych, wydajność, warunki błędów, bezpieczeństwo. Żądanie: „Pozwól użytkownikom pobierać historię zamówień w formie raportu”.

Historia użytkownika + monit o kryteria akceptacji: „Podziel następującą wyjaśnioną potrzebę na historie użytkowników zgodne z zasadami INVEST. Napisz 3–5 testowalnych kryteriów akceptacji dla każdej historii (w formacie „Daj-kiedy-wtedy”). Dodaj co najmniej 2 negatywne scenariusze (nieautoryzowany dostęp, puste dane). Potrzeba: [wpisz tutaj wyjaśnioną potrzebę]”

Porównanie decyzji projektowych ze sztuczną inteligencją

Projektowanie to ciągły kompromis: szybkość kontra elastyczność, prostota kontra skalowalność? Sztuczna inteligencja umieszcza te kompromisy w szybkim arkuszu kalkulacyjnym. Na przykład w przypadku funkcji „wyślij powiadomienie” możesz debatować, czy zastosować podejście synchroniczne (wysyłanie na żądanie), czy asynchroniczne (kolejka, wysyłanie w tle).

Podpowiedź porównania projektu: „Projektuję funkcję„ wyślij powiadomienie e-mailem do użytkownika ”. Porównaj dwa podejścia: (A) dostarczanie synchroniczne podczas żądania HTTP, (B) dostarczanie asynchroniczne w tle poprzez umieszczenie go w kolejce wiadomości. Zrób tabelę zawierającą następujące osie: czas oczekiwania użytkownika, odporność na błędy, złożoność, koszt infrastruktury, trudności w debugowaniu. Podsumuj w 2 zdaniach, które z nich ostatecznie wybrałbym w takim przypadku. Nie podejmuj decyzji za mnie.

transmisja synchroniczna

Asynchroniczne (kolejka)

Czas oczekiwania użytkownika

Długi (oczekuje na wysyłkę)

Krótki (wraca natychmiast)

Tolerancja błędów

Niski (żądanie eksploduje, jeśli wysyłanie eksploduje)

Wysoki (możliwa ponowna próba)

złożoność

niski

Średnio-wysoki (infrastruktura kolejkowa)

Koszt infrastruktury

niski

Wymagane dodatkowe komponenty

Gdzie to pasuje

Mała objętość, prosta aplikacja

Dostawa w dużych ilościach, o znaczeniu krytycznym

Wskazówka: powiedzenie sztucznej inteligencji „nie podejmuj decyzji za mnie, po prostu pokaż mi opcje i warunki” zmusza Cię do myślenia i zmniejsza ryzyko ślepego przyjęcia sugestii. Najlepszą decyzją projektową jest ta podjęta przez osobę znającą Twój kontekst (Ciebie).

Słaba podpowiedź/silna podpowiedź

SŁABY: „Zaprojektuj bazę danych dla systemu zamówień”. (Wynik: jaka skala, jakie relacje, które ograniczenia nie są jasne; ogólny, nierealistyczny schemat.) SILNY: „Zaproponuj projekt modelu danych dla małego handlu elektronicznego. Podmioty: Klient, Zamówienie, Produkt, Pozycja zamówienia. Ograniczenia: w zamówieniu może znajdować się wiele produktów; cena produktu może zmieniać się w czasie, ale obecna cena powinna zostać zachowana w poprzednim zamówieniu; oczekuje się ~500 zamówień dziennie. Relacje i dlaczego „Wyjaśnij, że to zrobiłeś decyzja. Określ, w jaki sposób rozwiązałeś problem historii cen. Podaj go jako listę jednostek i pól, a nie kod.”

Różnica potężnego podpowiedzi; skala (500 zamówień dziennie), reguła biznesowa (należy zachować cenę z przeszłości) i pożądany format wyjściowy. Jedno zdanie typu „Należy utrzymać dotychczasową cenę” całkowicie zmienia projekt; Jeśli tego nie określisz, sztuczna inteligencja utworzy niedokładny, ale wiarygodnie wyglądający diagram.

Mini etui

Przypadek 1 – Ukryte założenie. Zespół bezpośrednio koduje prośbę „użytkownik może przesłać zdjęcie profilowe”. Inny zespół zapytał sztuczną inteligencję o niepewność: „maksymalny rozmiar? dozwolone formaty? niewłaściwa kontrola treści? usunięcie starego zdjęcia?” Tworzy 8 pytań takich jak. Pierwszy zespół dowiaduje się o problemie w środowisku produkcyjnym, gdy na serwerze zapełniają się pliki o wielkości 20 MB; Drugi zespół rozwiązuje go projektowo.

Przypadek 2 – Błędne założenie skali. AI proponuje złożoną warstwę buforowania dla funkcji raportowania. Kiedy inżynier zwraca uwagę, że rzeczywistych danych jest tylko 30 raportów dziennie, sztuczna inteligencja upraszcza sugestię. Nieokreślenie skali pociąga za sobą koszty niepotrzebnej złożoności; określenie pozwala zaoszczędzić 2 tygodnie niepotrzebnej pracy.

Przypadek 3 – Luka w kryteriach akceptacji. „Co się stanie, jeśli płatność się nie powiedzie?” Ponieważ pytanie nigdy nie zostało zadane, system zamówień nadal oznaczy zamówienie jako „potwierdzone” w przypadku nieudanej płatności. Lista negatywnych scenariuszy generowanych przez sztuczną inteligencję uwzględnia tę lukę; Kryteria akceptacji 1 linii zapobiegają utracie prawdziwych pieniędzy.

Typowe błędy

  • Przekazanie żądania bezpośrednio do kodu. Kod napisany przed rozwiązaniem niejednoznaczności szybko rozwiązuje niewłaściwy problem.
  • Ślepe branie ogólnych „najlepszych praktyk” AI. Jeśli nie określisz kontekstu (skali, budżetu, zespołu) rekomendacja nie będzie dla Ciebie skuteczna.
  • Pomijanie wymagań niefunkcjonalnych. Jeżeli nie określono szybkości, bezpieczeństwa i skali, projekt będzie niekompletny.
  • Właśnie myślę o szczęśliwym scenariuszu. W projekcie należy uwzględnić negatywne scenariusze takie jak puste dane, nieautoryzowany użytkownik, status błędu.
  • Delegowanie decyzji do AI. AI generuje opcje; Ty decydujesz, który kompromis jest odpowiedni dla Twojej firmy.

Podsumowując

Analiza i projektowanie wymagań to etapy, na których wychwytywane są najtańsze błędy. W tym przypadku sztuczna inteligencja generuje pytania ujawniające niepewność, opracowuje historie użytkowników i kryteria akceptacji oraz projektuje wykresy kompromisów. Ale tylko ty znasz kontekst; Twoim zadaniem jest filtrowanie rekomendacji sztucznej inteligencji na podstawie skali, budżetu, zespołu i ograniczeń prawnych i podjęcie ostatecznej decyzji. Dyscyplina „nie podejmuj decyzji za mnie, pokaż mi opcje” prowadzi zarówno do lepszego projektowania, jak i głębszej nauki.

Zadanie aplikacji

Wybierz jednozdaniowe zapytanie o pracę ze swojego kontekstu. Najpierw zastosuj monit o niejednoznaczność do AI i odpowiedz na pytania, uwzględniając swoje rzeczywiste ograniczenia. Następnie przełóż wyjaśnioną potrzebę na co najmniej 2 historie użytkowników i 3 kryteria akceptacji dla każdej; Uwzględnij co najmniej 1 negatywny scenariusz. Na koniec utwórz tabelę porównawczą dla decyzji projektowej (synchroniczna/asynchroniczna, struktura tabeli itp.) i napisz własną decyzję w 2 zdaniach.

lista kontrolna

  • [ ] Usunąłem niejasności jako pytania przed przekazaniem żądania do kodu.
  • [ ] Podałem kontekst (skalę, autorytet, wydajność, ograniczenia prawne) sztucznej inteligencji.
  • [ ] Podzieliłem historie użytkowników na sprawdzalne kryteria akceptacji.
  • [ ] Dodałem co najmniej jeden scenariusz spadkowy/przewagi.
  • [ ] Oceniłem decyzję projektową na podstawie tabeli kompromisów.
  • [ ] Podjąłem ostateczną decyzję na podstawie mojego kontekstu, nie pozostawiłem jej AI.