Mental Wealth: Professional Life 1 (IT Project) · CN4005
Εβδομάδα 8: Σχεδιασμός ενός Agile έργου και κόστος
Σημειώσεις μελέτης βασισμένες στο υλικό της Εβδομάδας 8: το παράδειγμα «Agile project για την ανάπτυξη ενός e-shop», η εκδοχή του με Scrum, και η σύγκριση κόστους Waterfall και Agile. Τα αρχεία βρίσκονται στο Moodle.
Την Εβδομάδα 3 είδαμε τι είναι το Agile και το Scrum. Τώρα βλέπουμε πώς σχεδιάζεται στην πράξη ένα Agile έργο: πώς χωρίζεται σε σπριντ, πώς γράφονται οι απαιτήσεις ως user stories και πώς εκτιμάται το κόστος. Αυτό θα χρειαστεί και στην εργασία του μαθήματος.
Από το έργο στα σπριντ
Σε ένα Agile έργο, η δουλειά χωρίζεται σε σπριντ, και κάθε σπριντ παραδίδει κάτι που λειτουργεί. Για κάθε σπριντ ορίζεις:
- τα tasks (εργασίες), με διάρκεια, ανθρώπους και εξαρτήσεις·
- τα παραδοτέα: τι θα υπάρχει στο τέλος, π.χ. «λειτουργική σελίδα κρατήσεων»·
- το ορόσημο (milestone): το σημείο που σηματοδοτεί ότι το σπριντ ολοκληρώθηκε·
- τις εξαρτήσεις από άλλα σπριντ.
Τα σπριντ δεν είναι υποχρεωτικά όλα στη σειρά. Όσα δεν εξαρτώνται το ένα από το άλλο μπορούν να γίνουν παράλληλα, από διαφορετικά μέλη της ομάδας.
Παράδειγμα: εφαρμογή κρατήσεων για ένα γυμναστήριο
| Σπριντ | Περιεχόμενο | Παραδοτέο | Εξαρτάται από |
|---|---|---|---|
| 1 | υποδομή και πρόγραμμα μαθημάτων | server, βάση δεδομένων, σελίδα με το πρόγραμμα | – |
| 2 | κρατήσεις | το μέλος κλείνει και ακυρώνει θέση | 1 |
| 3 | λογαριασμοί μελών | εγγραφή, σύνδεση, προφίλ | 1 |
| 4 | πληρωμή συνδρομής | πληρωμή με κάρτα | 3 |
| 5 | τελικές δοκιμές και βελτιστοποίηση | δοκιμασμένη εφαρμογή, έτοιμη για παράδοση | 2, 4 |
Τα σπριντ 2 και 3 μπορούν να τρέξουν παράλληλα μόλις τελειώσει το 1. Το 4 περιμένει τους λογαριασμούς (3), γιατί η συνδρομή ανήκει σε ένα μέλος.
User stories και product backlog
Στο Scrum οι απαιτήσεις γράφονται ως user stories, μια απλή περιγραφή από την οπτική του χρήστη:
Ως [ρόλος], θέλω [κάτι], ώστε [όφελος].
Όλες μαζί σχηματίζουν το product backlog, με προτεραιότητα και story points, μια εκτίμηση της προσπάθειας. Συχνά χρησιμοποιούνται οι αριθμοί 1, 2, 3, 5, 8, 13…: 1–3 για εύκολα, 5–8 για μέτρια, πάνω από 8 για σύνθετα stories, που συνήθως πρέπει να σπάσουν σε μικρότερα.
| ID | User story | Προτεραιότητα | Points | Σπριντ |
|---|---|---|---|---|
| US-1 | Ως επισκέπτης, θέλω να βλέπω το πρόγραμμα των μαθημάτων, ώστε να διαλέξω ποιο με ενδιαφέρει. | Υψηλή | 3 | 1 |
| US-2 | Ως μέλος, θέλω να κλείνω θέση σε ένα μάθημα, ώστε να είμαι σίγουρος ότι θα χωρέσω. | Υψηλή | 5 | 2 |
| US-3 | Ως μέλος, θέλω να ακυρώνω μια κράτηση, ώστε να δοθεί η θέση σε άλλον. | Μεσαία | 2 | 2 |
| US-4 | Ως μέλος, θέλω να πληρώνω τη συνδρομή με κάρτα, ώστε να μη χρειάζεται να πάω στη ρεσεψιόν. | Υψηλή | 8 | 4 |
| US-5 | Ως γυμναστής, θέλω να βλέπω ποιοι έχουν κλείσει θέση, ώστε να ετοιμάσω το μάθημα. | Χαμηλή | 3 | 5 |
Η υψηλή προτεραιότητα αφορά ό,τι χρειάζεται για το MVP (Minimum Viable Product), την πρώτη εκδοχή που μπορεί να χρησιμοποιηθεί. Τη μεσαία έχουν όσα βελτιώνουν την εμπειρία, και τη χαμηλή όσα μπορούν να έρθουν μετά. Το backlog το διαχειρίζεσαι συνήθως σε ένα εργαλείο όπως το Jira ή το Trello.
Εκτίμηση κόστους
Για κάθε task πολλαπλασιάζεις ημέρες, ώρες, ωριαίο κόστος και άτομα, όπως στην Εβδομάδα 7. Με ωριαίο κόστος 40 € για τον Project Manager, 30 € για τον developer, 20 € για τον σχεδιαστή UI/UX και 15 € για τον tester, το σπριντ 1 βγαίνει:
| Task | Ημέρες | Πόροι | Κόστος |
|---|---|---|---|
| Ανάλυση απαιτήσεων | 1 | 1 Project Manager | 1 × 8 × 40 = 320 € |
| Σχεδιασμός σελίδας προγράμματος | 2 | 1 σχεδιαστής UI/UX | 2 × 8 × 20 = 320 € |
| Server, βάση και σελίδα | 5 | 2 developers | 5 × 8 × 30 × 2 = 2.400 € |
| Έλεγχος | 2 | 1 tester | 2 × 8 × 15 = 240 € |
| Σύνολο σπριντ 1 | 3.280 € |
Πρόσεξε το διπλομέτρημα: αν μια δραστηριότητα έχει υποδραστηριότητες, μέτρα είτε τη μητρική είτε τις υποδραστηριότητές της, όχι και τα δύο. Η μητρική είναι απλώς το σύνολο των παιδιών της. Αν τα προσθέσεις όλα, το ίδιο κόστος μετριέται δύο φορές.
Waterfall ή Agile: ποιο κοστίζει λιγότερο;
Για να συγκρίνεις, φτιάχνεις τον ίδιο πίνακα κόστους και για τα δύο πλάνα, με τα ίδια ωριαία κόστη. Συνήθως το Agile πλάνο βγαίνει φθηνότερο, γιατί:
- οι δοκιμές γίνονται σε κάθε σπριντ, οπότε τα λάθη βρίσκονται νωρίς, όταν διορθώνονται φθηνά·
- ο πελάτης βλέπει το προϊόν συχνά, οπότε δεν φτιάχνεται κάτι που δεν θέλει·
- τα σπριντ που δεν εξαρτώνται μεταξύ τους τρέχουν παράλληλα, άρα το έργο τελειώνει νωρίτερα.
Δεν είναι όμως κανόνας: αν οι απαιτήσεις είναι σταθερές και γνωστές από την αρχή, ο καταρράκτης μπορεί να είναι εξίσου ή πιο οικονομικός. Και στις δύο περιπτώσεις, η σύγκριση έχει αξία μόνο αν οι εκτιμήσεις είναι ρεαλιστικές.
Ερωτήσεις αυτοαξιολόγησης
1. Γράψε ως user story την απαίτηση «Το σύστημα στέλνει υπενθύμιση πριν από το μάθημα».
Για παράδειγμα: «Ως μέλος, θέλω να λαμβάνω υπενθύμιση μία ώρα πριν από το μάθημα, ώστε να μην το ξεχάσω». Το βασικό είναι ο ρόλος, η ανάγκη και το όφελος.
2. Στο παράδειγμα, γιατί τα σπριντ 2 και 3 μπορούν να γίνουν παράλληλα, αλλά όχι τα 3 και 4;
Τα 2 και 3 εξαρτώνται μόνο από το 1, όχι το ένα από το άλλο. Το 4 χρειάζεται τους λογαριασμούς μελών του 3, άρα πρέπει να περιμένει να τελειώσει.
3. Ένα story έχει 13 points. Τι κάνεις συνήθως;
Το σπας σε μικρότερα stories, γιατί είναι πολύ σύνθετο για να εκτιμηθεί με σιγουριά και για να χωρέσει άνετα σε ένα σπριντ.
4. Η «Ανάπτυξη» κοστίζει 4.800 € και έχει δύο υποδραστηριότητες των 2.400 € η καθεμία. Πόσο είναι το συνολικό κόστος;
4.800 €. Η μητρική είναι το άθροισμα των παιδιών της (2.400 + 2.400). Αν πρόσθετες και τα τρία, θα έβγαζες λάθος 9.600 €.
Πηγές: Υλικό της Εβδομάδας 8 του μαθήματος· Scrum Guide.