Thessaloniki rb-24

24
Μειώνοντας το Τεχνικό χρέος(Technical Debt) με το

Transcript of Thessaloniki rb-24

Page 1: Thessaloniki rb-24

Μειώνοντας το Τεχνικό χρέος(Technical Debt) με το

Page 2: Thessaloniki rb-24

To SonarQube κι εγώ

Page 3: Thessaloniki rb-24

Ατζέντα

● Ποιότητα κώδικα (τι, πότε, πως και γιατί;)

● Οι 7 άξονες της ποιότητας και το τεχνικό χρέος

(technical debt)

● Εισαγωγή στο SonarQube

● SonarQube demo time

Page 4: Thessaloniki rb-24

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()); }

Page 5: Thessaloniki rb-24

What is code quality?

Page 6: Thessaloniki rb-24

Τι είναι ποιότητα κώδικα;

“Μία ένδειξη για το πόσο γρήγορα οι

developers μπορούν να προσθέτουν

επιχειρησιακή αξία σε ένα σύστημα”

Page 7: Thessaloniki rb-24

Γιατί να μετράμε;

● Ο κώδικας είναι η καρδιά κάθε συστήματος

● Οι developers δε γράφουν νέο λογισμικό. Απλά

συντηρούν “legacy” συστήματα

● Ένα σύστημα (σχεδόν) ποτέ δε θεωρείται

ολοκληρωμένο

● Χωρίς μέτρηση δεν υπάρχει (ουσιαστική

βελτίωση)

Page 8: Thessaloniki rb-24

Η θωρεία του σπασμένου παραθύρου

Page 9: Thessaloniki rb-24

Πότε είναι η ώρα να μετρήσουμε και πως;

● Από την ημέρα #0 του project

● Συνεχόμενα

● Πρόληψη vs Πυροσβεστικής

● Ιεράρχηση και προγραμματισμός

Page 10: Thessaloniki rb-24

Τι να μετρήσουμε;

● Απόλυτοι αριθμοί; (Σχεδόν) άχρηστοι

● Εξέλιξη στο χρόνο; Σίγουρα!

● Μετρικές; Ποιες;

● Ας γνωρίσουμε τα 7 θανάσιμα αμαρτήματα των

developers

Page 11: Thessaloniki rb-24

Οι 7 άξονες της ποιότητας

Σχεδίαση

Διπλός Κώδικας

Τεκμηρίωση

Πολυπ

λοκότητα

Un

it T

ests

Coding rules

Πιθα

νά B

ug

sTechnical Debt

Page 12: Thessaloniki rb-24

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)

Page 13: Thessaloniki rb-24

Έτσι μοιάζει ο κώδικας όταν δεν πληρώνουμε το

τεχνικό χρέος

Page 14: Thessaloniki rb-24

“Καλό” & “Κακό” Technical Debt

Page 15: Thessaloniki rb-24

Πως χειριζόμαστε το Technical Debt

Page 16: Thessaloniki rb-24

Τι είναι το SonarQube;

● Ελεύθερη πλατφόρμα ανοικτού κώδικα για

διαχείριση ποιότητας κώδικα

● Παρέχει στιγμιότυπα της ποιότητας του κώδικα

● Παρουσιάζει τάσεις της ποιότητας

● Καταγράφει μετρήσεις για τα 7 θανάσιμα

αμαρτήματα

● Μετράει και κατηγοριοποιεί το τεχνικό χρέος.

Page 17: Thessaloniki rb-24

Πως λειτουργεί;

● Αναλύει πηγαίο και byte κώδικα

● Υπολογίζει εκατοντάδες μετρικές

● Συνδέει τις μετρικές με στιγμιότυπα ποιότητας

● Προβάλει τα αποτελέσματα σε dashboards και

widgets – προσβάσιμα από browsers

Page 18: Thessaloniki rb-24

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

Page 19: Thessaloniki rb-24

Για testers. Ποια τμήματα του συστήματος δεν έχουν unit tests

… και για όλουςΓια developers. Γράφω “καλό' κώδικα; Πώς να βελτιωθώ;

Για architects. Έχει “σπάσει” το αρχικό design; Τι γίνεται με την πολυπλοκότητα;Για managers. Δώστε μου νούμερα!! Πάμε πάνω ή κάτω;

Page 20: Thessaloniki rb-24

Διαχείριση ποιότητας

• Dashboards

• Ιστορικά Δεδομένα

• Διαφορικές προβολές (Differential Views)

• Συγκρίσεις

• Αναθεωρήσεις κώδικα (Code reviews)

• Πλάνα ενεργειών

Page 21: Thessaloniki rb-24

DEMO TIME

Page 22: Thessaloniki rb-24

Η μεγάλη εικόνα• Διαχείριση και μείωση του Technical Debt σε

συνεχη βάση (Καθαρίστε την κουζίνα καθημερινά)

• Ενεργοποίηση των devs από την #1 μέρα (Δεν

πλένουν μονο οι μανάδες τα πιάτα)

• Κόκκινος συναγερμός όταν το Technical Debt

ξεπερνά τα άνω όρια (όταν δηλαδή αφήνει κάποιος

την κουζίνα σε κακά χάλια)

Page 23: Thessaloniki rb-24

I have a dream…

...that one day code quality management will be as much as important and essential is today source code management

Page 24: Thessaloniki rb-24

Ευχαριστώ

ppapapetrou76

@ppapapetrou76

http://www.linkedin.com/in/ppapapetrou

1