Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Γκιλίρης Ιωάννης 7419

122 views

Published on

Αναδυόμενα Πρότυπα Πρακτικών Προγραμματισμού
μέσω Συλλογικής Νοημοσύνης

Published in: Software
  • Be the first to comment

  • Be the first to like this

Γκιλίρης Ιωάννης 7419

  1. 1. Ιωάννης Π. Γκιλίρης Υπό την επίβλεψη του κ. Ανδρέα Λ. Συμεωνίδη Επίκουρου καθηγητή του ΤΗΜΜΥ ΑΠΘ Και του κ. Χατζηδημητρίου Κυριάκου Μεταδιδακτορικού ερευνητή του ΤΗΜΜΥ ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΛΗΡΟΦΟΡΙΑΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΩΝ (ΕΠΥ)
  2. 2. Σκοπός της διπλωματικής εργασίας  Εύρεση των αναδυόμενων πρακτικών προγραμματισμού σε μία δυναμική γλώσσα όπως η JavaScript  Δημιουργία του package statLint για το Atom IDE του GitHub που θα έχει τον ρόλο ενός statistical linter Πακέτο ανοικτού κώδικα (open source) Εργαλείο στατικής ανάλυσης κώδικα για τον εντοπισμό διαφορών από κοινές πρακτικές Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 2
  3. 3. Για ποιο λόγο η JavaScript ;  Αποτελεί τη κυρίαρχη γλώσσα για τη δημιουργία διαδικτυακών εφαρμογών 94.1 % όλων των websites χρησιμοποιούν τη JavaScript  Ο δυναμικός χαρακτήρας της γλώσσας οδηγεί σε πολύ μεγάλη ευελιξία και ποικιλομορφία κατά την ανάπτυξη των εφαρμογών  Είναι interpreted γλώσσα γεγονός που αναδεικνύει την χρησιμότητα ενός linter με νέα χαρακτηριστικά Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 3
  4. 4. Αναδυόμενες πρακτικές ;  Function Signatures  _.map([1, 2, 3], function(num){ return num * 3; });  Function Chains  _.keys(data).forEach(function(id){ alert(id.Name);});  Assignments και επιστρεφόμενες τιμές από τις κλήσεις μεθόδων και αλυσίδων  var new = ([1, 2, 3]).reverse();  Δηλώσεις νέων μεταβλητών  var data = [{“Name”: “John”}, {“Name”: “Maria”}]; Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 4
  5. 5. Σε ποιους απευθύνεται το statLint  Σε αρχάριους προγραμματιστές που εξοικειώνονται με τη γλώσσα και το web developing  Σε ομάδες ανάπτυξης λογισμικού που επιθυμούν μία το δυνατό μεγαλύτερη συνοχή και ομοιομορφία στο λογισμικό που αναπτύσσουν Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 5
  6. 6. Δομή του συστήματος εκπαίδευσης Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 6
  7. 7. Η μετρική για το Scoring  Η στατιστική μετρική: (term frequency x modified document frequency)  Ως term θεωρούμε: 1. Κάθε εναλλακτική υπογραφή μιας μεθόδου 2. Κάθε διαφορετικό συνδυασμό αλυσίδας από συγκεκριμένες μεθόδους 3. Κάθε διαφορετικό τύπο αρχικοποίησης νέων μεταβλητών  Ως document θεωρούμε κάθε ένα από τα projects του αποθετηρίου αναφοράς Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 7 mdftf 
  8. 8.  Ο modified df δείκτης υπολογίζεται ως εξής:  Θέλουμε να διατηρήσουμε μία λογαριθμική σχέση ανάμεσα στον αριθμό των projects και την τιμή του δείκτη Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 8 Η μετρική για το Scoring          N projects mdf 1log
  9. 9. Preprocessor Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 9 Φιλτράρισμα αρχείων Οργάνωση σε φακέλους
  10. 10. Parser Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 10 Εξαγωγή AST (Abstract Syntax Trees) Esprima Parser
  11. 11. Training #1 Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 11 Συλλογή δεδομένων για τις υπογραφές και τα assignments μεθόδων Αρχείο εξόδου: functionSignatures.json
  12. 12. Training #1: Εγγραφές Αρχείου Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 12
  13. 13. Training #2 Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 13 Συλλογή δεδομένων για τις αλυσίδες και τα assignments μεθόδων Αρχείο εξόδου: functionChains.json
  14. 14. Training #2: Εγγραφές αρχείου Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 14
  15. 15. Training #3 Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 15 Συλλογή δεδομένων για τις δηλώσεις μεταβλητών Αρχείο εξόδου: varDeclarations.json
  16. 16. Δομή του statLint Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 16
  17. 17. Δοκιμές του statLint Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 17
  18. 18. Πείραμα 1: Cross-validation (GitHub Dataset)  Οι δείκτες warnings / seen LOC για τα τρία επίπεδα αυστηρότητας:  Dataset: 100 δημοφιλέστερα projects στο GitHub  10-fold cross-validation Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 18 Επίπεδο Αυστηρότητας Warnings / seen LOC (%) 1 45.37 2 32.01 3 27.94
  19. 19. Πείραμα 2: Cross-validation testing (D3 Dataset)  Οι δείκτες warnings / seen LOC για τα τρία επίπεδα αυστηρότητας:  Dataset: 200 projects από τους προγραμματιστές της D3  10-fold cross-validation Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 19 Επίπεδο Αυστηρότητας Warnings / seen LOC (%) 1 24.97 2 13.88 3 11.85
  20. 20. Cross-validation: Σύγκριση 0 5 10 15 20 25 30 35 40 45 50 Level 1 Level 2 Level 3 GitHub D3 Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 20
  21. 21. GitHub Dataset D3 Dataset  Κριτήριο επιλογής: η δημοτικότητα  100 δημοφιλέστερα projects, βάσει του αριθμού των stars  Ισχυρότερα πειστήρια σχετικά:  τόσο με την αξιοπιστία των projects  όσο και με την ομοιομορφία τους Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 21 Cross-validation: Σύγκριση
  22. 22. Πείραμα 3: Σύγκριση με το PMD Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 22 LOC LOC seen by statLint PMD (%) statLint ( % ) twitter-typeahead 10,602 1,261 1.5 25.46 jquery-mobile 91,891 5,063 0.52 30.15 mrdoob-three 90,661 10,663 9.06 30.27 ecomfe-echarts 69,388 8,645 6.24 28.58 resume 626 85 1.6 27.05 uBlock 13,503 1,741 2.55 26.3 socketio-socket 2,832 476 0.5 19.11 alvarotrigo-fullpage 3,577 428 0.81 17.28 caolan-async 7,026 785 1.25 25.35 peachananr-scroll 344 51 15.69 35.29
  23. 23.  Ο συντελεστής συσχέτισης (Pearson Correlation Coefficient) ανάμεσα στα 2 διανύσματα-στήλες είναι: 0.7331  Παρατηρείται σημαντική συσχέτιση  Πιθανή θετική αξιολόγηση ενός αρχείου κώδικα από το PMD ⇒ Πολύ πιθανή θετική αξιολόγηση από το statLint Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 23 Πείραμα 3: Σύγκριση με το PMD
  24. 24. Συμπεράσματα  Απλές, αλλά εξίσου δυναμικές πρακτικές συμβάλουν στις τεχνικές του MSR (Mining Software Repositories)  Online κοινότητες, όπως αυτή του GitHub, αναδεικνύουν τη δύναμη της συνεργασίας και της συλλογικής νοημοσύνης  Ένας statistical linter μπορεί να αντικατοπτρίσει τις εμφανιζόμενες αλλαγές Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 24
  25. 25. Μελλοντική Εργασία  Υποστήριξη και άλλων εκδόσεων της JavaScript  CoffeeScript  Τελευταία έκδοση της γλώσσας (ECMAScript6)  Χρησιμοποίηση μεγαλύτερου όγκου δεδομένων  Να εξεταστεί κατά πόσο υπάρχει βελτίωση  Πιθανή ανάγκη για μία online ΒΔ Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 25
  26. 26. Ευχαριστίες  Θα ήθελα να ευχαριστήσω τους επιβλέποντες της διπλωματικής μου εργασίας, κ. Ανδρέα Συμεωνίδη και κ. Κυριάκο Χατζηδημητρίου για τη συνεχή βοήθεια και καθοδήγησή τους. Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 26
  27. 27. Ερωτήσεις Οκτώβριος 2016 Αναδυόμενα πρότυπα πρακτικών προγραμματισμού μέσω συλλογικής νοημοσύνης 27

×