Περιεχόμενα. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 1

Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών ΗΥ463 Συστήματα Ανάκτησης Πληροφοριών Χειμερινό Εξάμηνο

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Δημιουργία μιας εφαρμογής Java με το NetBeans

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Τεκμηρίωση Tetravex i. Τεκμηρίωση Tetravex

Αναζήτηση στον Ιστό. Πληκτρολόγηση του URL: στο πλαίσιο αναζήτησης του Mozilla Firefox. Enter ή κλικ στο Αναζήτηση

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

Open eclass Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Ελεύθερο Λογισμικό. Η αρχή της ιστορίας Κιαγιαδάκης Γιώργος (το labάκι)

Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6 i. Εγχειρίδιο της εφαρμογής αναπαραγωγής CD V2.6

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Εργαστήριο Βάσεων Δεδομένων

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Οδηγός Ιδιοτήτων GStreamer V2.4

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

ΛΟΓΙΣΜΙΚΟ ΠΡΟΣΟΜΟΙΩΣΗΣ ANYLOGIC

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Σεμινάριο Wordpress CMS (Δημιουργία Δυναμικών Ιστοσελίδων)

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

PortSip Softphone. Ελληνικά Ι English 1/20

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

28η Συνάντηση Εκπαιδευτικών Δυτικής Μακεδονίας στις ΤΠΕ Φλώρινα 7/4/2013. To wordpress εγκατάσταση στο ΠΣΔ

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Ένωση Ελλήνων Χρηστών και Φίλων ΕΛ/ΛΑΚ

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Εισαγωγή στο περιβάλλον Code::Blocks

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Θερινό Σχολείο, Ιουλίου Εισαγωγή στο. Αχιλλέας Πιπινέλης. Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας

The Simply Typed Lambda Calculus

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Οδηγός Χρήσης Εργαστηρίων UNIX (LINUX) B103 και 103 και απομακρυσμένης πρόσβασης με την χρήση X2Go

Διαχείριση Βάσης Δεδομένων (dbadmin)

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Εισαγωγή στην Python. Διάλεξη 0

«ΨΥΧΙΚΗ ΥΓΕΙΑ ΚΑΙ ΣΕΞΟΥΑΛΙΚΗ» ΠΑΝΕΥΡΩΠΑΪΚΗ ΕΡΕΥΝΑ ΤΗΣ GAMIAN- EUROPE

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ.

Δομημένος Προγραμματισμός

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI

Σχεδιασμός Βάσεων Δεδομένων

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

3. Προσομοίωση ενός Συστήματος Αναμονής.

Όλοι οι χρήστες του Turnitin πρέπει να δημιουργήσουν ένα προφίλ χρήστη.

Simulation Parameters. Behavioural model fixed parameters (BMFixed)

O7: Πρόγραμμα Κατάρτισης Εκπαιδευτικών O7-A1: Αναπτύσσοντας εργαλεία για το Πρόγραμμα Κατάρτισης Εκπαιδευτικών

Διαχείριση Έργων Πληροφορικής Εργαστήριο

Subversion. Τριγάζη Ελισάβετ. Επιβλέπων: Μηνάς Δασυγένης

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) Αθήνα, 16 Μαρτίου Εισαγωγή

Βασικές Έννοιες Ηλεκτρονικού Ταχυδρομείου

1. ΕΙΣΑΓΩΓΗ ΣΤΟ GRASS GIS 1.1. ΤΙ ΕΙΝΑΙ ΤΟ GRASS GIS ;

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

Vodafone Business Connect

Μια καλή επιλογή θα ήταν (χωρίζοντας τις λέξεις με παύλα -) ή

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ

E-LIS: E-prints για τη Βιβλιοθηκονομία και την Επιστήμη της Πληροφόρησης (ΒΕΠ)

Λογισμική Εφαρμογή Διαχείρισης Ερωτηματολογίων ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε

2. Για να δημιουργήσουμε το πρώτο ή κάθε νέο Backup set πατάμε στο εικονίδιο και εμφανίζεται ο Wizard του Backup set

Η γλώσσα προγραμματισμού C

1 ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΑΣ ΓΕΩΠΟΝΙΑΣ - ΤΜΗΜΑ ΦΥΤΙΚΗΣ ΠΑΡΑΓΩΓΗΣ

How to register an account with the Hellenic Community of Sheffield.

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

MathDebate Οδηγός για διαχειριστές

Βασικές Έννοιες Web Εφαρμογών

ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ

Management School School Profile Save

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝΩ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ

Αθήνα, Απρίλιος 2018 ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΟΙΚΟΝΟΜΙΚΩΝ

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ.

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Document Scanning System Ιανουάριος, 2014

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Εγχειρίδιο του εργαλείου σχεδίασης διεπαφών Glade i. Εγχειρίδιο του εργαλείου σχεδίασης διεπαφών Glade

BHMATA ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ ΣΤΟ 3S/I.T.P.

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4»

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού

Το πρόγραμμα συγχρηματοδοτείται 75% από το Ευρωπαϊκό κοινωνικό ταμείο και 25% από εθνικούς πόρους.

ΕΠΕΞΕΡΓΑΣΙΑ ΒΙΝΤΕΟ ΜΕ ΤΟ ΠΡΟΓΡΑΜΜΑ VSDC FREE VIDEO EDITOR

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας.

Γιατί OpenOffice;;; (2)

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Κεφάλαιο 4: Λογισμικό Συστήματος

Transcript:

Περιεχόμενα Κεφάλαιο 1 - Το Ελεύθερο Λογισμικό / Λογισμικό Ανοιχτού Κώδικα...2 1. Το Ίδρυμα Ελεύθερου Λογισμικού (The Free Software Foundation)...3 2. Η Πρωτοβουλία Ανοιχτού Κώδικα (Open Source Initiative)...4 3. Διαφορά Ελεύθερου Λογισμικού από Λογισμικό Ανοιχτού Κώδικα...5 Κεφάλαιο 2 Το Μοντέλο Προσομοίωσης...6 1. Περιγραφή του μοντέλου...7 Ορισμοί...7 Εξισώσεις...7 1ο σύνολο εξισώσεων...8 Εξίσωση 1.1 : Υπολογισμός της E(t)...8 Εξίσωση 1.2 : Υπολογισμός του αριθμού των εργασιών που ξεκίνησαν για κάθε τύπο εργασίας και για κάθε project module...9 2ο σύνολο εξισώσεων...11 3ο σύνολο εξισώσεων...12 2. Κατάσταση Υλοποίησης Σε Η/Υ...13 Κεφάλαιο 3 Συλλογή Πραγματικών Δεδομένων...16 1. Το CVS (Concurrent Versions System)...16 2. Το CVSAnalY...18 3. Το CVSAnalY-DBExport...23 Κεφάλαιο 4 Προσομοίωση & Σύγκριση Αποτελεσμάτων...27 1. Το XMMS Project (X MultiMedia System)...29 2. Ο Mplayer (Movie Player For Linux)...37 3. Παρατηρήσεις & Συμπεράσματα...43 Παράρτημα Ι Πηγαίος Κώδικας του CVSAnalY-DBExport...44 Παράρτημα ΙI Η άδεια χρήσης GPL...61 Παράρτημα ΙII Αναλυτικά Αποτελέσματα...72 1. Εξέλιξη στο χρόνο για το XMMS Project. (Πραγματικά Δεδομένα)...72 2. Εξέλιξη στο χρόνο για τον Mplayer. (Πραγματικά Δεδομένα)...85 3. Αποτελέσματα προσομοίωσης 2000 ημερών για το XMMS Project...120 4. Αποτελέσματα προσομοίωσης 1500 ημερών για τον Mplayer...127 Βιβλιογραφία...132 Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 1

Κεφάλαιο 1 - Το Ελεύθερο Λογισμικό / Λογισμικό Ανοιχτού Κώδικα Το Ελεύθερο Λογισμικό / Λογισμικό Ανοιχτού Κώδικα ( για συντομία ΕΛ/ΛΑΚ) στηρίζεται στη βασική αρχή ότι ο πηγαίος κώδικας του λογισμικού πρέπει να είναι διαθέσιμος στο κοινό. Τα έργα ΕΛ/ΛΑΚ αποτελούνται από ένα κεντρικό πρόσωπο ή μια κεντρική ομάδα προγραμματιστών που αναπτύσσουν τοπικά το κεντρικό τμήμα του και στη συνέχεια το δημοσιεύουν στο διαδίκτυο. Στη συνέχεια άλλοι προγραμματιστές μπορούν να μελετούν, να αναδιανέμουν και να τροποποιούν τον πηγαίο κώδικα. Η εξέλιξη ενός τέτοιου έργου πραγματοποιείται με υπερβολικά γρήγορο ρυθμό εφόσον στην ανάπτυξή του συμμετέχουν εκατοντάδες ή χιλιάδες εθελοντές προγραμματιστές. Δεν υπάρχει ρητή κατανομή εργασιών ούτε γενικός σχεδιασμός ή πλάνο και ο καθένας αναλαμβάνει να ασχοληθεί με το κομμάτι που τον ενδιαφέρει. Παρά την έλλειψη της οργανωμένης εργασίας και του γενικού σχεδίου η ποιότητα των αποτελεσμάτων είναι ισάξια ή ακόμα και ανώτερη των λογισμικών που αναπτύσσονται με παραδοσιακούς τρόπους. Τα πιο τρανταχτά παραδείγματα είναι το λειτουργικό σύστημα Linux, ο εξυπηρετητής ιστοσελίδων Apache και ο περιηγητής ιστοσελίδων Mozilla τα οποία έχουν γνωρίσει μεγάλη διάδοση και εμπορική επιτυχία. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 2

1. Το Ίδρυμα Ελεύθερου Λογισμικού (The Free Software Foundation) Το Ίδρυμα Ελεύθερου Λογισμικού, ιδρυμένο το 1985, είναι αφοσιωμένο στην προώθηση των δικαιωμάτων των χρηστών ηλεκτρονικού υπολογιστή για χρήση, μελέτη, αντιγραφή, τροποποίηση και αναδιανομή προγραμμάτων υπολογιστή. Το Ίδρυμα προωθεί την ανάπτυξη και χρήση του ελεύθερου λογισμικού, συγκεκριμένα το λειτουργικό σύστημα GNU. Το ίδρυμα επίσης βοηθάει στην ενημέρωση για τα ηθικά και πολιτικά θέματα που αφορούν την ελευθερία στη χρήση λογισμικού. Τα τρέχοντα project του ιδρύματος είναι τα εξής: GNU Το Ίδρυμα Ελεύθερου Λογισμικού παραμένει ο βασικός υποστηρικτής του GNU Project. Εκτός από τις υπηρεσίες που παρέχονται από τη Savannah για τα GNU projects, το ίδρυμα παρέχει συστήματα ανάπτυξης για συντηρητές GNU λογισμικού, συμπεριλαμβανομένων πλήρη υπηρεσιών email και πρόσβασης μέσω shell. Έχει δεσμευτεί να προάγει την ανάπτυξη του λειτουργικού συστήματος GNU και να καθιστά ικανούς εθελοντές ώστε να συνεισφέρουν εύκολα στη δουλειά αυτή. Εργαστήριο κατασκευής άδειας χρήσης Ελεύθερου Λογισμικού και Συμμόρφωσης σε αυτή. Η έναρξη του GNU project το 1984, που στόχο είχε να δώσει στους χρήστες ελευθερία, απαιτούσε την καθιέρωση νέων όρων διανομής οι οποίοι θα προστάτευαν τα projects ώστε να μην μετατραπούν σε ιδιόκτητο λογισμικό. Η μέθοδος που χρησιμοποιήθηκε ήταν η Copyleft και η άδεια που προέκυψε ονομάστηκε GNU General Public License (GNU GPL). Σήμερα η GNU GPL είναι η περισσότερο χρησιμοποιούμενη άδεια Ελεύθερου Λογισμικού και ο συγγραφέας της, το Ίδρυμα Ελεύθερου Λογισμικού, εργάζεται στην εξάπλωση της χρήσης και κατανόησης της από την κοινότητα. Κατάλογος Ελεύθερου Λογισμικού Ο Κατάλογος Ελεύθερου Λογισμικού ξεκίνησε το Σεπτέμβρη του 1999 να καταγράφει όλα τα χρήσιμα ελεύθερα λογισμικά που τρέχουν σε ελεύθερα λειτουργικά συστήματα.. Ο Κατάλογος περιέχει πάνω από 3,000 εγγραφές. Πρόσφατα, το Ίδρυμα ανέπτυξε συνεργασία με τη UNESCO για να ενώσει τον Κατάλογο Ελεύθερου Λογισμικού με το portal Ελεύθερου Λογισμικού της UNESCO. Savannah H Savannah παρέχει υπηρεσίες ανάπτυξης λογισμικού σε μηδενικό κόστος στους Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 3

προγραμματιστές ελεύθερου λογισμικού από όλο τον κόσμο. Η Savannah διαθέτει ένα διαδικτυακό διαχειριστικό περιβάλλον για φιλοξενία και συντήρηση ιστοσελίδων των project, ανίχνευση ελαττωμάτων, CVS, FTP και λίστες ηλεκτρονικού ταχυδρομείου. Όλες οι παρεχόμενες υπηρεσίες είναι στημένες αποκλειστικά σε ελεύθερο λογισμικό χωρίς διαφημίσεις και για όλη την κοινότητα. 2. Η Πρωτοβουλία Ανοιχτού Κώδικα (Open Source Initiative) H Πρωτοβουλία Ανοιχτού Κώδικα (OSI) είναι μία μη κερδοσκοπική δραστηριότητα αφοσιωμένη στη διαχείριση και προώθηση του Ορισμού Ανοιχτού Κώδικα (Open Source Definition) προς όφελος της κοινότητας. Συγκεκριμένα παρέχει πιστοποίηση σε λογισμικά Ανοιχτού Κώδικα έτσι ώστε ο καθένας να είναι σίγουρος ότι το πιστοποιημένο λογισμικό είναι πραγματικά Λογισμικό Ανοιχτού Κώδικα και εγκρίνει τις άδειες χρήσης που είναι έγκυρες άδειες Ανοιχτού Κώδικα. Η βασική ιδέα πίσω από τον Ανοιχτό Κώδικα είναι πολύ απλή: Όταν οι προγραμματιστές μπορούν να μελετούν, να αναδιανέμουν και να τροποποιούν τον πηγαίο κώδικα ενός τμήματος λογισμικού, τότε το λογισμικό εξελίσσεται. Ο ενεργός κόσμος το βελτιώνει, το προσαρμόζει, διορθώνει ελαττώματα και όλη η διαδικασία εκτυλίσσεται σε υπερβολικά γρήγορους ρυθμούς. Η κοινότητα Ανοιχτού Κώδικα έχει μάθει ότι η ραγδαία διαδικασία εξέλιξης παράγει καλύτερο λογισμικό από τα παραδοσιακά κλειστά μοντέλα, στα οποία μόνο λίγοι προγραμματιστές έχουν πρόσβαση στον πηγαίο κώδικα και όλοι οι άλλοι πρέπει να χρησιμοποιήσουν τυφλά μια αδιαφανή συλλογή από bits. Η Πρωτοβουλία Ανοιχτού Κώδικα υπάρχει για να αποτελεί παράδειγμα στον εμπορικό κόσμο. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 4

3. Διαφορά Ελεύθερου Λογισμικού από Λογισμικό Ανοιχτού Κώδικα Ενώ σε πρακτικό επίπεδο το Λογισμικό Ανοιχτού Κώδικα και το Ελεύθερο Λογισμικό συχνά μοιράζονται τις ίδιες άδεις χρήσης, σύμφωνα με το Ίδρυμα Ελεύθερου Λογισμικού, το κίνημα του Ανοιχτού Κώδικα είναι φιλοσοφικά διαφορετικό από το κίνημα Ελεύθερου Λογισμικού. Ο ορισμός για το Ελεύθερο Λογισμικό του Ιδρύματος είναι περισσότερο περιοριστικός από τον Ορισμό Ανοιχτού Κώδικα. Κάθε ελεύθερο Λογισμικό είναι Λογισμικό Ανοιχτού Κώδικα.. Θεωρητικά το Λογισμικό Ανοιχτού Κώδικα μπορεί να είναι και να μην είναι «Ελεύθερο» αλλά στην πραγματικότητα σχεδόν όλες οι άδειες Ανοιχτού Κώδικα ικανοποιούν το ορισμό του Ελεύθερου Λογισμικού. Η διαφορά είναι περισσότερο ζήτημα φιλοσοφικής έμφασης. Το κίνημα του ελεύθερου λογισμικού δίνει έμφαση στις ηθικές απόψεις του λογισμικού και βλέπει την τεχνική υπεροχή ως επιθυμητή ανά προϊόν, εφόσον διαθέτει το κατάλληλο ηθικό επίπεδο. Το κίνημα του ανοιχτού κώδικα από την άλλη βλέπει την τεχνική υπεροχή ως τον τελικό στόχο και την διανομή του πηγαίου κώδικα ως μέσο για την κατάκτησή του. Αφού η Πρωτοβουλία Ανοιχτού Κώδικα εγκρίνει μόνο άδειες που είναι συμβατές με τον ορισμό της για τον Λογισμικό Ανοιχτού Κώδικα, οι περισσότεροι το παρερμηνεύουν και ταυτίζουν τους όρους «Ανοιχτός Κώδικας» με «Ελεύθερο Λογισμικό». Ενώ ο όρος «Ανοιχτός Κώδικας» αφαιρεί την αμφιβολία της έλλειψης ελευθερίας έναντι της τιμής, εισάγει μια άλλη. Κάποια προγράμματα που ικανοποιούν τον Ορισμό Ανοιχτού Κώδικα και δίνουν στους χρήστες την ελευθερία να επέμβουν σε αυτά ή προγράμματα που απλά έχουν τον κωδικά τους διαθέσιμο, έχουν μεγάλους περιορισμούς στη χρήση του κώδικά τους. Οι περισσότεροι άνθρωποι μπορεί να θεωρούν ότι οποιοδήποτε λογισμικό έχει τον πηγαίο κωδικά του διαθέσιμο είναι και «ανοιχτού κώδικα». Όμως το μεγαλύτερο τμήμα αυτών των λογισμικών δεν δίνει στους χρήστες την ελευθερία να δημοσιεύσουν τις τροποποιήσεις τους, περιορίζει την εμπορική εκμετάλλευσή του και γενικότερα περιορίζει τα δικαιώματα των χρηστών. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 5

Κεφάλαιο 2 Το Μοντέλο Προσομοίωσης Στο παρόν κεφάλαιο παρουσιάζεται το μοντέλο προσομοίωσης της διαδικασίας ανάπτυξης των έργων ΕΛ/ΛΑΚ. Η συγκεκριμένη μορφή του μοντέλου περιγράφηκε από τον Ι. Αντωνιάδη το 2005 και αποτελεί την δεύτερη εκδοσή του (η πρώτη δημοσιεύτηκε το 2003). Στόχος της προσομοίωσης είναι η πρόβλεψη της μελλοντικής εξέλιξης ενός project και η πρόγνωση της επιτυχίας η αποτυχίας του. Επίσης το μοντέλο θα μπορεί να χρησιμοποιηθεί και ως εργαλείο λήψης αποφάσεων. Για παράδειγμα αν προβλεφθεί ότι με τον ρυθμό διόρθωσης ελαττωμάτων ή ρυθμό κυκλοφορίας νέων εκδόσεων θα δημιουργηθεί μια δυσάρεστη μελλοντική κατάσταση, ένας παράγοντας του project θα προβεί στις κατάλληλες ενέργειες για να την αποτρέψει. Ακολουθεί σύντομη περιγραφή του μοντέλου προσομοίωσης. Για περισσότερες λεπτομέρειες υπάρχει αναλυτική περιγραφή στη δημοσίευση του Ι. Αντωνιάδη (2005). Στη συνέχεια του κεφαλαίου παρουσιάζεται η διαθέσιμη εφαρμογή του μοντέλου σε Η/Υ και δίνονται κάποιες οδηγίες για τη χρήση της. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 6

1. Περιγραφή του μοντέλου Ορισμοί Project modules : Ένα project module αποτελεί μια συλλογή αρχείων πηγαίου κώδικα τα οποία έχουν τις ίδιες γενικές προδιαγραφές. Εργασίες του Project : Εργασίες ενός Project είναι οι διάφορου τύπου ενέργειες που μπορούν να εκτελεστούν από την ανθρώπινη μεριά, με σκοπό την ανάπτυξη και την έκδοση ενός project ή τμημάτων του. Ως τέτοιες ενέργειες θεωρούνται οι παρακάτω : 1. Σχεδιασμός και υποβολή της πρώτης έκδοσης ενός νέου module. Αυτή η εργασία ονομάζεται «υποβολή νέου module» και όλες οι ποσότητες που σχετίζονται δεικτοδοτούνται με το δείκτη S. Η εργασία αυτή μπορεί να αναφέρεται και σε περιπτώσεις υποβολής ενός εναλλακτικού ή βελτίωσης ενός ήδη υπάρχοντος (παλιού) module. 2. Διόρθωση ελαττωμάτων τα οποία έχουν προηγουμένως αναφερθεί για ένα συγκεκριμένο αρχείο. Η εργασία ονομάζεται «αποσφαλμάτωση» και όλες οι ποσότητες που σχετίζονται με αυτή δεικτοδοτούνται με το δείκτη B. 3. Δοκιμή ενός αρχείου πηγαίου κώδικα και αναφορά ελαττωμάτων. Η εργασία ονομάζεται «δοκιμή» και και όλες οι ποσότητες που σχετίζονται με αυτή δεικτοδοτούνται με το δείκτη T. 4. Προσθήκη λειτουργικότητας και/ή βελτίωση ενός υπάρχοντος αρχείου πηγαίου κώδικα. Η εργασία ονομάζεται «λειτουργική βελτίωση» και και όλες οι ποσότητες που σχετίζονται με αυτή δεικτοδοτούνται με το δείκτη F. Εξισώσεις Για την ποσοτικοποίηση της παραπάνω δυναμικής διαδικασίας χρησιμοποιούνται τρία βασικά σύνολα εξισώσεων : 1ο σύνολο εξισώσεων : Υπολογίζει τον αριθμό των εργασιών που αρχικοποιήθηκαν την ημέρα t του project, για κάθε τύπο εργασίας και για κάθε project module. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 7

2ο σύνολο εξισώσεων : Υπολογίζει την ακριβή έξοδο κάθε εργασίας (αριθμό γραμμών κώδικα, αριθμό ελαττωμάτων, διορθώσεις ελαττωμάτων κτλ.) ολοκληρωθεί. 3ο σύνολο εξισώσεων : Υπολογίζει τη χρονική περίοδο που απαιτείται από κάθε εργασία για να 1ο σύνολο εξισώσεων Εξίσωση 1.1 : Υπολογισμός της E(t) Υποθέτουμε ότι ο αριθμός των ατόμων E(t) που διστακτικά αποφασίζουν να συνεισφέρουν στο project, ξεκινώντας την ημέρα t, εξαρτάται από (i) τη «συνολική ποιότητα» του project και (ii) το προφίλ των προγραμματιστών, οι οποίοι είτε έχουν εργαστεί στο συγκεκριμένο project πριν από την ημέρα t, είτε είναι εντελώς νέοι σε αυτό. Η «συνολική ποιότητα» του project προσδιορίζεται από όλους τους συγκεκριμένους για το project παράγοντες που υποκινούν το ενδιαφέρον των αναμενόμενων προγραμματιστών, οδηγώντας τους να αποφασίσουν να αφιερώσουν προσωπική προσπάθεια και χρόνο σε οποιαδήποτε συνεισφορά. Λαμβάνοντας υπόψη αυτούς τους παράγοντες, ο χρονικά-εξαρτημένος παράγοντας συνολικής ποιότητας Q(t) ορίζεται ως Q t = { 1 log 10 Q 1 t Q 0,Q 1 1 Q 0 1 10 Q 0Q 1 t,q 1 1 } Q 1 t =w R R t w L ΔL t w A A t J t (1) όπου R(t) η ποσοστιαία αύξηση ανά μονάδα χρόνου στις γραμμές κώδικα, από την τελευταία έκδοση προς την προηγούμενή της, <ΔL(t)> ο αθροιστικά προς το χρόνο μέσος ρυθμός αλλαγών στις συνολικές Γραμμές Κώδικα στην υπό ανάπτυξη έκδοση από μέρα σε μέρα, <A(t)> η αθροιστικά προς το χρόνο μέση δραστηριότητα στο project, η οποία ορίζεται ως ο συνολικός αριθμός εργασιών που τερματίστηκαν την ημέρα t και J(t) ο «παράγοντας ώθησης ενδιαφέροντος», ο οποίος είναι μηδέν για όλα τα t εκτός των ημερών που παρατηρείται μια επιπλέον ώθηση ενδιαφέροντος. Οι Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 8

Q 0, w R, w L και w A είναι χρονοαμετάβλητες, συγκεκριμένες για το project παράμετροι που προσδιορίζουν την βαθμονόμηση του Q(t) για ένα συγκεκριμένο project ελεύθερου λογισμικού. Εκτός από τη «συνολική ποιότητα» του project (Q(t)) ο αριθμός των ατόμων που δείχνει ένα ενδιαφέρον να ξεκινήσει μια εργασία εξαρτάται κι από το προφίλ του προγραμματιστή. Οι συνεισφέροντες στο project χωρίζονται σε δυο κατηγορίες : τους «βασικούς» (core) συνεισφέροντες και τους «κανονικούς» (normal) συνεισφέροντες. Θεωρείται ότι μέχρι κάποιο προκαθορισμένο αριθμό άνθρωπο-ημερών S 0 που έχουν ξοδευτεί για το project από οποιοδήποτε συνεισφέροντα, το ενδιαφέρον αυξάνεται, ενώ πέρα από αυτό τον αριθμό S S 0 το ενδιαφέρον μειώνεται. Βασιζόμενοι στα παραπάνω, η E(t) δίνεται από την παρακάτω εξίσωση : E t =Q t Λ t N ' core t (2) όπου N ' core ο αριθμός των διαθέσιμων βασικών προγραμματιστών την ημέρα t και Λ(t) ο παράγοντας που υπολογίζει τη μεταβολή στο ενδιαφέρον του προγραμματιστή σύμφωνα με το χρόνο που έχει ξοδέψει σε παλιότερες συνεισφορές. Οι βασικοί προγραμματιστές θεωρούνται ότι δείχνουν πάντα το ίδιο ενδιαφέρον για το project ανεξάρτητα από την ποιότητά του και τις παλιότερες συνεισφορές τους. Για τον υπολογισμό της E(t) τη χρονική στιγμή t=t 0, όπου t 0 η πρώτη ημέρα μετά από την εφαρμογή της προσομοίωσης, απαιτείται η συνθήκη Q 1 όταν t=t 0 και υποθέτοντας ότι χρησιμοποιούνται οι πρώτες t 0 ημέρες ενός πραγματικού project, υπολογίζονται οι παράμετροι της Q(t) που αναφέρθηκαν προηγουμένως. Για να επιτευχθεί αυτό ορίζουμε E t 0 =N 0, όπου Ν 0 ο μέσος αριθμός των εργασιών που πραγματικά εκτελέστηκαν ανά ημέρα, όπως μετρήθηκαν τις πρώτες t 0 ημέρες του project. Στη συνέχεια εκτελείται η προσομοίωση από t=0 και διορθώνονται τα Q 0, w R, w L και w A έτσι ώστε τα αποτελέσματα της προσομοίωσης να ταιριάζουν όσο το δυνατόν περισσότερο με τα πραγματικά αποτελέσματα για τις πρώτες t 0 ημέρες. Εξίσωση 1.2 : Υπολογισμός του αριθμού των εργασιών που ξεκίνησαν για κάθε τύπο εργασίας και για κάθε project module. Δηλώνοντας με τον ανώτερο δείκτη j=s,b,t,f τον τύπο της εργασίας, με τον πρώτο χαμηλότερο δείκτη i=1,2,..m το συγκεκριμένο project module και με τον δεύτερο χαμηλότερο Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 9

δείκτη k=1,2,..., S i τις πιθανές εναλλαγές του module i στο οποίο ένα άτομο μπορεί να συνεισφέρει, τότε ορίζεται P j ik t ως ο αριθμός των εργασιών που πραγματικά ξεκίνησαν για το module i, το εναλλακτικό k (του module i) και την εργασία τύπου j την ημέρα t. Η ακόλουθη εξίσωση υπολογίζει τα P j ik t για κάθε ημέρα t του project : P ik j t E t =I ik j t I ik j t p,q,r j,i, k γ p qr t (3) όπου I ik j ο παράγοντας συνολικού ενδιαφέροντος για την εργασία τύπου j, το module i, το εναλλακτικό k και ορίζεται ως εξής : I ik j Γ ik j γ ik j (4) όπου Γ j ik t οι παράγοντες αύξησης ενδιαφέροντος και γ j ik t οι παράγοντες μείωσης ενδιαφέροντος για τις εργασίες τύπου j, module i και εναλλακτικού k τη χρονική στιγμή t. Επίσης ο παράγοντας Γ j ik t είναι ανάλογος του Α j i t και ο παράγοντας γ j ik t είναι ανάλογος των Α i j j j και α i. Το Α i ονομάζεται «αρχικό ενδιαφέρον» για τον τύπο εργασίας J στο module i και ορίζεται ως το ποσοστό των ατόμων που επιλέγουν τη συγκεκριμένη εργασία και module σε σχέση j με το σύνολο όλων των συντελεστών του συγκεκριμένου project. To α i ονομάζεται «συντελεστής μείωσης αρχικού ενδιαφέροντος» και ορίζεται ως το μεγαλύτερο κλάσμα του σχετικού αρχικού ενδιαφέροντος Α i j που μπορεί να χαθεί από τους αναμενόμενους συνεισφέροντες, ύστερα από εξέταση της ανάπτυξης του τύπου εργασίας στο module. Η βασική υπόθεση για την εξίσωση (3) είναι ότι μια αναλογία των χρηστών που απορρίπτουν εργασίες διαφορετικές από τις j,i,k στρέφονται τελικά προς τις εργασίες j,i,k με πιθανότητα ανάλογη προς το συνολικό ενδιαφέρον για την εργασία j,i,k. Οι τιμές των Γ και γ κανονικοποιούνται κατάλληλα έτσι ώστε το άθροισμα όλων των εργασιών που πραγματικά ξεκινούν την ημέρα t για όλους τους τύπους εργασιών, τα modules και τα εναλλακτικά modules του project, να είναι όσο το δυνατόν περισσότερο ίσο με την E(t). Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 10

2ο σύνολο εξισώσεων Το 2ο σύνολο εξισώσεων υπολογίζει τις απελευθερωμένες ποσότητες για κάθε μια εργασία που έχει ξεκινήσει βγάζοντας συμπέρασμα από κατανομές πιθανοτήτων. Χρησιμοποιούνται λογαριθμικές συναρτήσεις κανονικής κατανομής, εφόσον οι σχετικές ποσότητες είναι όλες θετικές. Οι ακόλουθες χρονοαμετάβλητες,συγκεκριμένες για το project ποσότητες πρέπει να παρέχονται ως αρχικές είσοδοι στο μοντέλο προσομοίωσης : L i S,σ Li S : Η μέση τιμή και η τυπική απόκλιση του αριθμού των Γραμμών Κώδικα που προστέθηκαν ως αρχική συνεισφορά για ένα νέο module, εναλλακτικό του module i, το οποίο εμφανίζεται στην υπό ανάπτυξη έκδοση. L i F,σ Li F : Η μέση τιμή και η τυπική απόκλιση του αριθμού των Γραμμών Κώδικα που προστέθηκαν σε κάθε συνεισφορά λειτουργικής βελτίωσης (αναβάθμιση) ενός υπάρχοντος αρχείου πηγαίου κώδικα του module i. d i, σ d i : Η μέση τιμή και η τυπική απόκλιση της αρχικής πυκνότητας ελαττωμάτων αρχείου πηγαίου κώδικα (αριθμός ελαττωμάτων ανά Γραμμή Κώδικα) γραμμένο και καταχωρημένο από έναν συνεισφέροντα για το module i. T i, σ T i : Η μέση τιμή και η τυπική απόκλιση του εκτιμώμενου κλάσματος των πραγματικών ελαττωμάτων σε ένα αρχείο πηγαίου κώδικα του module i τα οποία έχουν αναφερθεί από έναν συνεισφέροντα που έχει αναλάβει μια εργασία δοκιμής. 3ο σύνολο εξισώσεων Ο χρόνος παράδοσης κάθε ενεργής εργασίας συμπεραίνεται επίσης από πιθανοτικές λογαριθμικές συναρτήσεις κανονικής κατανομής. Οι ακόλουθες χρονοαμετάβλητες,συγκεκριμένες για το project ποσότητες πρέπει να παρέχονται ως αρχικές είσοδοι στο μοντέλο προσομοίωσης : Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 11

t i S,σ ti S : Η μέση τιμή και η τυπική απόκλιση του χρόνου που απαιτείται (σε ημέρες) για να γραφτεί μια Γραμμή Κώδικα σε ένα αρχείο του module i. t i B,σ ti B : Η μέση τιμή και η τυπική απόκλιση του χρόνου που απαιτείται (σε ημέρες) για να διορθωθεί ένα απλό ελάττωμα σε 1000 Γραμμές Κώδικα. t i T,σ ti T : Η μέση τιμή και η τυπική απόκλιση του χρόνου που απαιτείται (σε ημέρες) για να δοκιμαστεί η πιο πρόσφατη έκδοση του project και να αναφερθούν εντοπισμένα ελαττώματα για ένα αρχείο στο module i, όταν το αρχείο περιέχει 1000 Γραμμές Κώδικα και όλη η έκδοση Mx1000 Γραμμές Κώδικα (όπου M ο αριθμός των modules του project). Τα σύνολα εξισώσεων (1)-(3) προσδιορίζουν πλήρως τις δυναμικές της μεθόδου. Λόγω του στοχαστικού χαρακτήρα των συνόλων εξισώσεων (2) και (3), κάθε «τρέξιμο» πρέπει να επαναληφθεί αρκετές φορές με διαφορετικούς τυχαίους αριθμούς. Οι μέσες τιμές και οι τυπικές αποκλίσεις των παραγόμενων μεταβλητών πρέπει να επαναπροσδιορίζονται σε κάθε βήμα. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 12

2. Κατάσταση Υλοποίησης Σε Η/Υ Για την τρέχουσα έκδοση του μοντέλου ο Ι. Αντωνιάδης έχει γράψει μια εφαρμογή στη γλώσσα προγραμματισμού C. Δυστυχώς η συγκεκριμένη εφαρμογή που είχε ως σκοπό την άμεση δοκιμή και επικύρωση του μοντέλου, έχει κατασκευαστεί για προσωπική χρήση και η υλοποίησή της είναι πολύ πρόχειρη. Όποιος θελήσει να τη χρησιμοποιήσει θα πρέπει να παρέμβει στον πηγαίο κώδικα και να αλλάξει τις τιμές των μεταβλητών καθώς δεν υπάρχει καμία αλληλεπίδραση με το χρήστη, ούτε δυναμικό άνοιγμα αρχείων εισόδου. Το γεγονός αυτό καθιστά την εφαρμογή δύσχρηστη σε συνδυασμό με την έλλειψη σχετικού εγχειριδίου οδηγιών χρήσης. Στον παρακάτω πίνακα (Πίνακας 2.2.1) παραθέτω λεπτομερώς τις μεταβλητές του πηγαίου κώδικα που χρειάζονται τροποποίηση για την εφαρμογή της προσομοίωσης σε διαφορετικά έργα (project), με σκοπό να φανούν χρήσιμα σε όποιον θελήσει να ασχοληθεί μελλοντικά με αυτή. Πίνακας 2.2.1 : Μεταβλητές στον πηγαίο κώδικα που χρειάζονται τροποποίηση για κάθε project. #define M Αριθμός των modules #define SIMUSTEPS #define MAXREPS A_S[i] A_B[i] A_T[i] A_F[i] LOC_F_mean[i] LOC_F_stdev[i] t_perloc_mean_s t_perloc_stdev_s Ncore N_linux s0 Αριθμός χρονικών μονάδων Αριθμός Επαναλήψεων Αρχικό ενδιαφέρον σε εργασίες τύπου S Αρχικό ενδιαφέρον σε εργασίες τύπου B Αρχικό ενδιαφέρον σε εργασίες τύπου T Αρχικό ενδιαφέρον σε εργασίες τύπου F Γραμμές Κώδικα / Καταχώρηση (Μέση τιμή) Γραμμές Κώδικα / Καταχώρηση (Τυπική απόκλιση) Μέρες / 1 Γραμμή Κώδικα (Μέση τιμή) Μέρες / 1 Γραμμή Κώδικα (Τυπική απόκλιση) Βασικοί συντελεστές Καταχωρήσεις / Ημέρα (Μέση τιμή) Μέγιστο ενδιαφέρον συντελεστών (Μέση τιμή) Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 13

Εφόσον έχουν οριστεί οι μεταβλητές εισόδου και ο αριθμός των επαναλήψεων της προσομοίωσης, η εφαρμογή είναι έτοιμη για μεταγλώττιση (compilation) και εκτέλεση του παραγόμενου αρχείου. Η διάρκεια της προσομοίωσης ποικίλει ανάλογα με το μέγεθος του project αλλά συνήθως ολοκληρώνεται ανάμεσα στα 5 με 10 λεπτά της ώρας. Ή έξοδος της εφαρμογής είναι τρία αρχεία απλού κειμένου και περιέχουν τα αποτελέσματα της διαδικασίας. Από τα αρχεία αυτά το πιο σημαντικό είναι το results.txt καθότι περιέχει τις μέσες τιμές όλων των τυχαίων επαναλήψεων. Τα results_max.txt και results_min.txt περιέχουν αντίστοιχα τις μεγαλύτερες και τις μικρότερες τυχαίες τιμές που παράχθηκαν. Η δομή και των τριών αρχείων είναι κοινή. Τα δεδομένα βρίσκονται σε στήλες και χωρίζονται μεταξύ τους με ένα χαρακτήρα στηλοθέτη (\t). Έτσι μπορούν εύκολα να επεξεργαστούν από μία εφαρμογή γραφείου που υποστηρίζει λογιστικά φύλλα (π.χ. Microsoft Excel, OpenOffice.org Calc, Gnumeric κτλ. ). Συγκεκριμένα τα δεδομένα στα αρχεία των αποτελεσμάτων συνοψίζονται στον ακόλουθο πίνακα (Πίνακας 2.2.1). Πίνακας 2.2.1 : Μορφή αποτελεσμάτων προσομοίωσης. time Χρόνος του project σε ημέρες. LOC Σύνολο Γραμμών Κώδικα αθροιστικά προς το χρόνο. B_dens Πυκνότητα ελαττωμάτων (αριθμός ελαττωμάτων ανά 1000 Γραμμές Κώδικα) την κάθε χρονική στιγμή (ημέρα) του project. B_rep_dens Συνολική πυκνότητα ελαττωμάτων που έχουν αναφερθεί από άτομα που εκτελούν εργασία τύπου Τ (δοκιμή). Q Συνολική Ποιότητα του project. tots Αριθμός εργασιών τύπου S (υποβολή νέου module) που ξεκίνησαν τη συγκεκριμένη ημέρα. totb Αριθμός εργασιών τύπου Β (αποσφαλμάτωση) που ξεκίνησαν τη συγκεκριμένη ημέρα. tott Αριθμός εργασιών τύπου Τ (δοκιμή) που ξεκίνησαν τη συγκεκριμένη ημέρα. totf Αριθμός εργασιών τύπου F (λειτουργική βελτίωση) που ξεκίνησαν τη συγκεκριμένη ημέρα. Occ_Programers Συνολικός αριθμός ατόμων που συμβάλλουν στο project. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 14

New_blood LOC2 B_dens2 B_rep_dens2 Αριθμός νέων ατόμων που εισχώρησαν στο projet τη συγκεκριμένη ημέρα. Τυπική απόκλιση του LOC. Τυπική απόκλιση του B_dens. Τυπική απόκλιση του B_rep_dens. Q2 Τυπική απόκλιση του Q. tots2 totb2 tott2 totf2 Occ_Programers2 New_blood2 Τυπική απόκλιση του tots. Τυπική απόκλιση του totb. Τυπική απόκλιση του tott. Τυπική απόκλιση του totf. Τυπική απόκλιση του Occ_Programers. Τυπική απόκλιση του New_blood. Αξίζει να σημειωθεί ότι η εφαρμογή παρουσιάζει αρκετά προβλήματα. Ένα από αυτά ασυμβατότητα με το πρότυπο ANSI C. Επίσης σε μεγάλα project με πολλούς και μεγάλους υπολογισμούς είτε «κρεμάει», είτε παράγει αρνητικά αποτελέσματα λόγω υπερχείλισης. Για τη σωστή και εύκολη χρησιμοποίηση του μοντέλου η ανάπτυξη μιας νέας εφαρμογής είναι απαραίτητη. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 15

Κεφάλαιο 3 Συλλογή Πραγματικών Δεδομένων 1. Το CVS (Concurrent Versions System) Το CVS είναι ένα σύστημα ελέγχου εκδόσεων λογισμικού. Η χρήση του καθιστά δυνατή την καταγραφή του ιστορικού των αρχείων πηγαίου κώδικα ενός project. Για παράδειγμα τα ελαττώματα ενός αρχείου μπορούν να προκληθούν από μεταβολές του και υπάρχει περίπτωση να εντοπιστούν μετά από αρκετό καιρό. Με το CVS μπορούν εύκολα να ανακτηθούν παλιότερες εκδόσεις του λογισμικού και να βρεθούν ποιες αλλαγές προκάλεσαν το ελάττωμα. Φυσικά υπάρχει η εναλλακτική επιλογή της αποθήκευσης κάθε έκδοσης του κάθε αρχείου που έχει δημιουργηθεί. Αυτό όμως θα δέσμευε άσκοπα μεγάλο τμήμα του αποθηκευτικού χώρου. Το CVS αποθηκεύει όλες τις εκδόσεις ενός αρχείου σε ένα απλό αρχείο κατά ένα έξυπνο τρόπο, σημειώνοντας μόνο τις διαφορές μεταξύ των εκδόσεων. Ακόμη το CVS είναι πολύ χρήσιμο για μία ομάδα ατόμων που εργάζονται στο ίδιο project. Σε αυτή την περίπτωση είναι πολύ πιθανό να δουλεύουν δύο ή περισσότερα άτομα στο ίδιο αρχείο με αποτέλεσμα κάποιος προγραμματιστής να διαγράψει τις ενδιάμεσες αλλαγές που τυχόν γίνονταν την ίδια χρονική στιγμή από κάποιον άλλο. Η λύση του προβλήματος για το CVS στηρίζεται στο γεγονός ότι κάθε προγραμματιστής εργάζεται σε δικό του κατάλογο και τη στιγμή που ένας τελειώνει τότε η δουλειά του συγχωνεύεται στο σύνολο. Το CVS ξεκίνησε ως μια συλλογή από shell scripts γραμμένα από τον Dick Grune, τα οποία εστάλησαν στο newsgroup comp.sources.unix στην έκτη έκδοση που κυκλοφόρησε τον Ιούλη του 1986. Παρόλο που ο κώδικας αυτών των scripts δεν υπάρχει στην τρέχουσα έκδοση του CVS, οι περισσότεροι αλγόριθμοι αποφυγής συγκρούσεων προέρχονται από εκεί. Τον Απρίλιο του 1989 ο Brian Berliner σχεδίασε και προγραμμάτισε το CVS με τη βοήθεια του Jeff Polk. Στο CVS Repository υπάρχει ένα αντίγραφο όλων των αρχείων και των καταλόγων που βρίσκονται υπό έλεγχο. Οι χρήστες δεν μπορούν να επεξεργαστούν άμεσα τα αρχεία αυτά αλλά τα «κατεβάζουν» τοπικά στον υπολογιστή τους και στέλνουν πίσω τις αλλαγές τους με κατάλληλες εντολές του CVS. Το repository μπορεί να βρίσκεται είτε σε ένα τοπικό μηχάνημα, είτε σε ένα απομακρυσμένο. Σε ένα Unix σύστημα οι χρήστες που μπορούν να παρέμβουν στα αρχεία του CVS είναι χρήστες του συστήματος που ανήκουν στην ίδια ομάδα (group). Επίσης σε ένα CVS repository περιέχονται και άλλα στοιχεία όπως τα modules ενός project καθώς και logs των αλλαγών στον κώδικα. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 16

Σε αυτά τα logs περιέχονται πολύ χρήσιμες πληροφορίες σχετικά με την καταχώρηση (commit) όπως η χρονική στιγμή στην οποία πραγματοποιήθηκε, ο χρήστης που την εκτέλεσε, το αρχείο που επηρεάστηκε και το μέγεθος της αλλαγής πάνω σε αυτό. Το CVS μπορεί κανείς να το προμηθευτεί με διάφορους τρόπους όπως με μεταφόρτωσή του από το διαδίκτυο (http://www.cvshome.org/). Επίσης υπάρχει ένα νεότερο σύστημα ελέγχου εκδόσεων λογισμικού, το subversion, (http://subversion.tigris.org/), το οποίο έχει σχεδόν τις ίδιες λειτουργίες με το CVS αλλά και βελτιώσεις σε χρόνια προβλήματα που αντιμετωπίζει το πρώτο. Στηριζόμενοι στο γεγονός ότι σχεδόν όλα τα project ΕΛ/ΛΑΚ ελέγχονται από CVS ή subversion σε συνδυασμό με τα χρήσιμα στοιχεία που αποθηκεύονται κατά την ανάπτυξή τους από τα συστήματα αυτά, τα καθιστούν ως το κυριότερο μέσο για συλλογή πραγματικών δεδομένων σχετικά με τη συμμετοχή και την εξέλιξη ενός project. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 17

2. Το CVSAnalY Το CVSAnalY είναι ένα εργαλείο που εξάγει στατιστικές πληροφορίες από τα logs ενός Repository του CVS ή του Subversion και τα μετατρέπει σε δεδομένα σχεσιακών βάσεων δεδομένων SQL, με σκοπό την εύκολη ανάκτηση και επεξεργασία τους. Επίσης υπάρχει η δυνατότητα κατασκευής στατιστικών γραφικών παραστάσεων και στατιστική ανάλυση των δεδομένων μέσω ενός web interface. Το CVSAnalY είναι γραμμένο στη γλώσσα προγραμματισμού Python (http://www.python.org) και συνεργάζεται με τον εξυπηρετητή βάσεων δεδομένων MySQL (http://www.mysql.com). Αναπτύσσεται από το Grupo de Sistemas y Comunicaciones του Πανεπιστημίου Rey Juan Carlos της Μαδρίτης (Ισπανία) και μπορεί να βρεθεί στην εξής ιστοσελίδα : http ://libresoft.urjc.es/cvsanaly/index.html. Το πρώτο βήμα πριν την εκτέλεση του εργαλείου είναι η δημιουργία ενός χρήστη και μιας βάσης δεδομένων στον εξυπηρετητή, στην οποία θα αποθηκευτούν οι πληροφορίες για το project που θα αναλυθεί. Έπειτα απαιτείται κατάλληλη παραμετροποίηση του αρχείου ρυθμίσεων config.py. Τα πιο σημαντικά μέρη που πρέπει να ρυθμιστούν είναι ο τύπος του Repository (CVS ή Subversion), η διεύθυνση του Repository για το συγκεκριμένο project και τα στοιχεία για τη σύνδεση με τη βάση δεδομένων. Όλα τα υπόλοιπα στοιχεία είναι προαιρετικά ενώ αξίζει να σημειωθεί ότι τα σχόλια δίπλα από την κάθε επιλογή είναι πολύ κατατοπιστικά. Ακολουθεί ένα παράδειγμα αρχείου ρυθμίσεων που χρησιμοποιήθηκε για το XMMS project (βλέπε Κεφάλαιο 4). #!/usr/bin/python # vim: set expandtab tabstop=4 shiftwidth=4: # +----------------------------------------------------------------------+ # CVSAnalY: CVS and SVN Analysis Tool # +----------------------------------------------------------------------+ # http://libresoft.dat.escet.urjc.es # +----------------------------------------------------------------------+ # Copyright (c) 2002-4 Universidad Rey Juan Carlos (Madrid, Spain) # +----------------------------------------------------------------------+ # This program is free software. You can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 or later of the GPL. # +----------------------------------------------------------------------+ # Authors: # Gregorio Robles <grex@gsyc.escet.urjc.es> # +----------------------------------------------------------------------+ # # $Id: config.py,v 1.21 2004/08/17 11:06:35 grex Exp $ # Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 18

# CVSAnalY configuration file # # Repository type: can be 'cvs', 'svn' or 'arch' (in the future) config_repository_type = 'cvs' # Repository information # :pserver:username:password@server:path # (config_rsync has to be set to 0 in order to retrieve it from here) config_repository = ':pserver:anonymous@cvs.xmms.org:/cvs' # Rsyncing CVS repository? # if config_rsync=1, the source directory (config_sourcedirectory) # should be the root directory of the rsynced copy # as no working copy has to be retrieved config_rsync = 0 config_rsync_src = '' # Database information config_dbname = 'xmms' config_dbuser = 'operator' config_dbpass = 'operator' config_dbhost = 'localhost' # Send mail to administrator when finished? # If 1 (=yes) config_adminmail should contain the admin's e-mail address config_sendmail = 0 config_adminmail = '' config_tomail = '' config_smtpserver = '' # Modules you want to study (python-list syntax) config_modules = [ '.' ] # Directories where results and intermediate results will be stored # Have in mind you should have enough space for the sources, # the logs and the sql/xml output! # A good estimation is to have as much as twice the source code volume # free space in the disk you are going to use to store results config_maindirectory = '/home/mike/tmp/xmms/' # You can also rename following directories at your wish # although this is less important config_sourcedirectory = config_maindirectory + '/src/' config_sqldirectory = config_maindirectory + '/sql/' config_logsdirectory = config_maindirectory + '/logs/' config_graphsdirectory = config_maindirectory + '/graphs/' config_rsyncdirectory = config_maindirectory + '/rsync/' config_snadirectory = config_maindirectory + '/sna/' config_diffdirectory = config_maindirectory + '/diff/' # Evolutionary study? Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 19

# This is a space-saving option if you only want # to run cvsanal once # If this variable is 0, then the directories with the sources # and the logs will be removed to save disk space config_evolutionary = 1 # Study the diffs? # This enables the study of changed lines by analzing the diffs # Note that this is a time (and bandwith) consuming option (but only the # first time) # # If the study is evolutionary, it is only time consuming the first time! config_diff = 0 # Generate graphs/images? # Graphs and images will be generated # (and later on copied into the place where cvsanal-web is located) config_graphs = 1 # Generate developer in time statistics? # This will be time and space consuming if the number of commmiters # is very big!!! # If the study is evolutionary, it is only time consuming the first time! config_commiters_in_time = 0 # Social Network Analysis # config_alpha gives the exponent that is to be applied when studying # the evolution in time of the relationships # config_sna_threshold the minimum relationship to be considered config_sna = 0 config_alpha = 0.05 config_sna_threshold = 5 # Number of intervals/slots in time # If the project lasts for 10 years and you give 10, then you will # have ten 1-year slots # Should be a python list config_slots = [10] # Percentage above which commiters are not considered as most active # If you set it to 20, then the top 20% most active commiters will be # considered as the most active ones # Should be a python list config_thresholds = [20] # Web server database information # (this is important if cvsanal-web is run in another computer) # cvsanal-web location # Local cvsanal-web # config_webdirectory = '/var/www/cvsanal/' # Remote cvsanal-web - use scp syntax config_webserver = 0 config_webdirectory = '' Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 20

config_web_dbname = config_dbname config_web_dbuser = config_dbuser config_web_dbpass = config_dbpass config_web_dbhost = config_dbhost # (Python) list with the modules CVSAnalY should ommit # Please, leave CVS always in this list (or if not, at least you # should leave the empty list with an '' entry) config_ommitmodules = [ 'CVS' ] # (Python) dictionary with the commiters CVSAnalY should merge # Please, if there is no merge needed, then leave the dictionray empty # Entries should look like this: "old name": "new name" config_mergecommiters = { } # Logs register commits with the local time of the CVS repository # server. If for any circumstance, the server has temporarily an # absurd time, it will mess up all statistics. # # Hence, writing here the date of the first commit should be # a good idea. config_serverdateerror_where = "date > '1991-01-01'" # Database global variable import _mysql db=_mysql.connect(config_dbhost, config_dbuser, config_dbpass, config_dbname) Ύστερα από τη ρύθμιση είμαστε σε θέση να τρέξουμε το εργαλείο πληκτρολογώντας σε μια κονσόλα την εντολή : $ python cvsanal.py Το CVSAnalY αρχικά θα κατεβάσει ένα αντίγραφο του Repository στον τοπικό κατάλογο που έχει προηγουμένως οριστεί. Στον υποκατάλογο src/ αποθηκεύονται τα αρχεία πηγαίου κώδικα, στον υποκατάλογο logs/ τα logs του Repository, στον υποκατάλογο sql/ θα δημιουργηθούν τα αρχεία που συμπληρώνουν τη βάση δεδομένων με στοιχεία και στον υποκατάλογο graphs/ θα δημιουργηθούν οι γραφικές παραστάσεις εφόσον η ενέργεια αυτή έχει προηγουμένως επιλεχτεί. Η συνολική διαδικασία μπορεί να διαρκέσει μεγάλο χρονικό διάστημα (έως και μία ημέρα) ανάλογα με το μέγεθος του Repository καθώς και της επιλογής των επιπλέον λειτουργιών. Μετά την περάτωση της διαδικασίας στη βάση δεδομένων έχουν δημιουργηθεί 3 βασικοί σχεσιακοί πίνακες που περιέχουν τον αριθμό και τα ονόματα των συντελεστών, τον αριθμό και την περιγραφή των διαφορετικών τύπων αρχείων και τον αριθμό των modules του project με την περιγραφή Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 21

τους. Για το κάθε module υπάρχουν τρεις σχεσιακοί πίνακες με στοιχεία για τους προγραμματιστές που έχουν συνεισφέρει στο συγκεκριμένο module, τους καταλόγους του Repository όπου βρίσκονται αρχεία του και τα logs του Repository που το αφορούν. Ο πίνακας με τα logs είναι ο πιο σημαντικός διότι περιέχει αναλυτικά πληροφορίες για την κάθε καταχώρηση και από αυτόν εξάγονται οι περισσότερες πληροφορίες. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 22

3. Το CVSAnalY-DBExport Το CVSAnalY-DBExport είναι ένα εργαλείο που έγραψα με σκοπό την ανάκτηση των πληροφοριών από τη βάση δεδομένων που δημιουργεί το CVSAnalY, σε μορφή τέτοια έτσι ώστε να μπορούν να συγκριθούν με τα αποτελέσματα της προσομοίωσης. Επίσης υπάρχει η δυνατότητα υπολογισμού των δεδομένων εισόδου του μοντέλου για ένα δοσμένο αριθμό αρχικών ημερών του project. Το εργαλείο είναι γραμμένο σε γλώσσα προγραμματισμού PHP (http://www.php.net) και τα αποτελέσματά του παράγονται σε HTML ιστοσελίδες. Αρχικά το CVSAnalY-DBExport απαιτεί την εισαγωγή των ορισμάτων για σύνδεση με τη βάση δεδομένων (MySQL) όπου βρίσκονται αποθηκευμένες οι πληροφορίες του project. Τα ορίσματα αποθηκεύονται σε ένα PHP SESSION μοναδικό για το χρήστη. Στην εικόνα 3.3.1 φαίνεται η αρχική σελίδα του εργαλείου. Εικόνα 3.3.1 : Εισαγωγή ορισμάτων για σύνδεση με τη Βάση Δεδομένων. Στη συνέχεια ελέγχονται οι δοσμένες τιμές και ον η σύνδεση είναι επιτυχής τότε ο χρήστης μπορεί να συνεχίσει στην επόμενη σελίδα (Εικόνα 3.3.2). Αν η σύνδεση αποτύχει τότε πρέπει να γίνει επιστροφή στην προηγούμενη σελίδα των ρυθμίσεων και να διορθωθούν τα τυχόν λάθος ορίσματα (Εικόνα 3.3.3). Στο επόμενο βήμα εμφανίζεται μια λίστα με τα modules του project και δυνατότητα επιλογής του module που μας ενδιαφέρει (Εικόνα 3.3.4). Για το κάθε module υπάρχουν δύο διαθέσιμες ενέργειες: Η εμφάνιση της εξέλιξής του στο χρόνο και ο υπολογισμός των δεδομένων εισόδου που απαιτεί το μοντέλο προσομοίωσης για δοσμένο αριθμό αρχικών ημερών (Εικόνα 3.3.5). Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 23

Εικόνα 3.3.2 : Έλεγχος τιμών. Επιτυχία και προτροπή συνέχισης στην επόμενη σελίδα. Εικόνα 3.3.3 : Έλεγχος τιμών. Αποτυχία και προτροπή επιστροφής στη σελίδα ρυθμίσεων. Εικόνα 3.3.4 : Λίστα των modules του project. Εικόνα 3.3.5 : Πληροφορίες επιλεγμένου module και διαθέσιμες επιλογές. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 24

Η επιλογή της εξέλιξης στο χρόνο περιέχει αναλυτικά για κάθε ημέρα του project τον αριθμό των καταχωρήσεων (commits) ανά ημέρα, τις συνολικές καταχωρήσεις, τον αριθμό των γραμμών κώδικα που προστέθηκαν ανά ημέρα, το συνολικό αριθμό γραμμών κώδικα και το σύνολο των ενεργών συντελεστών (commiters) (Εικόνα 3.3.5). Εικόνα 3.3.6 : Εξέλιξη στο χρόνο για το επιλεγμένο module. O υπολογισμός των παραπάνω τιμών γίνεται ως εξής : Για κάθε ημέρα πού στο project υπάρχει καταχώρηση αθροίζεται το σύνολό τους και παράλληλα προστίθεται και στις συνολικές καταχωρήσεις όλων των ημερών. Επίσης υπολογίζεται ο αριθμός των γραμμών κώδικα που προστέθηκαν στις ημερήσιες καταχωρήσεις και όμοια ο αριθμός αυτός προστίθεται και στο σύνολό τους για όλες τις ημέρες που έχουν περάσει. Σε κάθε ημέρα του project υπολογίζεται επίσης και ο αριθμός των ενεργών προγραμματιστών, δηλαδή όσων έχουν ήδη πραγματοποιήσει τουλάχιστον μία καταχώρηση στις προηγούμενες ή στην τρέχουσα ημέρα. Η επιλογή του υπολογισμού δεδομένων εισόδου εκτελεί έναν υπολογισμό με τα στοιχεία της βάσης δεδομένων και παράγει τις τιμές που θα χρησιμοποιηθούν ως είσοδοι στο μοντέλο προσομοίωσης. Οι τιμές που παράγονται είναι η μέση τιμή και η τυπική απόκλιση του αριθμού γραμμών κώδικα ανά καταχώρηση, η μέση τιμή και η τυπική απόκλιση του αριθμού των ημερών που απαιτούνται για τη συγγραφή μίας γραμμής κώδικα, η μέση τιμή του αριθμού των καταχωρήσεων ανά ημέρα, η μέση τιμή των ημερών όπου παρουσιάστηκε το μέγιστο ενδιαφέρον κάθε προγραμματιστή και το σύνολό των βασικών προγραμματιστών, δηλαδή όσων έχουν κάνει τη μεγαλύτερη συνεισφορά κατά την εξέλιξη του έργου. (Εικόνα 3.3.6). Όλοι οι προαναφερόμενοι υπολογισμοί εκτελούνται για ένα αριθμό αρχικών ημερών που έχει εισάγει ο χρήστης με την επιλογή της ενέργειας αυτής. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 25

Εικόνα 3.3.7 : Υπολογισμός δεδομένων εισόδου δια δοσμένο αριθμό αρχικών ημερών. O υπολογισμός των παραπάνω τιμών γίνεται ως εξής : Για τον υπολογισμό των γραμμών κώδικα ανά καταχώρηση αρχικά δημιουργείται ένας πίνακας με μήκος όσο και ο αριθμός όλων των καταχωρήσεων και με τιμές τον αριθμό των γραμμών κώδικα που προστέθηκαν σε κάθε καταχώρηση. Στη συνέχεια υπολογίζεται η μέση τιμή και η τυπική απόκλιση όλων των τιμών του πίνακα. Για τον υπολογισμό των ημερών που απαιτούνται για τη συγγραφή μιας γραμμής κώδικα αρχικά ανακτούμε όλες τις καταχωρήσεις με τον αριθμό των γραμμών κώδικα και τη χρονική στιγμή που πραγματοποιήθηκε. Αφού δεσμευθεί η πρώτη τιμή ως αναφορά στη συνέχεια αφαιρείται από τη χρονική στιγμή της κάθε καταχώρησης η χρονική στιγμή της προηγούμενης και το αποτέλεσμα διαιρείται με τον αριθμό των γραμμών που προστέθηκαν στη συγκεκριμένη καταχώρηση. Οι τιμές αυτές συλλέγονται σε ένα πίνακα και υπολογίζεται η μέση τιμή και η τυπική απόκλισή τους. Ο υπολογισμός των καταχωρήσεων ανά ημέρα έχει περιγραφεί στην προηγούμενη ενέργεια. Η επιπλέον διαδικασία είναι η συλλογή όλων των τιμών και ο υπολογισμός της μέσης τιμής τους. Όπως περιγράφτηκε στο Κεφάλαιο 2.1 υπάρχει για κάθε προγραμματιστή μία ημέρα S0 όπου το ενδιαφέρον του για το project μεγιστοποιείται, ενώ μετά από αυτή την ημέρα το ενδιαφέρον του μειώνεται. Θεωρώντας ότι η ημέρα αυτή είναι το μέσο από το σύνολο των ημερών όπου κάθε προγραμματιστής είχε ενεργή συνεισφορά στο project [ (Ημέρα Τελευταίας Καταχώρησης Ημέρα Πρώτης Καταχώρησης)/2 ], υπολογίζονται οι ημέρες αυτές για όλους τους συνεισφέροντες καθώς και η μέση τιμή τους. Για τον υπολογισμό του αριθμού των βασικών προγραμματιστών χρησιμοποιείται ο νόμος του Pareto. Σύμφωνα με το νόμο αυτό το 80% της συνολικής δουλειάς παράγεται από το 20% των εργαζόμενων. Έτσι υπολογίζεται το σύνολο των προγραμματιστών και επιλέγεται το 1/5 ως ο αριθμός των βασικών προγραμματιστών. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 26

Κεφάλαιο 4 Προσομοίωση & Σύγκριση Αποτελεσμάτων Τα δύο βήματα που απαιτούνται για την επικύρωση του μοντέλου είναι η βαθμονόμηση των εσωτερικών παραμέτρων συμπεριφοράς του (ανεξάρτητοι των project ) και η προσομοίωση άλλων project ΕΛ/ΛΑΚ για σύγκριση των αποτελεσμάτων με πραγματικά δεδομένα. Το μοντέλο στο παρελθόν έχει εφαρμοστεί επιτυχώς στον Apache Web Server (http://www.apache.org) (Ι. Αντωνιάδης, 2003) και στο gtk+ module του GNOME project (http://www.gnome.org) (Ι. Αντωνιάδης 2005). Στις προαναφερόμενες μελέτες όπου χρησιμοποιήθηκαν δεδομένα από σχετικές για τα project αναλύσεις (case studies), υπολογίστηκαν οι παράμετροι συμπεριφοράς του μοντέλου καθώς και οι αρχικές τιμές της προσομοίωσης για τα αντίστοιχα project. Οι τιμές των παραμέτρων της συμπεριφοράς του μοντέλου που έχουν υπολογιστεί μπορούν να χρησιμοποιηθούν και σε προσομοιώσεις άλλων έργων εφόσον είναι ανεξάρτητες των project. Στο υπολογισμό όμως των συγκεκριμένων για κάθε project τιμών υπάρχει πρόβλημα γιατί τέτοιου είδους αναλύσεις δε γίνονται συχνά και οι διαθέσιμες εστιάζουν στα δημοφιλή project. Για να μπορέσει όμως το μοντέλο να εφαρμοστεί σε όλα τα project ΕΛ/ΛΑΚ η συλλογή δεδομένων έπρεπε να γίνει από στοιχεία που είναι διαθέσιμα στο κοινό όπως τα repository του CVS ή του Subversion, τα οποία χρησιμοποιούνται από σχεδόν όλα τα έργα ανοιχτού κώδικα. Δυστυχώς όμως η παρούσα έκδοση του μοντέλου δεν μπορεί να επικυρωθεί ολόκληρη λόγω έλλειψης σημαντικών στοιχείων. Συγκεκριμένα δεν υπάρχουν καθόλου δεδομένα για τη δραστηριότητα στην εργασία τύπου T (δοκιμή και αναφορά ελαττωμάτων) και για την πυκνότητα ελαττωμάτων.. Στις ενότητες που ακολουθούν παρουσιάζονται τα αποτελέσματα από την εφαρμογή της προσομοίωσης σε δύο project πολυμέσων, το XMMS και τον Mplayer. Τα δεδομένα από το CVS (γραμμές κώδικα, αριθμός καταχωρήσεων κτλ) είναι διαθέσιμα ανά module και όχι συνολικά για όλο το project. Για το λόγο αυτό εφαρμόστηκε η προσομοίωση στο κυριότερο και μεγαλύτερο module κάθε project που ουσιαστικά αποτελεί το βασικό τμήμα της λειτουργίας του. Άλλωστε τα συγκεκριμένα project αποτελούνταν από πολύ λίγα modules τα οποία είχαν πολύ μικρή ανάπτυξη. Έτσι απενεργοποιήθηκαν οι εργασίες τύπου S καθότι δεν υπάρχει αλλαγή του αριθμού των modules κατά τη διάρκεια της προσομοίωσης. Τα ποσοστά του αρχικού ενδιαφέροντος των προγραμματιστών πάρθηκαν από την προσομοίωση του gtk+ module και έχουν ως εξής: 0% των προγραμματιστών αρχικά ενδιαφέρονται για δημιουργία νέου module (S), 3.89% για διόρθωση ελαττωμάτων (B), 53.7% για δοκιμή και αναφορά ελαττωμάτων (T) και 42.41% για λειτουργική βελτίωση (F). Στους παράγοντες συμπεριφοράς του μοντέλου και στις αρχικές τιμές που δεν υπάρχουν δεδομένα για τον υπολογισμό Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 27

τους, χρησιμοποιήθηκαν στοιχεία που είχαν υπολογιστεί στην προσομοίωση του Apache Project. Στη συνέχεια με το CVSAnalY-DBExport υπολογίστηκαν οι διαθέσιμες αρχικές τιμές για τις μισές ημέρες του κάθε project. Ακολούθησε η προσομοίωση για το σύνολο των ημερών ανάπτυξης και σύγκριση των αποτελεσμάτων. Επίσης τα αποτελέσματα των στοιχείων για τα οποία υπάρχει έλλειψη πραγματικών δεδομένων, παρουσιάζονται αλλά χωρίς σύγκριση. Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 28

1. Το XMMS Project (X MultiMedia System) Το XMMS (X Multimedia System) είναι ένας αναπαραγωγέας ήχου και διαθέτει ένα προσαρμόσιμο ενδιάμεσο χρήστη γραμμένο στη βιβλιοθήκη γραφικών gtk+ των XWindows. Χρησιμοποιείται για αναπαραγωγή αρχείων ήχου αλλά και άλλου είδους αρχεία πολυμέσων. Το XMMS μπορεί αναπαράγει MPEG audio, Ogg Vorbis, RIFF wav και κάποιες ακόμα μορφές αρχείων. Επίσης έχει τη δυνατότητα της επέκτασης μέσω plugins και την αναπαραγωγή διάφορων μορφών ήχου και βίντεο. Είναι ελεύθερο λογισμικό και είναι διαθέσιμο από την ιστοσελίδα http://www.xmms.org. Τη χρονική στιγμή που συλλέχθηκαν δεδομένα από το CVS του XMMS, το project είχε ήδη διανύσει 2112 ημέρες. Έτσι υπολογίστηκαν οι αρχικές τιμές του μοντέλου για τις πρώτες 1000 ημέρες και στη συνέχεια εκτελέστηκε η προσομοίωση για τις διπλάσιες (2000 ημέρες). Στον Πίνακα 4.1.1 παρουσιάζονται οι τιμές αυτές μαζί με την πηγή προέλευσής τους. Πίνακας 4.1.1 : Τιμές και Παράμετροι εισόδου για την προσομοίωση του XMMS project. Παράμετρος Τιμή Πηγή L i S,σ Li S L i F,σ Li F (55.3817, 371.2261) - Γραμμές Κώδικα / Καταχώρηση d i,σ d i (2, 3) Ελαττώματα / 1000 Γραμμές Κώδικα Υπολογισμός με το CVSAnalY-DBExport Έλλειψη δεδομένων - Ίδιες τιμές με αυτές του Apache Project T i,σ T i (50%, 25%) Έλλειψη δεδομένων - Ίδιες τιμές με αυτές του Apache Project t i S, σ ti S (0.100597, 0.494338) Υπολογισμός με το CVSAnalY-DBExport t i B,σ ti B (35, 47) Ημέρες Έλλειψη δεδομένων - Ίδιες τιμές με αυτές του Apache Project t i T,σ ti T (1, 2) Ημέρες Έλλειψη δεδομένων - Ίδιες τιμές με αυτές του Apache Project N 0 8 Υπολογισμός με το CVSAnalY-DBExport Q 0 0.38 Υπολογισμός από την εφαρμογή του Η/Υ w R, w L, w A, J (0.00227, 0.00227, 0.0, 0.0) Έλλειψη δεδομένων - Ίδιες τιμές με αυτές του Apache Project N core 3 Υπολογισμός με το CVSAnalY-DBExport S 0 225.9649 Ημέρες Υπολογισμός με το CVSAnalY-DBExport Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 29

Κατώφλι Λειτουργικής Ολοκλήρωσης 500000 Γραμμές Κώδικα Λογική Υπόθεση Η παράμετρος «Κατώφλι Λειτουργικής Ολοκλήρωσης» είναι το σημείο όπου πιστεύεται πως το project θα ολοκληρωθεί λειτουργικά και θα σταματήσει να αναπτύσσεται. Δεδομένου του ότι το XMMS από τις 1500 ημέρες και έπειτα παρουσιάζει μια μείωση στο ρυθμό ανάπτυξης και κυμαίνεται μέχρι την ημέρα 2000 στις 300 με 350 χιλιάδες γραμμές κώδικα, θεωρείται ότι η ανάπτυξή του δεν θα ξεπεράσει τις 500 χιλιάδες γραμμές κώδικα. Η προσομοίωση επαναλήφθηκε 100 φορές και οι μέσες τιμές παρουσιάζονται στον πίνακα 4.1.2. Επίσης οι τιμές αυτές συγκρίνονται με όσα πραγματικά δεδομένα ήταν διαθέσιμα. Πίνακας 4.1.2 : Σύγκριση αποτελεσμάτων προσομοίωσης με πραγματικά δεδομένα για το XMMS project. Μεταβλητή Προσομοίωση (Μέση τιμή +/- Τυπική Απόκλιση) Πραγματικά Δεδομένα Σύνολο γραμμών κώδικα (1000 ημέρες) 189558.98 +/- 20895.37 ΓΚ 201261 ΓΚ Σύνολο γραμμών κώδικα (2000 ημέρες) 354301,86 +/- 30674,1 ΓΚ 323641 ΓΚ Μέση πυκνότητα ελαττωμάτων (1000 ημέρες) 27.46 +/- 1.86 Ελαττώματα/1000ΓΚ - Μέση πυκνότητα ελαττωμάτων (2000 ημέρες) 27.74 +/- 1.33 Ελαττώματα/1000ΓΚ - Μέσος αριθμός αναφερόμενων ελαττωμάτων (1000 ημέρες) Μέσος αριθμός αναφερόμενων ελαττωμάτων (2000 ημέρες) Συνολική δραστηριότητα σε εργασίες τύπου B+F (1000 ημέρες) Συνολική δραστηριότητα σε εργασίες τύπου B+F (2000 ημέρες) Συνολική δραστηριότητα σε εργασίες τύπου T (1000 ημέρες) Συνολική δραστηριότητα σε εργασίες τύπου T (2000 ημέρες) Συνολική δραστηριότητα σε όλες τις εργασίες (1000 ημέρες) Συνολική δραστηριότητα σε όλες τις εργασίες (2000 ημέρες) 2234.02 +/- 135.33 Ελαττώματα/1000ΓΚ 4345.09 +/- 197.18 Ελαττώματα/1000ΓΚ 3844.21 +/- 572.79 Εργασίες 3645 Εργασίες 6931.17 +/- 1061.34 Εργασίες 4925 Εργασίες 821.38 +/- 212.16 Εργασίες - 1479.83 +/- 403.71 Εργασίες - 4627.19 +/- 778.2 Εργασίες - 8375.01 +/- 1458.34 Εργασίες - Αριθμός συνολικών συντελεστών (1000 ημέρες) 208.58 +/- 27.13 Συντελεστές 15 Συντελεστές Αριθμός συνολικών συντελεστών (2000 ημέρες) 359.41 +/- 41.96 Συντελεστές 16 Συντελεστές - - Στην εικόνα 4.1.1 (α) φαίνονται οι συνολικές γραμμές κώδικα για 2000 ημέρες ανάπτυξης του Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 30

XMMS. Την ημέρα 1000 έχουν γραφτεί 189559±20895 γραμμές κώδικα σύμφωνα με τα αποτελέσματα της προσομοίωσης και στην πραγματικότητα έχουν γραφτεί 201261 γραμμές κώδικα. Την ημέρα 2000 έχουν γραφτεί 354302±30674 γραμμές κώδικα σύμφωνα με τα αποτελέσματα της προσομοίωση και στην πραγματικότητα έχουν γραφτεί 323641 γραμμές κώδικα. Η μεσαία καμπύλη είναι ο μέσος όρος των 100 επαναλήψεων και οι άλλες δύο είναι η τυπική απόκλιση πάνω και κάτω από το μέσο όρο. Είναι φανερό πως το μοντέλο έχει δώσει πολύ αξιόπιστα αποτελέσματα για τις γραμμές κώδικα. Η εικόνα 4.1.1 (β) παρουσιάζει την πραγματική καμπύλη των συνολικών γραμμών κώδικα στο χρόνο για το XMMS project. Την εικόνα αυτή κατασκεύασε το CVSAnalY με τα δεδομένα από το CVS Repository του XMMS. Εικόνα 4.1.1 : Εξέλιξη στον αριθμού των γραμμών κώδικα του XMMS project. (α) (Αποτελέσματα προσομοίωσης) Συνολικές Γραμμές Κώδικα στο χρόνο. Η μπλε γραμμή είναι ο μέσος όρος των 100 επαναλήψεων ενώ η κόκκινη και κίτρινη είναι η τυπική απόκλιση από το μέσο όρο πάνω και κάτω αντίστοιχα. Γραμμές Κώδικα 400000 375000 350000 325000 300000 275000 250000 225000 200000 175000 150000 125000 100000 75000 50000 25000 0-25000 Σύνολικές Γραμμές Κώδικα στο Χρόνο 1981 1851 1721 1591 1461 1331 1201 1071 951 841 731 621 511 401 291 181 1 81 Χρόνος (Ημέρες) Επικύρωση ενός Μοντέλου Προσομοίωσης έργων ΕΛ/ΛΑΚ 31