Από διαγράμματα σε εφαρμογές

Επεξεργαστής διαγραμμάτων δομημένο Event Storming με βοήθεια AI για ομάδες επιχειρησιακής μηχανικής λογισμικού. Παράγει συνεπείς προδιαγραφές λογισμικού για ροές εργασίας πρακτορικού SDLC. Χωρίς εργασίες, χωρίς sprints.

ActorCustomerActionPlace OrderAggregateOrderEventOrder Placed

Demo

Αυτό είναι ένα πραγματικό domain ηλεκτρονικού εμπορίου, «Customers», μοντελοποιημένο στο StormPilot: Actors, Actions, Aggregates, Events, Rules, Views και Terms, πλήρως συνδεδεμένα. Υλοποιήθηκε από έναν πράκτορα κώδικα και δημοσιεύτηκε στο https://github.com/codelev/stormpilot.

Ένα domain Customers μοντελοποιημένο στο StormPilot, που δείχνει συνδεδεμένα στοιχεία Actor, Action, Aggregate, Event, Rule και View

Παράδοση προϊόντος λογισμικού την επόμενη ημέρα

Αυτό που πραγματικά καθυστερεί το Time to Market ενός προϊόντος λογισμικού σπάνια είναι η ίδια η κωδικοποίηση. Είναι όλα όσα πρέπει να συμβούν πριν ένας πράκτορας, ή ένας μηχανικός, μπορέσει να αλλάξει με ασφάλεια το προϊόν. Μόλις αρχίσατε να εκτελείτε έναν πολυπρακτορικό SDLC, συνεχίζατε να προσκρούετε στα ίδια τέσσερα προβλήματα, ξανά και ξανά.

Κατακερματισμένη γνώση

Η γνώση για το προϊόν ήταν κατακερματισμένη ανάμεσα σε τεχνικά και μη τεχνικά στελέχη, εφαρμογές, εργαλεία παρακολούθησης εργασιών, αποθετήρια κώδικα και έγγραφα. Συνήθως ήταν ελλιπής, ξεπερασμένη και ερμηνευόταν διαφορετικά ανάλογα με το ποιος τη διάβαζε. Πριν καν μπορέσετε να συνθέσετε ένα πακέτο εργασιών αλλαγής (ένα Sprint), έπρεπε πρώτα να συγχρονίσετε όλη αυτή την κατακερματισμένη γνώση.

Ανθρωποκεντρικές εκτιμήσεις εργασιών

Κάθε εργασία αλλαγής έφερε μια ανθρωποκεντρική εκτίμηση (story points) που δεν έπαιζε κανέναν ρόλο μόλις τη δουλειά την έκανε ένας πράκτορας. Ένας πράκτορας δεν χρειάζεται εκτίμηση story points για να ξεκινήσει. Αυτό που απέμενε ήταν μια τελετουργία σχεδιασμού: κατανομή εργασιών και ξεδιάλυμα εξαρτήσεων μεταξύ εργασιών ή ομάδων, μια προσπάθεια που υπήρχε μόνο επειδή οι εργασίες είχαν διαστασιολογηθεί για ανθρώπους, όχι για πράκτορες.

Αντίστροφη μηχανική της υπάρχουσας κατάστασης

Μια εργασία αλλαγής περιγράφει τη διαφορά μεταξύ μιας υπάρχουσας και μιας επιθυμητής κατάστασης. Αυτό ανάγκαζε τον πράκτορα κωδικοποίησης να κάνει πρώτα αντίστροφη μηχανική της υπάρχουσας κατάστασης, πριν καν μπορέσει να ενεργήσει πάνω στη διαφορά. Λόγω των τρεχόντων περιορισμών των LLM, μερικές φορές αυτή η ανακατασκευή γινόταν λανθασμένη ή ελλιπής, και το προϊόν άλλαζε με τρόπους που δεν είχατε ζητήσει.

Απόκλιση ερμηνείας

Κάθε εργασία αλλαγής ήταν γραμμένη σε φυσική γλώσσα, γεγονός που έφερε τον κίνδυνο απόκλισης ερμηνείας: το χάσμα ανάμεσα στη συμπεριφορά του domain που σκοπεύατε και στη συμπεριφορά που τελικά υλοποιήθηκε, που προκαλείται από απώλεια πληροφορίας ή ασάφεια. Λόγω των τρεχόντων περιορισμών των LLM, η ίδια εργασία δοσμένη στον ίδιο πράκτορα μπορούσε να παράγει διαφορετικό κώδικα κάθε φορά, και και πάλι το προϊόν άλλαζε με τρόπους που δεν είχατε ζητήσει.

Spec-Driven Development

Για να το διορθώσουν αυτό, οι ομάδες υιοθετούν ένα από τα πλαίσια Spec-Driven Development (SDD): αρχεία προδιαγραφών, γραμμένα σε φυσική ή μεικτή φυσική και τυπική γλώσσα, γραμμένα πριν την κωδικοποίηση, γίνονται η είσοδος για τον πράκτορα. Υπάρχει μια σύγκριση 15 πλαισίων Spec-Driven Development που τα κατατάσσει σε τρία επίπεδα.

Επίπεδο 1 · Spec-First

Αντιμετωπίζουν την προδιαγραφή ως προκαταρκτικό συμβόλαιο ή επιστολή πρόθεσης.

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

Επίπεδο 2 · Spec-Anchored

Διατηρούν την προδιαγραφή ως ζωντανό έγγραφο καθ' όλη τη διάρκεια του κύκλου ζωής του έργου.

MUSUBI, Intent, OpenSpec

Επίπεδο 3 · Spec-as-Source

Υλοποιούν μια ρύθμιση μηδενικής απόκλισης όπου το αρχείο προδιαγραφών είναι η απόλυτη μοναδική πηγή αλήθειας.

Tessl, Contractual Specification-Driven Development

Σύγκριση 15 πλαισίων Spec-Driven Development

Δοκιμάσαμε αυτόν τον δρόμο. Τα αρχεία προδιαγραφών βοήθησαν πράγματι να συγκεντρωθεί η γνώση σε ένα μέρος, να περιγραφεί η υπάρχουσα και η επιθυμητή κατάσταση και να μειωθεί η απόκλιση ερμηνείας. Όμως το αρχείο προδιαγραφών παρέμενε ένα ακόμη έγγραφο που ζούσε στο αποθετήριο κώδικα, χρειαζόμενο τον δικό του συγχρονισμό με τα υπόλοιπα τεχνουργήματα του προϊόντος. Και οι επιχειρησιακοί ενδιαφερόμενοι εξακολουθούσαν να μην μπορούν να συνεργαστούν σε ένα αρχείο προδιαγραφών: η κατακερματισμένη γνώση ανάμεσα σε τεχνικούς και μη τεχνικούς ανθρώπους παρέμενε ανεπίλυτη.

Έτσι φτιάξαμε το StormPilot για να αντιμετωπίσουμε και τα τέσσερα προβλήματα ταυτόχρονα.

Event Storming

Το EventStorming είναι μια χαμηλής πιστότητας συνεργατική τεχνική εργαστηρίου που επινοήθηκε από τον Alberto Brandolini για τη διερεύνηση σύνθετων επιχειρηματικών διαδικασιών ως χρονοδιάγραμμα επαναλαμβανόμενων στοιχείων. Το EventStorming δεν προοριζόταν να είναι ψηφιακό εργαλείο. Ο κύριος σκοπός του είναι η συλλογική μάθηση: επιχειρηματικοί και τεχνικοί ειδικοί ανακαλύπτουν και συζητούν πώς λειτουργεί ένας τομέας. Ο πίνακας είναι σκόπιμα ελαφρύς και απτικός, επιτρέποντας στους συμμετέχοντες να προσθέτουν, μετακινούν, ομαδοποιούν, αμφισβητούν και απορρίπτουν στοιχεία γρήγορα. Το φυσικό μέσο των αυτοκόλλητων σημειώσεων αποτελεί μέρος της μεθόδου. Ο συμβολισμός δεν προορίζεται να είναι μια αυστηρή επίσημη γλώσσα μοντελοποίησης.

Βίντεο Event Storming

Δομημένο Event Storming

Το StormPilot παραμένει σε μεγάλο βαθμό πιστό στις έννοιες του Event Storming. Αποφεύγει την ορολογία CQRS χρησιμοποιώντας "View" αντί για "Read Model", "Action" αντί για "Command", "Rule" αντί για "Policy". Προσθέτει το "Term" ως ρητό στοιχείο για τη διατήρηση ενιαίας γλώσσας τομέα. Το δομημένο Event Storming μετατρέπει την τεχνική εκμάθησης σε σύστημα προδιαγραφών. Ενσωματώνει επίσημους συμβολισμούς απευθείας στα στοιχεία για να μειώσει την απόκλιση ερμηνείας: το χάσμα μεταξύ αυτού για το οποίο είναι υπεύθυνος ένας τομέας και αυτού που τελικά κατασκευάζεται, που προκαλείται από χαμένη ή ασαφή πληροφορία. Η προκύπτουσα προδιαγραφή λογισμικού λειτουργεί ως ντετερμινιστική είσοδος για την πρακτορική δημιουργία κώδικα, επιτρέποντας στη γνώση του τομέα να οδηγεί αλλαγές στο προϊόν λογισμικού που παραδίδεται την επόμενη ημέρα.

Δομημένο Event Storming

Βοήθεια AI

Ο βοηθός AI διαβάζει το πραγματικό σας μοντέλο domain και προτείνει συγκεκριμένες διορθώσεις: βελτιώσεις ονοματοδοσίας, στοιχεία που λείπουν, ορισμούς ρόλων, κενά ροής, διευκρινίσεις περιορισμών. Δεχτείτε ό,τι είναι χρήσιμο, απορρίψτε τα υπόλοιπα.

Ο βοηθός AI του StormPilot προτείνει βελτιώσεις ονοματοδοσίας, στοιχεία που λείπουν, ορισμούς ρόλων, κενά ροής και διευκρινίσεις περιορισμών, μαζί με το πλήρες διάγραμμα domain

Εκδοχοποίηση

Μια εργασία ως αυτόνομο τεχνούργημα διαχείρισης έργου δεν έχει νόημα σε έναν πολυπρακτορικό SDLC ή σε μια οικονομία tokens. Οι αλλαγές στη γνώση που καταγράφεται σε ένα διάγραμμα δομημένο Event Storming αντιστοιχίζονται απευθείας σε αλλαγές στο προϊόν που θέλουμε να κυκλοφορήσουμε. Γι' αυτό το StormPilot αντικαθιστά τις εργασίες και τα πακέτα εργασιών με εκδοχοποίηση προϊόντος. Έτσι λύνονται οι ανθρωποκεντρικές εκτιμήσεις εργασιών και η αντίστροφη μηχανική της υπάρχουσας κατάστασης.

Ο πίνακας ιστορικού εκδόσεων του StormPilot που δείχνει τη διαφορά μεταξύ δύο αμετάβλητων εκδόσεων domain

Συχνές ερωτήσεις

Χρειάζεται να πληρώσω για να το δοκιμάσω;

Όχι. Το Demo είναι ένα δωρεάν, δημόσιο sandbox χωρίς εγγραφή και με όλους τους ρόλους διαθέσιμους. Επαναφέρεται καθημερινά και έχει όριο 5 domains, 2 εκδόσεις το καθένα.

Τι είναι μια έκδοση domain;

Ένας Facilitator μπορεί να παγώσει την τρέχουσα κατάσταση ενός διαγράμματος ως έκδοση. Οι εκδόσεις είναι αμετάβλητες, με χρονοσφραγίδα και μόνο για ανάγνωση.

Τι εξάγει;

Το StormPilot εξάγει User Interface, Application Programming Interface, μοντέλο δεδομένων και σενάρια Behavior.

Γράφει κώδικα η AI;

Όχι. Η AI του StormPilot καθορίζει ΤΙ να κωδικοποιηθεί: το μοντέλο domain και τη συμπεριφορά του. Ο τεχνολογικός στοίβα παραμένει απόφαση της ομάδας μηχανικών.

Γιατί OpenRPC;

Οι επιχειρηματικές Actions ξεπερνούν τη σημασιολογία του REST. Το OpenRPC ταιριάζει ακριβώς με τον συμβολισμό του Event Storming, αποφεύγει την ερμηνευτική απόκλιση και παραμένει ανεξάρτητο πρωτοκόλλου.

Γιατί Gherkin;

Το Given/When/Then αντικατοπτρίζει τα Event Storming Rules και αποφεύγει την ερμηνευτική απόκλιση, καθώς υποστηρίζεται άμεσα από το οικοσύστημα εργαλείων BDD.

Γιατί PlantUML;

Το Event Storming είναι εγγενώς οπτικό, και το PlantUML το διατηρεί κατά την εξαγωγή. Η σύνταξη υποστηρίζεται άμεσα από το οικοσύστημα εργαλείων.

Γιατί SSE;

Τα Events ρέουν μόνο προς μία κατεύθυνση, οπότε η πολυπλοκότητα των WebSockets μένει αχρησιμοποίητη. Το Server-Sent Events παραμένει απλό HTTP και επανασυνδέεται αυτόματα.

Συμμορφώνεται με τον ΓΚΠΔ. Τα δεδομένα επεξεργάζονται εντός της ΕΕ, χρησιμοποιώντας υποδομή και συνεργάτες επεξεργασίας που τηρούν το ίδιο πρότυπο.