Trasas Steve - Extreme Programming and Agile Software Development Methodologies
Transcript of Trasas Steve - Extreme Programming and Agile Software Development Methodologies
ΤΡΑΣΑΣ ΣΤΗΒ
• Μικρές και συχνές παραδόσεις λογισμικού
• Καλοδεχούμενες αλλαγές απαιτήσεων
• Πολύ μικρός αριθμός λαθών
• Συνεχής συνεργασία εκπροσώπων του πελάτη και ομάδας
ανάπτυξης
• Η ομάδα ανάπτυξης δουλεύει σε ευχάριστο εργασιακό περιβάλλον
με συνεχή επικοινωνία για το έργο
• Το λειτουργικό λογισμικό είναι η πρωτεύουσα μέτρηση της πορείας
του έργου
Υποθέστε ότι ενδιαφέρεστε για ένα έργο λογισμικού, για την
επιχείρηση σας. Πως σας ακούγονται τα παρακάτω?
Υποθέστε τώρα ότι είστε ένας προγραμματιστής που θα
δουλέψει στο έργο. Πως σας ακούγονται τα παρακάτω?
• Πρόσβαση στον πελάτη για διευκρίνιση λεπτομερειών
• Ελευθερία δόμησης κώδικα (code cleanup) όποτε χρειάζεται
• Ολοκλήρωση project κάθε 2 εβδομάδες
• Επιλογή εργασίας σε μέρος του λογισμικού που επιθυμεί
• Επιλογή συνεργάτη προγραμματιστή
• Δεν απαιτείται να εργάζεται πολλές ώρες συνεχώς
Extreme Programming and Agile
Software Development
Methodologies
Lowell Lindstrom, Ron Jeffries
Γιατί αποτυγχάνουν τα έργα λογισμικού?
• Απαιτήσεις που δεν είναι κοινοποιούνται με σαφήνεια και δεν
επιλύουν το πρόβλημα του πελάτη
• Απαιτήσεις που αλλάζουν πριν την ολοκλήρωση του έργου
• Λογισμικό που δεν έχει δοκιμαστεί
• Λογισμικό που είναι δύσκολο να βελτιωθεί
• Έργα που δεν στελεχώνονται με τους πόρους που απαιτούνται από
το σχέδιο του έργου
• Προγραμματισμός πριν την πλήρη κατανόηση των απαιτήσεων
Προσπάθειες βελτίωσης
• Οι προσπάθειες βελτίωσης εστιάζονται στην εξής διαδικασία:
o Βελτίωση ποιότητας εισόδων (απαιτήσεις)
o Βελτίωση ποιότητας εξόδων (σχεδιασμός και ανάπτυξη, project
management)
o Βελτίωση της ανίχνευσης και εξάλειψης των προβλημάτων πριν την
παράδοση (testing)
• Οι πιο δημοφιλείς τεχνικές project management επικεντρώνονται
στη ανάπτυξη ενός πλάνου και την πλήρη εφαρμογή του
• Υπάρχει βελτίωση συντονισμού αλλά μείωση ικανότητας του
έργου να προσαρμόζεται σε νέες πληροφορίες
Η εμφάνιση των ευέλικτων μεθόδων
• Καθοριστικός παράγοντας της επιτυχίας ενός έργου φαινόταν
να είναι οι άνθρωποι, όχι η τεχνολογία και οι μέθοδοι
• Στις αρχές του 2001 οι δημιουργοί των διάφορων μεθοδολογιών
(XP, Scrum, Crystal, Adaptive, etc) μαζεύτηκαν στην Utah των
ΗΠΑ για να συζητήσουν το μέλλον της ανάπτυξης λογισμικού
• Αποτέλεσμα αυτών των συζητήσεων ήταν η διατύπωση του
«Agile Manifesto»
Agile Manifesto
«Ανακαλύπτουμε καλύτερους τρόπους ανάπτυξης λογισμικού με το να
αναπτύσσουμε λογισμικό αλλά και με το να βοηθούμε άλλους που κάνουν
το ίδιο. Μέσω αυτής της εργασίας έχουμε καταλήξει στο να εκτιμούμε
περισσότερο:
• τα άτομα και τις αλληλεπιδράσεις από τις διαδικασίες και τα εργαλεία
• το εν λειτουργία λογισμικό από την περιεκτική τεκμηρίωσή του
• την συνεργασία με τους πελάτες από τη διαπραγμάτευση συμβάσεων/
συμβολαίων
• την ανταπόκριση στην αλλαγή από την εκτέλεση ενός σχεδίου
Αυτό που εννοούμε είναι ότι ενώ υπάρχει αξία στα στοιχεία στο δεξί μέρος των
παραπάνω προτάσεων εκτιμούμε τα στοιχεία στο αριστερό περισσότερο. »
Αρχές του Agile Manifesto (Principles)
1. Βασική προτεραιότητα αποτελεί η ικανοποίηση του πελάτη με την συνεχή παράδοση
σημαντικού λογισμικού από τα πρώτα κιόλας στάδια της παραγωγής.
2. Η παράδοση τμημάτων λογισμικού γίνεται ανά δύο εβδομάδες έως και ανά δύο μήνες. Σημαντική
είναι η όσο το δυνατόν συχνότερη παράδοση.
3. Οι μεταβαλλόμενες απαιτήσεις είναι καλοδεχούμενες ακόμα και σε προχωρημένο στάδιο
ανάπτυξης. Οι διαδικασίες, που εφαρμόζονται έχουν την δυνατότητα να υποτάσσουν την αλλαγή
προς όφελος του πελάτη.
4. Οι πελάτες και οι υπεύθυνοι ανάπτυξης του συστήματος πρέπει να συνεργάζονται καθημερινά
μέχρι την παραγωγή του τελικού προϊόντος.
5. Σημαντική είναι η ανάθεση των τμημάτων του συστήματος σε ικανό και αποτελεσματικό
προσωπικό και η εξασφάλιση ευνοϊκού περιβάλλοντος εμπιστοσύνης και υποστήριξης.
6. Ο καλύτερος τρόπος μεταβίβασης και ανταλλαγής πληροφοριών με την ομάδα παραγωγής είναι
η διαπροσωπική συζήτηση.
Αρχές του Agile Manifesto (Principles)
7. Το καλύτερο και πιο αξιόπιστο μέτρο, που επιβεβαιώνει την πρόοδο, είναι το να λειτουργούν
σωστά τα τμήματα λογισμικού τα οποία κατασκευάζονται.
8. Οι ευέλικτες διαδικασίες προωθούν τον σταθερό ρυθμό ανάπτυξης του συστήματος, ο οποίος
πρέπει να ακολουθείται τόσο από τον πελάτη όσο και από τους υπεύθυνους παραγωγής.
9. Η ευελιξία ενισχύεται από την συνεχή προσπάθεια για τεχνική αρτιότητα και καλό σχεδιασμό.
10. Η απλοποίηση, με την έννοια της υλοποίησης στόχων με σύντομο αλλά αποτελεσματικό τρόπο,
είναι ουσιαστική.
11. Οι καλύτερες αρχιτεκτονικές, απαιτήσεις και σχέδια προκύπτουν από ομάδες, που οργανώνονται
μόνες τους.
12. Σε τακτά χρονικά διαστήματα, η ομάδα συζητά τρόπους, ώστε να γίνει περισσότερο
αποτελεσματική και επαναπροσδιορίζει τη συμπεριφορά της.
Extreme Programming
• Μεθοδολογία που προορίζεται να βελτιώσει την ποιότητα του
λογισμικού και την ανταπόκριση του στις μεταβαλλόμενες απαιτήσεις
των πελατών
• Δημιουργήθηκε από τον Kent Beck κατά τη διάρκεια της εργασίας του
στο πρόγραμμα μισθοδοσίας της Chrysler Comprehensive
Compensation System το 1996
• Παίρνει το όνομα της από την ιδέα ότι τα ευεργετικά στοιχεία των
παραδοσιακών πρακτικών ανάπτυξης λογισμικού λαμβάνονται στα
«ακραία» επίπεδα
• Λειτουργεί ενώνοντας την ομάδα χρησιμοποιώντας απλές
πρακτικές, με ανατροφοδότηση, για να μπορέσει η ομάδα να δει
που βρίσκεται και να λειτουργήσει αποτελεσματικά
• Οι Extreme Programmers εργάζονται σε ζεύγη και συνολικά ως
ομάδα με απλό σχεδιασμό και πολύ καλά δοκιμασμένο κώδικα
• Η ομάδα παράγει το λογισμικό σε μια σειρά μικρών, πλήρως
ολοκληρωμένων εκδόσεων που έχουν περάσει όλα τα τεστ
• Όλοι ακολουθούν ένα ομοιόμορφο στυλ προγραμματισμού, ώστε
ο καθένας να μπορεί να κατανοήσει και να βελτιώσει τον κώδικα
Extreme Programming
• Ο «Ακραίος Προγραμματισμός» βασίζεται στις αξίες της
επικοινωνίας (communication), απλότητας (simplicity),
ανατροφοδότησης (feedback) και κουράγιου (courage)
• Είναι η μόνη μέθοδος που είναι σαφής στις αξίες και πρακτικές
που χρησιμοποιεί
• Ο συνδυασμός αυτός δίνει συγκεκριμένες οδηγίες όχι μόνο στο τι
(πρακτικές) πρέπει να γίνει σε ένα έργο αλλά και για το πώς να
αντιδράσουν (αξίες) όταν οι πρακτικές δεν φαίνεται να
λειτουργούν ή δεν είναι επαρκείς
Αξίες XP (Values)
Ο ρυθμός ενός έργου XP
Πρακτικές και κύκλος ζωής
• Προγραμματισμός σε ζεύγη (pair programming)
• Το παιχνίδι του σχεδιασμού (planning game)
• Ανάπτυξη οδηγούμενη από τις δοκιμές (test driven development)
• Πρότυπα κωδικοποίησης (coding standards)
• Απλός σχεδιασμός (simple design)
• Ανακατασκευή – βελτίωση κώδικα (refactoring – design improvement)
• Διαρκείς ενσωματώσεις στον κώδικα (continuous integration)
• Συλλογική ιδιοκτησία του κώδικα (collective code ownership)
• Διαρκής παρουσία πελάτη (whole team, on-site customer)
• Μικρές εκδόσεις (small releases)
• Υποφερτός ρυθμός εργασίας (sustainable pace)
• Συνολική εικόνα του συστήματος (system metaphor)
Πρακτικές XP
Σύγκριση μεθοδολογιών
• Υψηλός ρυθμός αλλαγών στον τομέα της ανάπτυξης λογισμικού
• Οι Ευέλικτες μεθοδολογίες ανάπτυξης λογισμικού έχουν
αναδειχθεί ως μια εναλλακτική λύση των καθιερωμένων
μεθόδων που έχουν σχεδιαστεί κατά κύριο λόγο για πολύ
μεγάλα έργα
• Οι άνθρωποι συνεχίζουν να διευρύνουν τα όρια των γνωστών
τεχνικών και πρακτικών, σε μια προσπάθεια να αναπτύξουν
λογισμικό όσο το δυνατόν αποδοτικότερα και
αποτελεσματικότερα.
Συμπεράσματα
1. Beck, K., Extreme Programming Explained, Addison
Wesley Longman, 2000.
2. www.agilemanifesto.org.
3. Sliwa, C., “Agile Programming Techniques Spark
Interest,” Computerworld.com, March 14, 2002.
4. Jeffries, R. et al., Extreme Programming Installed,
Addison Wesley Longman, 2001, 172.
5. Schwaber, K. and Beedle, M.,Agile Software
Development with Scrum, Prentice Hall, 2002.
6. Mary Poppendieck, Lean Development : A Toolkit for
Software Development Managers, Addison-Wesley, to
be published in April 2003.
7. Thomsett, R., Radical Project Management, Prentice
Hall, 2002.
8. Fowler, M. et al., Refactoring: Improving the Design of
Existing Code, Addison-Wesley, 1999.
9. For more information on good software design principles
and their application on agile software projects, see
Martin, R.C., Agile Software Development: Principles,
Patterns, and Practices, Pearson Education, 2003.
10. Kerth, N., Project Retrospectives, Dorsett House, 2001.
ΤΕΛΟΣ
There is nothing so stable as change
Bob Dylan