Architecture Decision Record

Active theme: Light

← Πρότυπα καταγραφής αποφάσεων

Πρότυπο καταγραφής αποφάσεων των Jeff Tyree και Art Akerman

Αυτό είναι το πρότυπο περιγραφής αρχιτεκτονικής απόφασης που δημοσιεύθηκε στο "Architecture Decisions: Demystifying Architecture" των Jeff Tyree και Art Akerman, Capital One Financial.

  • Ζήτημα (Issue): Περιγράψτε το ζήτημα αρχιτεκτονικής σχεδίασης που αντιμετωπίζετε, χωρίς να αφήνετε ερωτήματα για το γιατί το αντιμετωπίζετε τώρα. Ακολουθώντας μια μινιμαλιστική προσέγγιση, αντιμετωπίστε και τεκμηριώστε μόνο τα ζητήματα που χρειάζεται να αντιμετωπιστούν σε διάφορα σημεία του κύκλου ζωής.

  • Απόφαση (Decision): Δηλώστε σαφώς την κατεύθυνση της αρχιτεκτονικής — δηλαδή τη θέση που έχετε επιλέξει.

  • Κατάσταση (Status): Η κατάσταση της απόφασης, π.χ. εκκρεμής, ληφθείσα ή εγκεκριμένη.

  • Ομάδα (Group): Μπορείτε να χρησιμοποιήσετε μια απλή ομαδοποίηση — όπως ολοκλήρωση, παρουσίαση, δεδομένα κ.ο.κ. — για να οργανώσετε το σύνολο των αποφάσεων. Μπορείτε επίσης να χρησιμοποιήσετε μια πιο εξελιγμένη οντολογία αρχιτεκτονικής, όπως αυτή των John Kyaruzi και Jan van Katwijk, που περιλαμβάνει πιο αφηρημένες κατηγορίες όπως γεγονός, ημερολόγιο και τοποθεσία. Για παράδειγμα, με αυτή την οντολογία, θα ομαδοποιούσατε στο γεγονός τις αποφάσεις που αφορούν περιστατικά για τα οποία το σύστημα απαιτεί πληροφορίες.

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

  • Περιορισμοί (Constraints): Καταγράψτε τυχόν πρόσθετους περιορισμούς στο περιβάλλον που μπορεί να θέσει η επιλεγμένη εναλλακτική (η απόφαση).

  • Θέσεις (Positions): Απαριθμήστε τις θέσεις (βιώσιμες επιλογές ή εναλλακτικές) που εξετάσατε. Αυτές συχνά απαιτούν μακροσκελείς εξηγήσεις, μερικές φορές ακόμη και μοντέλα και διαγράμματα. Δεν είναι εξαντλητική λίστα. Ωστόσο, δεν θέλετε να ακούσετε την ερώτηση «Σκεφτήκατε το...;» στην τελική αναθεώρηση· αυτό οδηγεί σε απώλεια αξιοπιστίας και αμφισβήτηση άλλων αρχιτεκτονικών αποφάσεων. Αυτή η ενότητα βοηθά επίσης να διασφαλιστεί ότι ακούσατε τις απόψεις των άλλων· η ρητή δήλωση άλλων απόψεων βοηθά να προσεταιριστείτε τους υποστηρικτές τους για την απόφασή σας.

  • Επιχείρημα (Argument): Περιγράψτε γιατί επιλέξατε μια θέση, συμπεριλαμβανομένων στοιχείων όπως το κόστος υλοποίησης, το συνολικό κόστος ιδιοκτησίας, ο χρόνος προς την αγορά και η διαθεσιμότητα των απαιτούμενων πόρων ανάπτυξης. Αυτό είναι πιθανώς εξίσου σημαντικό με την ίδια την απόφαση.

  • Επιπτώσεις (Implications): Μια απόφαση συνοδεύεται από πολλές επιπτώσεις, όπως υποδηλώνει το μεταμοντέλο REMAP. Για παράδειγμα, μια απόφαση μπορεί να εισαγάγει ανάγκη λήψης άλλων αποφάσεων, να δημιουργήσει νέες απαιτήσεις ή να τροποποιήσει υπάρχουσες, να θέσει πρόσθετους περιορισμούς στο περιβάλλον, να απαιτήσει επαναδιαπραγμάτευση του εύρους ή του χρονοδιαγράμματος με τους πελάτες ή να απαιτήσει πρόσθετη εκπαίδευση προσωπικού. Η σαφής κατανόηση και δήλωση των επιπτώσεων της απόφασής σας μπορεί να είναι πολύ αποτελεσματική για την εξασφάλιση της αποδοχής και τη δημιουργία οδικού χάρτη για την εκτέλεση της αρχιτεκτονικής.

  • Σχετικές αποφάσεις (Related decisions): Είναι προφανές ότι πολλές αποφάσεις σχετίζονται· μπορείτε να τις απαριθμήσετε εδώ. Ωστόσο, διαπιστώσαμε ότι στην πράξη ένας πίνακας ιχνηλασιμότητας, δέντρα αποφάσεων ή μεταμοντέλα είναι πιο χρήσιμα. Τα μεταμοντέλα είναι χρήσιμα για την εμφάνιση σύνθετων σχέσεων με διαγράμματα (όπως τα μοντέλα Rose).

  • Σχετικές απαιτήσεις (Related requirements): Οι αποφάσεις πρέπει να καθοδηγούνται από την επιχείρηση. Για να δείξετε λογοδοσία, αντιστοιχίστε ρητά τις αποφάσεις σας σε στόχους ή απαιτήσεις. Μπορείτε να απαριθμήσετε αυτές τις σχετικές απαιτήσεις εδώ, αλλά διαπιστώσαμε ότι είναι πιο βολικό να παραπέμπετε σε έναν πίνακα ιχνηλασιμότητας. Μπορείτε να αξιολογήσετε τη συμβολή κάθε αρχιτεκτονικής απόφασης στην ικανοποίηση κάθε απαίτησης και έπειτα να αξιολογήσετε πόσο καλά ικανοποιείται η απαίτηση από το σύνολο των αποφάσεων. Αν μια απόφαση δεν συμβάλλει στην ικανοποίηση μιας απαίτησης, μην πάρετε αυτή την απόφαση.

  • Σχετικά τεχνουργήματα (Related artifacts): Απαριθμήστε τα σχετικά έγγραφα αρχιτεκτονικής, σχεδίασης ή εύρους που επηρεάζει αυτή η απόφαση.

  • Σχετικές αρχές (Related principles): Αν η επιχείρηση έχει ένα συμφωνημένο σύνολο αρχών, βεβαιωθείτε ότι η απόφαση είναι συνεπής με μία ή περισσότερες από αυτές. Αυτό βοηθά στη διασφάλιση της ευθυγράμμισης σε τομείς ή συστήματα.

  • Σημειώσεις (Notes): Επειδή η διαδικασία λήψης αποφάσεων μπορεί να διαρκέσει εβδομάδες, διαπιστώσαμε ότι είναι χρήσιμο να καταγράφονται οι σημειώσεις και τα ζητήματα που συζητά η ομάδα κατά τη διαδικασία κοινοποίησης.