Ευέλικτη ανάπτυξη λογισμικού

Post on 30-Jul-2015

210 views 2 download

Transcript of Ευέλικτη ανάπτυξη λογισμικού

Agile Software Development

Τάσος Κούτλας / 17 Δεκ 2014

Περιεχόµενα

1.  Agile

2.  Scrum

3.  Δυσκολίες στην πράξη

4.  Αγορά εργασίας

Οι 3 πυλώνες

1.  Διαφάνεια (transparency)

2.  Αναθεώρηση (inspection)

3.  Τροποποίηση (adaptation)

Waterfall

1.  Κάθε βήµα ολοκληρώνεται πριν από το επόµενο αρχίσει 2.  Αρκετή ανάλυση και σχεδιασµός “µπροστά” (requirements)

3.  Επικοινωνία συνήθως µέσα από τα έγγραφα

Agile manifesto

We are uncovering better ways of developing

software by doing it and helping others do it.

Through this work we have come to value:

Agile manifesto

1.  Individuals and interactions over processes and tools

2.  Working software over comprehensive documentation

3.  Customer collaboration over contract negotiation

4.  Responding to change over following a plan

Agile manifesto

That is, while there is value in the items on

the right, we value the items on the left more.

Agile principles

1.  Η µεγαλύτερη προτεραιότητα είναι η ικανοποίηση του πελάτη µέσω της παράδοσης νωρίς και συνεχώς λογισµικού που προσθέτει αξία

2.  Παράδοση λογισµικού που λειτουργεί συχνά σε µικρά χρονικά διαστείµατα

3.  Προγραµµατιστές και business δουλεύουν µαζί καθηµερινά

Agile principles

1.  Δηµιουργία έργων γύρω από τους ανθρώπους µε όρεξη. Εµπιστοσύνη να τελειώσουν την δουλειά δίνοντας τους το περιβάλλον και την υποστήριξη που χρειάζονται 2.  Αποτελεσµατικότερος τρόπος για την διάχυση πληροφοριών και την κατάσταση του έργου είναι οι κατ' ιδίαν συναντήσεις

Agile principles

1.  Λογισµικό που λειτουργεί είναι η κυρίαρχη µορφή µέτρησης της προόδου

2.  Η ευέλικτη µεθοδολογία προωθεί την βιώσιµη ανάπτυξη. Συνεχής ρυθµός για όλη τη διάρκεια του έργου

3.  Συνεχής προσοχή σε τεχνική αρτιότητα και καλό σχεδιασµό επιβραβεύουν την ευελιξία

4.  Απλότητα, η τέχνη της µεγιστοποίησης της δουλειάς που δεν χρειάζεται να υλοποιηθεί

Agile principles

1.  Η καλύτερη αρχιτεκτονική, απαιτήσεις και σχεδιασµός ανακύπτουν από αυτο-οργανωνόµενες οµάδες

2.  Σε συχνά διαστήµατα η οµάδα αναλογίζεται πως µπορεί να γίνει πιο αποτελεσµατική και αναπροσαρµόζει την συµπεριφορά της ανάλογα

Project contraints

χρόνος κόστος

ποιότητα

λειτουργίες χρόνος κόστος

λειτουργίες

ποιότητα

Παραδοσιακά Ευέλικτα

Scrum

1.  A wrapper for existing engineering practises

2.  A way to maximise productivity

3.  A way to improve communications and maximise co-operation

4. Δηµιουργήθηκε το 1998, 2001 το πρώτο βιβλίο

5. Βασισµένο στο βιβλίο: The new new product development game, Takeuchi & Nonaka, 1986.

Η ελαφρύτερη µεθοδολογία

1.  XP

-  5 values / 14 principles / 12 primary practises / 11 corollary practises

2.  Lean

-  7 principles / 22 thinking tools

3.  Scrum

-  5 values / 3 roles / 5 activities / 3 essential artifacts

4.  Agile Unified Process

-  6 principles / 7 disciplines / 4 lifecycle phases / 14 roles / 8 minimum deliverables / 4 guidance pieces

5.  DSDM

-  8 principles / 5 lifecycle phases / 12 roles / 17 work products / 5 key techniques

Scrum

Η τέχνη του εφικτού, µείωση του θορύβου

1.  Δεν παρέχεται συγκεκριµένο how-to

2.  Αυτό θα έδινε έµφαση στην πρόγνωση συνθηκών και όχι στην εµπειρική διαµόρφωση

3.  Δίνει το πλαίσιο για να αποφασίζεται τι να κάνουµε

4.  Αναθεώρηση και τροποποίηση

5.  Προβλήµατα και αδυναµίες γίνονται εµφανή

Συστατικά του Scrum

1.  Activities

- Sprint planning meeting

- Daily scrum meeting (daily standup) / Sprint review (sprint demo) / Sprint retrospective

- Product backlog refinement 2.  Essential artefacts

- Product backlog / sprint backlog / product increment 3.  Scrum roles

- Product owner / scrum master / developer team

Product backlog

1.  Δηµιουργείται από τον PO αφού συζητήσει µε τους υπόλοιπους stakeholders

2.  Ανήκει στον PO και ταξινοµείται από αυτόν

3.  Μία σειρά από ιστορίες για να υλοποιήσει η οµάδα

4.  Εξελίσσεται συνεχώς µέσω της διαδικασίας Product backlog refinement

Sprint planning

1.  Δοµηµένη συνάντηση (workshop) για να τον προγραµµατισµό ενός Sprint

2.  Στοχεύει να αναγνωρίσει ποια είναι οι σηµαντικές ιστορίες του product backlog

3.  Ο PO εξηγεί τις ιστορίες

4.  Αποφασίζεται ο στόχος του Sprint

5.  H οµάδα υλοποίησης υπολογίζει και δεσµεύεται στο τι µπορεί να επιτευχθεί στο Sprint

6.  Το αποτέλεσµα είναι το Sprint backlog

Sprint backlog

1.  Εξελίσσεται κατά τη διάρκεια του Sprint (the level of understanding)

2.  Ανήκει στην οµάδα υλοποίησης, µόνο αυτή µπορεί να το αλλάξει 3.  Αποτελεί ενδελεχές σχέδιο και εργαλείο παρακολούθησης της προόδου

4.  Είναι δηµόσια διαθέσιµο σε όλους

Sprint

1.  Το ένα πίσω από το άλλο – χωρίς κενά τα Sprints

- Τα πάντα γίνονται σε ένα sprint 2.  Πάντα η ίδια διάρκεια

- Θέτει το ρυθµό

3.  Πάντα καταλήγει σε ένα potential shippable product

- Έτοιµο να βγει στον αέρα

4.  Συνήθως είναι 2 µε 4 εβδοµάδες

Stories

1.  Βασικό µέγεθος (ποιος, τι και γιατί)

2.  Περιγράφει την αξία (τι κερδίζει) από την οπτική γωνία του πελάτη

3.  Το σηµείο που αρχίσει η συνεργασία

4.  Κριτήρια αποδοχής

5.  Κάρτες

- Είθισται να γράφονται σε χαρτί - Βοηθούν να λακωνικές και περιεκτικές

- Βοηθούν στον υπολογισµό, σχεδιασµό και παρακολούθηση του sprint

6.  Δηµιουργούνται από τον PO

Stories vs use cases

1.  Μπορεί να αλληλοκαλύπτονται αλλά είναι διαφορετικές έννοιες

2.  Use case είναι µεγαλύτερες σε εµβέλεια (πολλαπλές ιστορίες)

3.  Οι ιστορίες δεν έχουν τόσες λεπτοµέρειες

4.  Οι ιστορίες χρησιµοποιούνται για κάθε τι πρέπει να γίνει

- Functional requirements (όπως οι use cases)

- Non-functional requirements

- Non-software features (documentation, development environment set-up, κτλ)

5.  Τα use cases µπορούν να περιγράψουν πως οι ιστορίες σχετίζονται µεταξύ τους.

Multi-level planning

Release plan

Sprint Plan Daily

Plan

3 to 6 months

2 to 4 weeks

Daily

Planning pyramid

1.  Sprint

- Μικρές ιστορίες

- Πρέπει να χωράει στο sprint (1-5 µέρες προσπάθειας)

- Λεπτοµερής υπολογισµός (estimate) προσπάθειας (effort)

2.  Release

- Μεγαλύτερες ιστορίες

3.  Project

- Ακόµη µεγαλύτερες ιστορίες (epics - έπη)

Product backlog

1.  Η µοναδική λίστα µε καθορισµένες προταιρεότητες µε αντικείµενα για την οµάδα υλοποίησης

2.  Οι ιστορίες µπορεί να έχουν διαφορετικό µέγεθος και λεπτοµέρειες

3.  Οποιοσδήποτε µπορεί να προσθέσει αντικείµενα

4.  Ο PO είναι υπεύθυνος να προσθέτει και να ταξινοµεί ιστορίες

5.  Περιέχει τα πάντα γύρω από το έργο

6.  Εξελίσσεται συνεχώς

Product backlog refinement

1.  Συνεχής διαδικασία του κύκλου υλοποίησης

- Κρατάει το product backlog ταξινοµηµένο

- Αφαιρεί ή υποβαθµίζει ιστορίες που δεν είναι πλέον σηµαντικές

- Προσθέτει ή αναβαθµίζει ιστορίες που είναι πλέον σηµαντικές

- Χωρίζει µεγάλες ιστορίες σε µικρότερες

- Ενώνει µικρές ιστορίες σε µεγαλύτερες - Υπολογίζει πόσο προσπάθεια χρειάζεται κάθε ιστορία

Ρόλοι – Development Team

1.  Αυτο-οργανώνεται, διαλειτουργική, χωρίς προκαθορισµένους ρόλους

2.  7 ± 2 άτοµα (ότι χρειάζεται για να γίνει)

3.  Επικοινωνία δια ζώσης (face to face)

4.  Υπεύθυνη για να οργανώνει και να δεσµεύεται για την υλοποίηση εργασιών

5.  Αρµοδιότητα να κάνει ότι χρειάζεται για να πραγµατοποιηθούν οι δεσµεύσεις

6.  Κάνει το demo στο PO και stakeholders

7.  Κάνει ότι είναι δυνατόν, στο πλαίσιο του έργου, ώστε να πραγµατοποιηθεί ο Sprint Goal

Ρόλοι - ScrumMaster

1.  Υπεύθυνος για την επιτυχία του Scrum

2.  Γνωστοποιεί τους κανόνες, τις πρακτικές, να προστατεύσει την οµάδα και να αφαιρέσει εµπόδια

3.  Διασφαλίζει ότι η οµάδα είναι λειτουργεί πλήρως και παραγωγικά

4.  Διασφαλίζει την στενή συνεργασία όλων των ρόλων

5.  Διασφαλίζει πως οι σωστοί κανόνες του Scrum ακολουθούνται

- Daily scrum meetings / sprint reviews / planning meetings

Ρόλοι – Product Owner

1.  Ορίζει τα λειτουργικά χαρακτηριστικά του έργου

2.  Θέτει το χρονοδιάγραµµα της υλοποίησης µέσω της ταξινόµησης του product backlog

3.  Αναδιαµορφώνει τις προτεραιότητες και την λειτουργικότητα σε κάθε Sprint όπως χρειάζεται 4.  Μπορεί να είναι υπεύθυνος για παραπάνω από µία οµάδες

5.  Εξαλείφει τη σύγχυση µε πολλαπλά “αφεντικά”, διαφορετικές γνώµες, κτλ

6.  Δουλεύει µε τους υπόλοιπους για να υπολογίσει πόσο χρειάζονται τα πράγµατα στο product backlog

7.  Αποδέχεται ή απορρίπτει αποτελέσµατα

Estimating (εκτιµήσεις)

1.  Ideal days

- Δεν είναι χρόνος

- Αφαιρεί τις παρεµβολές της πραγµατικότητας

- 50% µε 80% παραγωγικότητα

- Εύκολο να εξηγηθούν

- Η ιδανική µου µέρα δεν είναι απαραίτητο η ιδανική σου µέρα

2.  Story points

- Βρες της πιο απλή ιστορία και δώσε µέγεθος 2

- Εκτίµησε τις υπόλοιπες ιστορίες µε βάση την ιστορία µε µέγεθος 2 πόντων

- Δεν υπάρχει η έννοια του χρόνου

- Οι οµάδες παραδίδουν ένα συγκεκριµένο αριθµό πόντων σε κάθε Sprint - Πιο εύκολο και γρηγορότερο από τις µέρες

- Μικρότερο ρίσκο να περιοριστούµε από λανθασµένες αρχικές εκτιµήσεις

Velocity (ταχύτητα)

1.  Πόσους πόντους ή ιδανικές µέρες δουλειάς µπορεί να κάνει η οµάδα σε ένα Sprint

2.  Βρείτε τους υψηλότερους, µέσους και χαµηλότερους πόντους σε µία χρονική περίοδο

3.  Χρησιµοποιούνται για να προγραµµατιστούν τα Sprint και να εποπτευτεί η πρόοδος

4.  Δεν χρησιµοποιούνται για να συγκριθούν οµάδες µεταξύ τους (κάθε οµάδα έχει τον δικό της ρυθµό)

1.  Εικόνες από πίνακες

Daily Scrum

1.  Ο παλµός της οµάδας 2.  Τι έκανα από το προηγούµενο

standup µέχρι τώρα 3.  Τι σκοπεύω να κάνω µέχρι το επόµενο

4.  Τι µε εµποδίζει να προχωρήσω 5.  O PO δεν συµµετέχει, ο SM αφαιρεί τα εµπόδια και η DT αυτοεργανώνεται και κάνει τη δουλειά

Burndown chart

Sprint review

1.  1 ώρα ανά εβδοµάδα sprint. 2.  Δυνατότητα της οµάδας να δείξει την δουλειά της

3.  Συµµετέχουν PO, SM, DT και stakeholders

4.  Καλή ευκαιρία να ενηµερωθούν όλοι για την πρόοδο

5.  Εδώ είναι που βλέπουν shippable product.

Sprint retrospective

1.  2 ώρες ανά εβδοµάδα sprint. 2.  Η οµάδα έχει την δυνατότητα να συζητήσει τι πήγε καλά, τι δεν πήγε και να αναθεωρήσει πρακτικές

3.  Πολλές προβληµατικές εφαρµογές του scrum δεν δίνουν όση σηµασία πρέπει

4.  Ο SM διαµορφώνει την αντζέντα και κρατάει τον χρόνο

Δυσκολίες στην πράξη

1.  Scrum but … 2.  Scrum for development / Waterfall

for management 3.  Inconsistent scrum

implementations

Αγορά εργασίας

1.  Τι θέλει η αγορά της Ευρώπης 2.  Απόκτηση ικανοτήτων scrum 3.  Δυσκολίες στην ελληνική πραγµατικότητα

4.  Ευκαιρίες

Agile Software Development

Τάσος Κούτλας / 17 Δεκ 2014