Thessaloniki rb-24

Post on 16-Jul-2015

239 views 8 download

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