Κεφάλαιο 6 ο Περιγραφή εδοµένων - Συµπεράσµατα 6.1 Γενικά Η βάση δεδοµένων που χρησιµοποιήσαµε για να δηµιουργήσουµε το δικό µας σύνολο δεδοµένων, προήλθε από την βάση της International Software Benchmarking Standards Group (ISBSG) και πιο συγκεκριµένα από την έκδοση 7, (ISBSG7). Η ISBSG, σύµφωνα µε τα στοιχεία στον διαδικτυακό της τόπο, µας ενηµερώνει ότι είναι ένας µη κερδοσκοπικός οργανισµός που ιδρύθηκε το 1997. Η δηµιουργία του οργανισµού αυτού βασίστηκε πάνω σε προηγούµενες πολυάριθµες συνεργασίες µε διάφορες οµάδες που ασχολούνταν µε στατιστικές αναλύσεις που είχαν ως απώτερο σκοπό τη βελτίωση των έργων λογισµικού, αλλά και των προϊόντων που αυτά παράγουν προς όφελος και των επιχειρήσεων, αλλά και της κυβέρνησης. Η ISBSG δραστηριοποιείται κυρίως σε δύο κατευθύνσεις: 1) στην ανάπτυξη και βελτίωση λογισµικού (Software Development and Enhancement) και, 2) στην διατήρηση και συντήρηση λογισµικού (Software Maintenance and Support). 6.2 Περιγραφή δεδοµένων 6.2.1 Επιλογή µεταβλητών Ο σκοπός της δικής µας εργασίας είναι να εφαρµόσουµε τις 4 µεθόδους χειρισµού χαµένων τιµών (LD, MI, RI, EM), πάνω σε ένα σύνολο δεδοµένων 75
που περιέχει χαµένες τιµές και να διαπιστώσουµε ποια από αυτές δίνει τα καλύτερα αποτελέσµατα. Για αυτόν τον λόγο προσπαθήσαµε να επιλέξουµε το σύνολο δεδοµένων πάνω στo οποίo θα δουλεύαµε, να περιέχει κάποιες µεταβλητές µε πραγµατικά χαµένες τιµές. Η βάση δεδοµένων (database) που χρησιµοποιήσαµε είναι η ISBSG7 µε τα 1238 έργα λογισµικού (projects). Έτσι καταλήξαµε στο σύνολο δεδοµένων µε τα 152 έργα (projects) και µε δύο µεταβλητές που περιέχουν χαµένες τιµές, την DBMS Used (dbms) και την Business Area Type (bartype). Οι τιµές που παίρνουν οι µεταβλητές που περιέχουν χαµένες τιµές παρουσιάζονται στον παρακάτω πίνακα: Variable Full Name Level-definition Dbms DBMS Used ACCESS, ADABAS, ADABAS V5, CA- IDMS, DATACOM, DB2, DB2/2, FOXPRO, GUPTA SQL BASIC, IDMS, IMS, INTERACTIVE, MS SQL Server, ORACLE, ORACLE V7, Other, RDB, RDB 4-2-1, RDB 6.0, RDMS, SYBASE, WATCOM, WATCOM SQL. bartype Business Area Type Accounting, Activity Tracking, Architectural, Banking, Blood Bank, Chartered Flight Operation, Claims Processing - Product pays claim, Energy generation, Engineering, Environment, Financial (excluding Banking), Fine Enforcement, Generate & Distribute Electricity, Insurance, Inventory, Legal, Logistics, Manufacturing, Pension Funds Management, Personnel, Procurement, Project management & job control, Provide computer services and IT consultation, Public Administration, Research & Development, Sales & Marketing, Telecommunications, Transport/shipping. πίνακας 6.1 76
Έπειτα επιλέξαµε κάποιες µεταβλητές από το σύνολο δεδοµένων, σύµφωνα µε τις οποίες θα δηµιουργήσουµε το µοντέλο µας. Αυτές οι µεταβλητές είναι οι: lnfunctionpoints, η Year, η Platfr, η orgtype, η pacost, η lang, η apltype και η primar. Οι τιµές που παίρνουν αυτές οι µεταβλητές φαίνονται στον παρακάτω πίνακα: Variable Full Name Level-definition lnfunctionpoints Ln Function Points Αριθµητική Year Implement Date Αριθµητική Platfr Development MF, MR, PC Platform orgtype Organization Type Aerospace / Automotive, Banking, Communication, Community Services, Computers, Construction Consultancy, Consumer, Goods, Defence, Distribution, Electricity, Gas, Water, Electronics,Energy Financial, Property & Business Services, Government, Insurance, Manufacturing, Medical and Health Care, Occupational Health and Safety, Professional Services, Public Administration, Transport & Storage, Wholesale & Retail Trade pacost Package Don't Know, No, Yes Customization lang Language Type 3GL, 4GL, ApG apltype Application Type Advertising/Mailing, Campaign, Corporate Taxation, Data Warehouse, Decision Support System, Inventory Control, Management Information System, Network Management, Office 77
primar Primary Programming Language πίνακας 6.2 Information System, Process Control, RECONCILIATION, System conversion, Technical Information System, Transaction/Production, System, Transportation ACCESS, C, C, VB, C++, COBOL, COBOL II, COOLGEN, EASYTRIEVE, IDEAL, NATURAL, ORACLE, OTHER 4GL, OTHER ApG, PL/I, POWERBUILDER, SQL, TELON, VISUAL BASIC Η πορεία που ακολουθήσαµε, µε αυτά τα δεδοµένα ήταν η εξής: 6.2.2 Για να συµπεριλάβουµε µία µεταβλητή στον υπολογισµό του µοντέλου πρόβλεψης, πρέπει να είναι σηµαντική. Για να διαπιστώσουµε ποιες από τις µεταβλητές που επιλέξαµε είναι σηµαντικές, και εποµένως να µπορούµε να τις συµπεριλάβουµε για την πρόβλεψη του µοντέλου, εφαρµόσαµε την διαδικασία της του SPSS. Σύµφωνα µε αυτήν τη διαδικασία, µία µεταβλητή θεωρείται σηµαντική, όταν η σηµαντικότητά της (significance) είναι µικρότερη ή ίση του 0,05. Αξίζει να σηµειωθεί σε αυτό το σηµείο ότι, οι αριθµητικές µεταβλητές δε χρειάζεται να περάσουν από τη διαδικασία της. Γι αυτόν το λόγο δεν την εφαρµόσαµε στις δύο αριθµητικές µεταβλητές µας (lnfunctionpoints και Year). Αντιθέτως, οι µεταβλητές που περιέχουν χαµένες τιµές, δεν εξαιρούνται από αυτήν τη διαδικασία. Έτσι τα αποτελέσµατα που πήραµε ήταν: 78
για τη µεταβλητή dbms,που περιέχει χαµένες τιµές, έχουµε: Sig. Squares df Square F 116,098 22 5,277 4,094,000 Within 113,444 88 1,289 Total 229,542 110 πίνακας 6.3 Significance=0<<0,005, άρα ή µεταβλητή dbms είναι σηµαντική. για τη µεταβλητή bartype,που περιέχει χαµένες τιµές, έχουµε: Sig. Squares df Square F 112,401 27 4,163 3,128,000 Within 143,715 108 1,331 Total 256,117 135 πίνακας 6.4 Significance=0<<0,005, άρα ή µεταβλητή dbms είναι σηµαντική. για τη µεταβλητή platfr,έχουµε: Squares df Square F Sig.,000 38,916 2 19,458 10,572 Within 274,245 149 1,841 Total 313,161 151 πίνακας 6.5 Significance=0<<0,005, άρα ή µεταβλητή platfr είναι σηµαντική. 79
για τη µεταβλητή orgtype,έχουµε: Squares df Square F Sig.,000 100,224 22 4,556 2,760 Within 212,937 129 1,651 Total 313,161 151 πίνακας 6.6 Significance=0<<0,005, άρα ή µεταβλητή orgtype είναι σηµαντική. για τη µεταβλητή pacost,έχουµε: Squares df Square F Sig.,529 2,210 2 1,105,590 Within 310,951 149 2,087 Total 313,161 151 πίνακας 6.7 Significance=0,590>>0,005, άρα ή µεταβλητή pacost δεν είναι σηµαντική. για τη µεταβλητή lang,έχουµε: Squares df Square F Sig.,000 49,928 2 24,964 14,131 Within 263,233 149 1,767 Total 313,161 151 πίνακας 6.8 Significance=0<<0,005, άρα ή µεταβλητή lang είναι σηµαντική. 80
για τη µεταβλητή apltype,έχουµε: Squares df Square F Sig. 1,257 33,148 13 2,550,247 Within 280,013 138 2,029 Total 313,161 151 πίνακας 6.9 Significance=0,247>>0,005, άρα ή µεταβλητή apltype δεν είναι σηµαντική. για τη µεταβλητή primar,έχουµε: Squares df Square F Sig. 4,962 120,987 17 7,117,000 Within 192,174 134 1,434 Total 313,161 151 πίνακας 6.10 Significance=0<<0,005, άρα ή µεταβλητή primar είναι σηµαντική. 6.2.3 Τελική Επιλογή Μεταβλητών Εποµένως, µετά από την παραπάνω διαδικασία καταλήξαµε στις εξής µεταβλητές που είναι σηµαντικές και θα συµµετέχουν στη δηµιουργία του τελικού µοντέλου µας: 81
Variable dbms bartype lnfunctionpoints year platfr orgtype lang primar Full Name DBMS Used Business Area Type Ln Function Points Implement Date Development Platform Organization Type Language Type Primary Programming Language πίνακας 6.11 6.3 Συγχώνευση Στη Στατιστική ανάλυση δεδοµένων, συχνά χρησιµοποιούµε τη διαδικασία της συγχώνευση τιµών, για τον καλύτερο χειρισµό των µεταβλητών που περιέχουν πολλές διαφορετικές τιµές. Αντιλαµβανόµαστε ότι είναι ευκολότερο να χειριστούµε µία µεταβλητή µε δύο διαφορετικά επίπεδα τιµών από ότι µία µεταβλητή µε ογδόντα ή ακόµα και εκατό διαφορετικά επίπεδα τιµών! Στην περίπτωση της δικής µας εργασίας, επιλέγουµε ως ανώτερο πλήθος κατηγοριών,για κάθε µεταβλητή, να είναι το τέσσερα. Εποµένως, ελέγχουµε τις µεταβλητές, που έχουµε αποφασίσει ότι θα συµµετέχουν στο µοντέλο, όσο αναφορά το πλήθος των κατηγοριών που έχει η καθεµιά. Σε αυτή την περίπτωση, δεν κάνουµε συγχώνευση στις µεταβλητές που είναι αριθµητικές (lnfunctionpoints και Year). Ελέγχουµε λοιπόν τις υπόλοιπες µεταβλητές που έχουµε επιλέξει και αυτές που περιέχουν χαµένες τιµές (dbms και bartype) αλλά και τις υπόλοιπες (platfr, orgtype, lang και primar). Βλέπουµε ότι η µεταβλητές platfr και lang έχουν από τρία διαφορετικά επίπεδα τιµών και εποµένως δεν χρειάζονται συγχώνευση. Οι µεταβλητές όµως dbms, bartype, orgtype και primar περιέχουν πολλές διαφορετικές τιµές. Έτσι, προχωράµε στη διαδικασία της συγχώνευσης µε τη βοήθεια του στατιστικού πακέτου SPSS. Τα αποτελέσµατα της συγχώνευση φαίνονται στον πίνακα 6.12: 82
Variable Platfr orgtype_4 Lang primar_4 dbms_4 bartype_4 Description and levels Development Platform. Levels: 1= MF, 2= MR, 3= PC Organization Type. Levels: 1={Communication, Community Services, Computers, consultancy, Electricity, Gas, Water, Energy, Financial, Property & Business Services, Medical and Health Care, Professional Services}, 2={ Banking, Construction, Electronics, Insurance, Manufacturing, Public Administration}, 3={ Aerospace / Automotive, Distribution, Government, Transport & Storage, Wholesale & Retail Trade}, 4={ Consumer Goods, Defence, Occupational Health and Safety} Language Type. Levels: 1= 3GL, 2= 4GL, 3= ApG Primary Programming Language. Levels: 1={ACCESS, NATURAL, PL/I}, 2={ EASYTRIEVE, IDEAL, ORACLE, POWERBUILDER, SQL, TELON, VISUAL BASIC}, 3={ C, C++, COBOL, OTHER 4GL, OTHER ApG}, 4={ C, VB, COBOL II, COOLGEN} DBMS Used Levels: 1={ ACCESS, ADABAS, MS SQL Server, ORACLE, RDB, WATCOM }, 2={ DATACOM, DB2, DB2/2, IMS, Other, SYBASE, SYBASE }, 3={ ADABAS V5, GUPTA SQL BASIC, IDMS, RDB 6.0, RDMS }, 4={ CA-IDMS, FOXPRO, INTERACTIVE, ORACLE V7, RDB 4-2-1} Business Area Type Levels: 1={ Accounting, Activity Tracking, Claims Processing - Product pays claim, Engineering, Environment, Fine Enforcement, Generate & Distribute Electricity, Research & Development, Sales & Marketing, Telecommunications}, 2={ Architectural, Banking, Financial (excluding Banking), Inventory, Project management & job control}, 3={ Insurance, 83
Legal, Manufacturing, Pension Funds Management, Personnel, Procurement, Provide computer services and IT consultation, Public Administration, Transport/shipping}, 4={ Blood Bank, Chartered Flight Operation, Energy generation, Logistics} πίνακας 6.12 Οι µεταβλητές dbms, bartype, orgtype και primar που συγχωνεύτηκαν, µετονοµάστηκαν σε dbms_4, bartype_4, orgtype_4 και primar_4 αντίστοιχα. 6.4 Ακρίβεια Πρόβλεψης Για να υπολογίσουµε την ακρίβεια πρόβλεψης ενός µοντέλου εκτίµησης κόστους λογισµικού και εποµένως να φτάσουµε σε ένα ασφαλές συµπέρασµα σχετικά µε το ποια µέθοδος έχει την καλύτερη απόδοση στα συγκεκριµένα δεδοµένα, ακολουθείται η εξής διαδικασία: Χωρίζουµε τυχαία το σύνολο δεδοµένων µας σε δύο διαφορετικά σύνολα, στο training dataset και στο test dataset. Το µοντέλο παλινδρόµησης εφαρµόζεται στο training dataset και ελέγχουµε την ακρίβεια πρόβλεψης στο test dataset. Το µέτρο που χρησιµοποιήσαµε για να µετρήσουµε την ακρίβεια προτάθηκε από τον Foss το (2003), ονοµάζεται Standard Deviation (SD) και δίνεται από τον παρακάτω τύπο: SD= ( y ˆ ) 2 i yi (6.1) n 1 όπου, y i και y ˆi, είναι η πραγµατική και η προβλεπόµενη τιµή του effort αντίστοιχα στο σύνολο δεδοµένων µεγέθους n, όπου n ο αριθµός των έργων λογισµικού (projects). Όπως φαίνεται και από τον τύπο, όσο ποιο µικρή είναι η τιµή του SD, τόσο καλύτερο είναι το µοντέλο µας. Η πορεία που ακολουθήσαµε ήταν η εξής: 84
Έχουµε ένα αρχικό σύνολο δεδοµένων µε 152 έργα (project). Το χωρίζουµε σε δύο διαφορετικά υποσύνολα. Στο training dataset µε 137 έργα λογισµικού (projects) και στο test dataset µε 15 projects. Στο test set επιλέγουµε να συµπεριλάβουµε µεταβλητές που δεν περιέχουν χαµένες τιµές. Έπειτα, γεµίζουµε τα κενά των χαµένων τιµών στο training dataset και µε τις 3 µεθόδους (RI, MI, EM) µε την βοήθεια του στατιστικού πακέτου SPSS, ενώ µε την LD απλά απορρίπτουµε τα έργα µε χαµένες παρατηρήσεις. Αφού συµπληρώσαµε το training dataset για πρώτη φορά, εφαρµόσαµε σε αυτό ένα µοντέλο πρόβλεψης µε την βοήθεια της stepwise ordinary least squares (OLS) regression. Οι µεταβλητές που συµµετείχαν στο µοντέλο ήταν οι: orgtype_4, primar_4, dbms_4, bartype_4, lnfunctionpoints, και year. Την διαδικασία αυτή την ακολουθήσαµε για να διαπιστώσουµε ποιες µεταβλητές θα συµπεριλάβουµε στην εκτίµησή µας. Έπειτα επιστρέφουµε στην αρχικό σύνολο δεδοµένων µας µε τα 152 έργα (project). Θέλουµε να γεµίσουµε τα κενά των µεταβλητών που περιέχουν χαµένες τιµές µε τις τρεις µεθόδους (EM, RI, MI). Αυτό που µας ενδιαφέρει όµως είναι οι τιµές που θα δώσουµε στις missing values, να είναι αυτές που τους δόθηκαν όταν έγινε η εφαρµογή των µεθόδων στο training set. Πιο συγκεκριµένα, οι τιµές µε τις οποίες συµπληρώσαµε τα missing values στο training set, είναι αυτές που θέλουµε να πάρουν µέρος στο µοντέλο µας. Έτσι έχουµε συµπληρωµένο το αρχικό σύνολο δεδοµένων µας και µε τις τρεις µεθόδους (EM, RI, MI). Για την περίπτωση της µεθόδου LD απλά απορρίπτουµε τις περιπτώσεις των µεταβλητών που περιέχουν χαµένες τιµές. Στη συνέχεια, εφαρµόζουµε ένα µοντέλο πρόβλεψης για την καθεµιά µέθοδο. Οι µεταβλητές που συµµετείχαν στο µοντέλο µας ήταν οι orgtype_4, primar_4, dbms_4, bartype_4, lnfunctionpoints, και year. Σε αυτό το σηµείο θα πρέπει να αναφέρουµε ότι και για τα τέσσερα µοντέλα µας χρησιµοποιήσαµε τις ίδιες ανεξάρτητες µεταβλητές (orgtype_4, primar_4, dbms_4, bartype_4, lnfunctionpoints, και year) έτσι ώστε να διατηρηθεί µία ισορροπία στη µελέτη µας και για να υπάρχει κοινή βάση σύγκρισης. Η πρόσθεση ή αφαίρεση µεταβλητών θα έκανε δύσκολη την ανάλυση και την ερµηνεία των αποτελεσµάτων. 85
6.5 Συµπεράσµατα Αποτελέσµατα Στο επόµενο βήµα, υπολογίσαµε τον όρο SD (Standard Deviation) για την κάθε µία µέθοδο. Στον υπολογισµό του SD λάβαµε υπόψη µας µόνο τα 15 έργα (projects) του test set. Τα αποτελέσµατα που πήραµε ήταν τα εξής: MDT (Missing Data Techniques) SD (Standard Deviation) MI ( Imputation) 1828,65729 EM (Expectation Maximization) 1840,92243 RI (Regression Imputation) 1921,07467 LD (Listwise Deletion) 2982,45478 πίνακας 6.13 Όπως παρατηρούµε από τα αποτελέσµατα στα συγκεκριµένα δεδοµένα η καλύτερη µέθοδος είναι αυτής της Imputation (MI) ακολουθεί µε µικρή διαφορά η Expectation Maximization (EM) και η Regression Imputation (RI), ενώ η Listwise Deletion (LD) έρχεται τελευταία και µε µεγάλη διαφορά από τις υπόλοιπες. Στην προσπάθεια µας να διαπιστώσουµε αν τα αποτελέσµατα που πήραµε ήταν σωστά και ότι η MI ( Imputation) είναι η καλύτερη µέθοδος στο συγκεκριµένο σύνολο δεδοµένων µας, δοκιµάσαµε επάνω στα ίδια test και training set να χειριστούµε τις µεταβλητές µας που περιέχουν χαµένες τιµές (dbms, και bartype) χωρίς να τις κάνουµε συγχώνευση. Ακολουθήσαµε λοιπόν την ίδια διαδικασία και τα αποτελέσµατα για το SD που πήραµε ήταν τα εξής: MDT (Missing Data Techniques) SD (Standard Deviation) MI ( Imputation) 1415,474582 EM (Expectation Maximization) 1463,425098 RI (Regression Imputation) 1492,218893 LD (Listwise Deletion) 3372,422666 πίνακας 6.14 86
Όπως παρατηρούµε, τα αποτελέσµατα που πήραµε κυµαίνονται στα ίδια επίπεδα. Σε αυτή την περίπτωση, επίσης έχουµε ως καλύτερη µέθοδο την MI. Υποθέτουµε ότι αυτό συµβαίνει γιατί τα δεδοµένα που έχουµε στην βάση που χρησιµοποιήσαµε, είναι πραγµατικά missing, δηλαδή πάρθηκαν από πραγµατικές περιπτώσεις και δεν ήµασταν σε θέση να εντοπίσουµε τον µηχανισµό κάτω από τον οποίο εµφανίζονταν οι χαµένες τιµές. Γνωρίζουµε ότι η ΜΙ είναι µία γενικά απλή και εύκολη µέθοδος που αποδίδει σωστά αποτελέσµατα ειδικά, όταν έχουµε να κάνουµε µε έγκυρα δεδοµένα που είναι κατανεµηµένα φυσιολογικά. Οι Anderson, Basilevsky and Hum λένε χαρακτηριστικά για την συγκεκριµένη µέθοδο: «Στις περιπτώσεις φυσιολογικής κατανοµής των δεδοµένων το δείγµα των µέσων όρων µας παρέχει µία ικανοποιητική εκτίµηση για την τιµή που απουσιάζει» Επιπλέον οι Ingunn Myrtveit, Eric Stensrud και Ulf Olsson, αναφέρουν χαρακτηριστικά στην εργασία τους (November 2001): «υστυχώς δεν είναι εύκολο να διαπιστώσουµε αν ο µηχανισµός εµφάνισης των δεδοµένων σε µία βάση δεδοµένων είναι MCAR ή MAR. Το µόνο που µπορούµε να κάνουµε είναι να παρατηρούµε οπτικά την κατανοµή των δεδοµένων.» Για την περίπτωση της ΜΙ( Imputation) γνωρίζουµε ότι έχει πολύ καλά αποτελέσµατα στην περίπτωση που ο µηχανισµός εµφάνισης των χαµένων τιµών είναι MCAR (Missing completely at random). Εποµένως στην περίπτωση των δικών µας δεδοµένων µπορούµε να υποθέσουµε ότι ο µηχανισµός εµφάνισης των χαµένων τιµών είναι MCAR. 87