Προγραμματισμός

Διαχειριστείτε την ευέλικτη ομάδα με το XPlanner

Πεδίο εφαρμογής, σχεδιασμός, κατασκευή, δοκιμή, παράδοση, συγγνώμη. Αυτά είναι τα συχνά βήματα μιας παραδοσιακής μεθοδολογίας μηχανικής όταν εφαρμόζεται στον κόσμο των έργων λογισμικού. Ως προγραμματιστής λογισμικού, μάλλον γνωρίζετε καλά αυτήν την «τελική» απαίτηση συστήματος που φαίνεται να χτυπάει και να υφαίνεται σαν μαχητής βραβείων. Ίσως έχετε εργαστεί σε ένα αναπτυξιακό έργο μόνο για να εμφανιστεί μήνες (ή χρόνια) αργότερα για να αντιμετωπίσετε έναν πελάτη που φαίνεται βαθύτατα απογοητευμένος που οι πραγματικές του ανάγκες δεν έχουν καλυφθεί. Ίσως οι συνομηλίκοί σας βρίσκονται στο σημείο όπου ένα σχολαστικό σχέδιο ανάπτυξης μεγάλης εμβέλειας που τοποθετείται μπροστά τους ενσταλάζει την αίσθηση της επικείμενης καταστροφής. Κατώτατη γραμμή — η ομάδα σας είναι έτοιμη να προχωρήσει με ευέλικτη ανάπτυξη, αλλά το παραδοσιακό εργαλείο διαχείρισης της ομάδας σας έχει ενσωματωθεί στην παραδοσιακή διαχείριση της ομάδας;

Οι ευέλικτες μεθοδολογίες μπορεί να είναι ελαφριές, αλλά είναι πολύ πειθαρχημένες. Κάθε εργαλείο που σας υποστηρίζει στο σχεδιασμό και την παρακολούθηση ταχείας παράδοσης με στενή συνεργασία πελατών μπορεί να κάνει μια πολύτιμη προσθήκη στο οπλοστάσιό σας. Τα καλά νέα είναι ότι πολλά τέτοια εργαλεία είναι τώρα διαθέσιμα στην ευέλικτη ομάδα. Αυτό το άρθρο περιγράφει μια πραγματική εμπειρία στη διαχείριση μιας ευέλικτης ομάδας ανάπτυξης χρησιμοποιώντας μια από αυτές τις νέες φυλές εργαλείων, το ανοιχτό λογισμικό XPlanner.

Το XPlanner είναι μια εφαρμογή Java Web που έχει σχεδιαστεί για να υποστηρίζει τη διαχείριση της ομάδας σύμφωνα με την ακραία μεθοδολογία προγραμματισμού (XP). Ωστόσο, βρήκαμε αυτό το εργαλείο να είναι αρκετά ευέλικτο ώστε να παρέχει πολύτιμη υποστήριξη για άλλες γενικές ευέλικτες προσεγγίσεις (π.χ. Scrum) στη ζέστη της παράδοσης του έργου. Παρόλο που δεν είναι εξελιγμένο, το XPlanner παρέχει ένα εύχρηστο εργαλείο για να υποστηρίξει την ομάδα σας, είτε είστε έμπειροι, είτε απλώς ξεκινήσετε, στον κόσμο της ευέλικτης ανάπτυξης λογισμικού.

Παραδοσιακά εργαλεία εναντίον ευέλικτων ομάδων διαχείρισης

Τα παραδοσιακά εργαλεία διαχείρισης ομάδων (όπως το Microsoft's Project) βασίζονται σε δομές κατανομής εργασίας που εξετάζουν πολύ το μέλλον ενός έργου. Η προγραμματισμένη κατανομή των πόρων και η προσεκτική παρακολούθηση της διακύμανσης στη βασική γραμμή χρησιμοποιούνται για τη διαχείριση της «κρίσιμης διαδρομής» έως την τελική παράδοση. Η εφαρμογή τέτοιων εργαλείων συνεπάγεται σημαντικές προσπάθειες σχεδιασμού εκ των προτέρων, άκαμπτες εξαρτήσεις εργασιών και σταθερή βάση απαιτήσεων. Σημαντικές αλλαγές στο πεδίο εφαρμογής ή στις απαιτήσεις είναι πιθανό να απαιτήσουν σημαντικές αναθεωρήσεις στο μοντέλο. Έτσι, αυτά τα παραδοσιακά εργαλεία είναι τα πιο κατάλληλα κατά τον προγραμματισμό ενός ταξιδιού από το Α στο Β, υποθέτοντας μικρή παραλλαγή στην πορεία. Αντίθετα, τα ευέλικτα έργα είναι προσανατολισμένα να αναμένουν αλλαγή, χωρίς να υποθέτουμε ότι το Β είναι ακόμη και ο τελικός προορισμός.

Για την κατανόηση της κουλτούρας του ευέλικτου έργου, είναι χρήσιμο να θεωρηθούν τα δόγματα της ευέλικτης ανάπτυξης όπως υποστηρίζονται από τους συγγραφείς του Agile Manifesto:

  • "Άτομα και αλληλεπιδράσεις για διαδικασίες και εργαλεία
  • Λειτουργικό λογισμικό για ολοκληρωμένη τεκμηρίωση
  • Συνεργασία πελατών για διαπραγμάτευση συμβολαίου
  • Απαντώντας σε αλλαγή μετά από ένα σχέδιο "

    (Kent Beck et al., 2001)

Έτσι, τα ευέλικτα έργα εγκαταλείπουν ρητά τον μακροπρόθεσμο προγραμματισμό υπέρ της στενής εμπλοκής των ενδιαφερομένων μερών, σαφή εστίαση σε χαρακτηριστικά υψηλής αξίας και απελευθέρωση εύχρηστου λογισμικού νωρίς και συχνά. Ο βασικός στόχος είναι η απλή και αποτελεσματική παράδοση αξίας ενόψει της συνεχούς αλλαγής. Για να είναι πολύτιμο ένα εργαλείο σχεδιασμού και παρακολούθησης σε αυτό το πλαίσιο, πρέπει να είναι σύμφωνο με αυτές τις τιμές.

Σχεδιασμός και παρακολούθηση έργων με το XPlanner

Το XPlanner είναι ένα ευέλικτο εργαλείο λογισμικού διαχείρισης έργου που διατίθεται βάσει της άδειας GNU Lesser General Public (καθιστώντας το «δωρεάν, όπως στην μπύρα», σε ανοιχτή γλώσσα). Το πακέτο αναπτύσσεται ως εφαρμογή Ιστού, η οποία επιτρέπει στα μέλη της ομάδας σας και στα ενδιαφερόμενα μέρη του έργου να ενταχθούν χρησιμοποιώντας τα αγαπημένα τους προγράμματα περιήγησης Ιστού. Μόλις διαμορφωθεί, θα μπορείτε να σχεδιάσετε και να παρακολουθήσετε διάφορες πτυχές της παράδοσης του ευέλικτου έργου σας μέσω μιας απλής διεπαφής Ιστού.

Βασικά, από την ευέλικτη προοπτική, οι συμμετέχοντες του έργου μπορούν να συνεργαστούν άμεσα συμβάλλοντας τις πληροφορίες τους στο κοινό αποθετήριο του έργου. Αυτή η συνεργασία μπορεί να περιλαμβάνει πελάτες που περιγράφουν τις απαιτήσεις έργου με τη μορφή ιστοριών χρηστών, τις οποίες στη συνέχεια χρησιμοποιούν οι προγραμματιστές για να αναλύσουν λεπτομερώς και να παρακολουθούν τις εργασίες που απαιτούνται για να κάνουν αυτές τις ιστορίες πραγματικότητα.

Εκτός από την υποστήριξη αυτού του επιπέδου συνεργασίας των πελατών, το XPlanner παρέχει και άλλα εύχρηστα χαρακτηριστικά που υποστηρίζουν την ευέλικτη προσέγγιση. Σε αυτά περιλαμβάνονται χαρακτηριστικά όπως ένας απλός μηχανισμός για τον καθορισμό των επαναλήψεων έργων. μια διαισθητική διεπαφή για άτομα που εκτιμούν και παρακολουθούν την προσπάθεια · και γραφήματα για τη δημοσίευση μετρήσεων ομάδας. Το XPlanner συζητείται εδώ καθώς αναπτύχθηκε για την υποστήριξη της παράδοσης ενός ηλεκτρονικού εμπορίου και συστήματος ροής εργασίας που αποτελείται από διάφορες ομάδες ενδιαφερομένων και μια ομάδα επτά προγραμματιστών.

Λήψη και εγκατάσταση

Το XPlanner είναι μια καθαρή εφαρμογή Java που μπορεί να αναπτυχθεί σε οποιοδήποτε περιβάλλον ανάπτυξης J2SE 1.4 εξοπλισμένο με Apache Ant και κατάλληλο κινητήρα servlet. Επιλέξαμε τον Apache Tomcat ως servlet engine. Ωστόσο, οποιοσδήποτε κινητήρας είναι συμβατός με το Servlet 2.3 (ή μια πιο πρόσφατη έκδοση) πρέπει να λειτουργεί. Το XPlanner αποστέλλεται ως αρχείο αρχείων (zip ή tar.gz) το οποίο πρέπει να αποσυσκευάσετε και να δημιουργήσετε πριν από την ανάπτυξη και τη χρήση του εργαλείου.

Εμπλέκεται ένα υποχρεωτικό βήμα διαμόρφωσης, καθώς πρέπει να ρυθμίσετε την αγαπημένη σας βάση δεδομένων ώστε να χρησιμοποιείται ως αποθετήριο για πληροφορίες έργου. Καθώς το XPlanner χρησιμοποιεί το επίπεδο αδρανοποίησης αντικειμένου / σχεσιακής ανθεκτικότητας για αλληλεπίδραση βάσης δεδομένων, έχετε την επιλογή να χρησιμοποιήσετε οποιαδήποτε βάση δεδομένων που υποστηρίζεται από το Hibernate για το αποθετήριο του έργου σας. Η ομαδοποιημένη επιλογή είναι η ελαφριά βάση δεδομένων Java Hypersonic (τώρα ονομάζεται HSQLDB). Ωστόσο, χρησιμοποιήσαμε το Oracle 9i ως βάση δεδομένων αποθετηρίου μας. Για να διαμορφώσουμε αυτήν τη βάση δεδομένων, έπρεπε να επεξεργαστούμε το αρχείο xplanner.properties αποσυσκευάζοντας τις ήδη καθορισμένες ιδιότητες της Oracle. Έπρεπε επίσης να τροποποιήσουμε το build.xml αρχείο για να ενσωματώσει το πρόγραμμα οδήγησης λεπτής βάσης δεδομένων της Oracle. Μόλις διαμορφωθεί, μπορείτε να δημιουργήσετε την ανάπτυξη του XPlanner. Αυτό περιλαμβάνει την εκτέλεση του Ant για να δημιουργήσει ένα αναπτυσσόμενο αρχείο Ιστού (WAR) ως εξής:

ant install.db.schema ant build.war 

Αναπτύξτε το αρχείο αρχείων Web που προκύπτει (xplanner.war) στον servlet κινητήρα της επιλογής σας και, στη συνέχεια, περιηγηθείτε στη διεύθυνση URL // your-server: your-port / xplanner / (χρησιμοποιώντας τον προεπιλεγμένο χρήστη "sysadmin" και τον κωδικό πρόσβασης "admin") για να ελέγξετε τα αποτελέσματα!

Ενσωμάτωση με το οικοσύστημά σας

Τα περισσότερα περιβάλλοντα ανάπτυξης περιέχουν ήδη ένα σύστημα εντοπισμού σφαλμάτων, φόρουμ συνεργασίας, συστήματα ασφαλείας, αποθετήρια προτύπων κ.λπ. Παρόλο που είναι χρήσιμο ως αυτόνομο εργαλείο, η αξία του XPlanner μπορεί να βελτιωθεί μέσω των απλών και ισχυρών χαρακτηριστικών ενσωμάτωσής του. Το XPlanner περιλαμβάνει, για παράδειγμα, τη δυνατότητα υποστήριξης της απόδοσης προγραμματιστή ομιλίας σε ένα πεδίο περιγραφής, όπως σφάλμα: 1001 ως σύνδεσμος προς //mybugzilla/show_bug.cgi?uid=1001. Αυτό μπορεί να γίνει με την απλή προσθήκη twiki.scheme.bug = // mybugzilla / show_bug.cgi? id = στο xplanner.properties αρχείο. Αυτή η ίδια τεχνική μπορεί να χρησιμοποιηθεί για άλλα εργαλεία που βασίζονται στο Διαδίκτυο όπως προβολές (xplanner.properties δείχνει μερικά άλλα παραδείγματα). Το XPlanner διαθέτει επίσης έναν προηγμένο μορφοποιητή wiki (δεν χρησιμοποιείται στο έργο μας) που επιτρέπει την αυτόματη σύνδεση σε καταχωρήσεις wiki. Περισσότερες πληροφορίες σχετικά με τις επεκτάσεις XPlanner μπορείτε να βρείτε στους πόρους.

Στους περισσότερους οργανισμούς, πάντοτε, κάποια μορφή συμβατού διακομιστή καταλόγου LDAP (ελαφρύ πρωτόκολλο πρόσβασης καταλόγου) παρέχει κεντρικό αποθετήριο λογαριασμών ασφαλείας χρηστών. Για παράδειγμα, εντός του οργανισμού που χρηματοδοτεί το έργο μας, ένας παλιομοδίτικος αλλά λειτουργικός διακομιστής LDAP εξυπηρετούσε αυτόν τον σκοπό (ο Active Directory της Microsoft υποστηρίζει επίσης σε μεγάλο βαθμό το πρωτόκολλο LDAP). Ήταν αναζωογονητικό να βρεις απλό το XPlanner XPlannerLoginModule εύκολο να ενσωματωθεί με το LDAP. Αυτό περιελάμβανε ενημέρωση xplanner.properties ως εξής:

-> Σχολιάστε την προεπιλεγμένη ασφάλεια # xplanner.security.login.module = com.technoetic.xplanner.security.XPlannerLoginModule

-> Αποσυμπιέστε και επεξεργαστείτε τις καταχωρήσεις LDAP από ... xplanner.security.login.module = com.technoetic.xplanner.security.jndi.JNDILoginModule

-> ... σε: xplanner.security.login.option.roleSearch = (uniqueMember = {0})

-> Προσθήκη καταχωρίσεων αναζήτησης χρηστών xplanner.security.login.option.userBase = ou = άτομα, o = άτομο

-> Και διαγράψτε τις τιμές για το xplanner.security.login.option.userPattern = xplanner.security.login.option.userPassword =

Με μια γρήγορη ανακατασκευή και ανάπτυξη, η ασφάλεια ελέγχου ταυτότητας XPlanner ενσωματώθηκε πλήρως. Το μόνο μειονέκτημα ήταν ότι τα ονόματα χρηστών έπρεπε να προστεθούν ρητά στο XPlanner, αλλά τουλάχιστον οι παρενοχλήσεις κωδικού πρόσβασης και ομαδικής συμμετοχής έγιναν το εταιρικό helpdesk.

Ομάδα, γνωρίστε το XPlanner

Το XPlanner προβάλλει ένα έργο σύμφωνα με επαναλήψεις, ιστορίες χρηστών και εργασίες. Όπως ορίζεται από το παράδειγμα Agile, κάθε έργο που διαχειρίζεται το XPlanner σχεδιάζεται και παρακολουθείται σύμφωνα με μια διαδοχική σειρά επαναλήψεων. Κάθε επανάληψη αποτελείται από μια ημερομηνία έναρξης, μια ημερομηνία λήξης και μια συλλογή ιστοριών χρηστών που θα κατασκευαστούν από την ιστορία στην πραγματικότητα μέσα σε αυτό το χρονικό πλαίσιο.

Μια ιστορία χρήστη είναι το κύριο εννοιολογικό εργαλείο που χρησιμοποιείται στην ευέλικτη ανάπτυξη για την επικοινωνία των αναγκών των πελατών σε προγραμματιστές λογισμικού. Μόλις μια ιστορία χρήστη αντιστοιχιστεί σε μια τρέχουσα επανάληψη (ως μέρος του προγραμματισμού κυκλοφορίας μέσω του XPlanner), ο προγραμματιστής αναζητά περισσότερες λεπτομέρειες για κάθε ιστορία, συνεργαζόμενος με τον χρήστη (ελπίζουμε πρόσωπο με πρόσωπο) Το αποτέλεσμα αυτού του βήματος είναι μια λεπτομερής σειρά εργασιών ανάπτυξης, καθεμία από τις οποίες ο προγραμματιστής εγγράφεται στο XPlanner ενάντια στη σχετική ιστορία χρήστη.

Επιλέξαμε το έργο ροής εργασίας για το ηλεκτρονικό εμπόριο για να εκτελείται με μηνιαίες επαναλήψεις, η καθεμία αποτελείται από περίπου 10 ιστορίες, με 10 έως 15 εργασίες να ανατίθενται σε κάθε ιστορία.

Συγκομιδή ιστοριών χρηστών

Κάθε ιστορία χρήστη για μια επανάληψη έργου θα πρέπει να είναι μια σύντομη και εστιασμένη στο αποτέλεσμα περιγραφή μιας εμπειρίας χρήστη, όπως αναφέρεται στο πρώτο άτομο (π.χ., "Έπειτα πραγματοποιώ αναζήτηση με βάση το χρώμα ..."). Αυτή η εμπειρία γράφεται από έναν χρήστη που οραματίζεται το ιδανικό μελλοντικό προϊόν σε δράση, οπότε μπορεί να θεωρήσετε μια ιστορία χρήστη ως θετική οπτικοποίηση για λογισμικό! Ο στόχος κάθε οπτικοποίησης είναι να παρέχει αρκετές πληροφορίες για έναν προγραμματιστή λογισμικού για να εκτιμήσει την προσπάθεια που απαιτείται για να γίνει αυτή η ιστορία πραγματικότητα.

Το XPlanner καταγράφει τη συλλογή ιστοριών χρηστών του έργου σας, ενώ καταγράφει έναν πελάτη, έναν ιχνηλάτη, μια προτεραιότητα και μια εκτίμηση προσπάθειας έναντι κάθε μιας. Η κύρια δυσκολία που συναντάμε συχνά είναι η συλλογή ιστοριών χρηστών υψηλής ποιότητας από το μυαλό των χρηστών του συστήματος. Αυτό συνέβαινε σίγουρα για το έργο μας, καθώς ήταν μια σημαντική αλλαγή παραδείγματος από τις άκαμπτες απαιτήσεις ενότητας / υποτμήματος στους οποίους είχαν συνηθίσει οι χρήστες. Ωστόσο, η δυνατότητα χρήσης του XPlanner για τη διαχείριση ιστοριών έτσι ώστε να μπορούν να τις βλέπουν και να ενημερώνονται εύκολα από τους ενδιαφερόμενους και να ανταλλάσσονται γρήγορα εντός και εκτός μιας δεδομένης επανάληψης, σίγουρα βοήθησε. Ένα ωραίο, αν όχι λειτουργικό, χαρακτηριστικό του XPlanner είναι η αυθεντική αίσθηση που δίνει στον χρήστη μια ιστορία, εμφανίζοντας κάθε μια στην οθόνη ως μια παρόμοια κάρτα ευρετηρίου 3 προς 5, όπως φαίνεται στο Σχήμα 1.

Εκτίμηση και καταγραφή προσπάθειας

Η ευέλικτη ανάπτυξη ορίζει ότι οι προγραμματιστές αναλαμβάνουν τη δική τους ρύθμιση στόχου, η οποία περιλαμβάνει την ανάλυση μιας ιστορίας χρήστη και τον καθορισμό των τεχνικών εργασιών που απαιτούνται για την πραγματοποίηση αυτής της ιστορίας. Ένας προγραμματιστής θα πρέπει να είναι ελεύθερος να προσθέτει επιπλέον εργασίες ή να τροποποιεί υπάρχουσες εργασίες, καθώς θα διατίθενται περαιτέρω λεπτομέρειες ιστορίας. Το XPlanner υποστηρίζει αυτήν την ευελιξία παρέχοντας στους προγραμματιστές πλήρη πρόσβαση για τον καθορισμό και την επεξεργασία μιας εργασίας. Σε κάθε εργασία μπορεί να εκχωρηθεί ένας τύπος, όπως χρέος, χαρακτηριστικό ή ελάττωμα, για να χαρακτηριστεί το είδος της εργασίας που πραγματοποιείται (το χρέος, για παράδειγμα, είναι μια εργασία για τον καθαρισμό τεχνικού "cruft" που έχει απομείνει στο σύστημα από προηγούμενη επανάληψη). Οι εργασίες καθορίζονται επίσης με μια διάθεση (προγραμματισμένη ή μη προγραμματισμένη), τον προγραμματιστή αποδοχής, μια περιγραφή εργασίας και μια εκτίμηση του αριθμού των ιδανικών ωρών που απαιτούνται για την κατάκτηση αυτής της εργασίας.

Το XPlanner διευκολύνει έναν προγραμματιστή να καταγράφει πόση εργασία έχει επενδυθεί σε μια δεδομένη εργασία ή να ενημερώσει την αρχική εκτίμηση προσπάθειας (το πρωτότυπο εξακολουθεί να είναι αποθηκευμένο). Σημειώστε ότι οι εκτιμήσεις προσπάθειας, όπως αναφέρθηκαν, πρέπει να προσδιορίζονται στο ιδανικό ώρες. Μια ιδανική ώρα είναι μια ώρα κατά την οποία ο προγραμματιστής δεν βιώνει καθόλου διακοπές.

Οι προγραμματιστές θα πρέπει επίσης να καταγράφουν τον αριθμό των ιδανικών ωρών που επενδύουν έναντι μιας δεδομένης εργασίας. Εάν ενθαρρύνετε τους προγραμματιστές σας να καταγράψουν ειλικρινά ιδανικές ώρες (μη απαιτώντας να μάθουν πού πηγαίνει ο χρόνος), θα μπορείτε να εξαγάγετε μερικές χρήσιμες μετρήσεις από το XPlanner (συζητείται παρακάτω). Βρήκαμε, για παράδειγμα, ότι, στο έργο μας, μια ιδανική ώρα χρειάστηκε περίπου 1.4 ώρες για να επιτευχθεί. Αυτές οι πληροφορίες μπορούν στη συνέχεια να χρησιμοποιηθούν για την παροχή εκλεπτυσμένης εκτίμησης για επακόλουθες επαναλήψεις - η οποία συμβάλλει στην τήρηση των υποσχέσεων της ομάδας και των προσδοκιών του πελάτη στο ίδιο παιχνίδι.

Μετρήσεις και προγραμματισμός για την επόμενη επανάληψη

Είστε στη μέση μιας επανάληψης και το αφεντικό θέλει να μάθει "πώς κοιτάζουμε". Μια καλά φορεμένη απάντηση σε αυτήν την ερώτηση είναι "Είμαστε περίπου το 80 τοις εκατό του δρόμου εκεί". Φυσικά, αυτό το τελευταίο 20 τοις εκατό φαίνεται πάντα να διαρκεί πολύ περισσότερο από ό, τι θα έπρεπε - το τελευταίο 20 τοις εκατό είναι το λογισμικό ισοδύναμο με τα θαμπό λαχανικά στο δείπνο που αφήνατε μέχρι το τελευταίο.