Η γενετική ΤΝ αλλάζει ένα μέρος της ενσωματωμένης ανάπτυξης — όχι όμως το καθοριστικό. Τι έχει μετατοπιστεί, τι έχει οξυνθεί, και τι λαμβάνετε ως εντολέας.
Η γενετική ΤΝ μπορεί πλέον να παράγει τυπικούς οδηγούς, απλές μηχανές κατάστασης και κώδικα boilerplate σε SystemVerilog, VHDL, C ή Python. Είναι πραγματικό, είναι χρήσιμο, και έχει μειώσει την προσπάθεια για ορισμένες εργασίες ρουτίνας.
Από αυτό προκύπτει ένα δικαιολογημένο ερώτημα: τι προσφέρει ακόμη ένας έμπειρος μηχανικός ενσωματωμένων και FPGA σε αυτό το περιβάλλον;
Η απάντηση είναι συγκεκριμένη.
Η ΤΝ είναι ένας ταχύς εκτελεστής. Παράγει αυτό που της ζητείται — όχι αυτό που είναι αναγκαίο. Η εντολή προς μια ΤΝ «γράψε μου έναν οδηγό UART» επιστρέφει έναν οδηγό UART. Όχι όμως αυτόν που λειτουργεί πραγματικά με αυτό το πεδίο ρολογιού, αυτή την κατανομή ακροδεκτών, αυτή τη χρονική συμπεριφορά και αυτή τη διαχείριση σφαλμάτων στο περιβάλλον στόχο.
Η ουσιαστική μηχανική εργασία δεν είναι η παραγωγή κώδικα. Είναι η σύνταξη ακριβούς προδιαγραφής: τι ακριβώς πρέπει να συμβεί, υπό ποιες συνθήκες, με ποιες ανοχές, με ποια συμπεριφορά σε σφάλμα, σε ποιο εύρος θερμοκρασίας, για ποια διάρκεια ζωής.
Η καλύτερη ΤΝ δεν αλλάζει αυτό. Αντιθέτως: όσο πιο ισχυρά γίνονται τα εργαλεία, τόσο πιο καθοριστικό είναι να καθοδηγούνται σωστά.
Η ΤΝ δεν προσθέτει απαιτήσεις στις οποίες ο πελάτης δεν σκέφτηκε. Δεν επινοεί ειδικές περιπτώσεις. Παραδίδει ακριβώς ό,τι αναγράφεται στην προδιαγραφή — και τίποτε επιπλέον. Ό,τι δεν προδιαγράφηκε, λείπει στο αποτέλεσμα.
Με αυτόν τον τρόπο ο κίνδυνος μετατοπίζεται πλήρως στην ίδια την προδιαγραφή. Μια άπειρη προδιαγραφή περιγράφει ορθά αυτό που ζήτησε ο πελάτης και παραβλέπει όλα όσα ο συντάκτης δεν έχει βιώσει: τη σπάνια αστοχία αισθητήρα σε ορισμένες θερμοκρασιακές βαθμίδες, τη συμπεριφορά σε ταυτόχρονο brown-out και κλείδωμα διαύλου I²C, ένα reset watchdog κατά τη διάρκεια ακολουθίας εγγραφής flash, την ηλεκτρομαγνητική σύζευξη σε μακριά καλώδια αισθητήρων, τη συμπεριφορά κατά την επανεκκίνηση μετά από ακούσιο reset σε διάρκεια κρίσιμης εγγραφής.
Τέτοια σημεία δεν είναι απαιτήσεις του πελάτη. Είναι απαιτήσεις που ένας έμπειρος μηχανικός προσθέτει, ξέροντας ότι αλλιώς δεν θα αναγράφονταν πουθενά. Έτσι μια προδιαγραφή είναι πάντοτε και κατάλογος κινδύνων — και το βάθος του είναι ανάλογο της εμπειρίας του συντάκτη.
Σε έλεγχο ασφάλειας μιας συσκευής έγχυσης, στον οποίο με κάλεσε κατασκευαστής ιατροτεχνολογικών προϊόντων, εμφανίστηκε αστοχία ασφαλείας που προέκυψε από την ταυτόχρονη εμφάνιση δύο μεμονωμένων σφαλμάτων: αστοχία υλικού ενός ολοκληρωμένου μνήμης και εσφαλμένη ρουτίνα ελέγχου για το συγκεκριμένο ολοκληρωμένο. Κάθε σφάλμα μόνο του ήταν διαχειρίσιμο. Μόνο ο συνδυασμός παρήγαγε την μη αντιληπτή κατάσταση αστοχίας.
Ακριβώς αυτή η συνδυαστική θεώρηση πρέπει να προστεθεί ενεργά σε μια προδιαγραφή. Από την απαίτηση «έλεγξε τη μνήμη» ένα εργαλείο παράγει μια ρουτίνα ελέγχου. Από την εμπειρία προκύπτει η περαιτέρω απαίτηση πως και η αστοχία της ίδιας της ρουτίνας ελέγχου δεν επιτρέπεται να οδηγήσει σε σιωπηλή κατάσταση αστοχίας. Κανένα εργαλείο δεν διατυπώνει αυτή τη δεύτερη απαίτηση μόνο του.
Σε αυτό προστίθενται οι κοντά στο υλικό παγίδες που δεν αναγράφονται στα φύλλα δεδομένων, αλλά στο μυαλό μηχανικών που τις έχουν ήδη κυνηγήσει:
Για τις περισσότερες εργασίες υπάρχουν πολλές λύσεις που λειτουργούν θεμελιωδώς. Όμως μόνο λίγες πληρούν τις απαιτήσεις σε ασφάλεια, αξιοπιστία και διάρκεια ζωής που χρειάζεται το συγκεκριμένο προϊόν.
Ένα σύστημα ΤΝ επιλέγει αυτό που εμφανιζόταν συχνά στα δεδομένα εκπαίδευσης. Ένας έμπειρος μηχανικός επιλέγει αυτό που δεν οδηγεί σε καταστροφή σε ένα σύστημα κρίσιμο για την ασφάλεια. Αυτή η επιλογή δεν είναι λεπτομέρεια υλοποίησης. Είναι το ουσιαστικό έργο μηχανικής.
Σε περίπτωση ζημίας ο νομοθέτης απαιτεί την απόδειξη πως το προϊόν, κατά τη διάθεση στην αγορά, αντιστοιχούσε στη στάθμη της τεχνικής. Αυτή είναι η κεντρική προϋπόθεση για να δύναται ένας κατασκευαστής να απαλλαγεί από την ευθύνη για το προϊόν. Με τη νέα ευρωπαϊκή Οδηγία για την ευθύνη ελαττωματικών προϊόντων και τον εθνικό νόμο μεταφοράς που ακολουθεί, αυτό το βάρος απόδειξης ενισχύεται ρητά για το λογισμικό και τα προϊόντα με ενσωματωμένο λογισμικό.
Η στάθμη της τεχνικής δεν είναι στατική κατάσταση. Είναι αυτό που μεταξύ των ειδικών θεωρείται σύνηθες — και αυτή τη στιγμή μεταβάλλεται επιταχυνόμενη επειδή νέα εργαλεία και μέθοδοι ανυψώνουν το πρότυπο της αγοράς σε σύντομους κύκλους.
Από αυτό προκύπτει: όποιος αναπτύσσει σήμερα ενσωματωμένο σύστημα, οφείλει να γνωρίζει και να εφαρμόζει τις τρέχουσα ισχυρότερες μεθόδους. Όποιος δεν το πράττει, δημιουργεί για τον εντολέα του συγκεκριμένο κίνδυνο ευθύνης. Αυτό προϋποθέτει ακριβώς έναν μηχανικό που κατέχει τόσο τα καθιερωμένα όσο και τα νέα εργαλεία και μπορεί να κάνει τη σωστή επιλογή.
Χρησιμοποιώ εργαλεία ΤΝ εκεί όπου εξοικονομούν μετρήσιμο χρόνο χωρίς να δημιουργούν κινδύνους: πρώτη σύνταξη boilerplate, παραγωγή testbenches, τεκμηρίωση, έλεγχος αναγνωσιμότητας.
Δεν τα χρησιμοποιώ σε αντικατάσταση για:
Το αποτέλεσμα: λιγότερη προσπάθεια για εργασία ρουτίνας, σταθερά υψηλή ποιότητα στις εργασίες που πραγματικά στηρίζουν το έργο, και μια τεκμηριωμένη διαδικασία ανάπτυξης που ανταποκρίνεται στην τρέχουσα στάθμη της τεχνικής.
Αναθέτετε σε έναν μηχανικό με πάνω από 35 χρόνια εμπειρίας σε FPGA και ενσωματωμένα, που γνωρίζει τα τρέχοντα εργαλεία και μπορεί να κρίνει τα όριά τους. Δεν λαμβάνετε ούτε «έργο παραγμένο από ΤΝ» ούτε «έργο χωρίς ΤΝ». Λαμβάνετε ένα λειτουργικό σύστημα για το οποίο ένα συγκεκριμένο πρόσωπο αναλαμβάνει την ευθύνη — και το οποίο, σε περίπτωση ζημίας, αποδεικνύεται ότι αναπτύχθηκε σύμφωνα με τη στάθμη της τεχνικής.
Εάν έχετε ένα ενσωματωμένο έργο που απαιτεί ακριβώς αυτό το βάθος, ας μιλήσουμε άμεσα. Πρώτη συζήτηση και προκαταρκτική εκτίμηση είναι δωρεάν και χωρίς δέσμευση.