Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού Ενότητα 2- Οι αρχές της agile προσέγγισης Δρ. Δημήτριος Τσέλιος Καθηγητής Εφαρμογών Τμήμα Μηχανικών Πληροφορικής Τ.Ε.- ΤΕΙ Θεσσαλίας Μεταπτυχιακό Πρόγραμμα Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές 1
Η λίστα με τις 12 αρχές του agile λογισμικού 1. Η υψηλότερη προτεραιότητα είναι η ικανοποίηση του πελάτη διαμέσου της γρηγορότερης και συνεχούς παράδοσης αξιόλογου λογισμικού 2. Να καλωσορίζουμε τις αλλαγές προδιαγραφών, ακόμη και σχετικά αργά κατά την ανάπτυξη του λογισμικού. Οι agile διεργασίες υποστηρίζουν την αλλαγή προς όφελος του πελάτη 3. Παραδώστε συχνά λογισμικό που δουλεύει, όσο το δυνατό πιο συχνά
Η λίστα με τις 12 αρχές του agile λογισμικού 4. Η πιο αποδοτική και αποτελεσματική μέθοδος για να μεταφερθεί η πληροφορία στην ομάδα ανάπτυξης είναι η κατά πρόσωπο συζήτηση 5. Οι επιχειρηματίες και οι προγραμματιστές πρέπει να εργάζονται καθημερινά μαζί στη διάρκεια του έργου 6. Φτιάξτε έργα γύρω από κινητοποιημένα άτομα. Δώστε τους το περιβάλλον και την υποστήριξη που χρειάζονται και εμπιστευτείτε τους να κάνουν την δουλειά
Η λίστα με τις 12 αρχές του agile λογισμικού 7. Το λογισμικό που δουλεύει είναι το πρωτεύον μέτρο της προόδου 8. Οι agile διεργασίες οδηγούν στη διατηρήσιμη ανάπτυξη. Οι χορηγοί, οι προγραμματιστές και οι χρήστες θα πρέπει να διατηρούν αυτόν τον ρυθμό ανάπτυξης 9. Η συνεχής προσοχή της τεχνικής αριστείας και του καλού σχεδιασμού ενισχύουν την agility 10. Απλότητα η τέχνη της μεγιστοποίησης της ποιότητας που δεν έγινε ακόμη είναι ουσιώδης 11. Οι καλύτερες αρχιτεκτονικές, οι απαιτήσεις και τα σχέδια προκύπτουν από αυτό οργανωμένες ομάδες
Η λίστα με τις 12 αρχές του agile λογισμικού 12.Κατά τακτά διαστήματα, η ομάδα αντανακλά το πώς γίνεται πιο αποδοτική και ρυθμίζει τη συμπεριφορά της ανάλογα
Η λίστα με τις 12 αρχές του agile λογισμικού Ο πελάτης έχει πάντα δίκιο.σωστά? Διαφορετικοί stakeholders έχουν διαφορετικές προσδοκίες από το λογισμικό Πολλές από τις προδιαγραφές που τίθενται εξαρχής χρειάζονται αλλαγές ειδικά σε έργα λογισμικού με μεγάλη διάρκεια. Κάνε αυτό που λέω, όχι αυτό που είπα
Αρχή 1- Η υψηλότερη προτεραιότητα είναι η ικανοποίηση του πελάτη διαμέσου της γρηγορότερης και συνεχούς παράδοσης αξιόλογου λογισμικού Αυτή η αρχή περιλαμβάνει 3 διακριτές και σπουδαίες ιδέες: 1. Παράδοση λογισμικού νωρίς 2. Παράδοση λογισμικού συνεχώς 3. Ικανοποίηση του πελάτη Με το early delivery έχουμε πραγματική ανάδραση του πελάτη. Καλύτερα να παραδοθεί κάτι μικρής αξίας παρά να μην παραδοθεί τίποτα
Αρχή 1- Η υψηλότερη προτεραιότητα είναι η ικανοποίηση του πελάτη διαμέσου της γρηγορότερης και συνεχούς παράδοσης αξιόλογου λογισμικού Θα πρέπει να αναπτυχθεί μια κουλτούρα όπου οι πελάτες θα πρέπει να συνηθίσουν στην πρώιμη παράδοση λογισμικού που δεν θα είναι τέλειο Η συνεργασία με τους πελάτες θα οδηγήσει στη συνεχή παράδοση (continuous delivery) Οι agile μεθοδολογίες είναι τυπικά επαναληπτικές
Αρχή 2 η Να καλωσορίζουμε τις αλλαγές προδιαγραφών, ακόμη και σχετικά αργά κατά την ανάπτυξη του λογισμικού Πολλοί agile εργαζόμενοι έχουν πρόβλημα με αυτή την αρχή. Οι αιτήσεις για αλλαγές κατά την ανάπτυξη του λογισμικού συχνά δημιουργούν προβλήματα Όμως συχνά ο αρχικός σχεδιασμός και οι απαιτήσεις έχουν λάθη ή είναι out of date. Αυτό το γεγονός μερικοί προσπαθούν να το κρύψουν για να μην κατηγορηθούν
Αρχή 2 η Να καλωσορίζουμε τις αλλαγές προδιαγραφών, ακόμη και σχετικά αργά κατά την ανάπτυξη του λογισμικού Το πρώτο βήμα είναι να ιδωθεί η κατάσταση από την πλευρά του πελάτη. Τι πρέπει όμως να γίνει; Κανένας δεν θα έχει πρόβλημα όταν υπάρχει αλλαγή Υπάρχει συνολική ευθύνη ως μια ομάδα. Να αποφεύγεται το blame game Όταν γίνεται ένα λάθος απλά διορθώστε όσο πιο γρήγορα γίνεται Μαθαίνουμε από τις αλλαγές
Αρχή 3 η Παραδώστε συχνά λογισμικό που δουλεύει, όσο το δυνατό πιο συχνά Η παραδοσιακή τακτική έναντι των αλλαγών ενός έργου συχνά ονομάζεται command-and-control Το command αναφέρεται στον τρόπο με τον οποίο ο διαχειριστής έργου αναθέτει εργασία στην ομάδα Το control αναφέρεται στον τρόπο με τον οποίο διαχειρίζεται τις αλλαγές Το κλειδί για τις καλοδεχούμενες αλλαγές χωρίς να προκληθεί χάος βρίσκεται συχνά στην παράδοση λειτουργικού λογισμικού Η ομάδα λειτουργεί με επαναλήψεις
Αρχή 3 η Παραδώστε συχνά λογισμικό που δουλεύει, όσο το δυνατό πιο συχνά
Αρχή 3 η Παραδώστε συχνά λογισμικό που δουλεύει, όσο το δυνατό πιο συχνά Οι καθημερινές ανασκοπήσεις (daily reviews) και η επαναληπτική επισκόπηση δίνουν τη δυνατότητα στον διαχειριστή έργου να παρακολουθεί την αλλαγή.
Αρχή 4 η Η πιο αποδοτική και αποτελεσματική μέθοδος για να μεταφερθεί η πληροφορία στην ομάδα ανάπτυξης είναι η κατά πρόσωπο συζήτηση Η προσωπική επικοινωνία είναι καλύτερη από την συγγραφή εγχειριδίων Αυτό ταιριάζει περισσότερο με τους προγραμματιστές που είναι συνήθως πρακτικά άτομα Ο απώτερος στόχος για την ομάδα είναι η δημιουργία μιας κοινότητας όπου δεν χρειάζεται να εξηγηθούν τα ίδια πράγματα συνεχώς
Αρχή 4 η Η πιο αποδοτική και αποτελεσματική μέθοδος για να μεταφερθεί η πληροφορία στην ομάδα ανάπτυξης είναι η κατά πρόσωπο συζήτηση Η σημασία να επικοινωνεί και να εργάζεται μαζί η ομάδα
Αρχή 5 η Οι επιχειρηματίες και οι προγραμματιστές πρέπει να εργάζονται καθημερινά Συνήθως οι επιχειρηματίες που χρειάζονται το λογισμικό δεν έχουν διαθέσιμο χρόνο για να έρχονται σε συχνή επαφή με τις ομάδες έργου Οι ομάδες έργου αντίθετα χρειάζονται αυτή την επαφή για να μάθουν το πρόβλημα που πρέπει να λύσουν Όμως όταν οι δύο ενδιαφερόμενοι εργάζονται ως ομάδα καθημερινά τότε το έργο γίνεται πιο αποδοτικό. Γιατί υπάρχει καθημερινό feedback και ανταπόκριση στις αλλαγές των προδιαγραφών Η agile ομάδα διακρίνεται από την παραδοσιακή ομάδα όταν θεωρεί τους επιχειρηματίες μέλη της Η πρώτη συνεργάζεται ενώ η δεύτερη διαπραγμάτευση
Αρχή 6 η Φτιάξτε έργα γύρω από κινητοποιημένα άτομα Έχει σημασία η προώθηση κινήτρων στους εργαζόμενους Κάποια λάθος κίνητρα είναι: Να δίνει φτωχές αναφορές επίδοσης και να δίνει αμοιβές για καθαρούς από λάθη κώδικες (αυτό οδηγεί τους προγραμματιστές στο να σταματήσουν την αναζήτηση των λαθών) Να δίνει αμοιβή στους ελεγκτές του κώδικα συνδεδεμένη με τον αριθμό των λαθών που βρίσκουν Να δίνει αμοιβή ανάλογα με το μέγεθος του documentation που παραδίδεται
Αρχή 6 η Φτιάξτε έργα γύρω από κινητοποιημένα άτομα Τα μέλη της ομάδας θα πρέπει να αξιολογούνται με βάση τη συνεισφορά τους στο έργο, μέσα σε ένα περιβάλλον που θα ενθαρρύνει τους εργαζόμενους.
Αρχή 6 η Φτιάξτε έργα γύρω από κινητοποιημένα άτομα Το μεγάλο documentation οδηγεί συχνά σε τακτικές κάλυψης και αποφυγής ευθυνών (CYA) Ο καθένας στην παραδοσιακή ομάδα εκτελεί τον ρόλο του χωρίς να αλλάζει κάτι που τελικά δεν προσφέρει αξία στο λογισμικό Οι ομάδες έργου χρειάζονται το CYA περισσότερο σε ένα περιβάλλον όπου η αλλαγή θεωρείται κακό πράγμα Το αντίθετο του CYA είναι η εμπιστοσύνη. Τότε η ομάδα διαχειρίζεται αποτελεσματικά τις αλλαγές και δεν χρειάζεται μεγάλο documentation Τότε ξέρει ότι κάνει το σωστό πράγμα ακόμη και αν το έργο διαρκεί περισσότερο
Αρχή 6 η Φτιάξτε έργα γύρω από κινητοποιημένα άτομα
Αρχή 7 η Το λογισμικό που δουλεύει είναι το πρωτεύον μέτρο της προόδου Συνήθως η πρόοδος του έργου παρουσιάζεται με χρήση αναφορών προόδου, κάτι που είναι μη αποτελεσματικό ως μέσο Το καλύτερο μέσο είναι η παράδοση ενός τμήματος του λογισμικού που δουλεύει. Έτσι μπορούν να δουν όλοι πως δουλεύει το λογισμικό και αν εντοπιστούν προβλήματα τότε γίνονται τροποποιήσεις Γι αυτόν τον λόγο, οι agile ομάδες εργάζονται με επαναληπτικούς κύκλους
Αρχή 7 η Το λογισμικό που δουλεύει είναι το πρωτεύον μέτρο της προόδου
Αρχή 7 η Το λογισμικό που δουλεύει είναι το πρωτεύον μέτρο της προόδου
Αρχή 8 η Οι agile διεργασίες οδηγούν στη διατηρήσιμη ανάπτυξη Στις παραδοσιακές ομάδες έργου όταν το έργο καθυστερεί τότε οι ομάδες εργάζονται πολλές ώρες επιπλέον και τα σαββατοκύριακα Αυτό οδηγεί σε κάποια θετικά αποτελέσματα αλλά αν συνεχιστεί για μεγάλο χρονικό διάστημα τότε η υπερβολική κόπωση θα επιφέρει τα αντίθετα αποτελέσματα Οι agile ομάδες πιστεύουν σε ένα διατηρήσιμο ρυθμό εργασίας. Η τμηματική παράδοση του λογισμικού σε κύκλους βοηθάει σε αυτό
Αρχή 9 η Η συνεχής προσοχή της τεχνικής αριστείας και του καλού σχεδιασμού ενισχύουν την agility Οι κακές εκτιμήσεις δεν οδηγούν μόνο σε υπερεργασία αλλά και σε λογισμικό με λάθη Είναι προτιμότερο να βρεθεί ένα λάθος στην αρχή παρά αργότερα Οι agile ομάδες αποφεύγουν τη δημιουργία σχεδίων λογισμικού μεγάλης κλίμακας στην αρχή του έργου. Προτιμούν τη σταδιακή σχεδίαση και υλοποίηση
Αρχή 10 η Απλότητα η τέχνη της μεγιστοποίησης της ποιότητας που δεν έγινε ακόμη είναι ουσιώδης Στις παραδοσιακές ομάδες θεωρούν ότι πρέπει να αρχίζουν την κωδικοποίηση μετά από μια εκτεταμένη και πλήρη σχεδίαση Αυτό ισχύει ορθά στα κατασκευαστικά έργα, αλλά τα έργα λογισμικού είναι διαφορετικά Η διαγραφή ή η αλλαγή κώδικα δεν είναι τόσο καταστροφική Οι agile ομάδες όταν γράφουν κώδικα, κρατούν τη σχεδίαση όσο πιο απλή γίνεται δημιουργώντας σχέδια λογισμικού που είναι μικρά και ανεξάρτητα, αποφεύγοντας έτσι το ντόμινο αλλαγών
Αρχή 11 η Οι καλύτερες αρχιτεκτονικές, οι απαιτήσεις και τα σχέδια προκύπτουν από αυτό οργανωμένες ομάδες Τα υπερβολικά και πολύπλοκα σχέδια προκύπτουν συχνά από ομάδες που δουλεύουν με up-front σχεδιασμό Μια αυτό-οργανωμένη ομάδα δεν έχει μια ξεχωριστή φάση σχεδίου ή καταγραφής απαιτήσεων Τότε η ομάδα δουλεύει ολόκληρη στον σχεδιασμό και δεν τον αναθέτει σε ένα άτομο
Αρχή 11 η Οι καλύτερες αρχιτεκτονικές, οι απαιτήσεις και τα σχέδια προκύπτουν από αυτό οργανωμένες ομάδες Το έργο διασπάται σε μικρά τμήματα Στις agile ομάδες, όλοι συμμετέχουν στην αρχιτεκτονική του λογισμικού. Κάποιος είναι ο ηγέτης φυσικά αλλά όλοι είναι υπεύθυνοι Αυτό οδηγεί στην σταδιακή σχεδίαση (incremental design)
Αρχή 12 η Κατά τακτά διαστήματα, η ομάδα αντανακλά το πώς γίνεται πιο αποδοτική και ρυθμίζει τη συμπεριφορά της ανάλογα Μια ομάδα δεν είναι agile αν δεν βελτιώνει σταθερά τον τρόπο με τον οποίο φτιάχνει λογισμικό Τακτικά, οι agile ομάδες επιθεωρούν και προσαρμόζουν τον τρόπο με τον οποίο τα έργα τους τρέχουν Πολλές ομάδες λένε ότι θα κάνουν αυτή την επιθεώρηση αλλά σπάνια συμβαίνει. Τα μέλη θα πρέπει να βλέπουν αυτή τη μέθοδο εποικοδομητικά και όχι κριτικά Οι ομάδες agile δεσμεύουν χρόνο για συναντήσεις που βοηθούν στην υλοποίηση αυτής της αρχής
Συμπεράσματα Η agile μέθοδος είναι μοναδική στην ιστορία της μηχανικής λογισμικού Δεν υπόσχεται μια λύση τύπου silver bullet Οι ομάδες agile δεν χρησιμοποιούν ένα μενού εργαλείων και τεχνικών Οι ομάδες agile φτιάχνουν ένα mindset καθοδηγούμενο από agile αξίες και αρχές Θα πρέπει πρώτα να κατανοηθούν οι agile αρχές και να αναπτυχθεί ένας τρόπος επικοινωνίας των μελών της ομάδας
Βιβλιογραφία Learning Agile, Andrew Stellman & Jennifer Greene, O Reilly, 2015 Σελίδες 51-86