ιαδικασίες Τεχνολογίας Λογισμικού Γιάννης Σμαραγδάκης

Σχετικά έγγραφα
Πριν ξεκινήσουμε: Γά Γιάννης Σμαραγδάκης

Εισαγωγή στην. Γιάννης Σμαραγδάκης

Προδιαγραφές Απαιτήσεων Γιάννης Σμαραγδάκης

οκιμασία και πλάνο δοκιμασίας

Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης

Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

10α Έλεγχος και επαλήθευση λογισμικού

Ποιότητα Λογισμικού και Πιστοποίηση

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

12 Έλεχος και επαλήθευση λογισμικού

Τεχνολογία λογισμικού στην πράξη

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΙΔΕΟΚΑΤΑΣΚΕΥΕΣ: ΣΚΕΦΤΟΜΑΙ ΚΑΙ ΓΡΑΦΩ

ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΠΩΛΗΣΗ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Όταν κάποιος ξεκινήσει τον πλειστηριασμό με μια αγορά σκοπός του είναι να περιγράψει όσο καλύτερα μπορεί το χέρι του στον συμπαίκτη του.

Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας

XP μέθοδος για τη Διαχείριση Έργων Λογισμικού

Θερμοδυναμική - Εργαστήριο

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

Ενότητα 1 (κεφάλαια 3 και 23.4) Ευέλικτη Ανάπτυξη Λογισμικού

Πώς γράφεις αυτές τις φράσεις;

ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ

Ερωτήσεις Απαντήσεις Σχετικά με την πρακτική άσκηση (Εφαρμογή στην Τάξη)

Λήστευαν το δημόσιο χρήμα - Το Α' Μέρος με τους αποκαλυπτικούς διαλόγους Άκη Σμπώκου

ΣΥΝΤΟΝΙΖΟΝΤΑΣ ΕΝΑ USABILITY TEST

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Ι. Πανάρετος.: Καλησπέρα κυρία Γουδέλη, καλησπέρα κύριε Ρουμπάνη.

Οι τίτλοι είναι πολύ σημαντικοί στο internet marketing

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον»

Κωδικοποίηση και Έλεγχος Ορθότητας

Ηλεκτρονικό Επιχειρείν

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Ελληνικό Ανοικτό Πανεπιστήµιο. Η διαχείριση διάταξης στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Γλώσσες Προγραμματισμού Εφαρμογών - ΜΕΠΒ20

Αλγόριθμοι. Μάρθα Σιδέρη. ιαδικαστικά: ύο πρόοδοι 31 Μαρτίου, 18 Μαΐου 7-9μμ 20% η μία, ύο Προγραμματιστικές 1 προσθετικό βαθμό η μία.

ΣΤΗΝ ΑΓΑΠΗΜΕΝΗ ΜΟΥ ΟΠΑΔΟ ΤΟΥ ΦΟΥΤΜΠΟΛ, ΙΛΖΕ ΤΕΜΠΕΤΣ Κ.Τ.

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

Προσόντα με υψηλή αξία για τους εργοδότες σε σχέση με την αναπηρία

5η Δραστηριότητα. Λύσε το γρίφο Η Θεωρία της Πληροφορίας. Περίληψη. Λπν τ φνντ π τν πρτσ. Ικανότητες. Ηλικία. Υλικά

Λειτουργικά Συστήματα. Οργάνωση Μαθήματος

Κεφάλαιο 5: Εισαγωγή στην Προσομοίωση

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον. τελική επανάληψη /4/2015 1

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΑΓΩΓΗΣ

Συμπεριφορές. του David Batty. Οδηγός Μελέτης. Έκδοση 5

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Πώς γίνεται το debug? Το debug γίνεται με δύο τρόπους, ως επί το πλείστον. Τουλάχιστον, εγώ δύο έμαθα, και αυτούς αναφέρω.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Μανώλης Ισχάκης - Πνευματικά δικαιώματα - για περισσότερη εκπαίδευση

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

Θέματα ποιότητας (1/5)

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας. Εποικοδομητική κριτική

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

1 / 13 «ΟΙ ΓΛΩΣΣΕΣ ΚΑΙ ΕΓΩ» Ερωτηµατολόγιο για τους µαθητές της 5 ης ηµοτικού. Μάρτιος 2007

Τεχνολογία Λογισμικού Τύπος Α

Πληροφορική 2. Τεχνολογία Λογισμικού

6. '' Καταλαβαίνεις οτι κάτι έχει αξία, όταν το έχεις στερηθεί και το αναζητάς. ''

Το βιβλίο της Μ. Autism Resource CD v Resource Code RC115

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

WEB MARKETING Ο Καλύτερος Τρόπος Για Να Δημιουργήσεις Την Δική Σου Ηλεκτρονική Επιχείρηση!

Οι διαδραστικοί πίνακες SMARTBoard στο 8ο Δημοτικό Σχολείο Χίου - Ευφυής Εκπαίδευση Πέμπτη, 12 Μάρτιος :27

Οργάνωση καθημερινών ημερίδων

KEΦΑΛΑΙΟ 1 AN HMΟΥΝ ΜΕΓΑΛΟΣ. Όταν είσαι μικρός ένα πράγμα είναι σίγουρο. Ότι θέλεις να μεγαλώσεις όσο πιο γρήγορα γίνεται.

Διδακτική της Πληροφορικής ΙΙ

ΣΤΟΧΟΙ. Μεθοδολογία διαχείρισης

ΚΕΦΑΛΑΙΟ 12: Επίλυση Προβλημάτων Δικτύων Εισαγωγή

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ (ΦΑΣΗ 1 η )

Πλειστηριασμός Για να πλειοδοτήσει κάποιος άξονας θα πρέπει να αναλάβει την υποχρέωση

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Διαδικαστικά

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Προγραμματισμός Εργασίας για την κατασκευή «Ηλιακό Αυτοκινητάκι»

Υπολογιστικής Σκέψης

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Πανεπιστήμιο Κύπρου. Πανηγύρι Τεχνολογίας

Ως ανάπτυξη προϊόντος ορίζεται όλο το σύνολο των δραστηριοτήτων από την έρευνα αγοράς, µέχρι την παράδοσή του στον πελάτη.

Το κείμενο που ακολουθεί αποτελεί επεξεργασία του πρωτότυπου κειμένου του Α. Κάστωρ για την επίλυση των παραδειγμάτων κρίσιμης αλυσίδας που

Μεθοδολογίες Παραγωγής Λογισµικού

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας. Αξιολόγηση Ικανοτήτων

Εργαστήριο Συστημάτων Αποφάσεων & Διοίκησης. Business Planning. Παίγνια Αποφάσεων Παίγνια Αποφάσεων 9 ο Εξάμηνο

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

ΕΥΡΩΠΑΪΚΗ ΚΟΙΝΩΝΙΚΗ ΕΡΕΥΝΑ

Τα 5 Μεγαλύτερα Μυστικά ενός Επιτυχημένου Επιχειρηματία

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

ΗΥ101: Εισαγωγή στην Πληροφορική

Πρακτικά όλα τα προβλήματα ασφαλείας οφείλονται σε λάθη στον κώδικα

ΠΑΡΟΥΣΙΑΣΗ ΣΤΟ ΣΥΝΕΔΡΙΟ TDF. Training Needs Analysis. Methodologies and Instruments

«Διαμορφωτική αξιολόγηση εκπαιδευτικού: Προκλήσεις και δυνατότητες»

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ. Τμήμα Μηχανικών Οικονομίας και Διοίκησης ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΓΕ0175 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 9

Transcript:

ιαδικασίες Τεχνολογίας Λογισμικού Γιάννης Σμαραγδάκης

Βασική έμφαση της τεχνολογίας λογισμικού Πώς να περιγράψουμε προϊόντα; τα συστατικά τους τη σχέση και αλληλεπίδρασή τους Ποιες διαδικασίες πρέπει να ακολουθηθούν για να αναπτύξουμε τέτοια προϊόντα; και να εξασφαλίσουμε την «ποιότητά» τους εν τέλει; (παραδείγματα δί διαδικασίας;) δ ) Πώς να αναπτύξουμε και να εξελίξουμε προϊόντα με: αποδεκτό κόστος βελτιωμένη ποιότητα Τεχνολογία λογισμικού = Προϊόντα + ιαδικασίες

Η διαδικασία σαν απλή συνάρτηση προϊόντα εισόδου Έξοδοι προϊόντα αποτελέσματα Πόροι: άνθρωποι χρήματα εργαλεία χρόνος διαδικασία κόστος χρόνος σφάλματα

ύο συμπληρωματικές θεωρήσεις Μακροσκοπική Τι κάνει/πώς συμπεριφέρεται Μικροσκοπική Πώς κάτι επηρεάζει τη συμπεριφορά Η μία σημαντική για την άλλη

Μακροσκοπική θεώρηση προϊόντα εισόδου Έξοδοι προϊόντα αποτελέσματα Πόροι: άνθρωποι χρήματα εργαλεία χρόνος διαδικασία κόστος χρόνος σφάλματα

Μικροσκοπική έμφαση: πιο λεπτομερής συνάρτηση προϊόντα εισόδου Έξοδοι προϊόντα αποτελέσματα Πόροι: άνθρωποι χρήματα εργαλεία χρόνος διαδικασία κόστος χρόνος σφάλματα

Η καθεμιά ωφελεί την άλλη προϊόντα εισόδου Έξοδοι προϊόντα αποτελέσματα Πόροι: άνθρωποι χρήματα εργαλεία χρόνος διαδικασία κόστος χρόνος σφάλματα

Μπορείτε να φανταστείτε (ακραία) ί παραδείγματα; δί «Οι προγραμματιστής πρέπει να πίνουν πορτοκαλάδα κάθε πρωί για τις βιταμίνες τους» μακροσκοπική ή μικροσκοπική διαδικασία; «Η Η διαδικασία δ είναι καλή όταν στην αρχή της εβδομάδας ο προγραμματιστής ξέρει σε ποιο σημείο θα είναι την Πέμπτη στις 4μμ.» μακροσκοπική ή μικροσκοπική θεώρηση; Ποια στοιχεία διαδικασίας έχει η δική σας εργασία; μακροσκοπική ή μικροσκοπική

Αναλογία μεάλλους τομείς Οικονομικά Φυσική» Θερμοδυναμική» Ηλεκτρισμός Ιατρική/βιολογία Τι μαθαίνουμε από τις αναλογίες; η μακροσκοπική θεώρηση έρχεται πρώτη όσο καταλαβαίνουμε κάτι καλύτερα, μικροσκοπικές θεωρήσεις αναπτύσονται» καλύτερος έλεγχος

Συγκεκριμένες Μακροσκοπικές ιαδικασίες Capability Maturity Model (CMM) HCMM SCMM κλπ. ISO 9000 Six Sigma 3.4 DPMO (defects per million opportunities) TicKIT CMMI (Integrated CMM)

Το CMM Ορίζει ρζ ~30 περιοχές-κλειδί διαδικασίας (Key Process Areas - KPAs) Η κάθε μια με πρακτικές-κλειδί Αυτές είναι οι διαστάσεις εισόδου-εξόδου που μετρούνται Παραδείγματα από KPA Ορισμός διαδικασίας Σχεδιασμός διαδικασίας Χειρισμός απαιτήσεων Project Integration Μέτρηση και ανάλυση

Μέτρηση των KPA Μέσω ερωτηματολογίων ~100 ερωτήσεις συμπληρωματικές συνεντεύξεις Η τελική μέτρηση γίνεται με την κρίση του εκτιμητή ιάστασεις εξόδου Προβλεψιμότητα Επαναληψιμότητα

Βαθμολογίες CMM Πέντε επίπεδα ωριμότητας διαδικασίας Το μοντέλο προσπαθεί να εκτιμήσει την προβλεψιμότητα μιας διαδικασίας Υποτίθεται ότι υψηλότερες βαθμολογίες είναι ενδείξεις ανταγωνιστικού πλεονεκτήματος της ομάδας/οργανισμού σε τι λογισμικό ταιριάζει αυτή η εκτίμηση; Επίπεδο 1: Αρχικό Επίπεδο 2: Επαναλήψιμο Επίπεδο 3: Ορισμένο Επίπεδο 4: ιαχειριζόμενο Επίπεδο 5: Βελτιστοποιούμενο

Μικροσκοπικές θεωρήσεις Το CMM δεν λέει τίποτα για το πώς να αναπτυξουμε καλύτερες διαδικασίες Οι μικροσκοπικές θεωρήσεις διαδικασιών προσπαθούν να αναπτύξουν μοντέλα για την ίδια τη διαδικασία και να τη μελετήσουν όπως μελετάμε το ίδιο το λογισμικό π.χ. η διαδικασία αναπαριστάται από διαγράμματα, η ψευδο-προγράμματα

Η διαδικασία «καταράκτη» Απαιτήσεις Αρχιτεκτονική Σχεδιασμός Κώδικας οκιμασία Συντήρηση

Μη ρεαλιστική Υποθέτει ότι η ανάπτυξη λογισμικού δεν πάει ποτέ πίσω εντελώς εσφαλμένη υπόθεση

ΟκύκλοςShewhart/Deming Κάθε επανάληψη βελτιώνει την ποιότητα

W. Edwards Deming Ο πατέρας του μοντέρνου σχεδιασμού ποιότητας στη βιομηχανία Bell Labs τη δεκαετία του 1940 μεγάλη αναγνώριση πρώτα στην Ιαπωνία, αργότερα παγκοσμίως Έκανε δημοφιλές το Plan-Do-Check-Act Deming, W. Edwards (1986). Out of the Crisis. MIT Center for Advanced Engineering Study. ISBN 0-911379-01-0. Αποδίδει το PDCA στον Walter Shewhart Κάτι σαν την «επιστημονική μέθοδο»; (Francis Bacon το 17ο αιώνα)

Καταράκτης με κύκλους Shewhart Απαιτήσεις Σχεδιασμός υψηλού επιπέδου Σχεδιασμός χαμηλού επιπέδου Κώδικας Δοκιμές

Καταράκτης με πιο πολύπλοκους κύκλους Shewharth Απαιτήσεις Σχεδιασμός υψηλού επιπέδου Σχεδιασμός χαμηλού επιπέδου Κώδικας Δοκιμές

Καταράκτης με πιο πολύπλοκους κύκλους Shewharth και ροή δδ δεδομένων Απαιτήσεις Σχεδιασμός υψηλού επιπέδου Σχεδιασμός χαμηλού επιπέδου Κώδικας Δοκιμές

εν απαντάει το πώς και πότε γίνεται κάτι Απαιτήσεις Τι κάνουμε όταν υπάρχει ανάγκη αλλαγής; Σχεδιασμός υψηλού επιπέδου Σχεδιασμός χαμηλού επιπέδου Τι προκαλεί επανασχεδιασμό; εδια Τι ποσοστό αλλάζει; Κώδικας Πότε τελειώνει ο κύκλος; Δοκιμές

Πρότυπα που πετάγονται εάο Εφικτότητα Απαιτήσεις Προδιαγραφή Αρχιτεκτονική Προκαταρκτικό σχέδιο λεπτομερές σχέδιο Πρότυπα Πρότυπα Πρότυπα Πρότυπα Πρότυπα Πρότυπα κώδικας, unit testst δοκιμασία ενσωμάτωσης δοκιμασία συστήματος Πρότυπα Πρότυπα Πρότυπα

Εφικτότητα Πρότυπα που εξελίσονται ξλί Απαιτήσεις Προδιαγραφή Αρχιτεκτονική Προκαταρκτικό σχέδιο λεπτομερές σχέδιο κώδικας, Προδιαγραφή unit tests δοκιμασία Αρχιτεκτονική ενσωμάτωσης δοκιμασία Προκαταρκτικό συστήματος σχέδιο λεπτομερές σχέδιο Προδιαγραφή κώδικας, unit tests Αρχιτεκτονική δοκιμασία ενσωμάτωσης Προκαταρκτικό δοκιμασία σχέδιο συστήματος λεπτομερές σχέδιο κώδικας, unit tests δοκιμασία ενσωμάτωσης δοκιμασία συστήματος

Extreme Programming (XP) «Ακραίος προγραμματισμός»: αντίδραση στην υπερβολική λεπτομέρεια διαδικασίας στην υπερβολική γραφειοκρατία στην έλλειψη έμφασης στην τεχνική δουλειά» ιδιαίτερα τη συγγραφή κώδικα Έμφαση στη γρήγορη δημιουργία κώδικα που τρέχει γρήγοροι κύκλοι φιλοσοφία «αν είναι κάτι να πάει στραβά, ας πάει στραβά νωρίς»

Κάποιες προσεγγίσεις XP οκιμασίες-πρώτα (test-first programming) προγραμματισμός σε ζεύγη (pair programming) Scrum

οκιμασίες πρώτα οκίμασε το προϊόν πριν το φτιάξεις (!) Τι σημαίνει; δημιούργησε λεπτομερές πλάνο δοκιμασίας φτιάξε ένα σκελετό που τρέχει δοκίμασέ το (π.χ. δώστο σε χρήστες) κάνε αλλαγές αμέσως Προφανώς μεγάλο τμήμα του προϊόντος απλά εξομοιώνεται Πλεονεκτήματα;

Πιο ρεαλιστικό (όχι τόσο XP): Test-Driven Development (TDD) Μια μέθοδος για να γράφεις κώδικα είτε για να διορθωθούν σφάλματα είτε για να προστεθεί λειτουργικότητα 1. Πρόσθεσε δοκιμασία 2. οκίμασε ότι πράγματι αποτυγχάνει 3. Γράψε κώδικα 4. ες ότι η δοκιμασία περνάει 5. Αναδιαμόρφωσε (refactor) αν χρειάζεται, χωρίς αλλαγή συμπεριφοράς (τυπική σειρά: 1234αποτυχία34επιτυχία ή "1234αποτυχία34επιτυχία, είδα κάτι άλλο που θέλει φτιάξιμο 234επιτυχία")

Προγραμματισμός σεζεύγη Ο κώδικας γράφεται σε ομάδες των δύο Ένα άτομο οδηγάει (κρατάει το πληκτρολόγιο) Το άλλο είναι πλοηγός (καθοδηγεί, κάνει κριτική, αντιδρά) αλλά δεν γράφει κώδικα! Πειράματα δείχνουν ότι μπορεί να είναι πιο παραγωγικό από το να έχεις δύο άτομα που δουλεύουν ανεξάρτητα σε διαφορετικό κώδικα ουλεύει και για άλλα προϊόντα λογισμικού (σχέδια, πλάνα δοκιμασίας, προδιαγραφές)

Scrum Η ανάπτυξη διαιρείται σε δεκαπενθήμερες «διαδρομές μικρών αποστάσεων» ( sprints ) Οι διαδρομές ξεκινάνε με συνάντηση για καθορισμό στόχων «ποιοι είναι οι κύριοι κίνδυνοι;» Ημερίσιες σύντομες συναντήσεις για ενημέρωση όλη η ομάδα παρούσα και δίνει αναφορά» (όρθιοι; )

Η καλύτερη διαδικασία εξαρτάται από τις περιστάσεις Τα μέλη της ομάδας, το μέγεθος, την περιοχή, το χρονισμό, κτλ. Οι προσεγγίσεις XP είναι μάλλον καλύτερες για μικρές ομάδες μικρότερα προϊόντα προϊόντα που δεν είναι ανάγκη να δουλεύουν τέλεια προϊόντα που ο χρόνος παράδοσης είναι εξαιρετικά σημαντικός

Ας ξαναδούμε κάποια πράγματα που είπαν προγραμματιστές Αν ήμουν υπεύθυνος ομάδας θα έδινα έμφαση στη γρήγορη ανάπτυξη πρότυπης υλοποίησης (rapid prototyping). Όσο πιο λίγο περιπετειώδες είναι ένα έργο τόσο λιγότερο χρειάζεσαι πρότυπα υλοποίησης, αλλά αν δεν υπάρχουν πολύ πλήρεις προδιαγραφές, θα έλεγα ότι μια πρότυπη υλοποίηση αξίζει τον κόπο και με το παραπάνω. Μπορεί κανείς να χρησιμοποιήσει το πρότυπο για να φτιάξει ένα αρχικό σύνολο δοκιμών, αν και είναι μάλλον καλύτερο να κρατηθεί το πρότυπο μακριά από τους προγραμματιστές όταν αρχίσουν την πραγματική υλοποίηση, η, αλλιώς απλά θα εξομοιώσουν το πρότυπο. Το "Scrum" είναι δημοφιλής μέθοδος τελευταία. Έχω πάρει μόνο μια ιδέα αλλά έχει σύντομους στόχους (milestones), καλές προτεραιότητες, ρ και πολύ άμεσο πάρε-δώσε μεταξύ των μελών της ομάδας. Όλα αυτά ακούγονται πολύ καλά για μικρές ομάδες.

Περί μάκρο-διαδικασιών Έχω παρατηρήσει ότι όταν κάποιος έχει να ακολουθήσει μια διαδικασία (π.χ. συμπλήρωσε μια φόρμα για το «μοντέλο απειλών ασφαλείας») το κάνει πολύ ευχαρίστως γιατί σημαίνει ότι σημειώνει συγκεκριμένη πρόοδο για εκείνη την ώρα της ημέρας. Είναι πολύ εύκολο να γεμίσεις τη μέρα ενός εργαζομένου με τέτοια πράγματα και θα έχουν υψηλή προτεραιότητα γιατί είναι πολύ πιο εύκολο για το manager να πει «δεν συμπλήρωσες τη φόρμα Χ» παρά να πει «δεν γράφεις καλό κώδικα» ή «η πρόοδος σου είναι αργή».

ιαδικασίες και Μέγεθος Έργου Μεγάλες ομάδες που δουλεύουν σε μεγάλες βάσεις κώδικα με περισσότερη πολυπλοκότητα πρέπει να έχουν πολλή «διαδικασία». Οι καλές μεγάλες ομάδες θα διαλέξουν το έλαχιστο διαδικασίας που θα δώσει το μέγιστο πλεονέκτημα. Όμως εν τέλει, αν κάποιος δεν πολυθέλει διαδικασίες θα είναι πιο ευτυχισμένος σε μικρότερες ομάδες/προϊόντα.

ιαδικασία καισχεδιασμός Ένας φίλος μου είναι σε μια άλλη ομάδα στην [εταιρία] και έχουν «κρίση ποιότητας». Στα τελευταία τους milestones είχαν βαθμό οπισθοδρόμησης (regression rate) 30% ανά checkin (δεν έχω ιδέα τι στατιστικά θεωρούνται φυσιολογικά γενικά αλλά 30% δεν μου φαίνεται και υπερβολικά μεγάλο ίσως 15% είναι πιο λογικό;) κι έτσι η «λύση» είναι ότι ένας από τους αρχιτέκτονες (που ο φίλος μου τον θεωρεί πανάχρηστο και ηλίθιο) ) προσπαθεί να επιβάλει κάποια μέτρα ποιότητας (π.χ. κυκλωματική πολυπλοκότητα, ποσοστό σχολίων ανά γραμμή κώδικα, κτλ.) που θα επιβάλονται αυτόματα στο checkin για να βελτιώσουν τον κώδικα. Ο φίλος μου μου έστειλε το κείμενο αυτού του τύπου και βασικά έλεγε «για να διορθώσουμε τα προβλήματά μας θα κάνουμε αυτό» με κάποια μέτρα ποιότητας που τα έβγαλε απ το κεφάλι του χωρίς καμμία λογική σύνδεση με το πρόβλημα και χωρίς κανένα πλάνο για να εκτιμήσει αν η νέα διαδικασία δουλεύει.

ιαδικασία και οκιμασίες Μια διαδικασία που πραγματικά μ αρέσει είναι η ανάπτυξη που καθοδηγείται από δοκιμασίες (test- driven development). Έγραψα στο blog μου γι αυτό πριν λίγο καιρό [...] Λέω επίσης για την «κάλυψη κώδικα» σαν ένα χρήσιμο μέτρο ποιότητας. Είναι το μόνο μέτρο που ξέρω που το χρησιμοποιούν σχεδόν όλοι. Η ιδέα είναι ότι αν έχεις λιγότερο από ~80% κάλυψη τεμαχίων (block coverage) από τα test σου τότε κάτι πάει στραβά.

ιαδικασία και οκιμασίες Η καλύτερη προσέγγιση στην ανάπτυξη λογισμικού είναι να βρεις ένα τρόπο να κάνεις «τα πάντα δυο φορές», κάτι σαν το διπλογραφικό σύστημα στη λογιστική. Σε κάποιες περιπτώσεις βασίζεσαι στο σύστημα τύπων. Σε άλλες γράφεις asserts. Σε άλλες μοναδιαίες δοκιμασίες. Θα έλεγα ότι αυτό είναι το πιο σημαντικό: υπάρχει κάποιος τρόπος που το μηχάνημα να ελέγξει το κάθε στοιχείο ενός προγράμματος έναντι κάποιου άλλου στοιχείου; Έλεγξε όσο γίνεται, όσο πιο νωρίς γίνεται, χρησιμοποιώντας compile-time asserts και πολύπλοκους τύπους που θα μεταγλωττιστούν σε σχεδόν τίποτα. (Βρήκα ένα σωρό bugs πριν κανά-δυο μήνες όταν άλλαξα ένα typedef που χρησιμοποιούταν με ελαφρά διαφορετικούς τρόπους σε ένα class template με 4 ασύμβατα instantiations που δεν μπορούσες να χρησιμοποιήσεις το ένα αντί για το άλλο χωρίς μετατροπή.) Μια καλή ιδέα είναι ένα ξεχωριστό σύστημα κατασκευής που τρέχει αυτόματες δοκιμασίες πολύ αργά αλλά κάνει πολλούς ελέγχους συνέπειας σε όλες τις δομές δεδομένων.

ιαδικασία και οκιμασίες [Από τον ίδιο που είπε 3dev + 3test + 1PM = 2dev] Ένα πρόβλημα που έχουμε με δοκιμαστές που δεν κάνουν τίποτε άλλο είναι ότι δεν υπάρχει τρόπος ελέγχου τους. Λένε απλά «αυτό δοκιμάστηκε» και όλοι (ή μάλλον ο manager) τους πιστεύουν. Πρότεινα δύο πιθανά επίπεδα ελέγχου. Το πρώτο είναι να επιτρέψουμε στους προγραμματιστές να βάλουν σε συγκεκριμένα σημεία του κώδικα κάποιο macro ή κάτι τέτοιο που να σημαίνει «αυτή η περίπτωση πρέπει να καλυφθεί». Οι δοκιμασίες θα πρέπει να καλύψουν όλες αυτές τις περιπτώσεις. Οι δοκιμαστές μας στηρίζονται σε μέτρα κάλυψης και εξ αιτίας διάφορων περιπτώσεων για χειρισμό λαθών ένα 70% θεωρείται αποδεκτό. Κανείς δεν ξέρει αν σημαντικές περιπτώσεις μένουν χωρίς έλεγχο. Το ακόμα υψηλότερο επίπεδο ελέγχου θα ήταν να επιτρέψουμε στους προγραμματιστές να προσθέσουν macros που θα εισάγουν bugs επίτηδες σε κάποιο ειδικό build. [άλλος προγραμματιστής, χωρίς να απαντάει στον προηγούμενο] Κοίτα, μιλάω από εμπειρία. Οι δοκιμαστές μας βρίσκουν ένα σωρό bugs.