Od dijagrama do aplikacija

Uređivač dijagrama strukturirani Event Storming uz pomoć AI-ja za timove poslovnog softverskog inženjeringa. Proizvodi dosljedne softverske specifikacije za agentne SDLC procese. Bez zadataka, bez sprintova.

ActorCustomerActionPlace OrderAggregateOrderEventOrder Placed

Demo

Ovo je prava domena e-trgovine, „Customers”, modelirana u StormPilotu: Actors, Actions, Aggregates, Events, Rules, Views i Terms, potpuno povezani. Implementirao ga je agent za kodiranje i objavio na https://github.com/codelev/stormpilot.

Domena Customers modelirana u StormPilotu, prikazuje povezane elemente Actor, Action, Aggregate, Event, Rule i View

Isporuka softverskog proizvoda sljedeći dan

Ono što zapravo usporava Time to Market softverskog proizvoda rijetko je samo pisanje koda. To je sve što se mora dogoditi prije nego što agent, ili inženjer, može sigurno promijeniti proizvod. Nakon što ste počeli koristiti multiagentni SDLC, i dalje ste nailazili na ista četiri problema.

Fragmentirano znanje

Znanje o proizvodu bilo je rascjepkano među tehničkim i netehničkim voditeljima, aplikacijama, alatima za praćenje zadataka, repozitorijima koda i dokumentima. Obično je bilo nepotpuno, zastarjelo i tumačeno različito ovisno o tome tko ga čita. Prije nego što ste uopće mogli sastaviti paket zadataka promjena (sprint), morali ste prvo sinkronizirati sve to rascjepkano znanje.

Procjene zadataka usmjerene na ljude

Svaki zadatak promjene nosio je procjenu usmjerenu na ljude (story pointe) koja nije igrala nikakvu ulogu kad je posao obavljao agent. Agentu nije potrebna procjena story pointima da bi počeo. Ono što je preostalo bila je ceremonija planiranja: raspodjela zadataka i razmrsivanje ovisnosti između zadataka ili timova, trud koji je postojao samo zato što su zadaci bili dimenzionirani za ljude, a ne za agente.

Obrnuto inženjerstvo postojećeg stanja

Zadatak promjene opisuje razliku između postojećeg i željenog stanja. To je prisililo agenta za pisanje koda da prvo obrnutim inženjeringom rekonstruira postojeće stanje, prije nego što je uopće mogao djelovati na razliku. Zbog trenutačnih ograničenja LLM-ova, ta rekonstrukcija ponekad je bila pogrešna ili nepotpuna, pa se proizvod mijenjao na način koji niste tražili.

Odstupanje u tumačenju

Svaki zadatak promjene bio je napisan prirodnim jezikom, što je nosilo rizik odstupanja u tumačenju: jaz između namjeravanog ponašanja domene i ponašanja koje je stvarno implementirano, uzrokovan gubitkom informacija ili dvosmislenošću. Zbog trenutačnih ograničenja LLM-ova, isti zadatak dan istom agentu mogao je svaki put proizvesti drugačiji kod, i proizvod se opet mijenjao na način koji niste tražili.

Spec-Driven Development

Kako bi to riješili, timovi usvajaju jedan od okvira Spec-Driven Development (SDD): specifikacijske datoteke, napisane prirodnim ili miješanim prirodno-formalnim jezikom, napisane prije pisanja koda, postaju ulaz za agenta. Postoji usporedba 15 okvira Spec-Driven Development koja ih razvrstava u tri razine.

Razina 1 · Spec-First

Tretiraju specifikaciju kao preliminarni ugovor ili pismo namjere.

GitHub Spec Kit, Superpowers, Behavioral Meta-Architectural Design, Goal-Driven Development, SpecSwarm

Razina 2 · Spec-Anchored

Održavaju specifikaciju kao živi dokument tijekom cijelog životnog ciklusa projekta.

MUSUBI, Intent, OpenSpec

Razina 3 · Spec-as-Source

Implementiraju postavke bez odstupanja u kojima je specifikacijska datoteka apsolutni jedini izvor istine.

Tessl, Contractual Specification-Driven Development

Usporedba 15 okvira Spec-Driven Development

Isprobali smo taj put. Specifikacijske datoteke doista su pomogle prikupiti znanje na jednom mjestu, opisati postojeće i željeno stanje te smanjiti odstupanje u tumačenju. No specifikacijska datoteka i dalje je bila još jedan dokument koji živi u repozitoriju koda, kojemu je trebala vlastita sinkronizacija s ostalim artefaktima proizvoda. A poslovni dionici i dalje nisu mogli surađivati na specifikacijskoj datoteci: rascjepkano znanje između tehničkih i netehničkih ljudi ostalo je neriješeno.

Zato smo izgradili StormPilot kako bismo odjednom riješili sva četiri problema.

Event Storming

EventStorming je jednostavna suradnička radionička tehnika koju je izumio Alberto Brandolini za istraživanje složenih poslovnih procesa kao vremenske crte ponavljajućih elemenata. EventStorming nije trebao biti digitalni alat. Njegova primarna svrha je kolektivno učenje: poslovni i tehnički stručnjaci zajedno otkrivaju i raspravljaju o tome kako domena funkcionira. Ploča je namjerno lagana i taktilna, omogućujući sudionicima da brzo dodaju, pomiču, grupiraju, propituju i uklanjaju elemente. Fizički medij samoljepljivih papirića dio je metode. Notacija nije zamišljena kao strog formalni jezik modeliranja.

Video o Event Stormingu

Strukturirani Event Storming

StormPilot je uglavnom vjeran konceptima Event Storminga. Izbjegava terminologiju CQRS-a koristeći "View" umjesto "Read Model", "Action" umjesto "Command", "Rule" umjesto "Policy". Dodaje "Term" kao eksplicitni element za održavanje jedinstvenog jezika domene. Strukturirani Event Storming pretvara tehniku učenja u sustav specifikacija. Ugrađuje formalne notacije izravno u elemente kako bi se smanjilo odstupanje u tumačenju: jaz između onoga za što je domena odgovorna i onoga što se stvarno gradi, uzrokovan izgubljenim ili dvosmislenim informacijama. Nastala softverska specifikacija služi kao determinističan ulaz za agentno generiranje koda, omogućujući da znanje o domeni pokreće promjene u softverskom proizvodu koji se isporučuje sljedeći dan.

Strukturirani Event Storming

AI pomoć

AI asistent čita vaš stvarni model domene i predlaže konkretne popravke: poboljšanja naziva, elemente koji nedostaju, definicije uloga, praznine u toku, pojašnjenja ograničenja. Prihvatite ono što je korisno, odbacite ostalo.

AI asistent StormPilota predlaže poboljšanja naziva, elemente koji nedostaju, definicije uloga, praznine u toku i pojašnjenja ograničenja, uz cjelokupni dijagram domene

Verzioniranje

Zadatak kao samostalni artefakt upravljanja projektom nema smisla u multiagentnom SDLC-u ili u ekonomiji tokena. Promjene u znanju zabilježenom u dijagramu strukturirani Event Storminga izravno se preslikavaju na promjene u proizvodu koji želimo objaviti. Zato StormPilot zamjenjuje zadatke i pakete zadataka verzioniranjem proizvoda. Tako se rješavaju procjene zadataka usmjerene na ljude i obrnuto inženjerstvo postojećeg stanja.

StormPilotova ploča povijesti verzija koja prikazuje razliku između dviju nepromjenjivih verzija domene

Česta pitanja

Moram li platiti da bih to isprobao?

Ne. Demo je besplatna, javna izolirana okolina bez registracije i sa svim dostupnim ulogama. Resetira se svakodnevno i ograničena je na 5 domena s po 2 verzije.

Što je verzija domene?

Facilitator može zamrznuti trenutačno stanje dijagrama kao verziju. Verzije su nepromjenjive, s vremenskom oznakom i samo za čitanje.

Što se izvozi?

StormPilot izvozi User Interface, Application Programming Interface, model podataka i Behavior scenarije.

Piše li AI kod?

Ne. AI StormPilota određuje ŠTO treba kodirati: model domene i njegovo ponašanje. Tehnološki stog i dalje je odluka inženjerskog tima.

Zašto OpenRPC?

Poslovne Actions nadilaze REST semantiku. OpenRPC točno odgovara notaciji Event Storming, izbjegava interpretacijsko odstupanje i neovisan je o protokolu.

Zašto Gherkin?

Given/When/Then odražava Event Storming Rules i izbjegava interpretacijsko odstupanje, jer ga izravno podržava BDD ekosustav alata.

Zašto PlantUML?

Event Storming je po prirodi vizualan, a PlantUML to zadržava pri izvozu. Sintaksu izravno podržava ekosustav alata.

Zašto SSE?

Events teku samo u jednom smjeru, pa složenost WebSocketsa ostaje neiskorištena. Server-Sent Events ostaje obični HTTP i automatski se ponovno povezuje.

Usklađeno s OUZP-om. Podaci se obrađuju unutar EU-a, uz korištenje infrastrukturnih i partnera za obradu koji se pridržavaju istog standarda.