XP μέθοδος για τη Διαχείριση Έργων Λογισμικού Ενότητα 1- XP- ορολογία και αρχές Δρ. Δημήτριος Τσέλιος Καθηγητής Εφαρμογών Τμήμα Μηχανικών Πληροφορικής Τ.Ε.- ΤΕΙ Θεσσαλίας Μεταπτυχιακό Πρόγραμμα Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές 1
XP και εναγκαλισμός της Αλλαγής (1) Συχνά οι προγραμματιστές διαμαρτύρονται για τους χρήστες τους. Σύμφωνα με αυτούς, οι χρήστες δεν ρωτούν ποτέ γι αυτό που θέλουν και κάνουν δύσκολη τη ζωή των προγραμματιστών όταν συνεχώς αλλάζουν οι απόψεις. Οι προγραμματιστές γνωρίζουν ότι όταν γίνονται οι αλλαγές σε έναν κώδικα που έχει ήδη γραφεί, τότε δημιουργούνται τα bugs. Οι περισσότερες αλλαγές φέρουν περισσότερα λάθη. 2
XP και εναγκαλισμός της Αλλαγής (2) Αυτό είναι ένα από τα προβλήματα που έρχεται να επιλύσει η μέθοδος XP (extreme programming) η οποία είναι Agile μεθοδολογία. Όπως και η Scrum διαθέτει πρακτικές, αξίες και αρχές. Τα εργαλεία μπορούν πράγματι να βοηθήσουν αλλά θα πρέπει η ομάδα να αποκτήσει το σωστό mindset. 3
XP και εναγκαλισμός της Αλλαγής (3) Οι 10 κύριες XP πρακτικές 4
Οι κύριες πρακτικές του XP (1) Υπάρχουν 13 κύριες πρακτικές εργαλεία που βοηθούν τις ομάδες στην ανάπτυξη λογισμικού και στην δημιουργία κώδικα που επιτρέπει την αλλαγή. Οι 10 από αυτές χωρίζονται σε 4 κατηγορίες: προγραμματισμός, ολοκλήρωση, σχεδιασμός και ομαδική εργασία. 5
Οι κύριες πρακτικές του XP (2) Εργαλεία προγραμματισμού Test first programming, γνωστός και ως test driven ανάπτυξη. Σύμφωνα με αυτή δημιουργούνται αυτοματοποιημένα tests που συχνά ονομάζονται unit tests. Τα units αντιστοιχούν σε συνήθεις δομικές μονάδες προγραμματισμού όπως τάξεις, μέθοδοι, ρουτίνες, συναρτήσεις κλπ. Το test first διασφαλίζει ότι κάθε unit δουλεύει σωστά. Αυτό έχει ιδιαίτερα θετική επίδραση σε αλληλοσυνδεόμενα units. Ο κώδικας γίνεται πιο εύκολος στο να χρησιμοποιηθεί πάλι. 6
Οι κύριες πρακτικές του XP (3) Εργαλεία προγραμματισμού Pair programming, μια τεχνική που βασίζεται στην εργασία δύο προγραμματιστών ταυτόχρονα σε μια θέση εργασίας. Ο ένας γράφει τον κώδικα και ο άλλος ελέγχει. Έτσι δημιουργούνται λιγότερα λάθη. Μειώνεται η κόπωση μέσω της εναλλαγής ρόλων. Έτσι δημιουργείται περισσότερος και καλύτερος κώδικας. 7
Οι κύριες πρακτικές του XP (4) Τεχνικές ολοκλήρωσης Η μια τεχνική είναι το 10 minute build. Η ομάδα δημιουργεί ένα αυτοματοποιημένο build για όλο τον κώδικα που τρέχει κάτω από τα 10 λεπτά. Το build τρέχει όλα τα tests και παράγει μια αναφορά με τα ποια test περνούν ή αποτυγχάνουν. Καλό είναι για το build να τρέχει συχνά και να έχουμε συνεχή ενημέρωση για την ποιότητα του λογισμικού. 8
Οι κύριες πρακτικές του XP (5) Τεχνικές ολοκλήρωσης Η δεύτερη τεχνική είναι η continuous integration που ένας τρόπος για να δουλεύει μια ομάδα πάνω στον ίδιο κώδικα ταυτόχρονα. Η ομάδα έχει ένα σύστημα ελέγχου της έκδοσης (version) με κεντρικό σύνολο αρχείων. Ο κάθε προγραμματιστής παίρνει από το αποθετήριο ένα αντίγραφο του κώδικα, κάνει τις τροποποιήσεις και στη συνέχεια το επιστρέφει. Πολλές φορές όμως δημιουργούνται conflicts αν δεν υπάρχει κεντρικός έλεγχος. Μια λύση είναι ένας συνεχής build server. Κάποιες ομάδες χρησιμοποιούν ένα φυσικό build token, που περνάει από το ένα ζευγάρι προγραμματιστών, στο επόμενο. 9
Οι κύριες πρακτικές του XP (6) Πρακτικές σχεδιασμού Οι XP ομάδες χρησιμοποιούν την επαναληπτική ανάπτυξη. Έτσι όπως το Scrum έτσι και το XP έχει ανάλογους επαναληπτικούς κύκλους. Ο weekly κύκλος χρησιμοποιεί εβδομαδιαίες επαναλήψεις και εργάζεται το εργαλείο των stories (ίδια με τα user stories). Κάποιες φορές υπάρχει ένα μείγμα του XP με το Scrum που ονομάζεται Scrum-XP hybrid. 10
Οι κύριες πρακτικές του XP (7) Πρακτικές σχεδιασμού Οι XP ομάδες χρησιμοποιούν επίσης το quarterly κύκλο που επιτρέπει μακροπρόθεσμο σχεδιασμό. Τότε οι XP ομάδες χρησιμοποιούν τα themes που είναι μεγαλύτερες ιδέες που δένουν μαζί πολλές ιστορίες. Κάποιες XP ομάδες χρησιμοποιούν για το σχεδιασμό το slack. Σύμφωνα με αυτή την πρακτική η ομάδα τοποθετεί της δραστηριότητες που θεωρούνται δευτερεύουσες στο τέλος του επαναληπτικού κύκλου. Με αυτό τον τρόπο όταν η ομάδα έρθει αντιμέτωπη με αναπάντεχα προβλήματα τότε αφήνει στην άκρη της slack stories για να δουλέψουν με πιο σημαντικές εργασίες. 11
Οι κύριες πρακτικές του XP (9) Πρακτικές ομαδικής εργασίας Η πιο απλή και κατανοητή τεχνική είναι η sit together. Πολλοί θεωρούν ότι οι πραγματιστές δουλεύουν καλύτερα απομονωμένοι. Όμως η ομαδική εργασία έχει αποδειχθεί ότι είναι πιο αποτελεσματική. Έτσι δημιουργούνται ειδικοί χώροι για τη συνεύρεσή των ομάδων. Μια άλλη τεχνική είναι η informative workspace σύμφωνα με την οποία το εργασιακό περιβάλλον είναι έτσι φτιαγμένο για να ενημερώνονται όλοι για τα έργα. 12
Οι κύριες πρακτικές του XP (10) Πρακτικές ομαδικής εργασίας Συνήθη εργαλεία σε αυτούς τους χώρους είναι το burndown διάγραμμα και το task board. Οι information radiators είναι τα εργαλεία που οπτικοποιούν και μεταδίδουν την πληροφορία σε όποιον διέρχεται από τον χώρο. Osmotic επικοινωνία είναι η μετάδοση πληροφοριών για το έργο που γίνεται είτε μέσω γραφημάτων είτε μέσω συζητήσεων. Αυτοί οι χώροι εργασίας είναι χρήσιμοι γιατί η πληροφορία πρέπει να είναι προσβάσιμη σε όλους και όχι μόνο στον μάνατζερ. 13
Γιατί οι ομάδες αντιστέκονται στην συλλογή και πως οι πρακτικές μπορούν να βοηθήσουν (1) Κάθε διαχειριστής έργου κατανοεί τη δυσαρέσκεια που προκαλεί η αλλαγή 14
Γιατί οι ομάδες αντιστέκονται στην συλλογή και πως οι πρακτικές μπορούν να βοηθήσουν (2) Κανένας δεν επιθυμεί την αλλαγή του κώδικα που έγραψε, επειδή κάποιος άλλαξε γνώμη. Έτσι δημιουργείται η αντιπάθεια των προγραμματιστών για τους χρήστες του λογισμικού τους. Οι αλλαγές ενοχλούν τις ομάδες ειδικά όταν συμβαίνουν αργά στο έργο. Οι αλλαγές όμως ζητούνται όχι για να ενοχλήσουν την ομάδα αλλά γιατί το απαιτούν οι ανάγκες των πελατών. 15
Γιατί οι ομάδες αντιστέκονται στην συλλογή και πως οι πρακτικές μπορούν να βοηθήσουν (3) Πολλές φορές οι πελάτες δεν μπορούν να εξηγήσουν επακριβώς τις ανάγκες, ειδικά στα πλαίσια μιας συνάντησης. Η κάθε ομάδα θα πρέπει να βρει έναν τρόπο για να περιορίσει την επίδραση της κάθε αλλαγής, όχι μόνο για την ακεραιότητα του κώδικα αλλά για τη διατήρηση της ομαλής συναισθηματικής κατάστασης των μελών της. 16
Γιατί οι ομάδες αντιστέκονται στην συλλογή και πως οι πρακτικές μπορούν να βοηθήσουν (4) Οι XP ομάδες που πετυχαίνουν κάτι ανάλογο το ονομάζουν embracing change. Δεν βλέπουν την αλλαγή ως διάβολο αλλά φτιάχνουν καλό λογισμικό ανταποκρινόμενες στο feedback των πελατών. Δεν αποδέχονται απλά τις αλλαγές αλλά τις επιζητούν. Ο εναγκαλιασμός τις αλλαγής έχει δυο πλευρές. Την αλλαγή του φυσικού αντικειμένου και την αλλαγή του ίδιου του κώδικα. 17
Πως λοιπόν βοηθούν οι XP πρακτικές τις ομάδες; (1) Σχεδιασμός: αν οι ομάδες σχεδιάζουν επαναληπτικά, στο τέλος του κάθε κύκλου δέχονται σταθερά feedback. Έτσι αποδέχονται τις αλλαγές πιο εύκολα. Λειτουργία ομάδας: τα προβλήματα αντιμετωπίζονται πιο εύκολα αν υπάρχουν άνθρωποι γύρω σου για βοήθεια. Επίσης δίνεται η ευκαιρία στον καθένα να έχει τον έλεγχο των αλλαγών όταν συμβαίνει. 18
Πως λοιπόν βοηθούν οι XP πρακτικές τις ομάδες; (2) Ολοκλήρωση: αν η ομάδα δουλεύει με βάση τις αλλαγές, θα βρει τα προβλήματα ολοκλήρωσης πιο γρήγορα σε κάποιον κύκλο επανάληψης και θα τα διορθώσει και όχι στο τέλος του έργου. Προγραμματισμός: για να επιτευχθεί η αποδοχή της αλλαγής δημιουργείται ένα πακέτο από unit tests που τρέχουν κάθε φορά, που γίνεται ολοκλήρωση του κώδικα. Έτσι αν μια αλλαγή δημιουργεί πρόβλημα θα βρεθεί γρήγορα από το αντίστοιχο unit test. 19
Οι αξίες των XP βοηθούν την ομάδα να αλλάξει το mindset (1) Πολλές ομάδες στην αρχή, παρότι χρησιμοποιούν πρακτικές XP, δεν παίρνουν τα αναμενόμενα αποτελέσματα γιατί δεν αλλάζουν τη στάση τους έναντι της αλλαγής. Παίρνουν συνήθως αποτελέσματα της μορφής better than not doing. Θα πρέπει ο κώδικας να είναι απλός και έτοιμος για αλλαγή. Η απλότητα σημαίνει συνήθως λιγότερα bugs. Αλλά από πού έρχονται τα bugs; Συνήθως έρχονται από το rework που οδηγεί στο defect injection. Η αιτία όμως για όλα αυτά είναι το Big Requirements Up Front (BRUF). 20
Οι αξίες των XP βοηθούν την ομάδα να αλλάξει το mindset (2) Πολλές ομάδες που ακολουθούν το BRUF έχουν επιτυχία με την πρώτη και συχνά την δεύτερη έκδοση. Αυτό είναι φυσικό γιατί η ομάδα έχει αρκετή πληροφορία για να φτιάξει κάτι αξιόλογο. Όμως με 2 3 εκδόσεις υπάρχει αρκετή ανάδραση από τους πελάτες οι οποίοι ζητούν αλλαγές. Το XP επίσης αλλάζει τον τρόπο με τον οποίο σκέφτεται η ομάδα για την ποιότητα. Ποιότητα δεν είναι απλά η αποφυγή των bugs, αλλά ορίζεται ως η ικανοποίηση των αναγκών των πελατών. 21
Οι αξίες των XP βοηθούν την ομάδα να αλλάξει το mindset (3) Το XP αναγκάζει τις ομάδες να μάθουν πως γίνονται οι συζητήσεις με τους πελάτες ή να σκέφτονται σαν πελάτες. Το XP αποφεύγει το CΥΑ που υπάρχει σε κάθε σύνολο προδιαγραφών. Οι πρακτικές λειτουργούν μόνο όταν η ομάδα πραγματικά πιστεύει σε αυτές. Το XP είναι ένας άλλος τρόπος σκέψης για πολλούς τεχνικούς και developers. Αυτοί συνήθως αντιδρούν όταν οι πρακτικές τους ζητούν να αλλάξουν τον τρόπο με τον οποίο φτιάχνουν των κώδικα. 22
Οι αξίες των XP βοηθούν την ομάδα να αλλάξει το mindset (4) Αρνητική αντίδραση σε νέες τεχνικές προγραμματισμού 23
Οι αξίες των XP βοηθούν την ομάδα να αλλάξει το mindset (5) Πολλές ομάδες θεωρούν τεχνικές όπως το pair programming ή το test driven development καλές πρακτικές της μορφής nice to haves. Τις θεωρούν πολυτέλειες, και όταν προκύψουν δυσκολίες και καθυστερήσεις τις εγκαταλείπουν. Αυτές οι ομάδες δεν διαθέτουν το σωστό mindset για εφαρμογή του XP και ένα αναγνωριστικό τους είναι η ύπαρξη checklist με τις XP πρακτικές που χρησιμοποιούν ή το ποσοστό εφαρμογής του XP. 24
Ένα αποτελεσματικό mindset ξεκινά με τις XP αξίες (1) Επικοινωνία: κάθε μέλος της ομάδας γνωρίζει τη δουλειά που κάνει οποιοδήποτε από τα μέλη της ομάδας. Απλότητα: οι developers εστιάζουν στο γράψιμο απλών λύσεων. Ανάδραση: συχνά και σταθερά tests και κύκλοι ανάδρασης που ελέγχουν την ποιότητα του προϊόντος. 25
Ένα αποτελεσματικό mindset ξεκινά με τις XP αξίες (2) Θάρρος: κάθε μέλος της ομάδας μπορεί να κάνει τις καλύτερες επιλογές για το έργο ακόμη και αν αυτό σημαίνει ότι πρέπει να απορρίψει αποτυχημένες λύσεις ή να προσεγγίσει τα πράγματα διαφορετικά. Σεβασμός: κάθε μέλος της ομάδας είναι σημαντικό και πολύτιμο. Συχνά οι ομάδες ξεκινούν με καλές προθέσεις αλλά σιγά σιγά εγκαταλείπουν τις τεχνικές XP. 26
Ένα αποτελεσματικό mindset ξεκινά με τις XP αξίες (3) Επίσης οι ομάδες υιοθετούν τις πρακτικές που είναι τεχνικά κατανοητές προσπερνώντας τις αξίες. Οι πρακτικές είναι ξεκάθαρες και εύκολα κάποιος φαντάζεται τον εαυτό του να τις εφαρμόζει. Οι αξίες είναι πιο θεωρητικές και δύσκολα κατανοούνται από τις ομάδες. Σε αυτήν την κατάσταση, ένα μερίδιο ευθύνης έχουν και οι εκπαιδευτές που θεωρούν ότι είναι πιο εύκολο να εκπαιδεύσεις κάποιον σε εργαλεία και τεχνικές. 27
Ένα αποτελεσματικό mindset ξεκινά με τις XP αξίες (4) Όταν οι ομάδες αποκτήσουν το ορθό mindset, τότε κατέχουν τις αξίες και τότε οι πρακτικές αποκτούν νόημα. Παράδειγμα: η ορθή χρήση των build token για τη συνεχή ολοκλήρωση. 28
Κάποιες ερωτήσεις για να δούμε αν η ομάδα έχει mindset συμβατό με το XP Είναι η ομάδα πραγματικά OK με το να φτιάχνει λογισμικό και να το πετάει επειδή έμαθε ότι δεν δουλεύει; Αν το αφεντικό ζητάει ένα πιο σφικτό deadline, η ομάδα πιστεύει ότι τα unit tests είναι ο πιο γρήγορος τρόπος για να το τηρήσει ακόμη και αν αυτό σημαίνει περισσότερος κώδικας; Αν ένας άπειρος προγραμματιστής αναλάβει μια εργασία, είναι η υπόλοιπη ομάδα OK δίνοντάς του τη δικαιοδοσία να την τελειώσει; Είναι η ομάδα OK ακόμη και αν ο προγραμματιστής αποτυγχάνει και μαθαίνει από αυτό; 29
Κατανοώντας τις XP αρχές που θα βοηθήσουν την ομάδα να αγκαλιάσει την Αλλαγή (1) Οι αρχές του XP Humanity: θυμηθείτε πως το λογισμικό είναι φτιαγμένο από ανθρώπους και υπάρχει μια ισορροπία μεταξύ των αναγκών του κάθε μέλους της ομάδας και των αναγκών του έργου. Economics: κάποιος πληρώνει για το έργο, και ο καθένας πρέπει να έχει στο μυαλό του τον προϋπολογισμό. Mutual benefit: ψάξτε πρακτικές που είναι επωφελείς για όλους. Self-similarity: το μοτίβο των εβδομαδιαίων κύκλων είναι το ίδιο με το μοτίβο του μηνιαίου και του ημερήσιου. 30
Κατανοώντας τις XP αρχές που θα βοηθήσουν την ομάδα να αγκαλιάσει την Αλλαγή (2) Improvement: κάντε το καλύτερο σήμερα και προσπαθήστε για ακόμη καλύτερο αύριο. Diversity: οι διαφορετικές απόψεις και προοπτικές οδηγούν σε καλύτερες λύσεις. Reflection: οι καλές ομάδες γνωρίζουν τι δουλεύει και τι όχι. Flow: σταθερή παράδοση σημαίνει συνεχή αναπτυσσόμενη εργασία. Opportunity: κάθε πρόβλημα που αντιμετωπίζει η ομάδα είναι ευκαιρία για μάθηση. 31
Κατανοώντας τις XP αρχές που θα βοηθήσουν την ομάδα να αγκαλιάσει την Αλλαγή (3) Redundancy: ακόμη και αν κάτι θεωρηθεί περιττό, οδηγεί σε καλύτερη ποιότητα. Failure: μπορείτε να μάθετε πολλά από το λάθη. Quality: δεν μπορείς να παραδίδεις γρήγορα αποδεχόμενος χαμηλής ποιότητας προϊόν. Accepted responsibility: αν κάποιος είναι υπεύθυνος για κάτι τότε θα πρέπει να έχει την δικαιοδοσία να το κάνει. 32
Κατανοώντας τις XP αρχές που θα βοηθήσουν την ομάδα να αγκαλιάσει την Αλλαγή (4) Baby steps: μικρά βήματα προς τη σωστή κατεύθυνση. Είναι δύσκολη η αποδοχή όλων αυτών των αρχών αλλά οι πρακτικές χωρίς τις αξίες και τις αρχές δεν έχουν νόημα. 33
Οι XP αρχές βοηθούν στην κατανόηση του Σχεδιασμού (1) 34
Οι XP αρχές βοηθούν στην κατανόηση του Σχεδιασμού (2) Οι XP αρχές βοηθούν στην κατανόηση των πρακτικών και το αντίστροφο. Οι ομάδες XP χρησιμοποιούν stories και εάν δείτε ένα story που χρησιμοποιείται από τις XP ομάδες μοιάζει με το story που χρησιμοποιούν οι ομάδες Scrum. 35
Οι XP αρχές βοηθούν στην κατανόηση του Σχεδιασμού (3) 36
Οι XP αρχές βοηθούν στην κατανόηση του Σχεδιασμού (4) Τα stories μπορούν επίσης να χρησιμοποιηθούν από κάποιες XP αρχές. Economics: οι πελάτες επιλέγουν τα stories και έτσι η ομάδα του έργου εστιάζει στο κρίσιμο story με υψηλή αξία. Failure: τα stories είναι μικρά και ανεξάρτητα. Αν η ομάδα υλοποιεί ένα story και το στείλει στον πελάτη, τότε εύκολα μπορεί να το διορθώσει αν αποτύχει. 37
Οι XP αρχές βοηθούν στην κατανόηση του Σχεδιασμού (6) Accepted responsibility: ο προγραμματιστής διαβάζει την κάρτα και εκτιμά πόσο μπορεί να χρειαστεί για να υλοποιήσει το story. Κύκλοι ανάδρασης Και οι δύο μέθοδοι χρησιμοποιούν το feedback και έχουν παρόμοιες αξίες. Το XP είναι όμως περισσότερο εστιασμένο στο feedback. Ο κύκλος ανάδρασης είναι μικρότερος. 38
Όταν η ομάδα έχει το σωστό mindset για το XP, τότε οι πρακτικές φαίνονται αποτελεσματικές 39
Βιβλιογραφία Learning Agile, Andrew Stellman & Jennifer Greene, O Reilly, 2015, σελίδες 175-218 40