Αξιολόγηση Σταθερότητας Open Source με χρήση Μετρικών

Σχετικά έγγραφα
Πληροφορική 2. Τεχνολογία Λογισμικού

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού

Εισαγωγή στη Σχεδίαση Λογισμικού

ΟΡΟΛΟΓΙΑ. απαιτήσεις αξιοπιστίας, στις απαιτήσεις ασφάλειας, στις απαιτήσεις λειτουργίας κλπ.

Αρχιτεκτονική Λογισμικού

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗ ΔΙΑΧΕΙΡΙΣΗ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΓΩΝ

Ποιότητα Λογισμικού και Πιστοποίηση

Προδιαγραφές Απαιτήσεων Επικύρωση Απαιτήσεων

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Rational Unified Process. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΡΟΥΜΠΟΣ ΓΙΩΡΓΟΣ

ΕΙΔΙΚΗ ΕΠΙΣΤΗΜΟΝΙΚΗ ΕΠΙΤΡΟΠΗ ΘΕΜΑΤΩΝ ΤΥΠΟΠΟΙΗΣΗΣ, ΠΙΣΤΟΠΟΙΗΣΗΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΟΙΟΤΗΤΑΣ. Εισηγήτρια: Γκαβέλα Σταματία Δρ. Χημικός Μηχανικός ΕΜΠ

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

ΔΙΕΚ ΜΥΤΙΛΗΝΗΣ ΤΕΧΝΙΚΟΣ ΜΗΧΑΝΟΓΡΑΦΗΜΕΝΟΥ ΛΟΓΙΣΤΗΡΙΟΥ Γ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΛΟΓΙΣΤΙΚΗ ΚΟΣΤΟΥΣ Ι ΜΑΘΗΜΑ 2 ο

Το σύστημα ISO9000. Παρουσιάστηκε το 1987, αναθεωρήθηκε το 1994 και το 2000.

Περί της Ταξινόμησης των Ειδών

Τεχνολογία Λογισμικού

Committed to Excellence

Πρόταση βελτίωσης επαγγελματικών συνθηκών, αύξησης των πωλήσεων και αποφυγής προστίμων

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Η συμβολή στην επιτυχία ενός οργανισμού, παρουσιάζοντας σχετικά δεδομένα με τη χρήση τεχνικών 2Δ ή 3Δ τεχνολογίας. Αρμοδιότητα

25o Μονοπάτι Επιχειρηματικότητας

Εισαγωγή στην Τεχνολογία Λογισμικού

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 4 : Τεχνολογία λογισμικού. Δρ.

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

Απαιτήσεις Λογισμικού

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

ΕΓΧΕΙΡΙΔΙΟ ΠΟΙΟΤΗΤΑΣ ΤΗΣ ΕΤΑΙΡΕΙΑΣ AMAZE A.E. ΕΚΔΟΣΗ 02

Σημειώσεις στο μάθημα «Στοιχεία Προγραμματισμού σε Γραφικό Περιβάλλον»

Διαχείριση Πολιτισμικών Δεδομένων

Πιστοποίηση ποιότητας ISO σε σχολεία

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

ΜΟΔΙΠ του Αλεξάνδρειου ΤΕΙ Θεσσαλονίκης σε συνεργασία με το Πανεπιστήμιο Μακεδονίας Διασφάλιση της ποιότητας στα Ανώτατα Εκπαιδευτικά Ιδρύματα:

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

ΚΕΦΑΛΑΙΟ 13 ΔΙΑΣΦΑΛΙΣΗ ΠΟΙΟΤΗΤΑΣ ΛΟΓΙΣΜΙΚΟΥ. Έννοιες-κλειδιά. Σύνοψη

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

Taseis Management Total Accomplishment & Efficient Integrated Strategies

Γ Γυμνασίου: Οδηγίες Γραπτής Εργασίας και Σεμιναρίων. Επιμέλεια Καραβλίδης Αλέξανδρος. Πίνακας περιεχομένων

ΤΕΧΝΟΛΟΓΙΕΣ & ΑΣΦΑΛΕΙΑ ΠΛΗΡΟΦΟΡΙΩΝ ΙΩΑΝΝΗ Δ. ΙΓΓΛΕΖΑΚΗ

Στρατηγική Αξιολόγησης κατά την Υλοποίηση Εκπαιδευτικού Λογισμικού

Σχεδιαστής Ιστοσελίδων

Το Ευρωπαϊκό Πρόγραμμα. Motor Challenge

Συστήματα Πληροφοριών Διοίκησης

ISO 9001: Τι αλλάζει. στο νέο Πρότυπο; Τι είναι το ISO 9001; Οι βασικές Αρχές της Ποιότητας: Πως εφαρμόζεται το ISO 9001;

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία. Ενότητα 11: Αξιολόγηση Σχεδίασης Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ορισμός Ευκαιρίας. 2.Διαδικασία Αναγνώρισης Ευκαιρίας

DeSqual Ενότητες κατάρτισης 1. Ενδυνάμωση των εξυπηρετούμενων

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

ΕΙΔΗ ΕΡΕΥΝΑΣ I: ΠΕΙΡΑΜΑΤΙΚΗ ΕΡΕΥΝΑ & ΠΕΙΡΑΜΑΤΙΚΟΙ ΣΧΕΔΙΑΣΜΟΙ

συναντήσεις εργασίας εκτέλεση ρόλου διευθυντή σεμινάρια σύνταξη γραπτής εργασίας τελικό σεμινάριο έκθεση αξιολόγηση

Μαλούτα Θεανώ Σελίδα 1

Πρότυπα Συστημάτων Διαχείρισης :

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

Συγγραφή ερευνητικής πρότασης

ΘΕΜΑΤΑ ΑΞΙΟΛΟΓΗΣΗΣ ΚΑΤΑΣΚΕΥΗ ΕΡΩΤΗΣΕΩΝ. Άννα Κουκά

ΤΕΙ ΚΡΗΤΗΣ ΤΜΗΜΑ ΛΟΓΙΣΤΙΚΗΣ. Διοίκηση Επιχειρήσεων. Β Εξάμηνο -Παραδόσεις

Διαχείριση έργων. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Ενότητα 1: Εισαγωγή στις Βάσεις Δεδομένων. Αθανάσιος Σπυριδάκος Διοίκηση Επιχειρήσεων

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

Συστήματα Διαχείρισης Ποιότητας Το πρότυπο ISO9001:2015 και οι εφαρμογές του

2. ΔΙΑΠΙΣΤΕΥΣΕΙΣ: ΠΙΣΤΟΠΟΙΗΣΗ Ε.ΚΕ.ΠΙΣ. ΠΙΣΤΟΠΟΙΗΣΗ ΕΛΟΤ EN ISO 9001:2008

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Εισηγήτρια: Κατερίνα Γρυμπογιάννη, Επικεφαλής Επιθεωρήτρια της TUV Rheinland Α.Ε. 1 13/7/2012 ΗΜΕΡΙΔΑ: ΠΙΣΤΟΠΟΙΗΣΕΙΣ ΠΟΙΟΤΗΤΑΣ ΣΤΙΣ ΥΠΗΡΕΣΙΕΣ ΥΓΕΙΑΣ

5.1. Χωροταξικός Σχεδιασμός Κριτήρια αξιολόγησης Χωροταξικού Σχεδιασμού Δραστηριότητες Χωροταξικού Σχεδιασμού...

22/2/2014 ΑΡΧΕΣ ΟΡΓΑΝΩΣΗΣ ΚΑΙ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΥΠΗΡΕΣΙΩΝ. Επιστήμη Διοίκησης Επιχειρήσεων. Πότε εμφανίστηκε η ανάγκη της διοίκησης;

ΔΙΟΙΚΗΣΗ ΒΙΟΜΗΧΑΝΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ III ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΕΛΕΓΧΟΣ ΠΟΙΟΤΗΤΑΣ

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή

ΠΟΙΟΤΗΤΑ στην Αιμοδοσία

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι

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

ΕΝΤΥΠΟ ΕΣΩΤΕΡΙΚΗΣ ΟΡΙΖΟΝΤΙΑΣ ΕΠΙΘΕΩΡΗΣΗΣ

Κεφάλαιο 2: Έννοιες και Ορισμοί

Μοντέλο συστήματος διαχείρισης της ποιότητας

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαχείριση Πολιτισμικών Δεδομένων

Μεθοδολογίες Παραγωγής Λογισµικού

ΠΡΟΓΡΑΜΜΑ ΔΙΑ ΒΙΟΥ ΜΑΘΗΣΗΣ ΑΕΙ ΓΙΑ ΤΗΝ ΕΠΙΚΑΙΡΟΠΟΙΗΣΗ ΓΝΩΣΕΩΝ ΑΠΟΦΟΙΤΩΝ ΑΕΙ (ΠΕΓΑ)

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

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

ΒΙΟΜΗΧΑΝΙΚΕΣ ΕΦΑΡΜΟΓΕΣ. Μηχανική όραση Cognex... για μέγιστη αξιοπιστία στην παραγωγή. Τρόφιμα & Ποτά

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

«Διαχείριση Ποιότητας»

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

Διοικητική των επιχειρήσεων

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

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Η αξιολόγηση των μαθητών

Εγχειρίδιο Ποιότητας

Τεχνολογία Λογισμικού

οικονομικές τάσεις Εκτεταμένη συνεργασία της εφοδιαστικής αλυσίδας. έργου FLUID-WIN το οποίο χρηματοδοτήθηκε από το 6ο Πρόγραμμα Πλαίσιο Παγκόσμιες

ΔΙΟΙΚΗΣΗ ΠΑΡΑΓΩΓΗΣ. ΕΝΟΤΗΤΑ 4η ΠΡΟΒΛΕΨΗ ΖΗΤΗΣΗΣ

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Σχεδιαστικά Προγράμματα Επίπλου

Transcript:

Μεταπτυχιακή εργασία Αξιολόγηση Σταθερότητας Open Source με χρήση Μετρικών Καλύβα Δήμητρα (Α.Μ.: 582) ΜΔΕ: Επιστήμη και Τεχνολογία Υπολογιστών Επιβλέπων καθηγητής: Μιχάλης Ξένος

Ευχαριστίες Θα ήθελα να ευχαριστήσω τον κ. Ξένο Μιχάλη για την πολύτιμη βοήθειά του κατά τη διάρκεια εκπόνησης αυτής της διπλωματικής εργασίας, καθώς και την πατρική μου οικογένεια που με ώθησαν να ξεκινήσω το μεταπτυχιακό. Και τέλος, το σύζυγό μου για την ηθική συμπαράσταση και την υπομονή του σε όλες τις φάσεις της παρούσας εργασίας. Σταθερότητα προγράμματος open source με χρήση μετρικών 2

Αξιολόγηση Σταθερότητας (Stability) κώδικα Ανοιχτού Λογισμικού με χρήση Μετρικών Δήμητρα Καλύβα Φιλιππή Περίληψη: Το τελευταίο διάστημα, ο όρος «ποιότητα λογισμικού» γίνεται ολοένα και πιο δημοφιλής. Όλο και μεγαλύτερη σημασία δίνεται στο τι είναι ποιότητα λογισμικού, αν μπορεί να μετρηθεί και με ποιους τρόπους κι επίσης το αν αξίζει να γνωρίζει κανείς στη φάση ανάπτυξης λογισμικού πόσο ποιοτικό είναι ένα πρόγραμμα. Επιπλέον, η ανάπτυξη λογισμικού ανοιχτού κώδικα βελτιώνεται και εξελίσσεται με γρήγορους ρυθμούς. Η παρούσα διπλωματική εργασία έχει ως στόχο την εξαγωγή συμπερασμάτων, ώστε να αποτιμηθεί η σταθερότητα ενός προγράμματος ανοιχτού λογισμικού με χρήση μετρικών. Το πρόγραμμα το οποίο μελετήθηκε ήταν το Win Merge και οι μετρικές των ρουτινών του υπολογίστηκαν με τη βοήθεια του προγράμματος Source Monitor. Αρχικά, ταξινομήθηκαν οι ρουτίνες σε κατηγορίες ανάλογα με τον αριθμό των εκδόσεων στις οποίες είχαν τροποποιηθεί. Στη συνέχεια, υπολογίστηκαν οι μέσοι όροι των ρουτινών για κάθε κατηγορία και προέκυψαν τα αντίστοιχα διαγράμματα (ένα για κάθε μετρική). Λέξεις κλειδιά: ποιότητα λογισμικού, ανοιχτό λογισμικό, σταθερότητα κώδικα, μετρικές. Σταθερότητα προγράμματος open source με χρήση μετρικών 3

Evaluation of Stability Open Source with use of metrics Dimitra Kalyva Filippi Summary : Nowadays, the term software quality becomes more and more popular. In addition, more and more people are interested in what it is quality of software, if and how it can be measured and whether it is worth knowing the quality of your program in the phase of software development. Moreover, the development of open source is improved with rapid rythm. This project aims at the export of conclusions, so that the stability of a program of open source is evaluated by using metrics. The program we used is Win Merge and metrics were calculated by using Source Monitor program. Initially, the routines were categorized in categories depending on the number of versions in which they had been modified. Afterwards, we calculated the averages of routines for each category and we resulted in the corresponding diagrams (for each metric). Keywords: software quality, open source, stability, metrics. Σταθερότητα προγράμματος open source με χρήση μετρικών 4

Περιεχόμενα Κεφάλαιο 1 Εισαγωγή... 7 Κεφάλαιο 2 Ποιότητα Λογισμικού... 8 2.1 Ορισμοί... 8 2.2 Ιστορική Αναδρομή... 10 2.3 Ποιότητα Προϊόντος και Ποιότητα Λογισμικού... 11 2.4 Σύστημα Ποιότητας Λογισμικού... 14 2.4.1 Εφαρμογή του Συστήματος Ποιότητας Λογισμικού... 15 2.4.2 Χρήστες του Συστήματος Ποιότητας Λογισμικού... 18 2.5 Μοντέλα και Πρότυπα Λογισμικού... 20 Κεφάλαιο 3 Λογισμικό ανοιχτού κώδικα (Open Source)... 26 3.1 Ορισμός... 26 3.2 Ποιοι παράγουν OpenSource... 27 3.3 Άδειες χρήσης OpenSource... 28 3.3.1 Ακαδημαϊκές Άδειες... 28 3.3.2 Άδειες Ανοιχτού Λογισμικού... 29 3.3.3 Άδειες τύπου Mozilla... 29 3.4 Αποτίμηση ποιότητας σε λογισμικά κλειστού και ανοιχτού κώδικα... 29 3.5 Κατάλογος Open Source 2007... 31 3.6 Παρατηρητήριο Ποιότητας Λογισμικού για OpenSource (SQO-OSS)... 34 3.6.1 Σχεδιασμός του SQO-OSS... 34 3.6.2 Αναμενόμενα Αποτελέσματα Ποιότητας... 36 3.7 Παρατηρητήριο Ποιότητας Λογισμικού και Περιβάλλον Εργασίας Κ... 37 Κεφάλαιο 4 Μετρικές για OpenSource... 39 4.1 Η έννοια των μετρικών... 39 4.2 Κατηγοριοποίηση των μετρικών... 41 4.3 Οι μετρικές που χρησιμοποιούμε στο πείραμά μας... 44 Κεφάλαιο 5 Μέθοδος και Εργαλεία... 47 5.1 Η μεθοδολογία... 47 5.2 Το εργαλείο SourceMonitor... 47 5.1.1 Αρχές και Ορολογία... 49 5.1.2 Τρόπος λειτουργίας του SourceMonitor... 51 5.3 To WinMerge... 54 5.3.1 Γιατί το επιλέξαμε... 54 5.3.2 Χαρακτηριστικά του WinMerge... 54 5.3.3 Τρόπος λειτουργίας του WinMerge... 55 5.3.4 Οι εκδόσεις του WinMerge... 61 5.3.5 Ποιες ρουτίνες περιέχει... 61 Σταθερότητα προγράμματος open source με χρήση μετρικών 5

Κεφάλαιο 6 Πειράματα Μετρήσεις... 63 6.1 Μετρική LOC... 64 6.2 Μετρική αριθμός εντολών... 65 6.3 Μετρική ποσοστό εντολών διακλάδωσης... 66 6.4 Μετρική ποσοστό σχολίων... 67 6.5 Μετρική αριθμός κλάσεων... 68 6.6 Μετρική μέθοδοι/κλάση... 69 6.7 Μετρική μέσος όρος εντολών/μέθοδο... 70 6.8 Μετρική μέγιστη πολυπλοκότητα... 71 6.9 Μετρική μέγιστο βάθος... 72 6.10 Μετρική μέσο βάθος... 73 6.11 Μετρική μέση πολυπλοκότητα... 74 6.12 Μετρική αριθμός συναρτήσεων... 75 Κεφάλαιο 7 Επίλογος... 76 Συμπεράσματα... 76 Βιβλιογραφία... 77 Παραρτήματα Παράρτημα Α... 79 Παράρτημα Β... 87 Σταθερότητα προγράμματος open source με χρήση μετρικών 6

Κεφάλαιο 1: Εισαγωγή Η παρούσα εργασία πραγματοποιήθηκε με σκοπό να συμβάλλει στην αξιολόγηση σταθερότητας προγραμμάτων με τη βοήθεια μετρικών. Παρακάτω, αναφέρεται η δομή της εργασίας και το περιεχόμενο των κεφαλαίων της. Η εργασία οργανώνεται σε 7 κεφάλαια. Το πρώτο κεφάλαιο είναι εισαγωγικό και παρουσιάζει τη δομή και το περιεχόμενο της εργασίας, ενώ το δεύτερο κεφάλαιο αναφέρεται στην έννοια της ποιότητας γενικά και πιο διεξοδικά στην έννοια της ποιότητας λογισμικού. Σε αυτό το κεφάλαιο, γίνεται εισαγωγή στις έννοιες και τους ορισμούς της ποιότητας και μια σύντομη ιστορική αναδρομή. Ακόμη, επεξηγούνται οι ιδιαιτερότητες στην ποιότητα λογισμικού σε σχέση με την ποιότητα στην παραγωγή υλικών αγαθών. Επίσης, παρουσιάζεται το σύστημα ποιότητας λογισμικού και η συνεισφορά του στην ανάπτυξη λογισμικού. Τέλος, περιγράφονται τα πιο γνωστά μοντέλα ποιότητας και τα επιμέρους χαρακτηριστικά καθενός από αυτά. Το τρίτο κεφάλαιο ασχολείται με το λογισμικό ανοιχτού κώδικα (Open Source). Δίνεται ο ορισμός και αναπτύσσεται σύντομα η έννοια του Open Source, δηλαδή παρουσιάζεται το ποιοι παράγουν κώδικα Open Source και ποια είδη αδειών χρήσης Open Source υπάρχουν. Επίσης, γίνεται μια αναφορά στη διαφορά μεταξύ αποτίμησης ποιότητας σε λογισμικά κλειστού και σε λογισμικά ανοιχτού κώδικα. Τέλος, παρουσιάζεται συνοπτικά το παρατηρητήριο ποιότητας λογισμικού για Open Source. Στο τέταρτο κεφάλαιο γίνεται μια εισαγωγή στις μετρήσεις που διεξάγονται στα πλαίσια ενός συστήματος ποιότητας λογισμικού με χρήση μετρικών. Παρουσιάζονται κάποιες κατηγορίες μετρικών και τέλος, αναφέρονται οι μετρικές που χρησιμοποιήθηκαν στο πείραμα. Στο πέμπτο κεφάλαιο παρουσιάζεται η μεθοδολογία της εργασίας και τα δύο προγράμματα με τη βοήθεια των οποίων υλοποιήθηκε. Αρχικά, γίνεται παρουσίαση του SourceMonitor (του προγράμματος που χρησιμοποιήθηκε για τον υπολογισμό των μετρικών) και στη συνέχεια, του προγράμματος WinMerge (που αφενός αποτέλεσε το αντικείμενο του πειράματος και αφετέρου συνέβαλε στη σύγκριση των ρουτινών στις διάφορες εκδόσεις). Στο έκτο κεφάλαιο, παρουσιάζονται τα πειράματα, οι μετρήσεις και τα αποτελέσματα των μετρήσεων για καθεμία από τις μετρικές που χρησιμοποιήθηκαν στην εργασία. Τέλος, το έβδομο και τελευταίο κεφάλαιο αποτελεί τον επίλογο της εργασίας και παρουσιάζει τα συμπεράσματα του πειράματος και κάποιες προτάσεις για νέες έρευνες. Ακολούθως υπάρχει η βιβλιογραφία και το παράρτημα όπου βρίσκονται οι πίνακες με τα δεδομένα του πειράματος. Σταθερότητα προγράμματος open source με χρήση μετρικών 7

Κεφάλαιο 2: Ποιότητα Λογισμικού 2.1 Ορισμοί Η έννοια της ποιότητας εισάγεται απ τα αρχαία χρόνια με τον Αριστοτέλη (330 π.χ.). Ο Αριστοτέλης είναι αυτός που πρώτος διακρίνει το «ποιόν» και τα χαρακτηριστικά του και αργότερα υιοθετούν την έννοια αυτή κι άλλοι σχολαστικοί φιλόσοφοι. Με τη γενική σημασία του όρου ποιότητα εννοούμε κάθε ιδιότητα ενός πράγματος είτε αυτή ανήκει στην ουσία του πράγματος, είτε αποδίδεται επιπρόσθετα σε αυτή. Ο επίσημος ορισμός της ποιότητας δίνεται στο πρότυπο ISO 8402 και έχει υιοθετηθεί και από τον Ελληνικό Οργανισμό Τυποποίησης (ΕΛ.Ο.Τ.). Ποιότητα είναι το σύνολο των χαρακτηριστικών μιας οντότητας που της αποδίδουν την ικανότητα να ικανοποιεί εκφρασμένες και συνεπαγόμενες ανάγκες. Πέρα από αυτό τον ορισμό, στη βιβλιογραφία υπάρχουν πάρα πολλοί ορισμοί. Παρακάτω, δίνονται κάποιοι ορισμοί ποιότητας με βάση τη χρονολογική σειρά που ορίστηκαν. Στο παλαιό πρότυπο Α3 του τότε ASQC (American Society for Quality Control) [Ame78] και τώρα ASQ (American Society for Quality) υπάρχει ένας από τους πρώτους ορισμούς της ποιότητας: «Ποιότητα είναι η συλλογή των χαρακτηριστικών και των ιδιοτήτων του προϊόντος που σχετίζονται με τη δυνατότητα του να εκπληρώνει τις ζητούμενες ανάγκες των πελατών». Ένας πολύ απλός ορισμός για την ποιότητα δίνεται από τον Philip Crosby [Cro79], έναν από τους πρωτοπόρους στα θέματα της ποιότητας: «Ποιότητα είναι η συμμόρφωση με τις απαιτήσεις των χρηστών». Παρόμοιος είναι και ο ορισμός του Joseph Juran [Jur80] που είναι επίσης ένας από τους πρωτοπόρους της ποιότητας: «Ποιότητα είναι η καταλληλότητα προς χρήση». Υπάρχουν αντίστοιχοι ορισμοί κι από άλλους πολυγραφότατους συγγραφείς, όπως του Feigenbaum [Fei83] που λέει ότι: «Ποιότητα είναι η συλλογή των χαρακτηριστικών σχεδιασμού, κατασκευής και συντήρησης, δια μέσου των οποίων το προϊόν κατά τη χρήση του θα εκπληρώσει τις προσδοκίες των πολιτών», ή του Aubrey [Aub85]: «Ποιότητα είναι η συμμόρφωση με τυποποιημένες προδιαγραφές που περιγράφουν τα βασικά χαρακτηριστικά του προϊόντος και έχουν βασιστεί στις ανάγκες και προσδοκίες των πελατών». Αν και οι ορισμοί της ποιότητας είναι πολλοί, το κοινό στοιχείο τους είναι πως θεωρούν ότι η ποιότητα του προϊόντος είναι άμεσα συνυφασμένη με τις ανάγκες των πελατών (χρηστών για το λογισμικό) και την ικανοποίηση αυτών των αναγκών. Πέρα από τους ορισμούς, η σημερινή αντίληψη για την ποιότητα είναι ότι χαρακτηρίζει τη φύση, την εσωτερική υπόσταση των πραγμάτων. Έτσι. όταν λέμε για παράδειγμα ότι το τραπέζι δεν είναι καλής ποιότητας, εννοούμε ότι τα χαρακτηριστικά του (χρώμα, ξύλο, σχέδιο, κτλ) δεν είναι καλά και αυτό το διαπιστώνουμε με την εμπειρία μας (με την όραση ή την αφή). Τόσο από τους ορισμούς όσο και από την αντίληψή μας για την ποιότητα προκύπτουν δύο βασικές ιδιότητες της ποιότητας [Xen03]. Πρώτον, η ποιότητα νοείται σε σχέση με τα χαρακτηριστικά της και συντίθεται από αυτά, οπότε για να συμπεράνουμε το είδος της ποιότητας ενός αντικειμένου πρέπει να εξετάσουμε τα χαρακτηριστικά του εκείνα που τη συνθέτουν. Δεύτερον, η εξέταση των ποιοτικών αυτών Σταθερότητα προγράμματος open source με χρήση μετρικών 8

χαρακτηριστικών οδηγεί στην απόδοση κάποιου χαρακτηρισμού σε αυτά (σκληρόμαλακό, λείο-ανώμαλο, ψηλό-κοντό κτλ) ή και κάποιου αριθμού. Έτσι, από το χαρακτηρισμό των επιμέρους στοιχείων που απαρτίζουν την ποιότητα καταλαβαίνουμε το είδος της. Η απόδοση κάποιου αριθμού σε κάποιο χαρακτηριστικό γίνεται με τη διαδικασία της μέτρησης. Παλαιότερα όσοι ήθελαν να μιλήσουν για ποιότητα, υπήρχε η τάση χρήσης των επιμέρους στόχων της ποιότητας, παρόλο που αυτοί εμπεριέχονται στην έννοια «ποιότητα». Έτσι, μιλούσαμε για διασφάλιση ποιότητας (quality assurance) και για ποιοτικό έλεγχο (quality control). Διασφάλιση ποιότητας είναι η διαδικασία που εμπεριέχει τη διαχείριση της ποιότητας, δηλαδή την πράξη που εξασφαλίζει ή υποδεικνύει ότι ένα πρόγραμμα παραγωγής είναι συμβατό και λειτουργικά αποδοτικό. Έλεγχος ποιότητας είναι ένας κανόνας δράσης κατά τον οποίο χρησιμοποιούμε στρατηγικές, όπως οι επισκοπήσεις και ο στατιστικός έλεγχος απόδοσης για να διασφαλίσουμε ότι το προϊόν που θα παραχθεί θα είναι ποιοτικά αποδεκτό. Γενικά, ο έλεγχος ποιότητας δημιουργεί την ποιότητα, σύμφωνα με το πώς θεωρείται ότι θα έπρεπε να είναι, και η διασφάλιση ποιότητας εξασφαλίζει ότι η ποιότητα είναι πράγματι έτσι όπως θα έπρεπε να είναι. Σήμερα όμως, μιλάμε μόνο για ποιότητα κι αυτό σημαίνει ότι οι παραπάνω έννοιες εμπεριέχονται, ότι δηλαδή σ ένα πρόγραμμα ποιότητας έχουμε σαν στόχο να διασφαλίσουμε και να ελέγξουμε την ποιότητα του προϊόντος που παράγουμε. Προκειμένου, να διασφαλιστεί η ποιότητα σε κάποιο προϊόν, χρησιμοποιούμε επισκοπήσεις (inspections), εσωτερικούς περιοδικούς ελέγχους (audits) και επίβλεψη (surveillance). Επισκόπηση είναι η υψηλή οριοθέτηση και η λεπτομερής εξέταση ενός προϊόντος ή μιας διαδικασίας. Η επισκόπηση, αν χρησιμοποιηθεί κατάλληλα, παρέχει ένα μεγάλο σύνολο από πληροφορίες που αφορούν στην απόδοση μιας διαδικασίας. Αυτή η μορφή ελέγχου ποιότητας δε θα πρέπει να χρησιμοποιείται ως η βασική μέθοδος που θα μας εξασφαλίσει ένα ποιοτικό προϊόν, αλλά απλά ως ένα εργαλείο για τη συλλογή πληροφοριών. Εσωτερικός περιοδικός έλεγχος είναι η επισκόπηση σε έναν οργανισμό, με περιοδικότητα και επιμονή και έχοντας ως τελικό σκοπό την εγκαθίδρυση ενός προτύπου ποιότητας. Ο εσωτερικός περιοδικός έλεγχος πρέπει να είναι καλά ορισμένος και πρέπει να δίνει απαντήσεις σε βασικά ερωτήματα όπως για παράδειγμα, αν ο οργανισμός διαθέτει εγχειρίδιο ποιότητας (quality manual), λειτουργικό εγχειρίδιο (operating manual) ή διαδικασίες ποιότητας (quality procedures), καθώς και αν υπάρχει και ακολουθείται κάποιο πρόγραμμα ποιότητας (quality program) και αν αυτό είναι αποτελεσματικό, δηλαδή, αν τα αποτελέσματά του είναι σταθερά και θετικά. Επίβλεψη είναι μια χαλαρή διαδικασία επισκόπησης που χρησιμοποιεί μερικές τεχνικές από τον περιοδικό έλεγχο και μερικές από την επισκόπηση. Η επίβλεψη χρησιμοποιείται για να απαντά σε ερωτήματα του τύπου: αν ακολουθείται η διαδικασία εκτέλεσης όπως σχεδιάστηκε και αν το προϊόν διαθέτει μια αποδεκτή ποιότητα. Σε μία μεγάλη επιχείρηση ή βιομηχανία που έχει εγκαθιδρύσει ένα πρόγραμμα ποιότητας ή σύστημα ποιότητας, όπως αλλιώς ονομάζεται, οι τομείς που ασχολούνται με την ποιότητα του τελικού προϊόντος είναι αρκετοί και τα Σταθερότητα προγράμματος open source με χρήση μετρικών 9

άτομα που έχουν ως στόχο τη διασφάλιση ενός υψηλού ποιοτικού επιπέδου πρέπει να διαθέτουν την κατάλληλη εκπαίδευση, γνώσεις και υπευθυνότητα. Το πρόγραμμα ποιότητας μίας επιχείρησης περιλαμβάνει το σύνολο των διαδικασιών, εγχειριδίων, εργαλείων και ανθρώπων που έχουν την ευθύνη για την ποιότητα του παραγόμενου προϊόντος ή την ικανοποίηση των απαιτήσεων των πελατών. Τυπικά, οι ευθύνες για τη διασφάλιση της ποιότητας στους τομείς ενός οργανισμού είναι χωρισμένες σε τρεις βασικές κατηγορίες: Τη διαχείριση ποιότητας (quality management), που έχει σχέση με την άσκηση της ανώτατης διαχείρισης και την ανατροφοδότηση της παραγωγής με ακρίβεια και εγκυρότητα. Την τεχνολογία ποιότητας (quality engineering), που έχει σχέση με την ανάλυση των προβλημάτων που σχετίζονται με την ποιότητα, την επίλυσή τους, την εκπαίδευση του προσωπικού και την εγκαθίδρυση προγραμμάτων που βελτιώνουν την ποιότητα. Την επισκόπηση ποιότητας (quality inspection), που έχει ως βασικούς ρόλους την πιστοποίηση και επικύρωση της ποιότητας, αλλά και τη συλλογή δεδομένων για να αναγνωρίσει τη ρίζα των προβλημάτων στην ποιότητα των προϊόντων και να καταλήξει σ ένα διορθωτικό μοντέλο. 2.2 Ιστορική αναδρομή Σε όλες τις οργανωμένες κοινωνίες κάθε εποχής, από την αρχαιότητα μέχρι σήμερα, όπου υπάρχει υψηλή πολιτισμική στάθμη, αυτή συνοδεύεται πάντα από μία ανεπτυγμένη τεχνολογία. Και το πιο σημαντικό η τελευταία λειτουργεί στη βάση ενός μηχανισμού ελέγχου της ποιότητας και προστασίας του καταναλωτή. Χαρακτηριστικά παραδείγματα μπορεί κανείς να συναντήσει στην αρχαία Βαβυλώνα, όπου ανάμεσα στους νόμους του Hammourabi υπάρχει και ο αρχαιότερος κανονισμός σχετικά με την οικοδομή. Σύμφωνα με αυτόν, αν ένας οικοδόμος χτίσει μια κατοικία για κάποιον, αλλά δεν πραγματοποιήσει την εργασία του σύμφωνα με τους ισχύοντες κανονισμούς και πρότυπα με αποτέλεσμα ένας τοίχος να παρουσιάσει κλίση, τότε ο οικοδόμος αυτός οφείλει να τον ενισχύσει με δικά του έξοδα [Bar96]. Η αντιμετώπιση του προβλήματος της ποιότητας, ο καθορισμός προτύπων και η χρήση μετρήσεων για τη διασφάλιση ποιότητας χρονολογείται αρκετά χρόνια πριν τη σημερινή εποχή. Στην αρχαία Αίγυπτο είχαν τεθεί οι βασικές αρχές της ποιότητας και υπήρχε τυποποίηση των μετρήσεων βασισμένη στο μήκος του βραχίονα του Φαραώ. Με βάση αυτό το μήκος κατασκευαζόταν ένα μοναδιαίο ραβδι. Κάθε κατασκευαστής έπρεπε να έχει ένα αντίστοιχο ραβδί που έπρεπε να το συγκρίνει με το μοναδιαίο κάθε φεγγάρι. Η τήρηση των κανόνων ποιότητας (συμμόρφωση με το μοναδιαίο ραβδί) ήταν αρκετά σημαντικό θέμα, αφού σε περίπτωση διαφοράς μήκους ο κατασκευαστής αντιμετώπιζε τη θανατική ποινή [Arn95]. Στην κλασσική Ελλάδα υπήρχε ένας μηχανισμός ελέγχου ποιότητας, τυποποίησης και πιστοποίησης των παραγόμενων και προσφερόμενων προϊόντων στον τόπο παραγωγής αλλά και στην αγορά. Οι αρχαίοι Έλληνες εφάρμοζαν πρότυπα με ιδιαίτερα αυστηρές προδιαγραφές που κάλυπταν όλο το φάσμα των τότε παραγόμενων προϊόντων, όπως τα μέταλλα και τα κράματά τους, τα γεωργικά προϊόντα, τα τρόφιμα και τα ποτά, αλλά και τις ίδιες τις κατασκευές χαρακτηριστικό παράδειγμα των οποίων αποτελεί ο Παρθενώνας του οποίου Σταθερότητα προγράμματος open source με χρήση μετρικών 10

ακόμη και σήμερα ύστερα από ένα διάστημα 2.500 ετών από την κατασκευή του, όλοι θαυμάζουμε τη συμμετρία και τη μετρική τελειότητα, αποτέλεσμα της προσήλωσης και της συνέπειας στην τήρηση των προδιαγραφών ποιότητας που βασίστηκαν σε μετρήσεις των αρχιτεκτόνων Ικτίνου και Καλλικράτη. Ακόμα, στην Αθηναϊκή Πολιτεία ορίζονταν με κλήρο 10 μετρονόμοι που ευθύνονται για όλα τα μέτρα και τα σταθμά της αγοράς και όφειλαν να μεριμνούν ώστε οι πωλητές να τα χρησιμοποιούν σωστά. Και στη αρχαία Ρώμη όμως, η ποιότητα ήταν θέμα ζωής και θανάτου. Μόλις τελείωνε η κατασκευή μιας γέφυρας κι έπρεπε να αφαιρεθούν τα υποστηρίγματα, ο αρχιμηχανικός στεκόταν κάτω από τη γέφυρα έτσι ώστε σε περίπτωση που αυτή καταρρεύσει να σκοτωθεί. Δεν είναι παράξενο λοιπόν ότι αρκετές ρωμαϊκές γέφυρες όχι μόνο διατηρούνται αλλά χρησιμοποιούνται ακόμα και σήμερα. 2.3 Ποιότητα Προϊόντος και Ποιότητα Λογισμικού Στη βιομηχανική παραγωγή υλικών αγαθών χρησιμοποιούνται τεχνικές δειγματοληψίας και στατιστικές μέθοδοι όπως τα διαγράμματα ελέγχου, ώστε να εντοπίζονται γρήγορα τα προβλήματα στη διαδικασία παραγωγής που μπορούν να οδηγήσουν σε παραγωγή ποσοτήτων προϊόντων χαμηλής ποιότητας, με βασικό στόχο τον έλεγχο της απόκλισης από τις αρχικές ποιοτικές προδιαγραφές. Η διαδικασία παραγωγής βασίζεται: α) στη δημιουργία ενός μοντέλου το οποίο πληρεί τις ποιοτικές προδιαγραφές και β) στη μαζική παραγωγή προϊόντων που είναι παρόμοια (μέσα στα όρια που καθορίζουν οι ποιοτικές προδιαγραφές) με το πρωτότυπο. Οι τεχνικές ποιοτικού που χρησιμοποιούνται στην παραγωγή υλικών αγαθών δίνουν μεγάλη έμφαση στο λεγόμενο «μη καταστροφικό έλεγχο», δηλαδή στο να βρεθούν τρόποι να ελεγχθεί η ποιότητα του προϊόντος χωρίς να χρειαστεί να προβούμε σε καταστροφή του δείγματος που εξετάζουμε. Το αντικείμενο της ποιότητας λογισμικού βασίζεται τόσο στην από κοινού εφαρμογή των τεχνικών διασφάλισης της ποιότητας των υλικών αγαθών (τεχνικών που αναπτύχθηκαν αρκετά χρόνια πριν από την εμφάνιση της παραγωγής λογισμικού), όσο και στην εφαρμογή τεχνικών της τεχνολογίας λογισμικού (επιστημονικού κλάδου που αναπτύχθηκε κατά τα πρώτα χρόνια της γενικευμένης ανάπτυξης λογισμικού). Η ποιότητα λογισμικού (software quality) δανείζεται στοιχεία από την ποιότητα στην παραγωγή υλικών αγαθών, αλλά έχει και ιδιαιτερότητες και δια από αυτή. Συγκεκριμένα, υπάρχουν βασικές δια στον τρόπο προσέγγισης της ποιότητας στο λογισμικό από την ποιότητα όπως εφαρμόζεται στη μαζική παραγωγή υλικών προϊόντων. Σε αντίθεση με τη μαζική παραγωγή όπου παράγονται ποσότητες ίδιων (φαινομενικά) προϊόντων, το λογισμικό παράγεται μια φορά. Έτσι, με εξαίρεση τις διαδικασίες συσκευασίας και συνοδευτικού υλικού (εγχειρίδιο, οδηγίες εγκατάστασης, μέσο αποθήκευσης κτλ), αυτό καθαυτό το λογισμικό παράγεται μόνο μια φορά και αναπαράγεται σε αντίτυπα που είναι ακριβή αντίγραφα του πρωτοτύπου. Αυτό σημαίνει ότι, αν και οι στόχοι του προγράμματος ποιότητας είναι ίδιοι (δηλαδή η διασφάλιση της ποιότητας του τελικού προϊόντος), η εφαρμογή τους διαφέρει. Δεν είναι το ζητούμενο ο εντοπισμός και η απόρριψη των προϊόντων που αποκλίνουν από τις προδιαγραφές, αλλά η διασφάλιση της ποιότητας ενός και μοναδικού πρωτότυπου του προϊόντος. Με μια πρώτη ματιά, κάτι τέτοιο μοιάζει πιο εύκολο από το αντίστοιχο πρόβλημα της μαζικής παραγωγής, αφού Σταθερότητα προγράμματος open source με χρήση μετρικών 11

διασφαλίζοντας την ποιότητα ενός πρωτοτύπου αυτόματα διασφαλίζεται η ποιότητα για όλα τα υπόλοιπα αντίγραφα. Όμως, αυτό συνεπάγεται ότι κάθε ατέλεια του πρωτοτύπου αυτόματα κληροδοτείται σε όλα τα αντίγραφα. Το βασικό πρόβλημα της διασφάλισης ποιότητας λογισμικού είναι η έλλειψη μετρήσιμων στόχων και διαδικασιών μέτρησης. Μπορεί να είναι εύκολο να ζητάμε μια βίδα να έχει διάμετρο κεφαλής 7 χιλιοστά με απόκλιση ±1%, αλλά πώς μπορούμε να ζητάμε από το λογισμικό να έχει υψηλή συντηρισιμότητα, ή να είναι επεκτάσιμο, ή να έχει υψηλή αξιοπιστία. Είναι επίσης εφικτό να μετρήσουμε τις βίδες και να απορρίψουμε αυτές που έχουν διάμετρο κεφαλής έξω από τα επιθυμητά όρια, αλλά δεν είναι εξίσου εφικτό να πραγματοποιήσουμε κάτι ανάλογο για το λογισμικό. Όπως αναφέρει ο Gustafson: «Όταν ένας εργάτης που δουλεύει σε μια γραμμή μαζικής παραγωγής κάνει ένα λάθος, τότε πετάει το εξάρτημα που έφτιαχνε. Αν το κάνει συχνά, σε λίγο ένας επιστάτης θα θέλει να μάθει γιατί η στοίβα με τα πεταμένα εξαρτήματα είναι τόσο μεγάλη. Αυτό το κάνουμε συνέχεια με το λογισμικό, αλλά κανένας δεν μπορεί να δει τη στοίβα με τα πεταμένα εξαρτήματα.» Άλλο πρόβλημα της διασφάλισης ποιότητας λογισμικού είναι ότι η πλειονότητα του λογισμικού έχει αναπτυχθεί ως ολότητα και όχι ως συναρμολόγηση ήδη υπαρχόντων συστατικών (κάτι που είναι συνηθισμένο στην παραγωγή υλικών αγαθών). Τέλος, μια άλλη ιδιαιτερότητα της διασφάλισης ποιότητας λογισμικού είναι ότι συνήθως δεν υπάρχει ιστορικό παρελθόν σημαντικής διάρκειας στο οποίο να μπορούμε να ανατρέξουμε και να αναζητήσουμε ενδείξεις παραγωγικότητας, έτσι ώστε να μπορούμε να εκτιμήσουμε την αποτελεσματικότητα νέων εργαλείων, μεθόδων και προτύπων. Ακόμα και επιχειρήσεις που λειτουργούν πολλά χρόνια και έχουν ιστορικά αρχεία, έχουν αλλάξει τόσο πολύ τις μεθόδους ανάπτυξης λογισμικού (λόγω των ραγδαίων εξελίξεων στις τεχνολογίες λογισμικού), ώστε αυτά τα αρχεία να μην είναι απόλυτα αξιοποιήσιμα. Επίσης, το γεγονός ότι το λογισμικό είναι σχετικά νέο προϊόν κάνει πολύ δύσκολη τη σωστή επικοινωνία ανάμεσα στον πελάτη και στο δημιουργό του λογισμικού. Πολύ συχνά οι πελάτες δε μένουν ικανοποιημένοι από το αποτέλεσμα, διότι θεωρούν ότι οι απαιτήσεις τους δεν έγιναν σωστά αντιληπτές από τους δημιουργούς. Πέρα από τα μειονεκτήματα όμως, βασικό πλεονέκτημα της διασφάλισης ποιότητας λογισμικού είναι ότι όλοι οι έλεγχοι (ανεξάρτητα από το βαθμό δυσκολίας τους) μπορούν να πραγματοποιηθούν χωρίς να χρειάζεται να καταστραφεί το προϊόν (λογισμικό). Ο εντοπισμός τεχνικών μη καταστροφικού ελέγχου, που είναι μεγάλο πρόβλημα στην παραγωγή υλικών αγαθών, δεν έχει νόημα για το λογισμικό. Η ανάγκη επιμερισμού της ποιότητας σε χαρακτηριστικά τα οποία θα συνθέτουν την έννοια της ποιότητας προέκυψε λόγω του ότι η έννοια της ποιότητας λογισμικού είναι αρκετά αφηρημένη και δεν επιτρέπει τον καθορισμό μετρήσιμων στόχων. Τα χαρακτηριστικά αυτά ονομάζονται παράγοντες ποιότητας (quality factors). Παράγοντες ποιότητας είναι ομάδες χαρακτηριστικών τα οποία συνθέτουν την ποιότητα ενός προϊόντος, έχουν την ελάχιστη δυνατή επικάλυψη μεταξύ τους και είναι επαρκείς για τη σύνθεση της ποιότητας. Η διαδικασία διάσπασης της ποιότητας σε παράγοντες ποιότητας και του εντοπισμού των ποιοτικών χαρακτηριστικών των οποίων η διασφάλιση είναι σημαντική για το εκάστοτε έργο (με στόχο τη διενέργεια μετρήσεων για τον έλεγχο αυτών των χαρακτηριστικών), αποτελεί μια βασική διαδικασία κάθε Σταθερότητα προγράμματος open source με χρήση μετρικών 12

προγράμματος ποιότητας λογισμικού. Το σκεπτικό αυτό παρουσιάστηκε στα τέλη της δεκαετίας του 80 από τον McCall [Mcc77] και τον Boehm [Boe78]. Ο Garvin [Gar84] ορίζει την ποιότητα ως μία πολύπλοκη και πολυπρόσωπη έννοια που μπορεί να περιγραφεί με πέντε διαφορετικές θεωρήσεις: 1. εμπειρική θεώρηση: η ποιότητα είναι κάτι που μπορεί να αναγνωριστεί εμπειρικά, αλλά όχι να οριστεί ούτε να επιτευχθεί πλήρως 2. θεώρηση από την πλευρά του χρήστη: αντιμετωπίζει την ποιότητα ως καταλληλότητα για χρήση 3. κατασκευαστική θεώρηση: αντιμετωπίζει την ποιότητα ως ικανοποίηση των κατασκευαστικών προδιαγραφών του χρήστη 4. θεώρηση προϊόντος: η ποιότητα ταυτίζεται με τα ενδογενή χαρακτηριστικά του προϊόντος 5. θεώρηση βάσει της αξίας: η ποιότητα εξαρτάται από το ποσό που διατίθεται να πληρώσει ο χρήστης για το προϊόν. Ανάλογα με τη θεώρηση της ποιότητας, προκύπτουν και αντίστοιχοι παράγοντες ποιότητας που συνεισφέρουν στην «ποιότητα του προϊόντος». Αυτοί οι παράγοντες μπορεί να διαφέρουν για την επιχείρηση που αναπτύσσει το λογισμικό (θεώρηση του κατασκευαστή) σε σχέση με αυτούς που ενδιαφέρουν τους τελικούς χρήστες. Ακόμη μπορεί να βασίζονται σε πολιτισμικές ή κοινωνικές αντιλήψεις για την ποιότητα. Πιο συγκεκριμένα, οι τελικοί χρήστες ενδιαφέρονται κυρίως για παράγοντες όπως η λειτουργικότητα (functionality) και η ευχρηστία (usability). Λειτουργικότητα είναι ένα σύνολο χαρακτηριστικών που είναι φορείς ενός συνόλου λειτουργιών και των καθορισμένων ιδιοτήτων τους. Οι λειτουργίες αυτές ικανοποιούν δηλωμένες ή συνεπαγόμενες ανάγκες. Οι συνεπαγόμενες ανάγκες σχετίζονται με τις κοινωνικές αντιλήψεις για την ποιότητα. Απ τον παραπάνω ορισμό προκύπτει ότι ο παράγοντας αυτός σχετίζεται και με τις κοινωνικές αντιλήψεις για την ποιότητα. Ευχρηστία ενός συστήματος είναι η ικανότητά του να λειτουργεί αποτελεσματικά και αποδοτικά ενώ παρέχει υποκειμενική ικανοποίηση στους χρήστες. (ISO 9241) Για τους τελικούς χρήστες είναι σημαντικό, πέρα από τις λειτουργίες που επιτελεί το λογισμικό, η χρήση του να είναι εύκολη και κατανοητή από όλους. Αναφορικά με την ομάδα υλοποίησης, το ενδιαφέρον εντοπίζεται σε παράγοντες ποιότητας όπως η συντηρισιμότητα (maintainability), η ελεγξιμότητα (testability), η επαναχρησιμοποιησιμότητα (reusability) και η μεταφερσιμότητα (portability). Συντηρισιμότητα είναι ένα σύνολο χαρακτηριστικών που σχετίζονται με την απαιτούμενη προσπάθεια για να υλοποιηθούν συγκεκριμένες αλλαγές (που μπορεί να περιλαμβάνουν διορθώσεις, βελτιώσεις και προσαρμογές) στο λογισμικό, στο περιβάλλον ή στις απαιτήσεις. Για να μπορεί η ομάδα ανάπτυξης να υλοποιεί αλλαγές, χρειάζεται να μπορεί να ελέγχει το λογισμικό για λάθη και παραλείψεις, αλλά και να μπορεί να επαναχρησιμοποιεί τμήματα του λογισμικού που αναπτύχθηκε για ένα έργο σε κάποιο άλλο έργο. Ελεγξιμότητα είναι ένα σύνολο χαρακτηριστικών που σχετίζονται με την απαιτούμενη προσπάθεια για τον έλεγχο του βαθμού στον οποίο το λογισμικό ικανοποιεί τις προδιαγραφές χρήσης και λειτουργίας χωρίς λάθη ή ατέλειες. Σταθερότητα προγράμματος open source με χρήση μετρικών 13

Επαναχρησιμοποιησιμότητα είναι ένα σύνολο χαρακτηριστικών που σχετίζονται με την απαιτούμενη προσπάθεια για επαναχρησιμοποίηση του συνόλου ή μέρους του λογισμικού που έχει αναπτυχθεί. Μεταφερσιμότητα είναι ένα σύνολο χαρακτηριστικών που σχετίζονται με τη δυνατότητα του λογισμικού να μεταφέρεται από ένα περιβάλλον σε άλλο (υλικό, λογισμικό ή οργανωτικό περιβάλλον). Για την κοινωνία, όπως εύκολα μπορούμε να παρατηρήσουμε δε νοείται το λογισμικό να μην είναι αξιόπιστο και αποτελεσματικό. Αυτοί οι παράγοντες ποιότητας (αξιοπιστία και αποδοτικότητα) υπονοούνται συνήθως στις προδιαγραφές των μικρών έργων. Αξιοπιστία (reliability) είναι ένα σύνολο χαρακτηριστικών που είναι φορείς της δυνατότητας του λογισμικού να διατηρεί το επίπεδο απόδοσής του σε καθορισμένες συνθήκες και για προκαθορισμένη χρονική περίοδο. Αποδοτικότητα (effeciency) είναι ένα σύνολο χαρακτηριστικών που είναι φορείς της σχέσης που υφίσταται ανάμεσα στην επίδοση του λογισμικού και το σύνολο των πόρων που χρησιμοποιεί υπό καθορισμένες συνθήκες. Φυσικά σε εξειδικευμένα έργα όπου η αξιοπιστία ή η αποδοτικότητα είναι καθοριστικοί παράγοντες, τότε αυτοί παύουν να αφορούν κοινωνικές αντιλήψεις και μεταφέρονται στις απαιτήσεις του χρήστη. Για παράδειγμα σε μια εφαρμογή πραγματικού χρόνου, η αξιοπιστία και η αποδοτικότητα θα αντιμετωπιστούν τελείως διαφορετικά από μία εφαρμογή αυτοματισμού γραφείου. 2.4 Σύστημα Ποιότητας Λογισμικού Παρακάτω θα εξηγήσουμε την έννοια του προτύπου (standard), καθώς και τις έννοιες της οδηγίας (guideline) και της διαδικασίας (procedure). Το πρότυπο παρέχει κατευθύνσεις για το πώς ένα γεγονός θα αναπαρασταθεί στο χαρτί ή στον ηλεκτρονικό υπολογιστή. Πρότυπο είναι μία τεκμηριωμένη σύμβαση που περιέχει τεχνικές προδιαγραφές, ή άλλα ακριβή κριτήρια χρησιμοποιούμενα ως κανόνες ή κατευθυντήριες γραμμές για την εξασφάλιση της τυποποίησης των κατάλληλων υλικών, προϊόντων, διεργασιών και υπηρεσιών για τη διευκόλυνση της διεθνούς ανταλλαγής αγαθών και υπηρεσιών και της ανάπτυξης συνεργασίας στη σφαίρα των επιστημονικών, τεχνολογικών και οικονομικών ενεργειών. Διαδικασία ενός συστήματος ποιότητας είναι το κείμενο που περιγράφει πώς ένα συγκεκριμένο κομμάτι λογισμικού θα αναπτυχθεί. Οδηγία είναι ένα περιγραφικό κείμενο που επεξηγεί την εφαρμογή ενός προτύπου. Το σύστημα ποιότητας λογισμικού πρέπει να ικανοποιεί δύο βασικές αρχές: της ανεξαρτησίας (indepedence) και της ανιχνευσιμότητας (traceability). Η έννοια της ανεξαρτησίας σχετίζεται με την εγκυρότητα. Δηλαδή, ακριβώς επειδή είναι δύσκολο για έναν εργαζόμενο να εκτιμήσει την εγκυρότητα της εργασίας του, ένα σύστημα ποιότητας θα πρέπει να παρέχει τρόπους αξιολόγησης εργασιών όχι από Σταθερότητα προγράμματος open source με χρήση μετρικών 14

τους ίδιους τους δημιουργούς τους. Σχετικά με την ανιχνευσιμότητα, διακρίνουμε την ορθή ανιχνευσιμότητα (forward traceability) και την αντίστροφη ανιχνευσιμότητα (reverse traceability). Η πρώτη αναφέρεται στην ικανότητα ανίχνευσης (εντοπισμού), ξεκινώντας από τις λειτουργικές προδιαγραφές των τμημάτων του κώδικα που υλοποιούν αυτές τις λειτουργίες, ενώ η δεύτερη το αντίστροφο (την ανίχνευση ποιες λειτουργίες υλοποιεί κάποιο τμήμα του κώδικα). 2.4.1 Εφαρμογή του συστήματος ποιότητας Ένα πλήρες σύστημα ποιότητας έχει τρεις βασικούς στόχους: τη διασφάλιση ποιότητας διαδικασιών παραγωγής, τη διασφάλιση ποιότητας πόρων και τη διασφάλιση ποιότητας προϊόντων. Η διασφάλιση ποιότητας διαδικασιών παραγωγής (process quality assurance) έχει ως αντικείμενο τη συνεχή βελτιστοποίηση, βάσει των προδιαγραφών ποιότητας, των διαδικασιών παραγωγής του προϊόντος και γενικότερα της λειτουργίας της επιχείρησης. Η διασφάλιση ποιότητας πόρων (resource quality assurance) έχει ως αντικείμενο τη βελτίωση των πόρων που χρησιμοποιούνται για την παραγωγή του προϊόντος. Ως πόροι ορίζονται η υλικοτεχνική υποδομή της επιχείρησης (δηλαδή ο εξοπλισμός, τα εργαλεία, το λογισμικό ανάπτυξης, οι χώροι εργασίας κτλ) και το ανθρώπινο δυναμικό. Σχήμα 2.1. Σύστημα ποιότητας λογισμικού Τέλος, η διασφάλιση ποιότητας προϊόντος (product quality assurance) έχει ως αντικείμενο τη βελτίωση της ποιότητας του τελικού προϊόντος. Είναι φανερό βέβαια ότι έμμεσος στόχος και των δύο πρώτων κατηγοριών (διαδικασιών και πόρων) είναι τελικά η διασφάλιση της ποιότητας του τελικού προϊόντος. Στο σχήμα 2.1 απεικονίζεται η μορφή του συστήματος ποιότητας. Το σύστημα ποιότητας θα πρέπει να βασίζεται σε κάποιο πρότυπο (το οποίο συνήθως είναι κάποιο διεθνές πρότυπο ποιότητας, αλλά μπορεί να είναι και κάποιο υβριδικό πρότυπο εξειδικευμένο για χρήση στη συγκεκριμένη επιχείρηση) το οποίο παρέχει οδηγίες για την εφαρμογή του συστήματος ποιότητας. [Xen96] Το σύστημα ποιότητας αποτελείται από δομές, δραστηριότητες, αρμοδιότητες, διαδικασίες, Σταθερότητα προγράμματος open source με χρήση μετρικών 15

πόρους, μετρικές και εργαλεία μέτρησης, τα οποία χρησιμοποιούνται για να διασφαλίσουν ότι τα έργα λογισμικού που αναπτύσσονται εκπληρώνουν τους ποιοτικούς παράγοντες οι οποίοι είναι επιθυμητοί τόσο από τον πελάτη, όσο και από την επιχείρηση. Οι συγκεκριμένες λεπτομέρειες του συστήματος ποιότητας περιγράφονται στο εγχειρίδιο ποιότητας (quality manual). Το εγχειρίδιο ποιότητας συγκεντρώνει όλες τις δομές, τις δραστηριότητες, τις αρμοδιότητες, τις διαδικασίες, τους πόρους, τις μετρικές και τα εργαλεία μέτρησης που η επιχείρηση έχει συμπεριλάβει στο σύστημα ποιότητας και που είναι δυνατόν να χρησιμοποιηθούν για τη διασφάλιση ή τον έλεγχο της ποιότητας κάποιου έργου. Είναι κοινή αρμοδιότητα του υπεύθυνου ποιότητας (quality manager) και του υπεύθυνου κάθε έργου να αποφασίσουν από κοινού για το πλάνο εξασφάλισης ποιότητας κάθε έργου. Υπεύθυνος ποιότητας είναι το μέλος του προσωπικού που έχει την ευθύνη διοίκησης του τμήματος ποιότητας, δηλαδή την ευθύνη της καταγραφής, επίβλεψης και διαρκούς εξέλιξης όλων των δομών, δραστηριοτήτων, αρμοδιοτήτων, διαδικασιών, πόρων, μετρικών και εργαλείων μέτρησης που μπορούν να χρησιμοποιηθούν για τη διασφάλιση ή τον έλεγχο της ποιότητας ενός έργου. Το πλάνο ποιότητας έργου (project quality plan) είναι συγκεκριμένο για κάθε έργο και περιγράφει αυτά τα ποιοτικά χαρακτηριστικά στην εξασφάλιση των οποίων επικεντρώνει το ενδιαφέρον του το συγκεκριμένο έργο, καθώς και τις διαδικασίες και μετρικές για τη διασφάλισή τους. Το πλάνο ποιότητας είναι συγκεκριμένο για κάθε έργο και είναι το υποσύνολο του εγχειριδίου ποιότητας που έχει κριθεί ότι εξυπηρετεί τους στόχους ποιότητας του συγκεκριμένου έργου. Όμως, εκτός από τα ειδικά ποιοτικά χαρακτηριστικά τα οποία ενσωματώνονται στο πλάνο ποιότητας, θα πρέπει να ενσωματώνονται και οι διαδικασίες και οι μετρικές ελέγχου οι οποίες στοχεύουν στη διασφάλιση της «ελάχιστης αποδεκτής ποιότητας», όπως αυτή καθορίζεται από το εγχειρίδιο ποιότητας. Ως ελάχιστη αποδεκτή ποιότητα καθορίζεται το σύνολο των ποιοτικών χαρακτηριστικών τα οποία θα πρέπει να βρίσκονται οπωσδήποτε πάνω από καθορισμένα όρια, ανεξάρτητα από άλλα χαρακτηριστικά στα οποία δίνει έμφαση το πλάνο εξασφάλισης ποιότητας του συγκεκριμένου έργου. Πρέπει να γίνει σαφής η διάκριση ανάμεσα στο εγχειρίδιο ποιότητας και στο πλάνο ποιότητας. Το πλάνο ποιότητας είναι ειδικό για κάθε έργο και επικεντρώνεται στα ποιοτικά χαρακτηριστικά στα οποία δίνει έμφαση το έργο. Για παράδειγμα, στο πλάνο ποιότητας ενός έργου το οποίο, το οποίο η επιχείρηση σκοπεύει να εξελίξει μελλοντικά και να εκδώσει και σε άλλες πλατφόρμες (λειτουργικών συστημάτων ή υλικού) θα δοθεί έμφαση στα ποιοτικά χαρακτηριστικά της «μεταφερσιμότητας» και της «συντηρισιμότητας». Αντίθετα, στο πλάνο εξασφάλισης ποιότητας ενός έργου, το οποίο υλοποιείται για την προσωρινή κάλυψη αναγκών του πελάτη και χωρίς να υπάρχουν μελλοντικοί στόχοι μεταφοράς και συντήρησης, δε θα δοθεί τόση έμφαση σε ποιοτικούς παράγοντες, όπως η «μεταφερσιμότητα» και η «συντηρισιμότητα», μπορεί, όμως, να δοθεί έμφαση σε παράγοντες όπως για παράδειγμα η «ευχρηστία». Σε κάθε περίπτωση και τα δύο πλάνα εξασφάλισης ποιότητας θα πρέπει να περιέχουν έναν αριθμό ποιοτικών χαρακτηριστικών, τα οποία θα απαιτείται από το πρόγραμμα ποιότητας να ελέγχονται για κάθε έργο. Σταθερότητα προγράμματος open source με χρήση μετρικών 16

Τέλος, το εγχειρίδιο ποιότητας δεν πρέπει να μένει στάσιμο, αλλά να εξελίσσεται μαζί με την επιχείρηση. Αυτό συμβαίνει, είτε γιατί τα ποιοτικά κριτήρια της επιχείρησης γίνονται πιο αυστηρά, καθώς βελτιώνονται οι διαδικασίες παραγωγής, μέτρησης και ελέγχου, είτε γιατί αναθεωρούνται οι μετρικές και οι μετρήσιμοι στόχοι ανάλογα με τις απόψεις των πελατών. Άμεση αρμοδιότητα του τμήματος ποιότητας (και φυσικά του υπευθύνου ποιότητας) είναι να ελέγχει αν οι μετρήσεις για τα ποιοτικά χαρακτηριστικά αντικατοπτρίζονται στην άποψη των πελατών για τα ίδια ποιοτικά χαρακτηριστικά. Στην περίπτωση διαφορών πιθανότητα το σύστημα ποιότητας χρειάζεται αλλαγές οι οποίες σχετίζονται είτε με την αξιοπιστία των μετρικών, είτε με τις διαδικασίες μέτρησης. Είναι σημαντικό σε αυτό το σημείο να αναφέρουμε ότι κυριαρχούν δύο βασικές εσφαλμένες απόψεις σχετικές με το σύστημα ποιότητας στο λογισμικό, οι οποίες πρέπει να ξεπεραστούν. Η πρώτη εσφαλμένη άποψη θεωρεί πως ένα εγχειρίδιο ποιότητας είναι αρκετό για να διασφαλίσει την ποιότητα σε κάθε έργο. Το πρόβλημα με αυτή την άποψη έγκειται στο γεγονός ότι κανείς δεν υποχρεώνει τους υπεύθυνους ενός έργου να τηρήσουν τους κανόνες του εγχειριδίου, είτε γιατί το τμήμα ποιότητας δε λειτουργεί σωστά, ελέγχοντας την εφαρμογή των διαδικασιών, είτε γιατί οι επισημάνσεις του αγνοούνται κάτω από την πίεση για την τήρηση των προθεσμιών των έργων. Η δεύτερη εσφαλμένη άποψη θεωρεί ότι για να είναι ένα λογισμικό ποιοτικό, αρκεί να ικανοποιεί τον ορισμό της ποιότητας «κατάλληλο για τον προορισμό του». Το λογισμικό όμως, δεν αρκεί μόνο να είναι κατάλληλο για το σκοπό του. Πρέπει να διαθέτει και κάποια επιπλέον, ποιοτικά χαρακτηριστικά, τα οποία μπορεί να περιγράφονται στον προσδιορισμό των απαιτήσεων, να βασίζονται σε κοινωνικές παραδοχές ή να σχετίζονται με τους στόχους της επιχείρησης. Ο προσδιορισμός των απαιτήσεων περιέχει μια περιγραφή του τι μπορεί να κάνει το λογισμικό, καθώς επίσης και τους περιορισμούς, όπως ο χρόνος απόκρισης, που πρέπει να συμπεριληφθούν στο πλάνο ποιότητας. Ωστόσο και άλλοι παράγοντες που οι προγραμματιστές θεωρούν σημαντικούς και που δεν έχουν απασχολήσει τους πελάτες και δεν αναγράφονται στον προσδιορισμό των απαιτήσεων (για παράδειγμα η ικανότητα του λογισμικού να επαναχρησιμοποιηθεί) πρέπει και αυτοί να συμπεριληφθούν στο πλάνο ποιότητας. 2.4.2 Χρήστες του συστήματος ποιότητας Σε αυτή την ενότητα παρουσιάζεται τι προσφέρει το σύστημα ποιότητας στον υπεύθυνο έργου, στους προγραμματιστές, στους μηχανικούς που έχουν αναλάβει τη σχεδίαση, τον έλεγχο ή τη συντήρηση του λογισμικού, στον αναλυτή, καθώς και στον πελάτη [Inc95]. Το σύστημα ποιότητας πρέπει να διευκολύνει τον υπεύθυνο έργου στη διαδικασία της εκτίμησης παραγόντων όπως οι ανάγκες σε ανθρώπινο δυναμικό, το κόστος και ο χρόνος ανάλυσης κινδύνου. Θα πρέπει να διαθέτει έναν κατάλογο που να αναφέρει τους παράγοντες εκείνους που θα μπορούσαν να κάνουν το πρόγραμμα να αποτύχει ως προς τα χρονικά περιθώρια ή τον προϋπολογισμό του. Θα πρέπει, επίσης, να καθορίζει τη διαδικασία καταγραφής των δεδομένων του έργου με τυποποιημένη μορφή, έτσι ώστε τα ιστορικά δεδομένα από προηγούμενα έργα να υπάρχουν καταγραμμένα σε εύκολα επεξεργάσιμη μορφή, ώστε ο διαχειριστής να μπορεί να βασίζει την εκτίμησή του για μελλοντικά έργα σε αυτά τα δεδομένα. Ακόμα, το εγχειρίδιο ποιότητας θα πρέπει να προδιαγράφει έναν τρόπο, ώστε να συλλέγονται και να αναλύονται στατιστικά δεδομένα που αφορούν σε λάθη ή ατέλειες και τη σοβαρότητά τους για το λογισμικό. Επίσης, το σύστημα Σταθερότητα προγράμματος open source με χρήση μετρικών 17

ποιότητας θα πρέπει να προσδιορίζει έναν ομοιόμορφο τρόπο με τον οποίο το προσωπικό θα υποβάλει αναφορά για τις δραστηριότητές του, διευκολύνοντας την παρακολούθηση του έργου. Τέλος, το σύστημα ποιότητας πρέπει να προδιαγράφει την υποβολή αναφορών σχετικά με τους στόχους που επιτεύχθηκαν έναντι των στόχων που τέθηκαν στην αρχή του έργου, για κάθε ένα από τα έργα. Αναφορικά με τον προγραμματιστή, το σύστημα ποιότητας πρέπει να θέτει πρότυπα προγραμματισμού που ορίζουν τον τρόπο με τον οποίο ένα πρόγραμμα πρέπει να αναπτυχθεί (κωδικοποιηθεί) και να παρουσιαστεί. Ένα καλό πρότυπο ποιότητας θα πρέπει (με την τυποποίηση που θα επιφέρει) να βοηθά τον προγραμματιστή να διαβάζει πηγαίο κώδικα και να κατανοεί εύκολα τη συνεισφορά κάθε κομματιού του πηγαίου κώδικα στο γενικό, μεγάλο τμήμα του λογισμικού που εξετάζεται. Ακόμα, το εγχειρίδιο ποιότητας πρέπει να εμπεριέχει οδηγίες προς τον προγραμματιστή για το πώς να αποθηκεύει τα δεδομένα ελέγχου. Τέλος, το εγχειρίδιο ποιότητας πρέπει να παρέχει στον προγραμματιστή ένα πρότυπο που να διασφαλίζει ότι τα ονόματα και οι μεταβλητές που έχει χρησιμοποιήσει συμφωνούν με τα αρχεία που χρησιμοποιήθηκαν για να αποθηκεύσουν τον πηγαίο κώδικα, το αντικείμενο του κώδικα και τα δεδομένα ελέγχου. Το σύστημα ποιότητας πρέπει να παρέχει ένα πρότυπο που να καθορίζει τον τρόπο περιγραφής της αρχιτεκτονικής του συστήματος από το σχεδιαστή. Eπίσης το εγχειρίδιο ποιότητας πρέπει να περιέχει τυποποιημένες διαδικασίες ανάλυσης και σχεδίασης. Ένα καλό πρότυπο πρέπει να βοηθά τον μηχανικό σχεδίασης να ελέγχει αν το σύστημα που έχει σχεδιάσει πραγματικά υλοποιεί τις λειτουργίες που περιγράφονται στον προσδιορισμό των απαιτήσεων. Ιδιαίτερη έμφαση πρέπει να δίνεται στο σχεδιασμό της διεπιφάνειας χρήστη [Αbo00], παρέχοντας κανόνες και οδηγίες για την ορθή σχεδίαση που θα είναι προσαρμοσμένη στις ανάγκες και ιδιαιτερότητες των χρηστών του συγκεκριμένου έργου. Το σύστημα ποιότητας πρέπει να επιμένει σε ένα προγραμματιστικό πρότυπο το οποίο εξασφαλίζει ότι οι μηχανικοί που θα αναλάβουν τη συντήρηση θα μπορούν εύκολα να ανιχνεύσουν ποια λειτουργία εκτελείται κάθε φορά από συγκεκριμένο τμήμα κώδικα. Ακόμα, πρέπει να παρέχει διαδικασίες που βοηθούν τους μηχανικούς συντήρησης να εντοπίζουν και να εποπτεύουν τις διάφορες εκδόσεις του συστήματος που δημιουργούνται κατά τη διαδικασία της συντήρησης. Τέλος, το σύστημα ποιότητας πρέπει να εξασφαλίζει ότι ο προσδιορισμός των απαιτήσεων έχει γίνει με τέτοιο τρόπο, ώστε οι μηχανικοί που αναλαμβάνουν τον έλεγχο να μπορούν εύκολα να παράγουν δεδομένα και διαδικασίες ελέγχου. Επιπρόσθετα, το εγχειρίδιο ποιότητας πρέπει να εξασφαλίζει ότι οι διαδικασίες που ακολουθούνται για την παραγωγή δεδομένων και αποτελεσμάτων κατά τη διάρκεια του ελέγχου μπορούν να αποθηκευτούν σε μια βιβλιοθήκη ώστε να είναι επαναχρησιμοποιήσιμες. Σημαντικό επίσης είναι το εγχειρίδιο που προβλέπει διαδικασίες για την αξιολόγηση της διεπιφάνειας χρήστη [Abo00], παρέχοντας καταλόγους ελέγχου για την αξιολόγησή της. Αναφορικά με τον αναλυτή, το σύστημα ποιότητας πρέπει να παρέχει ένα πρότυπο για τον προσδιορισμό των απαιτήσεων, τέτοιο που να αναδεικνύει στον οργανισμό λειτουργίες οι οποίες είναι σχετικές με άλλες και θα μπορούσαν να χρησιμοποιηθούν αυτούσιες σε παρόμοιες περιπτώσεις. Επίσης, το σύστημα ποιότητας πρέπει να περιλαμβάνει έναν κατάλογο που θα δίνει την δυνατότητα στον αναλυτή να εξασφαλίζει ότι τα χαρακτηριστικά ενός συγκεκριμένου έργου που αναπτύσσεται θα περιγραφούν με επαρκή λεπτομέρεια. Τέλος πρέπει να Σταθερότητα προγράμματος open source με χρήση μετρικών 18

παρέχει τυποποιημένη περιγραφή της περίπλοκης διαδικασίας που θα ακολουθηθεί όταν ο αναλυτής έρθει σ επαφή με τον πελάτη. Το σύστημα ποιότητας πρέπει να παρέχει οδηγίες για το πώς θα οργανώνονται οι συναντήσεις μεταξύ του πελάτη και του αναλυτή ή του υπεύθυνου έργου, που θα βοηθούν στην εξελικτική πορεία του έργου. Επιπλέον πρέπει να προδιαγράφεται ένα τυποποιημένο έγγραφο που να παρέχει λεπτομερή περιγραφή του τρόπου που οι κατασκευαστές σκοπεύουν να ελέγξουν αν ικανοποιούνται οι απαιτήσεις του πελάτη. Τέλος το σύστημα ποιότητας πρέπει να προσδιορίσει τον τύπο των αναφορών που θα σταλούν στον πελάτη σχετικά με την εξέλιξη του έργου και να καθορίζει τη συχνότητα με τη οποία θα στέλνονται. Η εφαρμογή ενός συστήματος ποιότητας σε μια επιχείρηση που αναπτύσσει λογισμικό εξασφαλίζει σημαντικά οφέλη για αυτή. Ας δούμε παρακάτω τα σημαντικότερα από αυτά: Μείωση κόστους παραγωγής (κυρίως λόγω της ελαχιστοποίησης απωλειών από τη μείωση της χαμένης ή επαναλαμβανόμενης εργασίας και τη μείωση των λαθών). Μείωση δαπανηρών και χρονοβόρων φάσεων παραγωγής (μείωση του χρόνου που δαπανάται για έλεγχο και διορθωτική συντήρηση). Καλύτερη οργάνωση της επιχείρησης (που επιτυγχάνεται με την καταγραφή και εφαρμογή τυποποιημένων διαδικασιών παραγωγής και τη χρήση προτύπων που τυποποιούν τη διαδικασία ανάπτυξης). Δυνατότητα παρακολούθησης έργων (που μεταφράζεται σε αύξηση της παραγωγικότητας, καλύτερη αξιοποίηση πόρων, αποφυγή λανθασμένων κατευθύνσεων στα έργα και σωστή αξιοποίηση των δυνατοτήτων του προσωπικού). Καλά και με ακρίβεια καθορισμενες αρμοδιότητες και ευθύνες για κάθε μέλος της ομάδας υλοποίησης ενός έργου που συνεπάγεται καθορισμό ρόλων μέσα στην επιχείρηση. Ανεξαρτητοποίηση της επιχείρησης από τα άτομα (που επιτυγχάνεται με την τυποποίηση των διαδικασιών ανάπτυξης και τη χρήση προγραμματιστικών προτύπων). Δημιουργία αποθεματικού στην επιχείρηση (καλογραμμένα και κατανοήσιμα τμήματα κώδικα σχολιασμένα και με επαρκή τεκμηρίωση που έχουν υλοποιηθεί με βάση κάποιο πρότυπο και είναι άμεσα επαναχρησιμοποιήσιμα). Καταγραφή και τεκμηρίωση της πορείας (επιτυχία ή αποτυχία) κάθε έργου και δημιουργία αρχείου δεδομένων που μπορεί να χρησιμοποιηθεί στις διαδικασίες εκτίμησης παραγόντων όπως οι ανάγκες σε ανθρώπινο δυναμικό, το κόστος και ο χρόνος μελλοντικών έργων. Καλύτερη οργάνωση των μελλοντικών στόχων της επιχείρησης που βασίζεται στην καταγραφή των επιτυχιών, προβλημάτων και δυνατοτήτων της. Καλύτερη επαφή με τον πελάτη (που βασίζεται σε καθορισμένες διαδικασίες επικοινωνίας που είναι κοινοποιημένες και στον πελάτη). 2.5 Μοντέλα και Πρότυπα Λογισμικού Παραπάνω, παρουσιάσαμε κάποιους βασικούς παράγοντες ποιότητας λογισμικού, οι οποίοι θα μας βοηθήσουν να κατανοήσουμε το μοντέλο του McCall (ή μοντέλο FCM), το μοντέλο του Boehm και το πρότυπο ISO 9126. Σταθερότητα προγράμματος open source με χρήση μετρικών 19

Μοντέλο FCM Ο McCall [Mcc77] προτείνει την τμηματοποίηση της ποιότητας σε παράγοντες (factors) ποιότητας. Επειδή τόσο η ίδια η ποιότητα, όσο και οι ποιοτικοί παράγοντες είναι εξαιρετικά αφηρημένες έννοιες, ο McCall πρότεινε επίσης την τμηματοποίηση των παραγόντων σε κριτήρια (criteria) που βρίσκονται σε χαμηλότερο επίπεδο αφαίρεσης και τα οποία μπορούν να μετρηθούν άμεσα με μετρικές (metrics). Ο McCall είχε προτείνει οι μετρήσεις για κάθε κριτήριο να προκύπτουν από απαντήσεις σε ερωτήσεις για το κριτήριο. Από τα ονόματα των τριών επιπέδων αφαίρεσης το μοντέλο αυτό ονομάστηκε FCM (Factors Criteria Metrics). Σχήμα 2.2. Μοντέλο FCM Σταθερότητα προγράμματος open source με χρήση μετρικών 20

Το μοντέλο αυτό αποτέλεσε ένα από τα πιο ολοκληρωμένα μοντέλα της εποχής του κι έγινε βάση για το διεθνές πρότυπο ISO 9126 [Iso91]. Παρά τα προβλήματα της υποκειμενικότητας των ερωτήσεων, της ύπαρξης περιορισμένης κλίμακας (το μοντέλο δεχόταν μόνο απαντήσεις «ΝΑΙ» και «ΟΧΙ») και της αδυναμίας συνδυασμού μετρικών, το μοντέλο αυτό γνώρισε ευρεία υποδοχή και ακόμη και σήμερα που το ISO 9126 κυριαρχεί, αρκετές επιχειρήσεις βασίζουν το σύστημα ποιότητάς τους στην τμηματοποίηση του FCM μοντέλου. Ο βασικότερος λόγος για αυτό είναι είναιι ότι είναι καλύτερα προσαρμοσμένο στην ομάδα υλοποίησης και πιο αναλυτικό από το ISO 9126. Όπως φαίνεται και στο σχήμα 2.2, ο McCall πρότεινε 11 παράγοντες ποιότητας, 25 κριτήρια και 41 μετρικές. Οι 11 παράγοντες είναι ευχρηστία (usability), ακεραιότητα (integrity), αποδοτικότητα (effeciency), ορθότητα (correctness), αξιοπιστία (reliability), συντηρισιμότητα (maintainability), ελεγξιμότητα (testability), ευελιξία (flexibility), επαναχρησιμοποιησιμότητα (reusability), μεταφερσιμότητα (portability) και διαλειτουργικότητα (interoperability). Μοντέλο Boehm Σχήμα 2.3. Μοντέλο του Boehm Το μοντέλο του Boehm [Boe78] ακολουθεί παρόμοια ιεραρχική δομή μ αυτή του FCM μοντέλου, σύμφωνα με την οποία διασπά την ποιότητα του λογισμικού σε πρωταρχικές χρήσεις (primary uses) και αυτές σε ενδιάμεσες κατασκευές (intermediate constructs), ανάλογες με τα κριτήρια ποιότητας του μοντέλου FCM, όπως φαίνεται στο σχήμα 2.3. Οι ενδιάμεσες κατασκευές με τη σειρά τους διασπώνται σε πρωτογενείς κατασκευές (primitive constructs) οι οποίες μετρώνται άμεσα με μετρικές (metrics). Το μοντέλο του Boehm, παρόλο που ακολουθεί τη λογική της ανάλυσης της ποιότητας σε ποιοτικά χαρακτηριστικά, δεν είναι τόσο δομημένο όσο το FCM μοντέλο. Όμως, ήταν το πρώτο μοντέλο που εισήγαγε την πρακτική της χρήσης μετρικών λογισμικού αντί για ερωτήσεις στο κατώτερο επίπεδο. Αυτή η πρακτική εφαρμόστηκε με σχετική επιτυχία για τη μέτρηση των ποιοτικών χαρακτηριστικών, άσχετα αν το γενικό μοντέλο είναι του FCM, του Boehm ή το ISO 9126. Σταθερότητα προγράμματος open source με χρήση μετρικών 21

Πρότυπο ISO 9126 Το πρότυπο ISO 9126 [Iso91] αποτελεί ένα μοντέλο ποιότητας λογισμικού που εξελίχθηκε σε διεθνές πρότυπο από το διεθνή οργανισμό τυποποίησης ISO. Ως μοντέλο ποιότητας λογισμικού διαφέρει από τα προγενέστερα μοντέλα τόσο στην ορολογία όσο και στη δομή καθώς είναι απόλυτα ιεραρχικό. Σχήμα 2.4. Το πρότυπο ISO 9126 Σταθερότητα προγράμματος open source με χρήση μετρικών 22

Στο ISO 9126 κάθε χαρακτηριστικό ανήκει αυστηρά σ ένα παράγοντα ποιότητας χωρίς να υπάρχουν επικαλύψεις. Επίσης, κάθε χαρακτηριστικό είναι ορατό στο χρήστη και δεν αποτελεί εσωτερικό χαρακτηριστικό του προϊόντος. Με αυτή τη λογική, το ISO 9126 αντικατοπτρίζει περισσότερο τη θεώρηση από την πλευρά του χρήστη, σε αντίθεση με τα δύο προγενέστερα μοντέλα που αντικατοπτρίζουν την προσέγγιση της ομάδας ανάπτυξης. Αυτός είναι και ο βασικός λόγος για τον οποίο, αν και πρότυπο, πολλές επιχειρήσεις (οι ομάδες ανάπτυξης, δηλαδή) εμμένουν ακόμη και σήμερα στο FCM μοντέλο. Άλλοι λόγοι είναι ότι το ISO 9126 δεν ορίζει καθαρά πως μπορούν να μετρηθούν απευθείας τα επιμέρους χαρακτηριστικά του και η μη καλά ορισμένη διάσπαση των ποιοτικών χαρακτηριστικών σε επιμέρους υποχαρακτηριστικά. Στο σχήμα 2.4 παρουσιάζεται το πρότυπο ISO 9126. Στη συνέχεια, θα επεξηγήσουμε τους παράγοντες και τα επιμέρους χαρακτηριστικά, με απλούς ορισμούς. Η λειτουργικότητά του είναι η δυνατότητα του λογισμικού να εμπεριέχει όλες τις απαιτούμενες λειτουργίες, κι εμπεριέχει τα χαρακτηριστικά: καταλληλότητα (suitability) που είναι η παροχή από το λογισμικό κατάλληλου συνόλου υπηρεσιών για προκαθορισμένο έργο και επιδιώξεις του χρήστη. ακρίβεια (accuracy) που είναι η δυνατότητα του λογισμικού να παρέχει σωστά και αποδεκτά αποτελέσματα ή ενέργειες. διαλειτουργικότητα (interoperability) που είναι η δυνατότητα του λογισμικού να αλληλεπιδρά με ένα ή περισσότερα προεγκατεστημένα ή προκαθορισμένα συστήματα. ασφάλεια (security) που είναι η δυνατότητα του λογισμικού να προλαμβάνει αθέλητη προσπέλαση και να αντιστέκεται σε εσκεμμένες επιθέσεις που σκοπό έχουν τη μη εξουσιοδοτημένη πρόσβαση σε εμπιστευτικές ή τη μη εξουσιοδοτημένη τροποποίηση της περιεχόμενης πληροφορίας ή του προγράμματος, με σκοπό είτε να αποκτήσει ο εισβολέας κάποιο πλεονέκτημα είτε να παρεμποδίσει εξουσιοδοτημένους χρήστες να έχουν πρόσβαση στις υπηρεσίες του προγράμματος. Η αξιοπιστία που είναι η δυνατότητα του λογισμικού να λειτουργεί με σταθερό και συγκεκριμένο τρόπο κάτω από καθορισμένες συνθήκες, εμπεριέχει τα χαρακτηριστικά: ωριμότητα (maturity) που είναι η δυνατότητα να αποφεύγονται προβλήματα που είναι αποτέλεσμα λογικών λαθών στο λογισμικό. ανεκτικότητα σε λάθη (fault tolerance) που είναι η υποστήριξη από το λογισμικό καθορισμένου επιπέδου εφαρμογής σε περιπτώσεις λαθών στο λογισμικό ή παραβιάσεων στο περιβάλλον διεπαφής. ανακτησιμότητα (recoverability) που είναι η θεμελίωση από το λογισμικό του επιπέδου των εφαρμογών και η αποκατάσταση των δεδομένων που άμεσα επηρεάζονται σε περίπτωση αποτυχίας. Η ευχρηστία που σχετίζεται με την ευκολία αντίληψης, εκμάθησης, χρήσης και ικανοποίησης του χρήστη, εμπεριέχει τα χαρακτηριστικά: κατανοησιμότητα (understandability) που είναι η ιδότητα του λογισμικού να καθιστά το χρήστη ικανό να καταλάβει πότε αυτό είναι κατάλληλο για τις ανάγκες του και πώς μπορεί να χρησιμοποιηθεί για συγκεκριμένο έργο και συνθήκες χρήσης. Σταθερότητα προγράμματος open source με χρήση μετρικών 23