Μη συμβατικές μεθοδολογίες

Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr

Ευέλικτη ανάπτυξη: στοιχεία

Η ευέλικτη ανάπτυξη λογισμικού (agile software development) προσδίδει αξία:

Ευέλικτη ανάπτυξη: αρχές

Οι αρχές της ευέλικτης ανάπτυξης που έχουν διατυπωθεί στον αντίστοιχο δικτυακό τόπο (http://www.AgileAlliance.org/) είναι οι παρακάτω:
  1. Η μεγαλύτερή μας προτεραιότητα είναι η ικανοποίηση του πελάτη μέσω της άμεσης και συνεχούς παράδοσης χρήσιμου λογισμικού.
  2. Οι αλλαγές στις προδιαγραφές είναι ευπρόσδεκτες, ακόμα και αργά στο στάδιο της ανάπτυξης. Οι ευέλικτες διεργασίες δαμάζουν τις αλλαγές προς όφελος της ανταγωνιστικότητας του πελάτη.
  3. Παραδίδουμε λογισμικό τακτικά, σε διαστήματα μερικών εβδομάδων ή μηνών, προτιμώντας τα μικρά διαστήματα.
  4. Αυτοί που ασχολούνται με το επιχειρηματικό τμήμα και αυτοί που ασχολούνται με την ανάπτυξη πρέπει να συνεργάζονται καθημερινά σε όλη τη διάρκεια του έργου.
  5. Βάση για τα έργα είναι οι άνθρωποι με κίνητρα και το αντίστοιχο ενδιαφέρον. Δώστε τους το περιβάλλον και την υποστήριξη που χρειάζονται και εμπιστευτείτε τους να περατώσουν το έργο.
  6. Ο πιο αποδοτικός και αποτελεσματικός τρόπος μεταφοράς πληροφορίας προς την και μέσα στην ομάδα ανάπτυξης είναι η συζήτηση πρόσωπο-με-πρόσωπο.
  7. Η κύριος τρόπος μέτρησης της προόδου είναι το λογισμικό που λειτουργεί.
  8. Οι εύκαμπτες διεργασίες συμβάλλουν σε μια αειφόρο διεργασία ανάπτυξης. Οι χρηματοδότες, το προσωπικό ανάπτυξης και οι χρήστες θα πρέπει να μπορούν να συνεχίζουν για πάντα με τον ίδιο σταθερό ρυθμό.
  9. Συνεχής προσοχή στην τεχνολογική αρτιότητα και το σωστό σχεδιασμό βελτιώνει την ευελιξία.
  10. Η απλότητα--η τέχνη της μεγιστοποίησης του ποσού της εργασίας που δεν πραγματοποιείται-- είναι απαραίτητη.
  11. Οι καλύτερες αρχιτεκτονικές, απαιτήσεις, και τα καλύτερα σχέδια πηγάζουν από αυτο-οργανωνόμενες ομάδες.
  12. Σε τακτά διαστήματα η ομάδα αναλογίζεται πως μπορεί να γίνει πιο αποδοτική. Έτσι συντονίζει και προσαρμόζει ανάλογα τη συμπεριφορά της.

Ακραίος προγραμματισμός

Ο ασυμβίβαστος προγραμματισμός (ΑΠ) (eXtreme programing (XP)) εδραιώθηκε ως μεθοδολογία ανάπτυξης για μικρές ομάδες ανάπτυξης έργων στα οποία αλλάζουν συχνά οι προδιαγραφές. Βασικά του χαρακτηριστικά είναι: Η μεθοδολογία δεν είναι κατάλληλη για:

Αξίες του ΑΠ

Αρχές του ΑΠ

Ενέργειες του ΑΠ

Πρακτικές του ΑΠ

Πλάνο της κάθε έκδοσης
Τα στοιχεία που μπορούν να μεταβληθούν είναι: ο χρόνος, το κόστος, η ποιότητα και το εύρος του έργου. Τα επιχειρηματικά στελέχη αποφασίζουν σχετικά με Τα στελέχη ανάπτυξης έχουν τον τελικό λόγο για:
Μικρές εκδόσεις
Κάθε έκδοση του λογισμικού πρέπει να είναι η μικρότερη δυνατή έτσι ώστε να είναι μικρός ο αντίστοιχος χρονικός κύκλος.
Μεταφορά (metaphor)
Χρήση μιας μεταφοράς που εκφράζει την αρχιτεκτονική του συστήματος.
Απλό σχέδιο
Το σχέδιο πρέπει να είναι το απλούστερο δυνατό με την προϋπόθεση να:
Έλεγχος
Για κάθε λειτουργία του προγράμματος πρέπει να υπάρχει ο αντίστοιχος έλεγχος. Οι έλεγχοι γράφονται σε συνεργασία με τον πελάτη.
Αναπαραγοντοθέτηση (refactoring)
Σχέδια και αντίστοιχες υλοποιήσεις που μπορούν να βελτιωθούν, χωρίς να αλλάξουν οι λειτουργικές προδιαγραφές, ξαναγράφονται.
Προγραμματισμός σε ζευγάρια
Ένα ζευγάρι μοιράζεται τον υπολογιστή. Όταν το ένα μέλος πληκτρολογεί, το άλλο ελέγχει: Τα ζευγάρια αλλάζουν δυναμικά.
Συλλογική ιδιοκτησία (collective ownership)
Ο κώδικας ανήκει σε όλα τα μέλη της ομάδας. Κάθε ένας έχει δικαίωμα να βελτιώσει οποιοδήποτε τμήμα του και όλοι είναι υπεύθυνοι για την ποιότητα του συνόλου του κώδικα.
Συνεχής ολοκλήρωση
Τα τμήματα του κώδικα ενώνονται τακτικά μεταξύ τους.
Εβδομάδα 40 ωρών
Οι υπερωρίες είναι δείγμα προβλημάτων στο έργο.
Πελάτης στο χώρο της εργασίας
Εκπρόσωπος του πελάτη βρίσκεται στο χώρο της ανάπτυξης. Βοηθά στο σχεδιασμό, τους ελέγχους και τις προδιαγραφές.
Πρότυπα κώδικα
Με βάση τα πρότυπα ο κώδικας μπορεί να είναι ιδιοκτησία όλης της ομάδας.

Σημείωση

Γιατί η λέξη refactoring αποδίδεται ως αναπαραγοντοθέτηση και όχι ... ; Βλέπε την ανάλυση του κ. Κώστα Βαλεοντή, προέδρου της ΕΛΕΤΟ (http://www.eleto.gr/) και μια σχετική συζήτηση που προηγήθηκε και ακολούθησε.

Ανάπτυξη λογισμικού στη Microsoft

Η ανάπτυξη λογισμικού στη Microsoft γίνεται με βάση τις παρακάτω αρχές (Cusumano & Selby 1995):

Βιβλιογραφία

Ασκήσεις

  1. Θα μπορούσατε να υιοθετήσετε ΑΠ για την υλοποίηση της άσκηση του μαθήματος; Ποιες πρακτικές του ΑΠ δε θα μπορούσαν να εφαρμοστούν;
  2. Εντοπίστε και σχολιάστε διαφορές ανάμεσα στον τρόπο που υλοποιείται λογισμικό στη Microsoft και το μοντέλο διεργασίας ανάπτυξης του καταρράκτη.