Download - Trasas Steve - Effects of TDD
![Page 1: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/1.jpg)
ΤΡΑΣΑΣ ΣΤΗΒ[email protected]
Effects of Test-Driven Development: A Comparative Analysis of Empirical
Studies
Simo Mäkinen and Jürgen MünchDepartment of Computer Science,
University of Helsinki, Finland
![Page 2: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/2.jpg)
Test Driven Development
1. Fail
2. Pass3.
Refactor
Write a test that fails
Write the minimum amount of code to make it pass
Improve the existing code
![Page 3: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/3.jpg)
• Τι γνωρίζουμε για τα αποτελέσματα της χρήσης του TDD;
• Με ποιο τρόπο αλλάζει η διαδικασία ανάπτυξης λογισμικού;
• Ο στόχος αυτής της εργασίας είναι να διερευνήσει τις
επιδράσεις του TDD
• Ολοκληρωμένη ανασκόπηση της βιβλιογραφίας και ανάλυση
εμπειρικών μελετών
• Σχηματίστηκαν 9 χαρακτηριστικά ποιότητας χρησιμοποιώντας
τα δεδομένα των πειραμάτων και μελετήθηκαν με λεπτομέρεια
Εισαγωγή
![Page 4: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/4.jpg)
• Λέξεις κλειδιά αναζήτησης: test driven development, test driven,
test first programming, test first
• Ιστοσελίδες αναζήτησης : Institute of Electrical Engineers (IEEE),
Association of Computer Machinery (ACM), Springer, Elsevier
• Μετά την εφαρμογή κριτηρίων ποιότητας και συνάφειας
επιλέχθηκαν 19 δημοσιεύσεις για ανάλυση
• Τα πορίσματα των μελετών χρησιμοποιήθηκαν για την
δημιουργία των χαρακτηριστικών ποιότητας
Μεθοδολογία
![Page 5: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/5.jpg)
Πίνακας χαρακτηριστικών ποιότητας
![Page 6: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/6.jpg)
• Στο TDD τα tests γράφονται πρώτα άρα λιγότερα τμήματα του
κώδικα μένουν μη τεσταρισμένα, συνεπώς υπάρχουν λιγότερα
λάθη
• IBM: μόνο τα μισά λάθη συγκριτικά, 4 λάθη/1000 γραμμές κωδ.,
ίδιος αριθμός σοβαρών λαθών
• Microsoft: μείωση λαθών 60-90% συγκριτικά με παρόμοια έργα
• Σε ακαδημαϊκά πειράματα το TDD ήταν οριακά καλύτερο ή η
επιθεώρηση του κώδικα ήταν αποτελεσματικότερη στην
ανίχνευση λαθών
1. Πυκνότητα και αριθμός λαθών (defect density)
![Page 7: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/7.jpg)
Cohesion
Coupling
Productivity
Maintainabilty
Effort
Size
Complexity
External Quality
Defects
-2 -1 0 1 2 3 4 5 6 7 8
PositiveNegativeNeutral or Inconclu-sive
Επιδράσεις του TDD
![Page 8: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/8.jpg)
• Περιγράφει μεμονωμένα συστατικά κώδικα και την εσωτερική
τους δομή
• Κυκλωματική πολυπλοκότητα (McCabe)
• M = E − N + 2 = 9 – 8 + 2 = 3, όπου Ε=
αριθμός ακμών και Ν= αριθμός κόμβων
• Παρατηρείται μείωση και στα πειράματα στη
βιομηχανία (πιο συνεκτικές κλάσεις, λιγότερο
πολύπλοκες μέθοδοι) και στην εκπαίδευση (λιγότερο
πολύπλοκες κλάσεις, συνήθως μικρές διαφορές)
2. Πολυπλοκότητα (Complexity)
![Page 9: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/9.jpg)
Cohesion
Coupling
Productivity
Maintainabilty
Effort
Size
Complexity
External Quality
Defects
-2 -1 0 1 2 3 4 5 6 7 8
PositiveNegativeNeutral or Inconclu-sive
Επιδράσεις του TDD
![Page 10: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/10.jpg)
• Αναφέρονται στο βαθμό εξάρτησης μεταξύ 2 συστατικών
(σύζευξη) και στο βαθμό εσωτερικής λειτουργικής συνάφειας
μεταξύ των τμημάτων ενός συστατικού (συνοχή-συνεκτικότητα)
• Σχετικά μικρή αναφορά στα πειράματα
• Σε 2 πειράματα (βιομηχανία, εκπαίδευση) η σύζευξη φαινόταν
ότι ήταν μεγαλύτερη με TDD
• Η συνοχή σε πείραμα φάνηκε να είναι λίγο χαμηλότερη
• Γενικά ασαφή συμπεράσματα
3. Σύζευξη και Συνοχή (Coupling and Cohesion)
![Page 11: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/11.jpg)
Cohesion
Coupling
Productivity
Maintainabilty
Effort
Size
Complexity
External Quality
Defects
-2 -1 0 1 2 3 4 5 6 7 8
PositiveNegativeNeutral or Inconclu-sive
Επιδράσεις του TDD
![Page 12: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/12.jpg)
• Μία μετρική μεγέθους είναι οι γραμμές κώδικα
• TDD: σημαντική ποσότητα αυτοματοποιημένων unit tests
• Test source code lines / non-test source code lines
• Microsoft: 0.89 = test code lines/production code lines,
0.39 για μεγαλύτερα έργα
• IBM: 0.48
• Σε κάποιες περιπτώσεις οι κλάσεις και οι μέθοδοι ήταν μικρότερες
• Οι επαγγελματίες προγραμματιστές γενικά μπορεί να γράφουν
κώδικα (non-test) μικρότερου μεγέθους με TDD
4. Μέγεθος (Size)
![Page 13: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/13.jpg)
Cohesion
Coupling
Productivity
Maintainabilty
Effort
Size
Complexity
External Quality
Defects
-2 0 2 4 6 8 10 12
PositiveNegativeNeutral or Inconclu-sive
Επιδράσεις του TDD
![Page 14: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/14.jpg)
• Μετρική που δείχνει την προσπάθεια που απαιτείται σε μια
συγκεκριμένη εργασία προγραμματισμού (σχετίζεται με τη
διάρκεια)
• Microsoft, IBM: οι project manager εκτίμησαν 15-30%
μεγαλύτερη διάρκεια ανάπτυξης
• Σε άλλη μελέτη: +3500 ώρες, έργο 6 μηνών
• Σε ακαδημαϊκό πείραμα υπήρξε λιγότερη προσπάθεια στην αρχή
• Δεν πρέπει να μετράμε την προσπάθεια μόνο στα αρχικά στάδια
ανάπτυξης αλλά και στην αναδόμηση και την συντήρηση
5. Προσπάθεια (Effort)
![Page 15: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/15.jpg)
Cohesion
Coupling
Productivity
Maintainabilty
Effort
Size
Complexity
External Quality
Defects
-6 -4 -2 0 2 4 6 8 10 12
PositiveNegativeNeutral or Inconclu-sive
Επιδράσεις του TDD
![Page 16: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/16.jpg)
• Σχετίζεται με:o Την ευκολία εύρεσης του κώδικα που θέλει αλλαγή
o Την προσπάθεια για να γίνει η αλλαγή
o Η αυτοπεποίθηση ότι όλα λειτουργούν καλά μετά την αλλαγή
• Σημαντικό εύρημα σε μελέτη ήταν ότι ενώ στην ανάπτυξη με
TDD η προσπάθεια ήταν μεγαλύτερη, μετά την έκδοση του
λογισμικού η συντήρηση ήταν ξεκάθαρα ευκολότερη και
λιγότερο χρονοβόρα
• Λίγες εμπειρικές μελέτες αναφέρονται στην συντηρησιμότητα
6. Συντηρησιμότητα (Maintainability)
![Page 17: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/17.jpg)
Cohesion
Coupling
Productivity
Maintainabilty
Effort
Size
Complexity
External Quality
Defects
-6 -4 -2 0 2 4 6 8 10 12
PositiveNegativeNeutral or Inconclu-sive
Επιδράσεις του TDD
![Page 18: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/18.jpg)
• Σε αυτή την εργασία η εξωτερική ποιότητα αναφέρεται σε
ποιοτικές και υποκειμενικές πληροφορίες, οι οποίες δεν
μετατρέπονται εύκολα σε ποσοτικές μετρικές
• Όταν έδειξαν σε πελάτες λογισμικό που αναπτύχθηκε με TDD,
δεν αντιλήφθηκαν κάποια αλλαγή στην ποιότητα
• Οι επαγγελματίες προγραμματιστές πίστευαν ότι παράγουν
ποιοτικότερο κώδικα με TDD
• Οι φοιτητές είχαν την αίσθηση ότι βελτιώθηκε η δυνατότητα
ελέγχου του προγράμματος τους (testability) αλλά μειώθηκε η
εμπιστοσύνη τους στον σχεδιασμό του συστήματος
7. Εξωτερική Ποιότητα (External Quality)
![Page 19: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/19.jpg)
Cohesion
Coupling
Productivity
Maintainabilty
Effort
Size
Complexity
External Quality
Defects
-6 -4 -2 0 2 4 6 8 10 12
PositiveNegativeNeutral or Inconclu-sive
Επιδράσεις του TDD
![Page 20: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/20.jpg)
• Παραγωγικότητα= έργο/προγραμματιστή
• Σε εμπειρικές μελέτες στη βιομηχανία η παραγωγικότητα ήταν
ελαφρώς χαμηλότερη και οι προγραμματιστές πίστευαν ότι
οφείλεται στις πρακτικές του TDD
• Σε αρκετά πειράματα με φοιτητές η παραγωγικότητα ήταν
παρόμοια ή λίγο υψηλότερη χρησιμοποιώντας TDD
• Γενικά, φοιτητές και επαγγελματίες έγραφαν τον κώδικα ελέγχου
3 φορές γρηγορότερα (150 LOC/h) από τον κώδικα της
εφαρμογής
8. Παραγωγικότητα (Productivity)
![Page 21: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/21.jpg)
Cohesion
Coupling
Productivity
Maintainabilty
Effort
Size
Complexity
External Quality
Defects
-6 -4 -2 0 2 4 6 8 10 12
PositiveNegativeNeutral or Inconclu-sive
Επιδράσεις του TDD
![Page 22: Trasas Steve - Effects of TDD](https://reader035.vdocuments.net/reader035/viewer/2022062412/5886de291a28ab776a8b741f/html5/thumbnails/22.jpg)
• Beck, K.: Test-Driven Development: By Example. Addison-Wesley (2003)
• Jeffries, R., Melnik, G.: Guest Editors’ Introduction: TDD–The Art of Fearless Programming. IEEE Software 24(3) (May-June 2007) 24–30
• Turhan, B., Layman, L., Diep, M., Erdogmus, H., Shull, F.: How Effective is Test-Driven Development. In Oram, A., Wilson, G., eds.: Making Software: What Really Works, and Why We Believe It. O’Reilly (2010) 207–219
• Rafique, Y., Misic, V.: The Effects of Test-Driven Development on External Quality and Productivity: A Meta Analysis. IEEE Transactions on Software Engineering 39(6) (2013) 835–856
• Williams, L., Maximilien, E., Vouk, M.: Test-Driven Development as a Defect-Reduction Practice. In: Proceedings of the 14th International Symposium on Software Reliability Engineering. ISSRE 2003 (November 2003) 34–45
• Wilkerson, J., Nunamaker, J.J., Mercer, R.: Comparing the Defect Reduction Benefits of Code Inspection and Test-Drive Development. IEEE Transactions on Software Engineering 38(3) (May-June 2012) 547–560
ΤΕΛΟΣ