Κέρδη:
- Δυνατότητα μετατροπής ασαφών επιχειρηματικών αιτημάτων σε σαφείς, ελεγχόμενες απαιτήσεις λογισμικού και ιστορίες χρηστών με υποστήριξη τεχνητής νοημοσύνης
- Δυνατότητα σύγκρισης των πλεονεκτημάτων και των μειονεκτημάτων του σχεδιασμού συστήματος, του μοντέλου δεδομένων και των αρχιτεκτονικών αποφάσεων με δομημένο τρόπο με την τεχνητή νοημοσύνη
- Δυνατότητα κριτικής επικύρωσης του προτεινόμενου σχεδιασμού του AI έναντι απαιτήσεων, επεκτασιμότητας και περιορισμών
Η πλειοψηφία των έργων λογισμικού αποτυγχάνει όχι λόγω κακού κώδικα, αλλά λόγω παρεξηγήσεων απαιτήσεων. Ένα αίτημα μιας πρότασης όπως "Να επιτρέπεται στους χρήστες να κατεβάζουν αναφορές" αφήνει πίσω του δεκάδες αναπάντητα ερωτήματα: Σε ποια μορφή; Ποιος είναι υπεύθυνος; Πόσοι δίσκοι; Κι αν είναι αργό; Η ανάλυση απαιτήσεων (μετάφραση ενός επιχειρηματικού αιτήματος σε σαφείς, ελεγχόμενες τεχνικές ανάγκες) και ο σχεδιασμός λογισμικού (κατασκευή της δομής σε χαρτί για την κάλυψη αυτών των αναγκών) είναι το στάδιο όπου αποτρέπονται τα πιο ακριβά λάθη πριν από τη σύνταξη κώδικα. Σε αυτήν την ενότητα, θα μάθουμε να χρησιμοποιούμε την τεχνητή νοημοσύνη ως «συνεργάτη σκέψης» σε αυτό το στάδιο: ένας συνεργάτης που απομυθοποιεί την αβεβαιότητα, ξεχωρίζει τις επιλογές, αλλά αφήνει την τελική απόφαση σε εσάς.
Το AI παράγει δύο μεγάλες αξίες εδώ. Πρώτον, κάνει ερωτήσεις που παραλείπετε. Φέρνει στην επιφάνεια κρυφές υποθέσεις και περιστατικά αιχμής σε ένα αίτημα. Δεύτερον, καταγράφει γρήγορα τα πλεονεκτήματα και τα μειονεκτήματα μιας σχεδιαστικής απόφασης. Αλλά αυτός είναι ο κίνδυνος: η τεχνητή νοημοσύνη θα δώσει γενικές συστάσεις ως «βέλτιστη πρακτική» χωρίς να γνωρίζει πλήρως το περιβάλλον σας (προϋπολογισμός, ομάδα, υπάρχον σύστημα, νομικοί περιορισμοί). Είναι δουλειά σας να φιλτράρετε αυτή τη συμβουλή ενάντια στη δική σας αλήθεια.
Έννοιες: Ιστορία χρήστη: Μια σύντομη πρόταση που εκφράζει μια ανάγκη με τη μορφή "... όπως, θέλω να μπορώ να... επειδή...". Κριτήρια αποδοχής: Δοκιμασμένες προϋποθέσεις που πρέπει να πληρούνται για να θεωρηθεί ότι μια εργασία «τελείωσε». Μη λειτουργική απαίτηση: Απαιτήσεις που σχετίζονται με το «πώς θα συμπεριφέρεται» και όχι με το «τι θα κάνει», όπως ταχύτητα, ασφάλεια, επεκτασιμότητα.
Από το ασαφές αίτημα έως την ελεγχόμενη απαίτηση
Μια καλή απαίτηση είναι μετρήσιμη και επαληθεύσιμη. Όχι "αφήστε το σύστημα να είναι γρήγορο", αλλά "αφήστε τα αποτελέσματα αναζήτησης να επιστρέψουν εντός 500 ms". Ακολουθεί ένας βήμα προς βήμα τρόπος για να χρησιμοποιήσετε την τεχνητή νοημοσύνη για να περιορίσετε την αβεβαιότητα:
- Δώστε το αίτημα ως έχει και δημιουργήστε την ερώτηση. Ζητήστε από το AI όχι τη λύση, αλλά πρώτα να "αναφέρετε οτιδήποτε ασαφές σε αυτό το αίτημα ως ερώτηση".
- Δίνεις τις απαντήσεις. Μόνο εσείς γνωρίζετε το πλαίσιο. Απαντήστε στις ερωτήσεις του AI με τους πραγματικούς επιχειρηματικούς περιορισμούς σας.
- Μεταφραστείτε σε ιστορίες χρηστών και κριτήρια αποδοχής. Μεταφράστε τη διευκρινισμένη ανάγκη σε ελεγχόμενα στοιχεία.
- Προσθέστε ακραίες περιπτώσεις και αρνητικά σενάρια. "Κενό αποτέλεσμα", "μη εξουσιοδοτημένος χρήστης", "πολύ μεγάλο αρχείο" κ.λπ.
Προτροπή εξαγωγής ασάφειας: "Θα μεταφράσουμε το ακόλουθο επιχειρηματικό αίτημα σε απαίτηση λογισμικού. Μην προτείνετε ακόμη λύση. Αρχικά, εξάγετε ΟΛΕΣ τις ασάφειες και τις κρυφές υποθέσεις που δεν απαντώνται σε αυτό το αίτημα ως λίστα ερωτήσεων. Ομαδοποιήστε τις ερωτήσεις στις ακόλουθες επικεφαλίδες: εύρος, χρήστης/εξουσιοδότηση, όγκος δεδομένων, απόδοση, ιστορικό σφάλματος αναφοράς "ασφάλεια" ως "ΑL".
Ιστορία χρήστη + κριτήρια αποδοχής: "Χωρίστε την ακόλουθη διευκρινισμένη ανάγκη σε ιστορίες χρηστών που συμμορφώνονται με τις αρχές INVEST. Γράψτε 3-5 κριτήρια αποδοχής με δυνατότητα δοκιμής για κάθε ιστορία (σε μορφή Given-When-Then). Προσθέστε τουλάχιστον 2 αρνητικά σενάρια (μη εξουσιοδοτημένη πρόσβαση, άδεια δεδομένα). Ανάγκη: [γράψτε διευκρινισμένη ανάγκη εδώ]"
Σύγκριση αποφάσεων σχεδιασμού με AI
Ο σχεδιασμός είναι μια συνεχής ανταλλαγή: ταχύτητα έναντι ευελιξίας, απλότητα έναντι επεκτασιμότητας; Η τεχνητή νοημοσύνη τοποθετεί αυτές τις ανταλλαγές σε ένα γρήγορο υπολογιστικό φύλλο. Για παράδειγμα, για μια λειτουργία "αποστολή ειδοποίησης", μπορείτε να συζητήσετε εάν θα χρησιμοποιήσετε μια σύγχρονη (αποστολή κατόπιν αιτήματος) ή ασύγχρονη (ουρά, αποστολή στο παρασκήνιο) προσέγγιση.
Προτροπή σύγκρισης σχεδίασης: "Σχεδιάζω μια λειτουργία "αποστολή ειδοποίησης ηλεκτρονικού ταχυδρομείου στον χρήστη". Συγκρίνετε τις δύο προσεγγίσεις: (A) σύγχρονη παράδοση κατά τη διάρκεια του αιτήματος HTTP, (Β) ασύγχρονη παράδοση στο παρασκήνιο βάζοντάς το στην ουρά μηνυμάτων. Δημιουργήστε έναν πίνακα στους ακόλουθους άξονες: χρόνος αναμονής χρήστη, ανοχή σφαλμάτων, δυσκολία που καθορίζει το κόστος υποδομής. Θα επέλεγα τελικά σε ποια περίπτωση μην πάρεις την απόφαση για μένα».
άξονα
σύγχρονη μετάδοση
Ασύγχρονη (ουρά)
Χρόνος αναμονής χρήστη
Long (αναμονή για αποστολή)
Σύντομη (επιστρέφει αμέσως)
Ανοχή σφαλμάτων
Χαμηλό (το αίτημα εκρήγνυται εάν εκραγεί η αποστολή)
Υψηλό (δυνατή επανάληψη)
πολυπλοκότητα
χαμηλά
Μεσαία-υψηλή (υποδομή ουράς)
Κόστος υποδομής
χαμηλά
Απαιτούνται πρόσθετα εξαρτήματα
Εκεί που ταιριάζει
Χαμηλή ένταση, απλή εφαρμογή
Υψηλός όγκος, κρίσιμη παράδοση
Συμβουλή: Το να πείτε στην τεχνητή νοημοσύνη «μην πάρεις την απόφαση για μένα, απλώς δείξε μου τις επιλογές και τις προϋποθέσεις» σε αναγκάζει να σκεφτείς και μειώνει τον κίνδυνο να δεχτείς τυφλά μια πρόταση. Η καλύτερη σχεδιαστική απόφαση είναι αυτή που λαμβάνεται από το άτομο που γνωρίζει το περιβάλλον σας (εσείς).
Αδύναμη προτροπή / Ισχυρή προτροπή
WEAK: "Σχεδιάστε μια βάση δεδομένων για το σύστημα παραγγελιών." (Αποτέλεσμα: ποια κλίμακα, ποιες σχέσεις, ποιοι περιορισμοί δεν είναι ξεκάθαροι, ένα γενικό, μη ρεαλιστικό σχήμα.) ΙΣΧΥΡΟ: "Προτείνετε ένα πρόχειρο μοντέλο δεδομένων για ένα μικρό ηλεκτρονικό εμπόριο. Οντότητες: Πελάτης, Παραγγελία, Προϊόν, Στοιχείο παραγγελίας. Περιορισμοί: μπορεί να υπάρχουν πολλά προϊόντα σε μια παραγγελία. Η τιμή του προϊόντος μπορεί να αλλάζει με την πάροδο του χρόνου, αλλά η τρέχουσα τιμή παραγγελίας είναι η τρέχουσα ημέρα ~ 0 αναμενόμενες σχέσεις και γιατί ότι «Εξηγήστε ότι πήρατε την απόφαση. Προσδιορίστε πώς λύσατε το πρόβλημα του ιστορικού τιμών. Δώστε το ως λίστα με οντότητες και πεδία, όχι ως κωδικό."
Η διαφορά μιας ισχυρής προτροπής. κλίμακα (500 παραγγελίες ανά ημέρα), επιχειρηματικός κανόνας (πρέπει να διατηρηθεί η προηγούμενη τιμή) και η επιθυμητή μορφή εξόδου. Μια μεμονωμένη πρόταση όπως "Πρέπει να διατηρηθεί η προηγούμενη τιμή" αλλάζει εντελώς το σχέδιο. Εάν δεν το προσδιορίσετε αυτό, το AI θα παράγει ένα ανακριβές αλλά εύλογο διάγραμμα.
Μίνι Θήκες
Περίπτωση 1 — Κρυφή υπόθεση. Μια ομάδα κωδικοποιεί απευθείας το αίτημα "ο χρήστης μπορεί να ανεβάσει φωτογραφία προφίλ". Μια άλλη ομάδα ρώτησε το AI σχετικά με την αβεβαιότητα: "μέγιστο μέγεθος; επιτρεπόμενες μορφές; ακατάλληλος έλεγχος περιεχομένου; διαγραφή παλιάς φωτογραφίας;" Παράγει 8 ερωτήσεις όπως. Η πρώτη ομάδα μαθαίνει για το πρόβλημα στην παραγωγή όταν τα αρχεία 20 MB γεμίζουν τον διακομιστή. Η δεύτερη ομάδα το λύνει σχεδιαστικά.
Περίπτωση 2 — Εσφαλμένη υπόθεση κλίμακας. Το AI προτείνει ένα σύνθετο επίπεδο προσωρινής αποθήκευσης για ένα χαρακτηριστικό αναφοράς. Όταν ο μηχανικός επισημαίνει ότι τα πραγματικά δεδομένα είναι μόνο 30 αναφορές την ημέρα, το AI απλοποιεί την πρόταση. Ο μη καθορισμός της κλίμακας συνεπάγεται το κόστος της περιττής πολυπλοκότητας. Ο καθορισμός εξοικονομεί 2 εβδομάδες περιττής εργασίας.
Περίπτωση 3 — Κενό κριτηρίων αποδοχής. "Τι θα συμβεί εάν η πληρωμή αποτύχει;" Δεδομένου ότι η ερώτηση δεν τέθηκε ποτέ, ένα σύστημα παραγγελιών θα εξακολουθεί να επισημαίνει την παραγγελία ως "επιβεβαιωμένη" σε περίπτωση ανεπιτυχούς πληρωμής. Η λίστα με τα αρνητικά σενάρια που δημιουργούνται από την τεχνητή νοημοσύνη καταγράφει αυτό το κενό. Τα κριτήρια αποδοχής 1 γραμμής αποτρέπουν την πραγματική απώλεια χρημάτων.
Συνήθη λάθη
- Διαβίβαση του αιτήματος απευθείας στον κωδικό. Ο κώδικας που γράφτηκε πριν επιλυθεί η ασάφεια λύνει γρήγορα το λάθος πρόβλημα.
- Λαμβάνοντας τυφλά τη γενική «βέλτιστη πρακτική» της τεχνητής νοημοσύνης. Εάν δεν προσδιορίσετε το περιβάλλον σας (κλίμακα, προϋπολογισμός, ομάδα), η πρόταση δεν θα λειτουργήσει για εσάς.
- Παράβλεψη μη λειτουργικών απαιτήσεων. Εάν η ταχύτητα, η ασφάλεια και η κλίμακα δεν καθορίζονται, ο σχεδιασμός θα είναι ατελής.
- Απλά σκέφτομαι το χαρούμενο σενάριο. Αρνητικά σενάρια όπως άδεια δεδομένα, μη εξουσιοδοτημένος χρήστης, κατάσταση σφάλματος θα πρέπει να περιλαμβάνονται στη σχεδίαση.
- Ανάθεση της απόφασης στην ΑΙ. Το AI δημιουργεί επιλογές. Εσείς αποφασίζετε ποιος αντάλλαγμα ταιριάζει στην επιχείρησή σας.
Συνοπτικά
Η ανάλυση και ο σχεδιασμός απαιτήσεων είναι το στάδιο όπου εντοπίζονται τα φθηνότερα σφάλματα. Εδώ, η τεχνητή νοημοσύνη δημιουργεί ερωτήσεις που αποκαλύπτουν αβεβαιότητα, συντάσσει ιστορίες χρηστών και κριτήρια αποδοχής, και συμβιβασμούς σχεδιασμού γραφημάτων. Αλλά μόνο εσείς γνωρίζετε το πλαίσιο. Είναι δική σας δουλειά να φιλτράρετε τις προτάσεις της τεχνητής νοημοσύνης με βάση την κλίμακα, τον προϋπολογισμό, την ομάδα και τους νομικούς περιορισμούς σας και να πάρετε την τελική απόφαση. Η πειθαρχία του «μην παίρνεις την απόφαση για μένα, δείξε μου τις επιλογές» οδηγεί τόσο σε καλύτερο σχεδιασμό όσο και σε βαθύτερη μάθηση.
Εργασία εφαρμογής
Επιλέξτε ένα αίτημα εργασίας μιας πρότασης από το περιβάλλον σας. Πρώτα, εφαρμόστε την προτροπή αμφισημίας στο AI και απαντήστε στις ερωτήσεις με τους πραγματικούς σας περιορισμούς. Στη συνέχεια, μεταφράστε τη διευκρινισμένη ανάγκη σε τουλάχιστον 2 ιστορίες χρηστών και 3 κριτήρια αποδοχής για καθεμία. Συμπεριλάβετε τουλάχιστον 1 αρνητικό σενάριο. Τέλος, δημιουργήστε έναν πίνακα σύγκρισης για μια σχεδιαστική απόφαση (σύγχρονη/ασύγχρονη, δομή πίνακα κ.λπ.) και γράψτε τη δική σας απόφαση σε 2 προτάσεις.
λίστα ελέγχου
- [ ] Αφαίρεσα τις ασάφειες ως ερωτήσεις πριν περάσω το αίτημα στον κώδικα.
- [ ] Έδωσα το πλαίσιο (κλίμακα, εξουσία, απόδοση, νομικός περιορισμός) στο AI.
- [ ] Έσπασα τις ιστορίες χρηστών σε κριτήρια αποδοχής με δυνατότητα δοκιμής.
- [ ] Πρόσθεσα τουλάχιστον ένα σενάριο μειονέκτημα/ακρότητα.
- [ ] Αξιολόγησα την απόφαση σχεδιασμού με τον πίνακα ανταλλαγής.
- [ ] Πήρα την τελική απόφαση βάσει του πλαισίου μου, δεν το άφησα στην τεχνητή νοημοσύνη.