Οσμές στη Σχεδίαση του Λογισμικού (Code Smells) Πρόγραμμα Μεταπτυχιακών Σπουδών στην Εφαρμοσμένη Πληροφορική.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τύποι δεδομένων και τελεστές,
Advertisements

Αρχές Αντικειμενοστρεφούς Σχεδίασης Object – Oriented Design Principles Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμ. Εφ. Πληροφορικής.
Handling Local Variables General Purpose Registers
Μετρικές Λογισμικού για Αντικειμενοστρεφή Συστήματα
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Τεχνολογία ΛογισμικούSlide 1 Έλεγχος Καταψύκτη (Ada) Τεχνολογία ΛογισμικούSlide 39 with Pump, Temperature_dial, Sensor, Globals, Alarm; use Globals ; procedure.
Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού Παναγιώτης Σφέτσος, PhD
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Αξιολόγηση της επίδρασης της χρήσης προτύπων σχεδίασης στις τιμές των μετρικών αντικειμενοστρεφούς σχεδίασης. Εφαρμογή σε εργαλείο σχεδίασης λογισμικού.
Β2Β eBusiness Παρουσίαση στα ΤΕΙ Δυτικής Μακεδονίας Παράρτημα Καστοριάς Αθ. Στουρνάρας Διευθυντής Υπηρεσιών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
Refactoring Επανασχεδίαση, Αναδόμηση, Επαναπαραγοντοποίηση Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμ. Εφ. Πληροφορικής.
2009ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Κατασκευή Λογισμικού (2/2) Μανόλης.
Αρχές Αντικειμενοστρεφούς Σχεδίασης Object – Oriented Design Principles Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμ. Εφ. Πληροφορικής.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
ΜΑΘΗΤΙΚΟ ΦΕΣΤΙΒΑΛ ΡΟΜΠΟΤΙΚΗΣ 19 Ο ΓΥΜΝΑΣΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΕΚΘΕΣΙΑΚΟ ΜΕΡΟΣ.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
6/26/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Asynchronous Circuits.
Week 11 Quiz Sentence #2. The sentence. λαλο ῦ μεν ε ἰ δότες ὅ τι ὁ ἐ γείρας τ ὸ ν κύριον Ἰ ησο ῦ ν κα ὶ ἡ μ ᾶ ς σ ὺ ν Ἰ ησο ῦ ἐ γερε ῖ κα ὶ παραστήσει.
Ο PID έλεγχος. Integral Lag Distance velocity lag Υλοποιούμε την.
Αριθμητική Επίλυση Διαφορικών Εξισώσεων 1. Συνήθης Δ.Ε. 1 ανεξάρτητη μεταβλητή x 1 εξαρτημένη μεταβλητή y Καθώς και παράγωγοι της y μέχρι n τάξης, στη.
Στάδια εξέλιξης των συστημάτων ποιότητας. ΕΞΕΛΙΞΗ ΣΥΣΤΗΜΑΤΩΝ ΔΙΟΙΚΗΣΗΣ ΤΗΣ ΠΟΙΟΤΗΤΑΣ ΕΠΙΘΕΩΡΗΣΗ ΕΛΕΓΧΟΣ ΠΟΙΟΤΗΤΑΣ ΔΙΑΣΦΑΛΙΣΗ ΠΟΙΟΤΗΤΑΣ ΔΙΟΙΚΗΣΗ ΟΛΙΚΗΣ.
Arduino Mini howto Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας Ανδριτσάκης Δημήτρης Θερινό Σχολείο «Ανάπτυξη wearable συστήματος βασισμένου σε Arduino για χρήση.
Ψηφιακά Παιχνίδια και μάθηση Δρ. Νικολέτα Γιαννούτσου Εργαστήριο Εκπαιδευτικής Τεχνολογίας.
Διδάσκοντας το μάθημα Αλληλεπίδραση Ανθρώπου Υπολογιστή Συμεών Δ. Ρετάλης ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ερευνητική Ομάδα.
ΒΙΟΜΗΧΑΝΙΚΟΣ ΣΧΕΔΙΑΣΜΟΣ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΑΤΗΓΑΚΗ ΣΤΕΛΑ ΕΞΑΜΗΝΟ: ΠΤΥΧΙΟ ΜΟΝΤΕΛΟΠΟΙΗΣΗ Τ.Ε.Ι. ΑΘΗΝΑΣ-Σ.Κ.Σ
SCIENCE EDUCATION Οργάνωση εξωσχολικών επισκέψεων/δράσεων Άννα Σπύρτου Άννα Σπύρτου.
Εισαγωγή στον Προγ/μό Η/Υ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΟΛΟΓΙΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Στάδια εξέλιξης των συστημάτων ποιότητας
Τμήμα Εφαρμοσμένης Πληροφορικής και Πολυμέσων Εργαστήριο Ρομποτικής
Συστήματα CAD Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών
Η Ύλη του Μαθήματος Επανάληψη της πολλαπλή παλινδρόμησης και Ασυμπτωτική κατανομή της εκτιμήτριας ελαχίστων τετραγώνων. Βοηθητικές μεταβλητές και παλινδρόμηση.
Matrix Analytic Techniques
Ποιότητα Λογισμικού Έλεγχος λογισμικού
Αλγόριθμοι Ταξινόμησης – Μέρος 3
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Νομική Σχολή
Δομές διακλάδωσης, επαναλήψεις, μέθοδοι
φίλτρα IIR (Infinite Impulse Response)
Keystroke-Level Model
GO.
Πως μπορούν να μάθουν καλύτερα
Adjectives Introduction to Greek By Stephen Curto For Intro to Greek
(ALPHA BANK – EUROBANK – PIRAEUS BANK)
Οσμές στη Σχεδίαση του Λογισμικού
CYPRUS RHEUMATOLOGY SOCIETY
JAVA – Basic OOP Principles
Στην Τεχνολογία Λογισμικού
Μία πρακτική εισαγωγή στην χρήση του R
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Νομική Σχολή
Ανάλυση Γεωργικού Οικογενειακού Εισήματος (ΓΟΕ)
Η Περιβαλλοντική Αγωγή εισήλθε στα εκπαιδευτικά συστήματα πολλών κρατών από την ανάγκη ανταπόκρισης στις όλο και αυξανόμενες πιέσεις της οικολογικής κρίσης.
Μια συναρπαστική ιστορία για το μέγεθος του κόσμου μας.
aka Mathematical Models and Applications
ΚΑΘΟΔΟΣ ΤΩΝ ΠΕΛΟΠΟΝΝΗΣΟΣ ΕΙΛΩΤΕΣ-ΠΕΡΙΟΙΚΟΙ ΓΕΩΜΕΤΡΙΚΑ ΧΡΟΝΙΑ
Μια συναρπαστική ιστορία για το μέγεθος του κόσμου μας.
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Υπο-τύποι και πολυμορφισμός
Δομές ροής προγράμματος
CPSC-608 Database Systems
Noun Inflection.
Μεταγράφημα παρουσίασης:

Οσμές στη Σχεδίαση του Λογισμικού (Code Smells) Πρόγραμμα Μεταπτυχιακών Σπουδών στην Εφαρμοσμένη Πληροφορική

Design Problems non-compliance with design principles excessive metric values lack of design patterns violations of design heuristics Fowler’s bad smells

Software Ageing Design quality decays well-designed code

Οσμές Οι ενδείξεις κακής σχεδίασης λογισμικού είναι γνωστές ως «οσμές» λογισμικού (code smells - Fowler) Τα code smells δεν προκαλούν προβλήματα στη λειτουργικότητα του συστήματος (για αυτό και συχνά συσσωρεύονται) Ωστόσο, η ύπαρξή τους ενδέχεται να δυσχεράνει τη μελλοντική συντήρηση του λογισμικού (προσθήκη λειτουργικότητας, διόρθωση σφαλμάτων, κατανόηση, επαναχρησιμοποίηση κλπ) Οι κακές οσμές ανιχνεύονται σχετικά εύκολα από τους έμπειρους σχεδιαστές και ο εντοπισμός μπορεί να υποβοηθάται από εργαλεία Οι οσμές μπορούν να εξαλειφθούν με την εφαρμογή κατάλληλη αναδόμησης

Long Method int i; int product = 1; for(i = 0; i < N; ++i) { product = product *i; } System.out.println(product); Pieces of code with large size, high complexity and low cohesion int i; int sum = 0; for(i = 0; i < N; ++i) { sum = sum + i; } System.out.println(sum); Ενδεδειγμένη Αναδόμηση: Εξαγωγή μεθόδου (Extract Method)

Feature Envy A method is “more interested in a class other than the one it actually is in” m(Target t) { t.m1(); t.m2(); t.m3(); } m() { m1(); m2(); m3(); } Ενδεδειγμένη Αναδόμηση: Μετακίνηση μεθόδου (Move Method)

State Checking State Checking manifests itself as conditional statements that select an execution path based on the state of an object doStateA(); switch(type) { case STATE_A: break; case STATE_B: break; } doStateB(); Ενδεδειγμένη Αναδόμηση: Αντικατάσταση Συνθήκης με Πολυμορφισμός (Replace Conditional with Polymorphism)

Total Number of Smells