Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Ο Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Ο Ι Δ Ρ Υ Μ Α Σ Ε Ρ Ρ Ω Ν Σ Χ Ο Λ Η Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Ω Ν Ε Φ Α Ρ Μ Ο Γ Ω Ν Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ & Ε Π Ι Κ Ο Ι Ν Ω Ν Ι Ω Ν ΓΚΟΥΝΤΙΝΑΣ ΛΑΖΑΡΟΣ(ΑΜ:708) ΑΝΙΧΝΕΥΣΗ ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ ΣΕ ΛΟΓΙΣΜΙΚΟ ΑΝΟΙΧΤΟ ΚΩΔΙΚΑ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΣΕΡΡΕΣ 2012 ΕΠΙΒΛΕΠΩΝ : ΑΛΕΞΑΝΔΡΟΣ ΛΑΖΑΡΙΔΗΣ
ΕΙΣΑΓΩΓΗ Ανοιχτό Λογισμικό Πρότυπα Σχεδίασης Εμπειρικές Μελέτες
Ανοιχτό Λογισμικό Διατίθεται ελεύθερα προς χρήση Παρέχει μεγάλη δυνατότητα επαναχρησιμοποίησης Πρέπει να είναι: Κατανοητό Ευκολα συντήρισιμο Ευέλικτο
Πρότυπα Σχεδίασης Πρότυπα που μελετάμε: Factory Prototype Singleton Adapter Composite Decorator Proxy Observer State Template Visitor
Εμπειρικές Μελέτες 1.Ορισμός υπόθεσης 2.Επιλογή εφαρμογών 3.Επιλογή μεθόδου σύγκρισης 4.Ελαχιστοποίηση των παραγόντων σύγχυσης 5.Σχεδιασμός πλάνου 6.Παρακολούθηση της μελέτης περίπτωσης 7.Ανάλυση και αναφορά των αποτελεσμάτων Πειράματα Μελέτες ΠεδίουΜελέτες Περίπτωσης Μεθοδολογία σύνταξης Μελέτης Περίπτωσης
Ανίχνευση προτύπων σχεδίασης σε Ανοιχτό Λογισμικό Μεθοδολογία Τα ερωτήματα της έρευνας Πλάνο της Μελέτης Περίπτωσης Μέθοδοι ανάλυσης δεδομένων Αποτελέσματα Συζήτηση Εφαρμογή προτύπων σχεδίασης Πρότυπα σχεδίασης και κατηγορίες λογισμικού Κίνδυνοι Εγκυρότητας
Τα ερωτήματα της έρευνας RQ1: Ποια πρότυπα σχεδίασης χρησιμοποιούνται συχνότερα στα παιχνίδια ανοιχτού λογισμικού RQ2: Υπάρχουν διαφορές στα πρότυπα που χρησιμοποιούνται από κατηγορία σε κατηγορία
Πλάνο της Μελέτης Περίπτωσης (1) 1.Κατηγορίες ανοιχτού λογισμικού 1) communications 2) Desktop Environment 3) education 4) Formats and Protocols 5) Games Entertainment 6) Internet 7) Mobile 8) Multimedia 9) Office Business 10) OtherNonlisted Topic. 11) printing 12) Religion and Philosophy 13) Scientific Engineering 14) Security 15) Social sciences 16) software develop 17) System 18) Terminals 19) Text Editors
Πλάνο της Μελέτης Περίπτωσης (2) 2.Κριτήρια επιλογής 1.Να είναι γραμμένα σε java 2.Να διαθέτουν δυαδικό κώδικα 3.Ανίχνευση των προτύπων σχεδίασης 4.Σύνοψη των δεδομένων 5.Μέθοδοι Ανάλυσης Δεδομένων Descriptive statistics Independent sample t-test Paired sample t-test
Αποτελέσματα MaximumMeanStd. Deviation factory_num441,885,209 prototype_num3764,9830,174 singleton_num2068,4521,135 adapter_num24115,7235,063 composite_num6,22,733 decorator_num511,855,230 proxy_num65,984,136 observer_num491,013,519 state_num47317,3440,993 template_num512,895,887 visitor_num186,618,984 Πίνακας 1: Μέσος όρος χρήσης των προτύπων
Μέσος όρος χρήσης όλων των προτύπων ανά κατηγορία πινάκας 1 communications Desktop Environment education Formats and Protocols Games Entertainment Internet Mobile Multimedia Office Business OtherNonlisted Topic Factory2,972,391,031,041,19 2,29 1,32,312,491,14 Prototype4,1511,7810,10,390,38 3,52 0,54,628,681,18 Singleton9,7318,1713,18,965,16 1,52 7,115,110,26,18 Adapter19,7618,8313,78,510,78 18,9 1227,720,789,14 Composite0,150,330,260,040,09 0,19 0,30,350,370,09 Decorator1,213,721,811,321,13 3,65 0,81,852,132,05 Proxy0,850,780,970,392,59 1,17 0,31,23 0,68 Observer1,943,50,970,290,75 0,27 0,72,881,350,23 State21,8221,1113,18,6413,84 28,7 1224,721,8311,6 Template3,184,282,942,362,28 1,68 2,23,694,282,5 Visitor0, ,37 000,280
Μέσος όρος χρήσης όλων των προτύπων ανά κατηγορία πινάκας 2 printing Religion and Philosophy Scientific Engineering Security Social sciences software develop System Terminals Text Editors Factory3,310,42,130,730,223,241,690,111,96 Prototype20,750,722,040,552,832,70,310,110,93 Singleton16,812,614,393,910,448,114,833,336 Adapter21,194,930,5211,5510,7214,412,599,1111,2 Composite0,500,480,0900,180,2100,37 Decorator5,250,220,1802,441,791,330,93 Proxy0,8802,910,270,060,560,830,110,96 Observer1,6201,431,820,170,220,410,890,7 State27,55,825,529,363,8320,2716,283,5614,5 Template4,560,95,392,550,443,222,691,112,07 Visitor3,630,40004,13000
communicati ons Desktop Environment education Formats and Protocols Games Entertainme n Internet Mobile Multimedia Office Business OtherNonlist ed Topic printing Religion and Philosophy Scientific Engineering Security Social sciences software develop System Terminals Text Editors communications 0,18 0,710,210,180,550,180,410,760,18 0,1750,40,18 Desktop Environment Ν/Α 0,33 Ν/Α 0,28 Ν/Α 0,330,34 Ν/Α 0,32 Ν/Α 0,29 Ν/Α education Ν/Α 0,33 Ν/Α 0,28 Ν/Α 0,330,34 Ν/Α 0,32 Ν/Α Formats and Protocols Ν/Α 0,33 Ν/Α 0,28 Ν/Α 0,330,34 Ν/Α 0,32 Ν/Α Games Entertainmen 0,33 Ν/Α 0,28 Ν/Α 0,330,34 Ν/Α 0,32 Ν/Α Internet 0,380,330,850,330,380,950,33 0,3260,370,33 Mobile 0,330,350,33 0,390,33 0,3270,33 Multimedia 0,28 Ν/Α 0,330,34 Ν/Α 0,32 Ν/Α Office Business 0,280,360,810,28 0,2790,360,28 OtherNonlisted Topic 0,330,34 Ν/Α 0,32 Ν/Α printing 0,383250,330,3250,930,33 Religion and Philosophy 0,34 0,3430,370,34 Scientific Engineering Ν/Α 0,32 Ν/Α Security Ν/Α 0,32 Ν/Α Social sciences 0,32 Ν/Α software develop 0,670,32 System Ν/Α Terminals Ν/Α Text Editors Independent sample t-test για το πρότυπο Visitor
communications Desktop Environment education Formats and Protocols Games Entertainmen Internet Mobile Multimedia Office Business OtherNonlisted Topic printing Religion and Philosophy Scientific Engineering Security Social sciences software develop System Terminals Text Editors communications 0,950,490,080,180,930,350,470,910,140,930,020,430,360,380,460,370,20,28 Desktop Environment 0,710,420,530,990,610,570,890,460,90,280,50,60,580,730,640,480,57 education 0,460,680,580,830,220,450,560,650,210,230,820,780,930,890,60,76 Formats and Protocols 0,570,160,610,060,090,90,410,330,090,670,80,230,50,920,65 Games Entertainmen 0,280,870,090,170,750,50,150,130,9210,480,770,80,95 Internet 0,440,450,850,230,890,060,410,440,450,570,470,270,37 Mobile 0,160,320,710,560,290,180,970,910,730,930,740,94 Multimedia 0,550,080,710,030,860,160,180,20,170,10,13 Office Business 0,340,980,030,480,330,340,420,340,190,26 OtherNonlisted Topic 0,440,40,110,760,870,380,6110,76 printing 0,290,630,560,540,660,590,450,53 Religion and Philosophy 0,050,360,510,060,210,510,29 Scientific Engineering 0,18 0,220,190,120,15 Security 0,940,720,90,780,97 Social sciences 0,690,850,870,96 software develop 0,790,460,63 System 0,660,85 Terminals 0,79 Text Editors Independent sample t-test για το πρότυπο Adapter
communications Desktop Environment education Formats and Protocols Games Entertainmen t Internet Mobile Multimedia Office Business OtherNonlisted Topic printing Religion and Philosophy Scientific Engineering Security Social sciences software develop System Terminals Text Editors communications 0,520,550,04 0,750,040,860,40,120,420,060,290,050,50,550,030,020,08 Desktop Environment 0,910,34 0,490,340,550,810,380,70,350,610,350,45 0,340,330,36 education 0,330,320,510,330,580,90,370,640,340,540,330,46 0,320,310,35 Formats and Protocols 0,9500,890,040,110,310,320,530,20,80,010,180,770,270,37 Games Entertainmen 00,850,040,10,290,320,490,20,770,010,180,780,190,34 Internet 0,010,610,320,060,40,010,270,010,60,68000,02 Mobile 0,040,110,390,320,690,20,90,020,20,740,430,5 Multimedia 0,450,10,430,060,30,050,40,460,03 0,07 Office Business 0,140,560,120,450,110,26 0,10,090,13 OtherNonlisted Topic 0,340,570,220,490,150,410,250,010,78 printing 0,330,960,330,38 0,32 0,34 Religion and Philosophy 0,210,830,040,260,410,210,75 Scientific Engineering 0,210,26 0,2 0,21 Security 0,030,230,690,450,63 Social sciences 0,950,01 0,07 software develop 0,170,130,32 System 0,310,29 Terminals 0,15 Text Editors Independent sample t-test για το πρότυπο Prototype
communications Desktop Environment education Formats and Protocols Games Entertainmen Internet Mobile Multimedia Office Busi ness OtherNonlisted Topic printing Religion and Philosophy Scientific Engineering Security Social sciences software develop System Terminals Text Editors communications 0,480,660,870,220,030,620,350,920,390,50,060,480,130,010,690,180,110,35 Desktop Environment 0,70,440,270,160,360,80,510,310,930,190,770,230,130,390,250,210,3 education 0,590,260,10,450,80,710,340,750,140,880,20,070,490,240,180,32 Formats and Protocols 0,280,040,720,280,80,480,450,070,410,170,010,830,230,140,43 Games Entertainmen 0,040,660,040,180,690,250,140,120,5500,240,840,450,72 Internet 0,20,010,020,070,130,490,030,230,350,010,030,430,05 Mobile 0,190,560,850,360,3 0,470,120,820,60,410,81 Multimedia 0,40,090,870,010,920,0300,460,040,020,07 Office Business 0,340,520,040,530,110,010,610,150,090,3 OtherNonlisted Topic 0,30,160,180,410,020,530,580,340,95 printing 0,160,830,20,110,390,230,190,29 Religion and Philosophy 0,050,510,090,030,150,750,13 Scientific Engineering 0,080,023040,110,070,17 Security 0,060,120,640,450,41 Social sciences 000,180,01 software develop 0,170,110,47 System 0,510,59 Terminals 0,34 Text Editors Independent sample t-test για το πρότυπο Singleton
Factory Prototype Singleton Adapter Composite Decorator Proxy Observer State Template Visitor Factory 0,350,0500,020,130,070,300,860,05 Prototype 0,110,010,020,050,040,1500,440,03 Singleton 00,010,020,01 0,050,01 Adapter 00000,4200 composite 0,020,010,02000,33 Decorator 0,340,3300,020,01 Proxy 0,08000,53 Observer 00,130,1 State 00 Template 0 Visitor Paired sample t-test για την κατηγορία communications
Factory Prototype Singleton Adapter Composite Decorator Proxy Observer State Template Visitor Factory 0,190,010 0,430,070,1300,040,01 Prototype 0,690,050,10,170,110,120,020,30,1 Singleton 0,020,01 0,020,01 Adapter 00000,5300 composite 0,010,060,0900,010,79 Decorator 0,070,31000,03 Proxy 0,8400,010,13 Observer 00,010,08 State 00 Template 0 Visitor Paired sample t-test για την κατηγορία Office Business
Factory Prototype Singleton Adapter Composite Decorator Proxy Observer State Template Visitor Factory 0,360,170,140,190,270,150,720,120,140,17 Prototype 0,680,060,330,370,330,50,020,410,32 Singleton 0,970,130,210,140,110,850,240,13 Adapter 0,140,130,140,230,080,14 composite 0,220,340,260,120,160,11 Decorator 0,20,950,110,20,28 Proxy 0,340,120,140,22 Observer 0,20,850,21 State 0,12 Template 0,15 Visitor Paired sample t-test για την κατηγορία Desktop Environment
Factory Prototype Singleton Adapter Composite Decorator Proxy Observer State Template Visitor Factory 0,350,10,180,20,090,17 0,120,150,85 Prototype 0,740,940,330,40,320,330,190,380,31 Singleton 0,540,110,150,1 0,190,130,06 Adapter 0,180,230,18 0,060,210,14 composite 0,080,460,310,120,090,4 Decorator 0,070,060,140,430,62 Proxy 0,370,120,070,4 Observer 0,120,040,46 State 0,130,09 Template 0,55 Visitor Paired sample t-test για την κατηγορία printing
Εφαρμογή προτύπων σχεδίασης Αναμενόμενο το πρότυπο state σε μια υψηλή θέση Για το πρότυπο adapter περιμέναμε μια υψηλή θέση στην κατάταξη Το πρότυπο Decorator χρησιμοποιείται πιο συχνά απ’ ότι το πρότυπο Composite Τα πιο δυσνόητα πρότυπα φαίνεται να είναι τα πρότυπα observer, proxy, visitor και composite level 1 state adapter level 2 singleton level 3 prototype template level 4 factory decorator level 5 observer proxy visitor composite
Πρότυπα Σχεδίασης και Κατηγορίες Λογισμικού Printing: μέγιστο μέσο όρο στιγμιοτύπων του προτύπου Factory. Scientific Engineering και printing μεγαλύτερο μέσο όρο στιγμιοτύπων για το πρότυπο Prototype. Social sciences: λιγότερη χρήση του προτύπου Singleton. Multimedia: περισσότερα στιγμιότυπα Adapter από communications και Office Business. Printing : χρησιμοποιεί περισσότερο Composite. Scientific Engineering: περισσότερα στιγμιότυπα για το πρότυπο proxy. Multimedia:εκτεταμένη χρήση του προτύπου Observer. Internet : μεγαλύτερο μέσο όρο στιγμιότυπων του προτύπου state. Visitor,Adapter,Proxy : χρησιμοποιείται εξίσου σε όλες τις κατηγορίες.
Επίπεδα χρήσης προτύπων σχεδίασης (1) communications level 1 state adapter singleton level 2 template decorator factory prototype proxy observer composite level 3 visitor Internet level 1 state adapter level 2 decorator prototype factory Template Singleton Proxy Visitor Observer Composite mobile level 1 state adapter level 2 Singleton Template factory level 3 Decorator Observer level 4 Prototype level 5 Proxy composite level 6 Visitor
Επίπεδα χρήσης προτύπων σχεδίασης (2) Scientific Engineering level 1 adapter state prototype Singleton level 2 Template level 3 Proxy Factory decorator Observer composite level 4 Visitor Security adapter state Singleton Template Observer Factory Prototype Proxy Decorator composite Visitor
Κίνδυνοι Εγκυρότητας Τα αποτελέσματα ίσως να μην αφορούν αντίστοιχες εφαρμογές κλειστού λογισμικού. Το μέγεθος του δείγματος που πήραμε είναι αρκετά μικρό συγκριτικά με το συνολικό πλήθος των έργων ανοιχτού λογισμικού Τα έργα λογισμικού ήταν αποκλειστικά γραμμένα σε Java Χρησιμοποιήθηκε μόνο ένα αποθετήριο κώδικα Το μέγεθος των εφαρμογών μετρήθηκε με βάση τον αριθμό των κλάσεων (NOC)
Εύκολη χρήση των Adapter, State και Singleton Η συχνή εφαρμογή του προτύπου Adapter, μπορεί να σημαίνει, υψηλότερα επίπεδα επαναχρησιμοποίησης στον τομέα των έργων ανοιχτού λογισμικού. Τα πρότυπα σχεδίασης με υψηλούς μέσους όρους χρήσης δεν διαφέρουν στατιστικά σημαντικά από τα υπόλοιπα, ενώ αυτά με χαμηλά επίπεδα χρήσης, διαφέρουν στατιστικά σημαντικά από αυτά με τους μεγαλύτερους μέσους όρους. Συμπεράσματα