Trasas Steve - Extreme Programming and Agile Software Development Methodologies

19
ΤΡΑΣΑΣ ΣΤΗΒ [email protected]

Transcript of Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Page 1: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

ΤΡΑΣΑΣ ΣΤΗΒ

[email protected]

Page 2: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

• Μικρές και συχνές παραδόσεις λογισμικού

• Καλοδεχούμενες αλλαγές απαιτήσεων

• Πολύ μικρός αριθμός λαθών

• Συνεχής συνεργασία εκπροσώπων του πελάτη και ομάδας

ανάπτυξης

• Η ομάδα ανάπτυξης δουλεύει σε ευχάριστο εργασιακό περιβάλλον

με συνεχή επικοινωνία για το έργο

• Το λειτουργικό λογισμικό είναι η πρωτεύουσα μέτρηση της πορείας

του έργου

Υποθέστε ότι ενδιαφέρεστε για ένα έργο λογισμικού, για την

επιχείρηση σας. Πως σας ακούγονται τα παρακάτω?

Page 3: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Υποθέστε τώρα ότι είστε ένας προγραμματιστής που θα

δουλέψει στο έργο. Πως σας ακούγονται τα παρακάτω?

• Πρόσβαση στον πελάτη για διευκρίνιση λεπτομερειών

• Ελευθερία δόμησης κώδικα (code cleanup) όποτε χρειάζεται

• Ολοκλήρωση project κάθε 2 εβδομάδες

• Επιλογή εργασίας σε μέρος του λογισμικού που επιθυμεί

• Επιλογή συνεργάτη προγραμματιστή

• Δεν απαιτείται να εργάζεται πολλές ώρες συνεχώς

Page 4: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Extreme Programming and Agile

Software Development

Methodologies

Lowell Lindstrom, Ron Jeffries

Page 5: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Γιατί αποτυγχάνουν τα έργα λογισμικού?

• Απαιτήσεις που δεν είναι κοινοποιούνται με σαφήνεια και δεν

επιλύουν το πρόβλημα του πελάτη

• Απαιτήσεις που αλλάζουν πριν την ολοκλήρωση του έργου

• Λογισμικό που δεν έχει δοκιμαστεί

• Λογισμικό που είναι δύσκολο να βελτιωθεί

• Έργα που δεν στελεχώνονται με τους πόρους που απαιτούνται από

το σχέδιο του έργου

• Προγραμματισμός πριν την πλήρη κατανόηση των απαιτήσεων

Page 6: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Προσπάθειες βελτίωσης

• Οι προσπάθειες βελτίωσης εστιάζονται στην εξής διαδικασία:

o Βελτίωση ποιότητας εισόδων (απαιτήσεις)

o Βελτίωση ποιότητας εξόδων (σχεδιασμός και ανάπτυξη, project

management)

o Βελτίωση της ανίχνευσης και εξάλειψης των προβλημάτων πριν την

παράδοση (testing)

• Οι πιο δημοφιλείς τεχνικές project management επικεντρώνονται

στη ανάπτυξη ενός πλάνου και την πλήρη εφαρμογή του

• Υπάρχει βελτίωση συντονισμού αλλά μείωση ικανότητας του

έργου να προσαρμόζεται σε νέες πληροφορίες

Page 7: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Η εμφάνιση των ευέλικτων μεθόδων

• Καθοριστικός παράγοντας της επιτυχίας ενός έργου φαινόταν

να είναι οι άνθρωποι, όχι η τεχνολογία και οι μέθοδοι

• Στις αρχές του 2001 οι δημιουργοί των διάφορων μεθοδολογιών

(XP, Scrum, Crystal, Adaptive, etc) μαζεύτηκαν στην Utah των

ΗΠΑ για να συζητήσουν το μέλλον της ανάπτυξης λογισμικού

• Αποτέλεσμα αυτών των συζητήσεων ήταν η διατύπωση του

«Agile Manifesto»

Page 8: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Agile Manifesto

«Ανακαλύπτουμε καλύτερους τρόπους ανάπτυξης λογισμικού με το να

αναπτύσσουμε λογισμικό αλλά και με το να βοηθούμε άλλους που κάνουν

το ίδιο. Μέσω αυτής της εργασίας έχουμε καταλήξει στο να εκτιμούμε

περισσότερο:

• τα άτομα και τις αλληλεπιδράσεις από τις διαδικασίες και τα εργαλεία

• το εν λειτουργία λογισμικό από την περιεκτική τεκμηρίωσή του

• την συνεργασία με τους πελάτες από τη διαπραγμάτευση συμβάσεων/

συμβολαίων

• την ανταπόκριση στην αλλαγή από την εκτέλεση ενός σχεδίου

Αυτό που εννοούμε είναι ότι ενώ υπάρχει αξία στα στοιχεία στο δεξί μέρος των

παραπάνω προτάσεων εκτιμούμε τα στοιχεία στο αριστερό περισσότερο. »

Page 9: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Αρχές του Agile Manifesto (Principles)

1. Βασική προτεραιότητα αποτελεί η ικανοποίηση του πελάτη με την συνεχή παράδοση

σημαντικού λογισμικού από τα πρώτα κιόλας στάδια της παραγωγής.

2. Η παράδοση τμημάτων λογισμικού γίνεται ανά δύο εβδομάδες έως και ανά δύο μήνες. Σημαντική

είναι η όσο το δυνατόν συχνότερη παράδοση.

3. Οι μεταβαλλόμενες απαιτήσεις είναι καλοδεχούμενες ακόμα και σε προχωρημένο στάδιο

ανάπτυξης. Οι διαδικασίες, που εφαρμόζονται έχουν την δυνατότητα να υποτάσσουν την αλλαγή

προς όφελος του πελάτη.

4. Οι πελάτες και οι υπεύθυνοι ανάπτυξης του συστήματος πρέπει να συνεργάζονται καθημερινά

μέχρι την παραγωγή του τελικού προϊόντος.

5. Σημαντική είναι η ανάθεση των τμημάτων του συστήματος σε ικανό και αποτελεσματικό

προσωπικό και η εξασφάλιση ευνοϊκού περιβάλλοντος εμπιστοσύνης και υποστήριξης.

6. Ο καλύτερος τρόπος μεταβίβασης και ανταλλαγής πληροφοριών με την ομάδα παραγωγής είναι

η διαπροσωπική συζήτηση.

Page 10: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Αρχές του Agile Manifesto (Principles)

7. Το καλύτερο και πιο αξιόπιστο μέτρο, που επιβεβαιώνει την πρόοδο, είναι το να λειτουργούν

σωστά τα τμήματα λογισμικού τα οποία κατασκευάζονται.

8. Οι ευέλικτες διαδικασίες προωθούν τον σταθερό ρυθμό ανάπτυξης του συστήματος, ο οποίος

πρέπει να ακολουθείται τόσο από τον πελάτη όσο και από τους υπεύθυνους παραγωγής.

9. Η ευελιξία ενισχύεται από την συνεχή προσπάθεια για τεχνική αρτιότητα και καλό σχεδιασμό.

10. Η απλοποίηση, με την έννοια της υλοποίησης στόχων με σύντομο αλλά αποτελεσματικό τρόπο,

είναι ουσιαστική.

11. Οι καλύτερες αρχιτεκτονικές, απαιτήσεις και σχέδια προκύπτουν από ομάδες, που οργανώνονται

μόνες τους.

12. Σε τακτά χρονικά διαστήματα, η ομάδα συζητά τρόπους, ώστε να γίνει περισσότερο

αποτελεσματική και επαναπροσδιορίζει τη συμπεριφορά της.

Page 11: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Extreme Programming

• Μεθοδολογία που προορίζεται να βελτιώσει την ποιότητα του

λογισμικού και την ανταπόκριση του στις μεταβαλλόμενες απαιτήσεις

των πελατών

• Δημιουργήθηκε από τον Kent Beck κατά τη διάρκεια της εργασίας του

στο πρόγραμμα μισθοδοσίας της Chrysler Comprehensive

Compensation System το 1996

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

παραδοσιακών πρακτικών ανάπτυξης λογισμικού λαμβάνονται στα

«ακραία» επίπεδα

Page 12: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

• Λειτουργεί ενώνοντας την ομάδα χρησιμοποιώντας απλές

πρακτικές, με ανατροφοδότηση, για να μπορέσει η ομάδα να δει

που βρίσκεται και να λειτουργήσει αποτελεσματικά

• Οι Extreme Programmers εργάζονται σε ζεύγη και συνολικά ως

ομάδα με απλό σχεδιασμό και πολύ καλά δοκιμασμένο κώδικα

• Η ομάδα παράγει το λογισμικό σε μια σειρά μικρών, πλήρως

ολοκληρωμένων εκδόσεων που έχουν περάσει όλα τα τεστ

• Όλοι ακολουθούν ένα ομοιόμορφο στυλ προγραμματισμού, ώστε

ο καθένας να μπορεί να κατανοήσει και να βελτιώσει τον κώδικα

Extreme Programming

Page 13: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

• Ο «Ακραίος Προγραμματισμός» βασίζεται στις αξίες της

επικοινωνίας (communication), απλότητας (simplicity),

ανατροφοδότησης (feedback) και κουράγιου (courage)

• Είναι η μόνη μέθοδος που είναι σαφής στις αξίες και πρακτικές

που χρησιμοποιεί

• Ο συνδυασμός αυτός δίνει συγκεκριμένες οδηγίες όχι μόνο στο τι

(πρακτικές) πρέπει να γίνει σε ένα έργο αλλά και για το πώς να

αντιδράσουν (αξίες) όταν οι πρακτικές δεν φαίνεται να

λειτουργούν ή δεν είναι επαρκείς

Αξίες XP (Values)

Page 14: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Ο ρυθμός ενός έργου XP

Page 15: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Πρακτικές και κύκλος ζωής

Page 16: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

• Προγραμματισμός σε ζεύγη (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

Page 17: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

Σύγκριση μεθοδολογιών

Page 18: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

• Υψηλός ρυθμός αλλαγών στον τομέα της ανάπτυξης λογισμικού

• Οι Ευέλικτες μεθοδολογίες ανάπτυξης λογισμικού έχουν

αναδειχθεί ως μια εναλλακτική λύση των καθιερωμένων

μεθόδων που έχουν σχεδιαστεί κατά κύριο λόγο για πολύ

μεγάλα έργα

• Οι άνθρωποι συνεχίζουν να διευρύνουν τα όρια των γνωστών

τεχνικών και πρακτικών, σε μια προσπάθεια να αναπτύξουν

λογισμικό όσο το δυνατόν αποδοτικότερα και

αποτελεσματικότερα.

Συμπεράσματα

Page 19: Trasas Steve - Extreme Programming and Agile Software Development Methodologies

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