Thessaloniki rb-24
-
Upload
patroklos-papapetrou -
Category
Documents
-
view
239 -
download
8
Transcript of Thessaloniki rb-24
Μειώνοντας το Τεχνικό χρέος(Technical Debt) με το
To SonarQube κι εγώ
Ατζέντα
● Ποιότητα κώδικα (τι, πότε, πως και γιατί;)
● Οι 7 άξονες της ποιότητας και το τεχνικό χρέος
(technical debt)
● Εισαγωγή στο SonarQube
● SonarQube demo time
private String _ugly_name; private String ANOTHER_$UGLY___NAME; private static String am_i_static;
public void please_work(ArrayList objects){ for (Object object : objects){ if (object == null){ String toString = object.toString(); } else am_i_static = object.toString(); doSomething(object); } } private void doSomething(Object object) throws NullPointerException { throw new NullPointerException(object.toString()); }
What is code quality?
Τι είναι ποιότητα κώδικα;
“Μία ένδειξη για το πόσο γρήγορα οι
developers μπορούν να προσθέτουν
επιχειρησιακή αξία σε ένα σύστημα”
Γιατί να μετράμε;
● Ο κώδικας είναι η καρδιά κάθε συστήματος
● Οι developers δε γράφουν νέο λογισμικό. Απλά
συντηρούν “legacy” συστήματα
● Ένα σύστημα (σχεδόν) ποτέ δε θεωρείται
ολοκληρωμένο
● Χωρίς μέτρηση δεν υπάρχει (ουσιαστική
βελτίωση)
Η θωρεία του σπασμένου παραθύρου
Πότε είναι η ώρα να μετρήσουμε και πως;
● Από την ημέρα #0 του project
● Συνεχόμενα
● Πρόληψη vs Πυροσβεστικής
● Ιεράρχηση και προγραμματισμός
Τι να μετρήσουμε;
● Απόλυτοι αριθμοί; (Σχεδόν) άχρηστοι
● Εξέλιξη στο χρόνο; Σίγουρα!
● Μετρικές; Ποιες;
● Ας γνωρίσουμε τα 7 θανάσιμα αμαρτήματα των
developers
Οι 7 άξονες της ποιότητας
Σχεδίαση
Διπλός Κώδικας
Τεκμηρίωση
Πολυπ
λοκότητα
Un
it T
ests
Coding rules
Πιθα
νά B
ug
sTechnical Debt
Technical Debt
“If the debt grows large enough, eventually the company will spend more on servicing its debt than it invests in increasing
the value of its other assets”
Steve McConnell(συγγραφέας του βιβλιου code
complete)
Έτσι μοιάζει ο κώδικας όταν δεν πληρώνουμε το
τεχνικό χρέος
“Καλό” & “Κακό” Technical Debt
Πως χειριζόμαστε το Technical Debt
Τι είναι το SonarQube;
● Ελεύθερη πλατφόρμα ανοικτού κώδικα για
διαχείριση ποιότητας κώδικα
● Παρέχει στιγμιότυπα της ποιότητας του κώδικα
● Παρουσιάζει τάσεις της ποιότητας
● Καταγράφει μετρήσεις για τα 7 θανάσιμα
αμαρτήματα
● Μετράει και κατηγοριοποιεί το τεχνικό χρέος.
Πως λειτουργεί;
● Αναλύει πηγαίο και byte κώδικα
● Υπολογίζει εκατοντάδες μετρικές
● Συνδέει τις μετρικές με στιγμιότυπα ποιότητας
● Προβάλει τα αποτελέσματα σε dashboards και
widgets – προσβάσιμα από browsers
SonarQube για τα πάντα...
● Αρχικά σχεδιάστηκε για Maven Java projects
● Σήμερα υποστηρίζει πάνω από 20 γλώσσσες
Επί πληρωμή : ABAP, C, C++, Cobol, Natural, PL/SQL, Visual Basic
Δωρεάν : C++, C#, Flex, Groovy, Android, Javascript, PHP, Python, XML, Web(xhtml, jsp , jsf), Erlang
Για testers. Ποια τμήματα του συστήματος δεν έχουν unit tests
… και για όλουςΓια developers. Γράφω “καλό' κώδικα; Πώς να βελτιωθώ;
Για architects. Έχει “σπάσει” το αρχικό design; Τι γίνεται με την πολυπλοκότητα;Για managers. Δώστε μου νούμερα!! Πάμε πάνω ή κάτω;
Διαχείριση ποιότητας
• Dashboards
• Ιστορικά Δεδομένα
• Διαφορικές προβολές (Differential Views)
• Συγκρίσεις
• Αναθεωρήσεις κώδικα (Code reviews)
• Πλάνα ενεργειών
DEMO TIME
Η μεγάλη εικόνα• Διαχείριση και μείωση του Technical Debt σε
συνεχη βάση (Καθαρίστε την κουζίνα καθημερινά)
• Ενεργοποίηση των devs από την #1 μέρα (Δεν
πλένουν μονο οι μανάδες τα πιάτα)
• Κόκκινος συναγερμός όταν το Technical Debt
ξεπερνά τα άνω όρια (όταν δηλαδή αφήνει κάποιος
την κουζίνα σε κακά χάλια)
I have a dream…
...that one day code quality management will be as much as important and essential is today source code management
Ευχαριστώ
ppapapetrou76
@ppapapetrou76
http://www.linkedin.com/in/ppapapetrou
1